commit c2d6d0b096085fd1c4224ee94b5281ae6033a192 Author: JorySeverijnse Date: Wed Dec 3 18:20:02 2025 +0100 Implemented cryptomining, although its extremely bad optimized. diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..2184ec8 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,34 @@ +# See https://docs.docker.com/engine/reference/builder/#dockerignore-file + +# Dependencies +node_modules +/node_modules + +# Build artifacts +dist +build +.next +.output + +# Logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Local env files +.env.local +.env.development.local +.env.test.local +.env.production.local + +# IDE and OS files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +.DS_Store +Thumbs.db \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..acdd717 --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +# Logs +WebRandomX +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..07bc731 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,28 @@ +# Stage 1: Build the application +FROM oven/bun:1 as builder +WORKDIR /app + +# Copy configuration files and install dependencies +# This layer is cached to speed up future builds +COPY package.json bun.lockb ./ +COPY tsconfig.json tsconfig.node.json ./ +COPY vite.config.ts postcss.config.js tailwind.config.ts ./ +RUN bun install --frozen-lockfile + +# Copy the rest of the source code +COPY . . + +# Build the application +RUN bun run build + +# Stage 2: Serve the application with Caddy +FROM caddy:2-alpine + +# Copy the Caddyfile to the appropriate location +COPY Caddyfile /etc/caddy/Caddyfile + +# Copy the built application from the builder stage to Caddy's serve directory +COPY --from=builder /app/dist /srv + +# Expose the port Caddy listens on +EXPOSE 80 diff --git a/README.md b/README.md new file mode 100644 index 0000000..3fd01ab --- /dev/null +++ b/README.md @@ -0,0 +1,60 @@ +# Personal Website + +## Project Overview + +This is my personal website, a Matrix-themed, cyberpunk-inspired digital space built with React and TypeScript. It serves as a showcase for my projects and personality, blending hardware tinkering, self-hosting enthusiasm, and a love for code and audio into a unique retro hacker aesthetic. + +## Features + +* **Immersive Visuals:** Matrix rain background, CRT scanlines, flicker effects, and glitch text. +* **Interactive Terminal:** A command-line interface for navigation and interaction, including shortcuts like `/home`, `/about`, `/ai`. +* **AI Chat:** Integrated AI assistant powered by Pollinations.ai with conversation history. +* **Radio Music Player:** Browse, search, and play radio stations from around the world, or add custom stream URLs. Features a persistent mini-player. +* **Arcade Games:** Play classic arcade games like Tetris, Pac-Man, Snake, and Breakout, with local high score saving. +* **Dynamic Content:** About page with personal introduction, skills, interests, and an ASCII art portrait. +* **Project Showcase:** Detailed pages for various hardware and software projects, including 3-way speakers, an X-ray machine, automated DJ mixing, and VPS infrastructure. +* **Customization:** Red/Green theme toggle with persistence, toggleable sound effects. +* **Hidden Gems:** Includes a hidden easter egg for old-school gamers. +* **Responsive Design:** Optimized for various screen sizes. + +## Technologies Used + +This project is built with: + +* Vite +* TypeScript +* React +* Tailwind CSS +* Framer Motion +* shadcn-ui +* Web Audio API +* Pollinations.ai (for AI Chat) +* Radio Browser API (for Music Player) + +## How to Run Locally + +To get a local copy up and running, follow these steps: + +The only requirement is having Node.js & npm installed - [install with nvm](https://github.com/nvm-sh/nvm#installing-and-updating) + +```sh +# Step 1: Clone the repository using the project's Git URL. +git clone + +# Step 2: Navigate to the project directory. +cd + +# Step 3: Install the necessary dependencies. +npm i + +# Step 4: Start the development server with auto-reloading and an instant preview. +npm run dev +``` + +## Contact & Links + +For contact information and links to my social profiles and self-hosted services, please visit the `/links` page on the website. + +## Credits + +This project utilizes various open-source libraries, fonts, and tools. A full list of credits can be found on the `/credits` page of the website. diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000..f41003f Binary files /dev/null and b/bun.lockb differ diff --git a/components.json b/components.json new file mode 100644 index 0000000..62e1011 --- /dev/null +++ b/components.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/index.css", + "baseColor": "slate", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + } +} diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..40f72cc --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,26 @@ +import js from "@eslint/js"; +import globals from "globals"; +import reactHooks from "eslint-plugin-react-hooks"; +import reactRefresh from "eslint-plugin-react-refresh"; +import tseslint from "typescript-eslint"; + +export default tseslint.config( + { ignores: ["dist"] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ["**/*.{ts,tsx}"], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + "react-hooks": reactHooks, + "react-refresh": reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + "react-refresh/only-export-components": ["warn", { allowConstantExport: true }], + "@typescript-eslint/no-unused-vars": "off", + }, + }, +); diff --git a/favicon.gif b/favicon.gif new file mode 100644 index 0000000..c2332b1 Binary files /dev/null and b/favicon.gif differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..d269480 --- /dev/null +++ b/index.html @@ -0,0 +1,40 @@ + + + + + + + + My Site | Matrix Portal + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + diff --git a/miner/CMakeLists.txt b/miner/CMakeLists.txt new file mode 100644 index 0000000..a68876f --- /dev/null +++ b/miner/CMakeLists.txt @@ -0,0 +1,191 @@ +# Copyright (c) 2019, The Monero Project +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are +# permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this list of +# conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright notice, this list +# of conditions and the following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# 3. Neither the name of the copyright holder nor the names of its contributors may be +# used to endorse or promote products derived from this software without specific +# prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +cmake_minimum_required(VERSION 3.10.2) + +project(WebRandomX) + +set(randomx_sources +src/cpp/aes_hash.cpp +src/cpp/argon2_simd.c +src/cpp/bytecode_machine.cpp +src/cpp/dataset.cpp +src/cpp/virtual_memory.cpp +src/cpp/vm_interpreted.cpp +src/cpp/allocator.cpp +src/cpp/assembly_generator_x86.cpp +src/cpp/instruction.cpp +src/cpp/randomx.cpp +src/cpp/superscalar.cpp +src/cpp/vm_compiled.cpp +src/cpp/vm_interpreted_light.cpp +src/cpp/argon2_core.c +src/cpp/blake2_generator.cpp +src/cpp/intrin_wasm.cpp +src/cpp/softfloat.cpp +src/cpp/reciprocal.c +src/cpp/virtual_machine.cpp +src/cpp/vm_compiled_light.cpp +src/cpp/blake2b.c) + +if(NOT ARCH_ID) + # allow cross compiling + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "") + set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_HOST_SYSTEM_PROCESSOR}) + endif() + string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" ARCH_ID) +endif() + +if(NOT ARM_ID) + set(ARM_ID "${ARCH_ID}") +endif() + +if(NOT ARCH) + set(ARCH "default") +endif() + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) + message(STATUS "Setting default build type: ${CMAKE_BUILD_TYPE}") +endif() + +include(CheckCXXCompilerFlag) +include(CheckCCompilerFlag) + +function(add_flag flag) + string(REPLACE "-" "_" supported_cxx ${flag}_cxx) + check_cxx_compiler_flag(${flag} ${supported_cxx}) + if(${${supported_cxx}}) + message(STATUS "Setting CXX flag ${flag}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}" PARENT_SCOPE) + endif() + string(REPLACE "-" "_" supported_c ${flag}_c) + check_c_compiler_flag(${flag} ${supported_c}) + if(${${supported_c}}) + message(STATUS "Setting C flag ${flag}") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}" PARENT_SCOPE) + endif() +endfunction() + +# x86-64 +if(ARCH_ID STREQUAL "x86_64" OR ARCH_ID STREQUAL "x86-64" OR ARCH_ID STREQUAL "amd64") + if(MSVC) + add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/asm/configuration.asm + COMMAND powershell -ExecutionPolicy Bypass -File h2inc.ps1 ..\\src\\configuration.h > ..\\src\\asm\\configuration.asm SET ERRORLEVEL = 0 + COMMENT "Generating configuration.asm at ${CMAKE_CURRENT_SOURCE_DIR}" + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/vcxproj) + add_custom_target(generate-asm + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/asm/configuration.asm) + else() + if(ARCH STREQUAL "native") + add_flag("-march=native") + endif() + endif() +endif() + +# PowerPC +if(ARCH_ID STREQUAL "ppc64" OR ARCH_ID STREQUAL "ppc64le") + if(ARCH STREQUAL "native") + add_flag("-mcpu=native") + endif() + # PowerPC AES requires ALTIVEC (POWER7+), so it cannot be enabled in the default build +endif() + +# ARMv8 +if(ARM_ID STREQUAL "aarch64" OR ARM_ID STREQUAL "arm64" OR ARM_ID STREQUAL "armv8-a") + # not sure if this check is needed + include(CheckIncludeFile) + check_include_file(asm/hwcap.h HAVE_HWCAP) + if(HAVE_HWCAP) + add_definitions(-DHAVE_HWCAP) + endif() + + if(ARCH STREQUAL "native") + add_flag("-march=native") + endif() +endif() + +# WASM SIMD +set_source_files_properties(${randomx_sources} COMPILE_FLAGS -msimd128) + +set(RANDOMX_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/src" CACHE STRING "WebRandomX Include path") + +add_library(randomx ${randomx_sources}) + +if(TARGET generate-asm) + add_dependencies(randomx generate-asm) +endif() + +set_property(TARGET randomx PROPERTY POSITION_INDEPENDENT_CODE ON) +set_property(TARGET randomx PROPERTY CXX_STANDARD 11) +set_property(TARGET randomx PROPERTY CXX_STANDARD_REQUIRED ON) +set_property(TARGET randomx PROPERTY PUBLIC_HEADER src/cpp/randomx.h) + +include(GNUInstallDirs) +install(TARGETS randomx + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + +# +# Add executables +# + +if(NOT Threads_FOUND AND UNIX AND NOT APPLE) + set(THREADS_PREFER_PTHREAD_FLAG ON) + find_package(Threads) +endif() + +add_executable(web-randomx + src/cpp/web_randomx.cpp) +target_link_libraries(web-randomx + PRIVATE randomx) +set_property(TARGET web-randomx PROPERTY POSITION_INDEPENDENT_CODE ON) +set_property(TARGET web-randomx PROPERTY CXX_STANDARD 11) +set_target_properties(web-randomx PROPERTIES LINK_FLAGS "-O3 -s WASM=1 -s WASM_BIGINT -s ALLOW_MEMORY_GROWTH=1 -msimd128 -s EXPORTED_FUNCTIONS=\"['_free', '_malloc', '_web_randomx_init_cache', '_web_randomx_create_vm', '_web_randomx_hash', '_web_randomx_release_cache', '_web_randomx_destroy_vm']\"") + +# Tests +if(TESTS AND TESTS STREQUAL "true") + set_source_files_properties(src/cpp/tests/tests.cpp COMPILE_FLAGS -msimd128) + add_executable(web-randomx-tests + src/cpp/tests/tests.cpp) + target_link_libraries(web-randomx-tests + PRIVATE randomx) + set_property(TARGET web-randomx-tests PROPERTY POSITION_INDEPENDENT_CODE ON) + set_property(TARGET web-randomx-tests PROPERTY CXX_STANDARD 11) + set_target_properties(web-randomx-tests PROPERTIES LINK_FLAGS "-g3 -s WASM=1 -s ALLOW_MEMORY_GROWTH=1 -msimd128") + + set_source_files_properties(src/cpp/tests/benchmark.cpp COMPILE_FLAGS -msimd128) + add_executable(web-randomx-benchmark + src/cpp/tests/benchmark.cpp) + target_link_libraries(web-randomx-benchmark + PRIVATE randomx) + set_property(TARGET web-randomx-benchmark PROPERTY POSITION_INDEPENDENT_CODE ON) + set_property(TARGET web-randomx-benchmark PROPERTY CXX_STANDARD 11) + set_target_properties(web-randomx-benchmark PROPERTIES LINK_FLAGS "-os -s WASM=1 -s MAXIMUM_MEMORY=4GB -s ALLOW_MEMORY_GROWTH=1 -msimd128") +endif() \ No newline at end of file diff --git a/miner/build/CMakeCache.txt b/miner/build/CMakeCache.txt new file mode 100644 index 0000000..7b1e5ab --- /dev/null +++ b/miner/build/CMakeCache.txt @@ -0,0 +1,445 @@ +# This is the CMakeCache file. +# For build in directory: /home/someone/mysite/miner/build +# It was generated by CMake: /usr/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//No help, variable specified on the command line. +CMAKE_CROSSCOMPILING_EMULATOR:UNINITIALIZED=/usr/lib/emsdk/node/20.18.0_64bit/bin/node + +//`clang-scan-deps` dependency scanner +CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS:FILEPATH=/usr/bin/clang-scan-deps + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//`clang-scan-deps` dependency scanner +CMAKE_C_COMPILER_CLANG_SCAN_DEPS:FILEPATH=/usr/bin/clang-scan-deps + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//Value Computed by CMake. +CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/home/someone/mysite/miner/build/CMakeFiles/pkgRedirects + +//User executables (bin) +CMAKE_INSTALL_BINDIR:PATH=bin + +//Read-only architecture-independent data (DATAROOTDIR) +CMAKE_INSTALL_DATADIR:PATH= + +//Read-only architecture-independent data root (share) +CMAKE_INSTALL_DATAROOTDIR:PATH=share + +//Documentation root (DATAROOTDIR/doc/PROJECT_NAME) +CMAKE_INSTALL_DOCDIR:PATH= + +//C header files (include) +CMAKE_INSTALL_INCLUDEDIR:PATH=include + +//Info documentation (DATAROOTDIR/info) +CMAKE_INSTALL_INFODIR:PATH= + +//Object code libraries (lib) +CMAKE_INSTALL_LIBDIR:PATH=lib + +//Program executables (libexec) +CMAKE_INSTALL_LIBEXECDIR:PATH=libexec + +//Locale-dependent data (DATAROOTDIR/locale) +CMAKE_INSTALL_LOCALEDIR:PATH= + +//Modifiable single-machine data (var) +CMAKE_INSTALL_LOCALSTATEDIR:PATH=var + +//Man documentation (DATAROOTDIR/man) +CMAKE_INSTALL_MANDIR:PATH= + +//C header files for non-gcc (/usr/include) +CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/lib/emsdk/upstream/emscripten/cache/sysroot + +//Run-time variable data (LOCALSTATEDIR/run) +CMAKE_INSTALL_RUNSTATEDIR:PATH= + +//System admin executables (sbin) +CMAKE_INSTALL_SBINDIR:PATH=sbin + +//Modifiable architecture-independent data (com) +CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com + +//Read-only single-machine data (etc) +CMAKE_INSTALL_SYSCONFDIR:PATH=etc + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld.lld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_COMPAT_VERSION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=WebRandomX + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the archiver during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the archiver during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the archiver during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the archiver during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the archiver during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//Path to a program. +CMAKE_TAPI:FILEPATH=CMAKE_TAPI-NOTFOUND + +//The CMake toolchain file +CMAKE_TOOLCHAIN_FILE:FILEPATH=/usr/lib/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Force C/C++ compiler +EMSCRIPTEN_FORCE_COMPILERS:BOOL=ON + +//If set, static library targets generate LLVM bitcode files (.bc). +// If disabled (default), UNIX ar archives (.a) are generated. +EMSCRIPTEN_GENERATE_BITCODE_STATIC_LIBRARIES:BOOL=OFF + +//WebRandomX Include path +RANDOMX_INCLUDE:STRING=/home/someone/mysite/miner/src + +//Value Computed by CMake +WebRandomX_BINARY_DIR:STATIC=/home/someone/mysite/miner/build + +//Value Computed by CMake +WebRandomX_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +WebRandomX_SOURCE_DIR:STATIC=/home/someone/mysite/miner + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/someone/mysite/miner/build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=4 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=1 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=2 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS +CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_CLANG_SCAN_DEPS +CMAKE_C_COMPILER_CLANG_SCAN_DEPS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/usr/bin/ccmake +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Test CMAKE_HAVE_LIBC_PTHREAD +CMAKE_HAVE_LIBC_PTHREAD:INTERNAL=1 +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/someone/mysite/miner +//ADVANCED property for variable: CMAKE_INSTALL_BINDIR +CMAKE_INSTALL_BINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATADIR +CMAKE_INSTALL_DATADIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATAROOTDIR +CMAKE_INSTALL_DATAROOTDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DOCDIR +CMAKE_INSTALL_DOCDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INCLUDEDIR +CMAKE_INSTALL_INCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INFODIR +CMAKE_INSTALL_INFODIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBDIR +CMAKE_INSTALL_LIBDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBEXECDIR +CMAKE_INSTALL_LIBEXECDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALEDIR +CMAKE_INSTALL_LOCALEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALSTATEDIR +CMAKE_INSTALL_LOCALSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_MANDIR +CMAKE_INSTALL_MANDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_OLDINCLUDEDIR +CMAKE_INSTALL_OLDINCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_RUNSTATEDIR +CMAKE_INSTALL_RUNSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SBINDIR +CMAKE_INSTALL_SBINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SHAREDSTATEDIR +CMAKE_INSTALL_SHAREDSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SYSCONFDIR +CMAKE_INSTALL_SYSCONFDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//Name of CMakeLists files to read +CMAKE_LIST_FILE_NAME:INTERNAL=CMakeLists.txt +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/share/cmake +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_TAPI +CMAKE_TAPI-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//If true, we are targeting Emscripten output. +EMSCRIPTEN:INTERNAL=1 +//Details about finding Threads +FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()] +//CMAKE_INSTALL_PREFIX during last run +_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX:INTERNAL=/usr/lib/emsdk/upstream/emscripten/cache/sysroot + diff --git a/miner/build/CMakeFiles/4.1.2/CMakeCCompiler.cmake b/miner/build/CMakeFiles/4.1.2/CMakeCCompiler.cmake new file mode 100644 index 0000000..78077f4 --- /dev/null +++ b/miner/build/CMakeFiles/4.1.2/CMakeCCompiler.cmake @@ -0,0 +1,84 @@ +set(CMAKE_C_COMPILER "/usr/lib/emsdk/upstream/emscripten/emcc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "Clang") +set(CMAKE_C_COMPILER_VERSION "20.0.0") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "") +set(CMAKE_C_STANDARD_LATEST "23") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "emscripten") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_COMPILER_APPLE_SYSROOT "") +set(CMAKE_C_SIMULATE_VERSION "") +set(CMAKE_C_COMPILER_ARCHITECTURE_ID "") + + + +set(CMAKE_AR "/usr/lib/emsdk/upstream/emscripten/emar") +set(CMAKE_C_COMPILER_AR "/usr/lib/emsdk/upstream/emscripten/emar") +set(CMAKE_RANLIB "/usr/lib/emsdk/upstream/emscripten/emranlib") +set(CMAKE_C_COMPILER_RANLIB "/usr/lib/emsdk/upstream/emscripten/emranlib") +set(CMAKE_LINKER "/usr/bin/ld.lld") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_C_COMPILER_LINKER "") +set(CMAKE_C_COMPILER_LINKER_ID "") +set(CMAKE_C_COMPILER_LINKER_VERSION ) +set(CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT ) +set(CMAKE_MT "") +set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED ) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) +set(CMAKE_C_LINKER_DEPFILE_SUPPORTED ) +set(CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED ) +set(CMAKE_C_LINKER_PUSHPOP_STATE_SUPPORTED ) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "4") +set(CMAKE_C_COMPILER_ABI "") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/usr/lib/emsdk/upstream/emscripten/cache/sysroot/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/miner/build/CMakeFiles/4.1.2/CMakeCXXCompiler.cmake b/miner/build/CMakeFiles/4.1.2/CMakeCXXCompiler.cmake new file mode 100644 index 0000000..a29558f --- /dev/null +++ b/miner/build/CMakeFiles/4.1.2/CMakeCXXCompiler.cmake @@ -0,0 +1,100 @@ +set(CMAKE_CXX_COMPILER "/usr/lib/emsdk/upstream/emscripten/em++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "Clang") +set(CMAKE_CXX_COMPILER_VERSION "20.0.0") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "98") +set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "") +set(CMAKE_CXX_STANDARD_LATEST "26") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") +set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") +set(CMAKE_CXX26_COMPILE_FEATURES "") + +set(CMAKE_CXX_PLATFORM_ID "emscripten") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_COMPILER_APPLE_SYSROOT "") +set(CMAKE_CXX_SIMULATE_VERSION "") +set(CMAKE_CXX_COMPILER_ARCHITECTURE_ID "") + + + +set(CMAKE_AR "/usr/lib/emsdk/upstream/emscripten/emar") +set(CMAKE_CXX_COMPILER_AR "/usr/lib/emsdk/upstream/emscripten/emar") +set(CMAKE_RANLIB "/usr/lib/emsdk/upstream/emscripten/emranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/usr/lib/emsdk/upstream/emscripten/emranlib") +set(CMAKE_LINKER "/usr/bin/ld.lld") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_CXX_COMPILER_LINKER "") +set(CMAKE_CXX_COMPILER_LINKER_ID "") +set(CMAKE_CXX_COMPILER_LINKER_VERSION ) +set(CMAKE_CXX_COMPILER_LINKER_FRONTEND_VARIANT ) +set(CMAKE_MT "") +set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") +set(CMAKE_COMPILER_IS_GNUCXX ) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED ) + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm;ccm;cxxm;c++m) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang IN ITEMS C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) +set(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED ) +set(CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED ) +set(CMAKE_CXX_LINKER_PUSHPOP_STATE_SUPPORTED ) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "4") +set(CMAKE_CXX_COMPILER_ABI "") +set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/lib/emsdk/upstream/emscripten/cache/sysroot/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") +set(CMAKE_CXX_COMPILER_CLANG_RESOURCE_DIR "") + +set(CMAKE_CXX_COMPILER_IMPORT_STD "") + diff --git a/miner/build/CMakeFiles/4.1.2/CMakeSystem.cmake b/miner/build/CMakeFiles/4.1.2/CMakeSystem.cmake new file mode 100644 index 0000000..5874f58 --- /dev/null +++ b/miner/build/CMakeFiles/4.1.2/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-6.17.7-arch1-1") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "6.17.7-arch1-1") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + +include("/usr/lib/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake") + +set(CMAKE_SYSTEM "Emscripten-1") +set(CMAKE_SYSTEM_NAME "Emscripten") +set(CMAKE_SYSTEM_VERSION "1") +set(CMAKE_SYSTEM_PROCESSOR "x86") + +set(CMAKE_CROSSCOMPILING "TRUE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/miner/build/CMakeFiles/CMakeConfigureLog.yaml b/miner/build/CMakeFiles/CMakeConfigureLog.yaml new file mode 100644 index 0000000..f11e635 --- /dev/null +++ b/miner/build/CMakeFiles/CMakeConfigureLog.yaml @@ -0,0 +1,1302 @@ + +--- +events: + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineSystem.cmake:12 (find_program)" + - "CMakeLists.txt:31 (project)" + mode: "program" + variable: "CMAKE_UNAME" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "uname" + candidate_directories: + - "/usr/share/pyenv/libexec/" + - "/usr/share/pyenv/plugins/python-build/bin/" + - "/home/someone/.pyenv/shims/" + - "/home/someone/bin/" + - "/home/someone/.local/bin/" + - "/usr/local/bin/" + - "/home/someone/go/bin/" + - "/home/someone/.cargo/bin/" + - "/home/someone/.pyenv/bin/" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/" + - "/usr/local/sbin/" + - "/usr/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/opt/rocm/bin/" + - "/usr/lib/rustup/bin/" + - "/bin/" + searched_directories: + - "/usr/share/pyenv/libexec/uname" + - "/usr/share/pyenv/plugins/python-build/bin/uname" + - "/home/someone/.pyenv/shims/uname" + - "/home/someone/bin/uname" + - "/home/someone/.local/bin/uname" + - "/usr/local/bin/uname" + - "/home/someone/go/bin/uname" + - "/home/someone/.cargo/bin/uname" + - "/home/someone/.pyenv/bin/uname" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/uname" + - "/usr/local/sbin/uname" + found: "/usr/bin/uname" + search_context: + ENV{PATH}: + - "/usr/share/pyenv/libexec" + - "/usr/share/pyenv/plugins/python-build/bin" + - "/home/someone/.pyenv/shims" + - "/home/someone/bin" + - "/home/someone/.local/bin" + - "/usr/local/bin" + - "/home/someone/go/bin" + - "/home/someone/.cargo/bin" + - "/home/someone/.pyenv/bin" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/opt/rocm/bin" + - "/usr/lib/rustup/bin" + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeDetermineSystem.cmake:207 (message)" + - "CMakeLists.txt:31 (project)" + message: | + The target system is: Emscripten - 1 - x86 + The host system is: Linux - 6.17.7-arch1-1 - x86_64 + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeUnixFindMake.cmake:5 (find_program)" + - "CMakeLists.txt:31 (project)" + mode: "program" + variable: "CMAKE_MAKE_PROGRAM" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: true + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "gmake" + - "make" + - "smake" + candidate_directories: + - "/usr/share/pyenv/libexec/" + - "/usr/share/pyenv/plugins/python-build/bin/" + - "/home/someone/.pyenv/shims/" + - "/home/someone/bin/" + - "/home/someone/.local/bin/" + - "/usr/local/bin/" + - "/home/someone/go/bin/" + - "/home/someone/.cargo/bin/" + - "/home/someone/.pyenv/bin/" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/" + - "/usr/local/sbin/" + - "/usr/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/opt/rocm/bin/" + - "/usr/lib/rustup/bin/" + - "/bin/" + - "/sbin/" + searched_directories: + - "/usr/share/pyenv/libexec/gmake" + - "/usr/share/pyenv/plugins/python-build/bin/gmake" + - "/home/someone/.pyenv/shims/gmake" + - "/home/someone/bin/gmake" + - "/home/someone/.local/bin/gmake" + - "/usr/local/bin/gmake" + - "/home/someone/go/bin/gmake" + - "/home/someone/.cargo/bin/gmake" + - "/home/someone/.pyenv/bin/gmake" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/gmake" + - "/usr/local/sbin/gmake" + - "/usr/bin/gmake" + - "/usr/lib/jvm/default/bin/gmake" + - "/usr/bin/site_perl/gmake" + - "/usr/bin/vendor_perl/gmake" + - "/usr/bin/core_perl/gmake" + - "/opt/rocm/bin/gmake" + - "/usr/lib/rustup/bin/gmake" + - "/bin/gmake" + - "/sbin/gmake" + - "/usr/share/pyenv/libexec/make" + - "/usr/share/pyenv/plugins/python-build/bin/make" + - "/home/someone/.pyenv/shims/make" + - "/home/someone/bin/make" + - "/home/someone/.local/bin/make" + - "/usr/local/bin/make" + - "/home/someone/go/bin/make" + - "/home/someone/.cargo/bin/make" + - "/home/someone/.pyenv/bin/make" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/make" + - "/usr/local/sbin/make" + found: "/usr/bin/make" + search_context: + ENV{PATH}: + - "/usr/share/pyenv/libexec" + - "/usr/share/pyenv/plugins/python-build/bin" + - "/home/someone/.pyenv/shims" + - "/home/someone/bin" + - "/home/someone/.local/bin" + - "/usr/local/bin" + - "/home/someone/go/bin" + - "/home/someone/.cargo/bin" + - "/home/someone/.pyenv/bin" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/opt/rocm/bin" + - "/usr/lib/rustup/bin" + CMAKE_SYSTEM_PREFIX_PATH: + - "/" + - "/" + CMAKE_FIND_ROOT_PATH: "/usr/lib/emsdk/upstream/emscripten/cache/sysroot;/usr/lib/emsdk/upstream/emscripten/cache/sysroot" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:31 (project)" + mode: "program" + variable: "CMAKE_STRIP" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "llvm-strip" + - "strip" + candidate_directories: + - "/usr/lib/emsdk/upstream/emscripten/" + - "/usr/share/pyenv/libexec/" + - "/usr/share/pyenv/plugins/python-build/bin/" + - "/home/someone/.pyenv/shims/" + - "/home/someone/bin/" + - "/home/someone/.local/bin/" + - "/usr/local/bin/" + - "/home/someone/go/bin/" + - "/home/someone/.cargo/bin/" + - "/home/someone/.pyenv/bin/" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/" + - "/usr/local/sbin/" + - "/usr/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/opt/rocm/bin/" + - "/usr/lib/rustup/bin/" + - "/bin/" + - "/sbin/" + searched_directories: + - "/usr/lib/emsdk/upstream/emscripten/llvm-strip" + - "/usr/share/pyenv/libexec/llvm-strip" + - "/usr/share/pyenv/plugins/python-build/bin/llvm-strip" + - "/home/someone/.pyenv/shims/llvm-strip" + - "/home/someone/bin/llvm-strip" + - "/home/someone/.local/bin/llvm-strip" + - "/usr/local/bin/llvm-strip" + - "/home/someone/go/bin/llvm-strip" + - "/home/someone/.cargo/bin/llvm-strip" + - "/home/someone/.pyenv/bin/llvm-strip" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/llvm-strip" + - "/usr/local/sbin/llvm-strip" + - "/usr/bin/llvm-strip" + - "/usr/lib/jvm/default/bin/llvm-strip" + - "/usr/bin/site_perl/llvm-strip" + - "/usr/bin/vendor_perl/llvm-strip" + - "/usr/bin/core_perl/llvm-strip" + - "/opt/rocm/bin/llvm-strip" + - "/usr/lib/rustup/bin/llvm-strip" + - "/bin/llvm-strip" + - "/sbin/llvm-strip" + - "/usr/lib/emsdk/upstream/emscripten/strip" + - "/usr/share/pyenv/libexec/strip" + - "/usr/share/pyenv/plugins/python-build/bin/strip" + - "/home/someone/.pyenv/shims/strip" + - "/home/someone/bin/strip" + - "/home/someone/.local/bin/strip" + - "/usr/local/bin/strip" + - "/home/someone/go/bin/strip" + - "/home/someone/.cargo/bin/strip" + - "/home/someone/.pyenv/bin/strip" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/strip" + - "/usr/local/sbin/strip" + found: "/usr/bin/strip" + search_context: + ENV{PATH}: + - "/usr/share/pyenv/libexec" + - "/usr/share/pyenv/plugins/python-build/bin" + - "/home/someone/.pyenv/shims" + - "/home/someone/bin" + - "/home/someone/.local/bin" + - "/usr/local/bin" + - "/home/someone/go/bin" + - "/home/someone/.cargo/bin" + - "/home/someone/.pyenv/bin" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/opt/rocm/bin" + - "/usr/lib/rustup/bin" + CMAKE_SYSTEM_PREFIX_PATH: + - "/" + - "/" + CMAKE_FIND_ROOT_PATH: "/usr/lib/emsdk/upstream/emscripten/cache/sysroot;/usr/lib/emsdk/upstream/emscripten/cache/sysroot" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:31 (project)" + mode: "program" + variable: "CMAKE_LINKER" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "ld.lld" + - "ld" + candidate_directories: + - "/usr/lib/emsdk/upstream/emscripten/" + - "/usr/share/pyenv/libexec/" + - "/usr/share/pyenv/plugins/python-build/bin/" + - "/home/someone/.pyenv/shims/" + - "/home/someone/bin/" + - "/home/someone/.local/bin/" + - "/usr/local/bin/" + - "/home/someone/go/bin/" + - "/home/someone/.cargo/bin/" + - "/home/someone/.pyenv/bin/" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/" + - "/usr/local/sbin/" + - "/usr/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/opt/rocm/bin/" + - "/usr/lib/rustup/bin/" + - "/bin/" + - "/sbin/" + searched_directories: + - "/usr/lib/emsdk/upstream/emscripten/ld.lld" + - "/usr/share/pyenv/libexec/ld.lld" + - "/usr/share/pyenv/plugins/python-build/bin/ld.lld" + - "/home/someone/.pyenv/shims/ld.lld" + - "/home/someone/bin/ld.lld" + - "/home/someone/.local/bin/ld.lld" + - "/usr/local/bin/ld.lld" + - "/home/someone/go/bin/ld.lld" + - "/home/someone/.cargo/bin/ld.lld" + - "/home/someone/.pyenv/bin/ld.lld" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/ld.lld" + - "/usr/local/sbin/ld.lld" + found: "/usr/bin/ld.lld" + search_context: + ENV{PATH}: + - "/usr/share/pyenv/libexec" + - "/usr/share/pyenv/plugins/python-build/bin" + - "/home/someone/.pyenv/shims" + - "/home/someone/bin" + - "/home/someone/.local/bin" + - "/usr/local/bin" + - "/home/someone/go/bin" + - "/home/someone/.cargo/bin" + - "/home/someone/.pyenv/bin" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/opt/rocm/bin" + - "/usr/lib/rustup/bin" + CMAKE_SYSTEM_PREFIX_PATH: + - "/" + - "/" + CMAKE_FIND_ROOT_PATH: "/usr/lib/emsdk/upstream/emscripten/cache/sysroot;/usr/lib/emsdk/upstream/emscripten/cache/sysroot" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:31 (project)" + mode: "program" + variable: "CMAKE_OBJDUMP" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "llvm-objdump" + - "objdump" + candidate_directories: + - "/usr/lib/emsdk/upstream/emscripten/" + - "/usr/share/pyenv/libexec/" + - "/usr/share/pyenv/plugins/python-build/bin/" + - "/home/someone/.pyenv/shims/" + - "/home/someone/bin/" + - "/home/someone/.local/bin/" + - "/usr/local/bin/" + - "/home/someone/go/bin/" + - "/home/someone/.cargo/bin/" + - "/home/someone/.pyenv/bin/" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/" + - "/usr/local/sbin/" + - "/usr/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/opt/rocm/bin/" + - "/usr/lib/rustup/bin/" + - "/bin/" + - "/sbin/" + searched_directories: + - "/usr/lib/emsdk/upstream/emscripten/llvm-objdump" + - "/usr/share/pyenv/libexec/llvm-objdump" + - "/usr/share/pyenv/plugins/python-build/bin/llvm-objdump" + - "/home/someone/.pyenv/shims/llvm-objdump" + - "/home/someone/bin/llvm-objdump" + - "/home/someone/.local/bin/llvm-objdump" + - "/usr/local/bin/llvm-objdump" + - "/home/someone/go/bin/llvm-objdump" + - "/home/someone/.cargo/bin/llvm-objdump" + - "/home/someone/.pyenv/bin/llvm-objdump" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/llvm-objdump" + - "/usr/local/sbin/llvm-objdump" + - "/usr/bin/llvm-objdump" + - "/usr/lib/jvm/default/bin/llvm-objdump" + - "/usr/bin/site_perl/llvm-objdump" + - "/usr/bin/vendor_perl/llvm-objdump" + - "/usr/bin/core_perl/llvm-objdump" + - "/opt/rocm/bin/llvm-objdump" + - "/usr/lib/rustup/bin/llvm-objdump" + - "/bin/llvm-objdump" + - "/sbin/llvm-objdump" + - "/usr/lib/emsdk/upstream/emscripten/objdump" + - "/usr/share/pyenv/libexec/objdump" + - "/usr/share/pyenv/plugins/python-build/bin/objdump" + - "/home/someone/.pyenv/shims/objdump" + - "/home/someone/bin/objdump" + - "/home/someone/.local/bin/objdump" + - "/usr/local/bin/objdump" + - "/home/someone/go/bin/objdump" + - "/home/someone/.cargo/bin/objdump" + - "/home/someone/.pyenv/bin/objdump" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/objdump" + - "/usr/local/sbin/objdump" + found: "/usr/bin/objdump" + search_context: + ENV{PATH}: + - "/usr/share/pyenv/libexec" + - "/usr/share/pyenv/plugins/python-build/bin" + - "/home/someone/.pyenv/shims" + - "/home/someone/bin" + - "/home/someone/.local/bin" + - "/usr/local/bin" + - "/home/someone/go/bin" + - "/home/someone/.cargo/bin" + - "/home/someone/.pyenv/bin" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/opt/rocm/bin" + - "/usr/lib/rustup/bin" + CMAKE_SYSTEM_PREFIX_PATH: + - "/" + - "/" + CMAKE_FIND_ROOT_PATH: "/usr/lib/emsdk/upstream/emscripten/cache/sysroot;/usr/lib/emsdk/upstream/emscripten/cache/sysroot" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:31 (project)" + mode: "program" + variable: "CMAKE_OBJCOPY" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "llvm-objcopy" + - "objcopy" + candidate_directories: + - "/usr/lib/emsdk/upstream/emscripten/" + - "/usr/share/pyenv/libexec/" + - "/usr/share/pyenv/plugins/python-build/bin/" + - "/home/someone/.pyenv/shims/" + - "/home/someone/bin/" + - "/home/someone/.local/bin/" + - "/usr/local/bin/" + - "/home/someone/go/bin/" + - "/home/someone/.cargo/bin/" + - "/home/someone/.pyenv/bin/" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/" + - "/usr/local/sbin/" + - "/usr/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/opt/rocm/bin/" + - "/usr/lib/rustup/bin/" + - "/bin/" + - "/sbin/" + searched_directories: + - "/usr/lib/emsdk/upstream/emscripten/llvm-objcopy" + - "/usr/share/pyenv/libexec/llvm-objcopy" + - "/usr/share/pyenv/plugins/python-build/bin/llvm-objcopy" + - "/home/someone/.pyenv/shims/llvm-objcopy" + - "/home/someone/bin/llvm-objcopy" + - "/home/someone/.local/bin/llvm-objcopy" + - "/usr/local/bin/llvm-objcopy" + - "/home/someone/go/bin/llvm-objcopy" + - "/home/someone/.cargo/bin/llvm-objcopy" + - "/home/someone/.pyenv/bin/llvm-objcopy" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/llvm-objcopy" + - "/usr/local/sbin/llvm-objcopy" + - "/usr/bin/llvm-objcopy" + - "/usr/lib/jvm/default/bin/llvm-objcopy" + - "/usr/bin/site_perl/llvm-objcopy" + - "/usr/bin/vendor_perl/llvm-objcopy" + - "/usr/bin/core_perl/llvm-objcopy" + - "/opt/rocm/bin/llvm-objcopy" + - "/usr/lib/rustup/bin/llvm-objcopy" + - "/bin/llvm-objcopy" + - "/sbin/llvm-objcopy" + - "/usr/lib/emsdk/upstream/emscripten/objcopy" + - "/usr/share/pyenv/libexec/objcopy" + - "/usr/share/pyenv/plugins/python-build/bin/objcopy" + - "/home/someone/.pyenv/shims/objcopy" + - "/home/someone/bin/objcopy" + - "/home/someone/.local/bin/objcopy" + - "/usr/local/bin/objcopy" + - "/home/someone/go/bin/objcopy" + - "/home/someone/.cargo/bin/objcopy" + - "/home/someone/.pyenv/bin/objcopy" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/objcopy" + - "/usr/local/sbin/objcopy" + found: "/usr/bin/objcopy" + search_context: + ENV{PATH}: + - "/usr/share/pyenv/libexec" + - "/usr/share/pyenv/plugins/python-build/bin" + - "/home/someone/.pyenv/shims" + - "/home/someone/bin" + - "/home/someone/.local/bin" + - "/usr/local/bin" + - "/home/someone/go/bin" + - "/home/someone/.cargo/bin" + - "/home/someone/.pyenv/bin" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/opt/rocm/bin" + - "/usr/lib/rustup/bin" + CMAKE_SYSTEM_PREFIX_PATH: + - "/" + - "/" + CMAKE_FIND_ROOT_PATH: "/usr/lib/emsdk/upstream/emscripten/cache/sysroot;/usr/lib/emsdk/upstream/emscripten/cache/sysroot" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:31 (project)" + mode: "program" + variable: "CMAKE_READELF" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "llvm-readelf" + - "readelf" + candidate_directories: + - "/usr/lib/emsdk/upstream/emscripten/" + - "/usr/share/pyenv/libexec/" + - "/usr/share/pyenv/plugins/python-build/bin/" + - "/home/someone/.pyenv/shims/" + - "/home/someone/bin/" + - "/home/someone/.local/bin/" + - "/usr/local/bin/" + - "/home/someone/go/bin/" + - "/home/someone/.cargo/bin/" + - "/home/someone/.pyenv/bin/" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/" + - "/usr/local/sbin/" + - "/usr/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/opt/rocm/bin/" + - "/usr/lib/rustup/bin/" + - "/bin/" + - "/sbin/" + searched_directories: + - "/usr/lib/emsdk/upstream/emscripten/llvm-readelf" + - "/usr/share/pyenv/libexec/llvm-readelf" + - "/usr/share/pyenv/plugins/python-build/bin/llvm-readelf" + - "/home/someone/.pyenv/shims/llvm-readelf" + - "/home/someone/bin/llvm-readelf" + - "/home/someone/.local/bin/llvm-readelf" + - "/usr/local/bin/llvm-readelf" + - "/home/someone/go/bin/llvm-readelf" + - "/home/someone/.cargo/bin/llvm-readelf" + - "/home/someone/.pyenv/bin/llvm-readelf" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/llvm-readelf" + - "/usr/local/sbin/llvm-readelf" + - "/usr/bin/llvm-readelf" + - "/usr/lib/jvm/default/bin/llvm-readelf" + - "/usr/bin/site_perl/llvm-readelf" + - "/usr/bin/vendor_perl/llvm-readelf" + - "/usr/bin/core_perl/llvm-readelf" + - "/opt/rocm/bin/llvm-readelf" + - "/usr/lib/rustup/bin/llvm-readelf" + - "/bin/llvm-readelf" + - "/sbin/llvm-readelf" + - "/usr/lib/emsdk/upstream/emscripten/readelf" + - "/usr/share/pyenv/libexec/readelf" + - "/usr/share/pyenv/plugins/python-build/bin/readelf" + - "/home/someone/.pyenv/shims/readelf" + - "/home/someone/bin/readelf" + - "/home/someone/.local/bin/readelf" + - "/usr/local/bin/readelf" + - "/home/someone/go/bin/readelf" + - "/home/someone/.cargo/bin/readelf" + - "/home/someone/.pyenv/bin/readelf" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/readelf" + - "/usr/local/sbin/readelf" + found: "/usr/bin/readelf" + search_context: + ENV{PATH}: + - "/usr/share/pyenv/libexec" + - "/usr/share/pyenv/plugins/python-build/bin" + - "/home/someone/.pyenv/shims" + - "/home/someone/bin" + - "/home/someone/.local/bin" + - "/usr/local/bin" + - "/home/someone/go/bin" + - "/home/someone/.cargo/bin" + - "/home/someone/.pyenv/bin" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/opt/rocm/bin" + - "/usr/lib/rustup/bin" + CMAKE_SYSTEM_PREFIX_PATH: + - "/" + - "/" + CMAKE_FIND_ROOT_PATH: "/usr/lib/emsdk/upstream/emscripten/cache/sysroot;/usr/lib/emsdk/upstream/emscripten/cache/sysroot" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:31 (project)" + mode: "program" + variable: "CMAKE_DLLTOOL" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "llvm-dlltool" + - "dlltool" + candidate_directories: + - "/usr/lib/emsdk/upstream/emscripten/" + - "/usr/share/pyenv/libexec/" + - "/usr/share/pyenv/plugins/python-build/bin/" + - "/home/someone/.pyenv/shims/" + - "/home/someone/bin/" + - "/home/someone/.local/bin/" + - "/usr/local/bin/" + - "/home/someone/go/bin/" + - "/home/someone/.cargo/bin/" + - "/home/someone/.pyenv/bin/" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/" + - "/usr/local/sbin/" + - "/usr/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/opt/rocm/bin/" + - "/usr/lib/rustup/bin/" + - "/bin/" + - "/sbin/" + searched_directories: + - "/usr/lib/emsdk/upstream/emscripten/llvm-dlltool" + - "/usr/share/pyenv/libexec/llvm-dlltool" + - "/usr/share/pyenv/plugins/python-build/bin/llvm-dlltool" + - "/home/someone/.pyenv/shims/llvm-dlltool" + - "/home/someone/bin/llvm-dlltool" + - "/home/someone/.local/bin/llvm-dlltool" + - "/usr/local/bin/llvm-dlltool" + - "/home/someone/go/bin/llvm-dlltool" + - "/home/someone/.cargo/bin/llvm-dlltool" + - "/home/someone/.pyenv/bin/llvm-dlltool" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/llvm-dlltool" + - "/usr/local/sbin/llvm-dlltool" + - "/usr/bin/llvm-dlltool" + - "/usr/lib/jvm/default/bin/llvm-dlltool" + - "/usr/bin/site_perl/llvm-dlltool" + - "/usr/bin/vendor_perl/llvm-dlltool" + - "/usr/bin/core_perl/llvm-dlltool" + - "/opt/rocm/bin/llvm-dlltool" + - "/usr/lib/rustup/bin/llvm-dlltool" + - "/bin/llvm-dlltool" + - "/sbin/llvm-dlltool" + - "/usr/lib/emsdk/upstream/emscripten/dlltool" + - "/usr/share/pyenv/libexec/dlltool" + - "/usr/share/pyenv/plugins/python-build/bin/dlltool" + - "/home/someone/.pyenv/shims/dlltool" + - "/home/someone/bin/dlltool" + - "/home/someone/.local/bin/dlltool" + - "/usr/local/bin/dlltool" + - "/home/someone/go/bin/dlltool" + - "/home/someone/.cargo/bin/dlltool" + - "/home/someone/.pyenv/bin/dlltool" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/dlltool" + - "/usr/local/sbin/dlltool" + - "/usr/bin/dlltool" + - "/usr/lib/jvm/default/bin/dlltool" + - "/usr/bin/site_perl/dlltool" + - "/usr/bin/vendor_perl/dlltool" + - "/usr/bin/core_perl/dlltool" + - "/opt/rocm/bin/dlltool" + - "/usr/lib/rustup/bin/dlltool" + - "/bin/dlltool" + - "/sbin/dlltool" + found: false + search_context: + ENV{PATH}: + - "/usr/share/pyenv/libexec" + - "/usr/share/pyenv/plugins/python-build/bin" + - "/home/someone/.pyenv/shims" + - "/home/someone/bin" + - "/home/someone/.local/bin" + - "/usr/local/bin" + - "/home/someone/go/bin" + - "/home/someone/.cargo/bin" + - "/home/someone/.pyenv/bin" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/opt/rocm/bin" + - "/usr/lib/rustup/bin" + CMAKE_SYSTEM_PREFIX_PATH: + - "/" + - "/" + CMAKE_FIND_ROOT_PATH: "/usr/lib/emsdk/upstream/emscripten/cache/sysroot;/usr/lib/emsdk/upstream/emscripten/cache/sysroot" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:31 (project)" + mode: "program" + variable: "CMAKE_ADDR2LINE" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "llvm-addr2line" + - "addr2line" + candidate_directories: + - "/usr/lib/emsdk/upstream/emscripten/" + - "/usr/share/pyenv/libexec/" + - "/usr/share/pyenv/plugins/python-build/bin/" + - "/home/someone/.pyenv/shims/" + - "/home/someone/bin/" + - "/home/someone/.local/bin/" + - "/usr/local/bin/" + - "/home/someone/go/bin/" + - "/home/someone/.cargo/bin/" + - "/home/someone/.pyenv/bin/" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/" + - "/usr/local/sbin/" + - "/usr/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/opt/rocm/bin/" + - "/usr/lib/rustup/bin/" + - "/bin/" + - "/sbin/" + searched_directories: + - "/usr/lib/emsdk/upstream/emscripten/llvm-addr2line" + - "/usr/share/pyenv/libexec/llvm-addr2line" + - "/usr/share/pyenv/plugins/python-build/bin/llvm-addr2line" + - "/home/someone/.pyenv/shims/llvm-addr2line" + - "/home/someone/bin/llvm-addr2line" + - "/home/someone/.local/bin/llvm-addr2line" + - "/usr/local/bin/llvm-addr2line" + - "/home/someone/go/bin/llvm-addr2line" + - "/home/someone/.cargo/bin/llvm-addr2line" + - "/home/someone/.pyenv/bin/llvm-addr2line" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/llvm-addr2line" + - "/usr/local/sbin/llvm-addr2line" + - "/usr/bin/llvm-addr2line" + - "/usr/lib/jvm/default/bin/llvm-addr2line" + - "/usr/bin/site_perl/llvm-addr2line" + - "/usr/bin/vendor_perl/llvm-addr2line" + - "/usr/bin/core_perl/llvm-addr2line" + - "/opt/rocm/bin/llvm-addr2line" + - "/usr/lib/rustup/bin/llvm-addr2line" + - "/bin/llvm-addr2line" + - "/sbin/llvm-addr2line" + - "/usr/lib/emsdk/upstream/emscripten/addr2line" + - "/usr/share/pyenv/libexec/addr2line" + - "/usr/share/pyenv/plugins/python-build/bin/addr2line" + - "/home/someone/.pyenv/shims/addr2line" + - "/home/someone/bin/addr2line" + - "/home/someone/.local/bin/addr2line" + - "/usr/local/bin/addr2line" + - "/home/someone/go/bin/addr2line" + - "/home/someone/.cargo/bin/addr2line" + - "/home/someone/.pyenv/bin/addr2line" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/addr2line" + - "/usr/local/sbin/addr2line" + found: "/usr/bin/addr2line" + search_context: + ENV{PATH}: + - "/usr/share/pyenv/libexec" + - "/usr/share/pyenv/plugins/python-build/bin" + - "/home/someone/.pyenv/shims" + - "/home/someone/bin" + - "/home/someone/.local/bin" + - "/usr/local/bin" + - "/home/someone/go/bin" + - "/home/someone/.cargo/bin" + - "/home/someone/.pyenv/bin" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/opt/rocm/bin" + - "/usr/lib/rustup/bin" + CMAKE_SYSTEM_PREFIX_PATH: + - "/" + - "/" + CMAKE_FIND_ROOT_PATH: "/usr/lib/emsdk/upstream/emscripten/cache/sysroot;/usr/lib/emsdk/upstream/emscripten/cache/sysroot" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake:238 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:200 (include)" + - "CMakeLists.txt:31 (project)" + mode: "program" + variable: "CMAKE_TAPI" + description: "Path to a program." + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "tapi" + candidate_directories: + - "/usr/lib/emsdk/upstream/emscripten/" + - "/usr/share/pyenv/libexec/" + - "/usr/share/pyenv/plugins/python-build/bin/" + - "/home/someone/.pyenv/shims/" + - "/home/someone/bin/" + - "/home/someone/.local/bin/" + - "/usr/local/bin/" + - "/home/someone/go/bin/" + - "/home/someone/.cargo/bin/" + - "/home/someone/.pyenv/bin/" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/" + - "/usr/local/sbin/" + - "/usr/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/opt/rocm/bin/" + - "/usr/lib/rustup/bin/" + - "/bin/" + - "/sbin/" + searched_directories: + - "/usr/lib/emsdk/upstream/emscripten/tapi" + - "/usr/share/pyenv/libexec/tapi" + - "/usr/share/pyenv/plugins/python-build/bin/tapi" + - "/home/someone/.pyenv/shims/tapi" + - "/home/someone/bin/tapi" + - "/home/someone/.local/bin/tapi" + - "/usr/local/bin/tapi" + - "/home/someone/go/bin/tapi" + - "/home/someone/.cargo/bin/tapi" + - "/home/someone/.pyenv/bin/tapi" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/tapi" + - "/usr/local/sbin/tapi" + - "/usr/bin/tapi" + - "/usr/lib/jvm/default/bin/tapi" + - "/usr/bin/site_perl/tapi" + - "/usr/bin/vendor_perl/tapi" + - "/usr/bin/core_perl/tapi" + - "/opt/rocm/bin/tapi" + - "/usr/lib/rustup/bin/tapi" + - "/bin/tapi" + - "/sbin/tapi" + found: false + search_context: + ENV{PATH}: + - "/usr/share/pyenv/libexec" + - "/usr/share/pyenv/plugins/python-build/bin" + - "/home/someone/.pyenv/shims" + - "/home/someone/bin" + - "/home/someone/.local/bin" + - "/usr/local/bin" + - "/home/someone/go/bin" + - "/home/someone/.cargo/bin" + - "/home/someone/.pyenv/bin" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/opt/rocm/bin" + - "/usr/lib/rustup/bin" + CMAKE_SYSTEM_PREFIX_PATH: + - "/" + - "/" + CMAKE_FIND_ROOT_PATH: "/usr/lib/emsdk/upstream/emscripten/cache/sysroot;/usr/lib/emsdk/upstream/emscripten/cache/sysroot" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/Compiler/Clang-FindBinUtils.cmake:50 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:201 (include)" + - "CMakeLists.txt:31 (project)" + mode: "program" + variable: "CMAKE_C_COMPILER_CLANG_SCAN_DEPS" + description: "`clang-scan-deps` dependency scanner" + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "clang-scan-deps-20.0" + - "clang-scan-deps-20" + - "clang-scan-deps20" + - "clang-scan-deps" + candidate_directories: + - "/usr/lib/emsdk/upstream/emscripten/" + - "/usr/share/pyenv/libexec/" + - "/usr/share/pyenv/plugins/python-build/bin/" + - "/home/someone/.pyenv/shims/" + - "/home/someone/bin/" + - "/home/someone/.local/bin/" + - "/usr/local/bin/" + - "/home/someone/go/bin/" + - "/home/someone/.cargo/bin/" + - "/home/someone/.pyenv/bin/" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/" + - "/usr/local/sbin/" + - "/usr/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/opt/rocm/bin/" + - "/usr/lib/rustup/bin/" + - "/bin/" + - "/sbin/" + searched_directories: + - "/usr/lib/emsdk/upstream/emscripten/clang-scan-deps-20.0" + - "/usr/share/pyenv/libexec/clang-scan-deps-20.0" + - "/usr/share/pyenv/plugins/python-build/bin/clang-scan-deps-20.0" + - "/home/someone/.pyenv/shims/clang-scan-deps-20.0" + - "/home/someone/bin/clang-scan-deps-20.0" + - "/home/someone/.local/bin/clang-scan-deps-20.0" + - "/usr/local/bin/clang-scan-deps-20.0" + - "/home/someone/go/bin/clang-scan-deps-20.0" + - "/home/someone/.cargo/bin/clang-scan-deps-20.0" + - "/home/someone/.pyenv/bin/clang-scan-deps-20.0" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/clang-scan-deps-20.0" + - "/usr/local/sbin/clang-scan-deps-20.0" + - "/usr/bin/clang-scan-deps-20.0" + - "/usr/lib/jvm/default/bin/clang-scan-deps-20.0" + - "/usr/bin/site_perl/clang-scan-deps-20.0" + - "/usr/bin/vendor_perl/clang-scan-deps-20.0" + - "/usr/bin/core_perl/clang-scan-deps-20.0" + - "/opt/rocm/bin/clang-scan-deps-20.0" + - "/usr/lib/rustup/bin/clang-scan-deps-20.0" + - "/bin/clang-scan-deps-20.0" + - "/sbin/clang-scan-deps-20.0" + - "/usr/lib/emsdk/upstream/emscripten/clang-scan-deps-20" + - "/usr/share/pyenv/libexec/clang-scan-deps-20" + - "/usr/share/pyenv/plugins/python-build/bin/clang-scan-deps-20" + - "/home/someone/.pyenv/shims/clang-scan-deps-20" + - "/home/someone/bin/clang-scan-deps-20" + - "/home/someone/.local/bin/clang-scan-deps-20" + - "/usr/local/bin/clang-scan-deps-20" + - "/home/someone/go/bin/clang-scan-deps-20" + - "/home/someone/.cargo/bin/clang-scan-deps-20" + - "/home/someone/.pyenv/bin/clang-scan-deps-20" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/clang-scan-deps-20" + - "/usr/local/sbin/clang-scan-deps-20" + - "/usr/bin/clang-scan-deps-20" + - "/usr/lib/jvm/default/bin/clang-scan-deps-20" + - "/usr/bin/site_perl/clang-scan-deps-20" + - "/usr/bin/vendor_perl/clang-scan-deps-20" + - "/usr/bin/core_perl/clang-scan-deps-20" + - "/opt/rocm/bin/clang-scan-deps-20" + - "/usr/lib/rustup/bin/clang-scan-deps-20" + - "/bin/clang-scan-deps-20" + - "/sbin/clang-scan-deps-20" + - "/usr/lib/emsdk/upstream/emscripten/clang-scan-deps20" + - "/usr/share/pyenv/libexec/clang-scan-deps20" + - "/usr/share/pyenv/plugins/python-build/bin/clang-scan-deps20" + - "/home/someone/.pyenv/shims/clang-scan-deps20" + - "/home/someone/bin/clang-scan-deps20" + - "/home/someone/.local/bin/clang-scan-deps20" + - "/usr/local/bin/clang-scan-deps20" + - "/home/someone/go/bin/clang-scan-deps20" + - "/home/someone/.cargo/bin/clang-scan-deps20" + - "/home/someone/.pyenv/bin/clang-scan-deps20" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/clang-scan-deps20" + - "/usr/local/sbin/clang-scan-deps20" + - "/usr/bin/clang-scan-deps20" + - "/usr/lib/jvm/default/bin/clang-scan-deps20" + - "/usr/bin/site_perl/clang-scan-deps20" + - "/usr/bin/vendor_perl/clang-scan-deps20" + - "/usr/bin/core_perl/clang-scan-deps20" + - "/opt/rocm/bin/clang-scan-deps20" + - "/usr/lib/rustup/bin/clang-scan-deps20" + - "/bin/clang-scan-deps20" + - "/sbin/clang-scan-deps20" + - "/usr/lib/emsdk/upstream/emscripten/clang-scan-deps" + - "/usr/share/pyenv/libexec/clang-scan-deps" + - "/usr/share/pyenv/plugins/python-build/bin/clang-scan-deps" + - "/home/someone/.pyenv/shims/clang-scan-deps" + - "/home/someone/bin/clang-scan-deps" + - "/home/someone/.local/bin/clang-scan-deps" + - "/usr/local/bin/clang-scan-deps" + - "/home/someone/go/bin/clang-scan-deps" + - "/home/someone/.cargo/bin/clang-scan-deps" + - "/home/someone/.pyenv/bin/clang-scan-deps" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/clang-scan-deps" + - "/usr/local/sbin/clang-scan-deps" + found: "/usr/bin/clang-scan-deps" + search_context: + ENV{PATH}: + - "/usr/share/pyenv/libexec" + - "/usr/share/pyenv/plugins/python-build/bin" + - "/home/someone/.pyenv/shims" + - "/home/someone/bin" + - "/home/someone/.local/bin" + - "/usr/local/bin" + - "/home/someone/go/bin" + - "/home/someone/.cargo/bin" + - "/home/someone/.pyenv/bin" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/opt/rocm/bin" + - "/usr/lib/rustup/bin" + CMAKE_SYSTEM_PREFIX_PATH: + - "/" + - "/" + CMAKE_FIND_ROOT_PATH: "/usr/lib/emsdk/upstream/emscripten/cache/sysroot;/usr/lib/emsdk/upstream/emscripten/cache/sysroot" + - + kind: "find-v1" + backtrace: + - "/usr/share/cmake/Modules/Compiler/Clang-FindBinUtils.cmake:50 (find_program)" + - "/usr/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake:207 (include)" + - "CMakeLists.txt:31 (project)" + mode: "program" + variable: "CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS" + description: "`clang-scan-deps` dependency scanner" + settings: + SearchFramework: "NEVER" + SearchAppBundle: "NEVER" + CMAKE_FIND_USE_CMAKE_PATH: false + CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: false + CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: true + CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: true + CMAKE_FIND_USE_INSTALL_PREFIX: true + names: + - "clang-scan-deps-20.0" + - "clang-scan-deps-20" + - "clang-scan-deps20" + - "clang-scan-deps" + candidate_directories: + - "/usr/lib/emsdk/upstream/emscripten/" + - "/usr/share/pyenv/libexec/" + - "/usr/share/pyenv/plugins/python-build/bin/" + - "/home/someone/.pyenv/shims/" + - "/home/someone/bin/" + - "/home/someone/.local/bin/" + - "/usr/local/bin/" + - "/home/someone/go/bin/" + - "/home/someone/.cargo/bin/" + - "/home/someone/.pyenv/bin/" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/" + - "/usr/local/sbin/" + - "/usr/bin/" + - "/usr/lib/jvm/default/bin/" + - "/usr/bin/site_perl/" + - "/usr/bin/vendor_perl/" + - "/usr/bin/core_perl/" + - "/opt/rocm/bin/" + - "/usr/lib/rustup/bin/" + - "/bin/" + - "/sbin/" + searched_directories: + - "/usr/lib/emsdk/upstream/emscripten/clang-scan-deps-20.0" + - "/usr/share/pyenv/libexec/clang-scan-deps-20.0" + - "/usr/share/pyenv/plugins/python-build/bin/clang-scan-deps-20.0" + - "/home/someone/.pyenv/shims/clang-scan-deps-20.0" + - "/home/someone/bin/clang-scan-deps-20.0" + - "/home/someone/.local/bin/clang-scan-deps-20.0" + - "/usr/local/bin/clang-scan-deps-20.0" + - "/home/someone/go/bin/clang-scan-deps-20.0" + - "/home/someone/.cargo/bin/clang-scan-deps-20.0" + - "/home/someone/.pyenv/bin/clang-scan-deps-20.0" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/clang-scan-deps-20.0" + - "/usr/local/sbin/clang-scan-deps-20.0" + - "/usr/bin/clang-scan-deps-20.0" + - "/usr/lib/jvm/default/bin/clang-scan-deps-20.0" + - "/usr/bin/site_perl/clang-scan-deps-20.0" + - "/usr/bin/vendor_perl/clang-scan-deps-20.0" + - "/usr/bin/core_perl/clang-scan-deps-20.0" + - "/opt/rocm/bin/clang-scan-deps-20.0" + - "/usr/lib/rustup/bin/clang-scan-deps-20.0" + - "/bin/clang-scan-deps-20.0" + - "/sbin/clang-scan-deps-20.0" + - "/usr/lib/emsdk/upstream/emscripten/clang-scan-deps-20" + - "/usr/share/pyenv/libexec/clang-scan-deps-20" + - "/usr/share/pyenv/plugins/python-build/bin/clang-scan-deps-20" + - "/home/someone/.pyenv/shims/clang-scan-deps-20" + - "/home/someone/bin/clang-scan-deps-20" + - "/home/someone/.local/bin/clang-scan-deps-20" + - "/usr/local/bin/clang-scan-deps-20" + - "/home/someone/go/bin/clang-scan-deps-20" + - "/home/someone/.cargo/bin/clang-scan-deps-20" + - "/home/someone/.pyenv/bin/clang-scan-deps-20" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/clang-scan-deps-20" + - "/usr/local/sbin/clang-scan-deps-20" + - "/usr/bin/clang-scan-deps-20" + - "/usr/lib/jvm/default/bin/clang-scan-deps-20" + - "/usr/bin/site_perl/clang-scan-deps-20" + - "/usr/bin/vendor_perl/clang-scan-deps-20" + - "/usr/bin/core_perl/clang-scan-deps-20" + - "/opt/rocm/bin/clang-scan-deps-20" + - "/usr/lib/rustup/bin/clang-scan-deps-20" + - "/bin/clang-scan-deps-20" + - "/sbin/clang-scan-deps-20" + - "/usr/lib/emsdk/upstream/emscripten/clang-scan-deps20" + - "/usr/share/pyenv/libexec/clang-scan-deps20" + - "/usr/share/pyenv/plugins/python-build/bin/clang-scan-deps20" + - "/home/someone/.pyenv/shims/clang-scan-deps20" + - "/home/someone/bin/clang-scan-deps20" + - "/home/someone/.local/bin/clang-scan-deps20" + - "/usr/local/bin/clang-scan-deps20" + - "/home/someone/go/bin/clang-scan-deps20" + - "/home/someone/.cargo/bin/clang-scan-deps20" + - "/home/someone/.pyenv/bin/clang-scan-deps20" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/clang-scan-deps20" + - "/usr/local/sbin/clang-scan-deps20" + - "/usr/bin/clang-scan-deps20" + - "/usr/lib/jvm/default/bin/clang-scan-deps20" + - "/usr/bin/site_perl/clang-scan-deps20" + - "/usr/bin/vendor_perl/clang-scan-deps20" + - "/usr/bin/core_perl/clang-scan-deps20" + - "/opt/rocm/bin/clang-scan-deps20" + - "/usr/lib/rustup/bin/clang-scan-deps20" + - "/bin/clang-scan-deps20" + - "/sbin/clang-scan-deps20" + - "/usr/lib/emsdk/upstream/emscripten/clang-scan-deps" + - "/usr/share/pyenv/libexec/clang-scan-deps" + - "/usr/share/pyenv/plugins/python-build/bin/clang-scan-deps" + - "/home/someone/.pyenv/shims/clang-scan-deps" + - "/home/someone/bin/clang-scan-deps" + - "/home/someone/.local/bin/clang-scan-deps" + - "/usr/local/bin/clang-scan-deps" + - "/home/someone/go/bin/clang-scan-deps" + - "/home/someone/.cargo/bin/clang-scan-deps" + - "/home/someone/.pyenv/bin/clang-scan-deps" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin/clang-scan-deps" + - "/usr/local/sbin/clang-scan-deps" + found: "/usr/bin/clang-scan-deps" + search_context: + ENV{PATH}: + - "/usr/share/pyenv/libexec" + - "/usr/share/pyenv/plugins/python-build/bin" + - "/home/someone/.pyenv/shims" + - "/home/someone/bin" + - "/home/someone/.local/bin" + - "/usr/local/bin" + - "/home/someone/go/bin" + - "/home/someone/.cargo/bin" + - "/home/someone/.pyenv/bin" + - "/home/someone/.local/share/gem/ruby/3.4.0/bin" + - "/usr/local/sbin" + - "/usr/local/bin" + - "/usr/bin" + - "/usr/lib/jvm/default/bin" + - "/usr/bin/site_perl" + - "/usr/bin/vendor_perl" + - "/usr/bin/core_perl" + - "/opt/rocm/bin" + - "/usr/lib/rustup/bin" + CMAKE_SYSTEM_PREFIX_PATH: + - "/" + - "/" + CMAKE_FIND_ROOT_PATH: "/usr/lib/emsdk/upstream/emscripten/cache/sysroot;/usr/lib/emsdk/upstream/emscripten/cache/sysroot" + - + kind: "try_compile-v1" + backtrace: + - "/usr/share/cmake/Modules/Internal/CheckSourceCompiles.cmake:104 (try_compile)" + - "/usr/share/cmake/Modules/CheckCSourceCompiles.cmake:103 (cmake_check_source_compiles)" + - "/usr/share/cmake/Modules/FindThreads.cmake:97 (check_c_source_compiles)" + - "/usr/share/cmake/Modules/FindThreads.cmake:163 (_threads_check_libc)" + - "CMakeLists.txt:161 (find_package)" + checks: + - "Performing Test CMAKE_HAVE_LIBC_PTHREAD" + directories: + source: "/home/someone/mysite/miner/build/CMakeFiles/CMakeScratch/TryCompile-mWbsu1" + binary: "/home/someone/mysite/miner/build/CMakeFiles/CMakeScratch/TryCompile-mWbsu1" + cmakeVariables: + CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS: "/usr/bin/clang-scan-deps" + CMAKE_C_FLAGS: "" + CMAKE_C_FLAGS_DEBUG: "-g" + CMAKE_EXE_LINKER_FLAGS: "" + CMAKE_MODULE_PATH: "/usr/lib/emsdk/upstream/emscripten/cmake/Modules;/usr/lib/emsdk/upstream/emscripten/cmake/Modules;/usr/lib/emsdk/upstream/emscripten/cmake/Modules;/usr/lib/emsdk/upstream/emscripten/cmake/Modules;/usr/lib/emsdk/upstream/emscripten/cmake/Modules" + buildResult: + variable: "CMAKE_HAVE_LIBC_PTHREAD" + cached: true + stdout: | + Change Dir: '/home/someone/mysite/miner/build/CMakeFiles/CMakeScratch/TryCompile-mWbsu1' + + Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_21723/fast + /usr/bin/make -f CMakeFiles/cmTC_21723.dir/build.make CMakeFiles/cmTC_21723.dir/build + make[1]: Entering directory '/home/someone/mysite/miner/build/CMakeFiles/CMakeScratch/TryCompile-mWbsu1' + Building C object CMakeFiles/cmTC_21723.dir/src.c.o + /usr/lib/emsdk/upstream/emscripten/emcc -DCMAKE_HAVE_LIBC_PTHREAD -MD -MT CMakeFiles/cmTC_21723.dir/src.c.o -MF CMakeFiles/cmTC_21723.dir/src.c.o.d -o CMakeFiles/cmTC_21723.dir/src.c.o -c /home/someone/mysite/miner/build/CMakeFiles/CMakeScratch/TryCompile-mWbsu1/src.c + Linking C executable cmTC_21723.js + /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_21723.dir/link.txt --verbose=1 + /usr/lib/emsdk/upstream/emscripten/emcc @CMakeFiles/cmTC_21723.dir/objects1.rsp -o cmTC_21723.js + make[1]: Leaving directory '/home/someone/mysite/miner/build/CMakeFiles/CMakeScratch/TryCompile-mWbsu1' + + exitCode: 0 +... diff --git a/miner/build/CMakeFiles/CMakeDirectoryInformation.cmake b/miner/build/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..7c69488 --- /dev/null +++ b/miner/build/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/someone/mysite/miner") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/someone/mysite/miner/build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/miner/build/CMakeFiles/InstallScripts.json b/miner/build/CMakeFiles/InstallScripts.json new file mode 100644 index 0000000..3ff6066 --- /dev/null +++ b/miner/build/CMakeFiles/InstallScripts.json @@ -0,0 +1,7 @@ +{ + "InstallScripts" : + [ + "/home/someone/mysite/miner/build/cmake_install.cmake" + ], + "Parallel" : false +} diff --git a/miner/build/CMakeFiles/Makefile.cmake b/miner/build/CMakeFiles/Makefile.cmake new file mode 100644 index 0000000..c0092c9 --- /dev/null +++ b/miner/build/CMakeFiles/Makefile.cmake @@ -0,0 +1,81 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "/home/someone/mysite/miner/CMakeLists.txt" + "CMakeFiles/4.1.2/CMakeCCompiler.cmake" + "CMakeFiles/4.1.2/CMakeCXXCompiler.cmake" + "CMakeFiles/4.1.2/CMakeSystem.cmake" + "/usr/lib/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake" + "/usr/share/cmake/Modules/CMakeCCompiler.cmake.in" + "/usr/share/cmake/Modules/CMakeCInformation.cmake" + "/usr/share/cmake/Modules/CMakeCXXCompiler.cmake.in" + "/usr/share/cmake/Modules/CMakeCXXInformation.cmake" + "/usr/share/cmake/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake" + "/usr/share/cmake/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake" + "/usr/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake" + "/usr/share/cmake/Modules/CMakeDetermineCompiler.cmake" + "/usr/share/cmake/Modules/CMakeDetermineSystem.cmake" + "/usr/share/cmake/Modules/CMakeFindBinUtils.cmake" + "/usr/share/cmake/Modules/CMakeGenericSystem.cmake" + "/usr/share/cmake/Modules/CMakeInitializeConfigs.cmake" + "/usr/share/cmake/Modules/CMakeLanguageInformation.cmake" + "/usr/share/cmake/Modules/CMakeSystem.cmake.in" + "/usr/share/cmake/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/share/cmake/Modules/CMakeTestCCompiler.cmake" + "/usr/share/cmake/Modules/CMakeTestCXXCompiler.cmake" + "/usr/share/cmake/Modules/CMakeUnixFindMake.cmake" + "/usr/share/cmake/Modules/CheckCCompilerFlag.cmake" + "/usr/share/cmake/Modules/CheckCSourceCompiles.cmake" + "/usr/share/cmake/Modules/CheckCXXCompilerFlag.cmake" + "/usr/share/cmake/Modules/CheckCXXSourceCompiles.cmake" + "/usr/share/cmake/Modules/CheckIncludeFile.cmake" + "/usr/share/cmake/Modules/CheckLibraryExists.cmake" + "/usr/share/cmake/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/usr/share/cmake/Modules/Compiler/Clang-C.cmake" + "/usr/share/cmake/Modules/Compiler/Clang-CXX.cmake" + "/usr/share/cmake/Modules/Compiler/Clang-FindBinUtils.cmake" + "/usr/share/cmake/Modules/Compiler/Clang.cmake" + "/usr/share/cmake/Modules/Compiler/GNU.cmake" + "/usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake" + "/usr/share/cmake/Modules/FindPackageMessage.cmake" + "/usr/share/cmake/Modules/FindThreads.cmake" + "/usr/share/cmake/Modules/GNUInstallDirs.cmake" + "/usr/share/cmake/Modules/Internal/CMakeCLinkerInformation.cmake" + "/usr/share/cmake/Modules/Internal/CMakeCXXLinkerInformation.cmake" + "/usr/share/cmake/Modules/Internal/CMakeCommonLinkerInformation.cmake" + "/usr/share/cmake/Modules/Internal/CMakeInspectCLinker.cmake" + "/usr/share/cmake/Modules/Internal/CMakeInspectCXXLinker.cmake" + "/usr/share/cmake/Modules/Internal/CheckCompilerFlag.cmake" + "/usr/share/cmake/Modules/Internal/CheckFlagCommonConfig.cmake" + "/usr/share/cmake/Modules/Internal/CheckSourceCompiles.cmake" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/4.1.2/CMakeSystem.cmake" + "CMakeFiles/4.1.2/CMakeCCompiler.cmake" + "CMakeFiles/4.1.2/CMakeCXXCompiler.cmake" + "CMakeFiles/4.1.2/CMakeCCompiler.cmake" + "CMakeFiles/4.1.2/CMakeCXXCompiler.cmake" + "CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/randomx.dir/DependInfo.cmake" + "CMakeFiles/web-randomx.dir/DependInfo.cmake" + ) diff --git a/miner/build/CMakeFiles/Makefile2 b/miner/build/CMakeFiles/Makefile2 new file mode 100644 index 0000000..1c385d5 --- /dev/null +++ b/miner/build/CMakeFiles/Makefile2 @@ -0,0 +1,157 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/someone/mysite/miner + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/someone/mysite/miner/build + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: CMakeFiles/randomx.dir/all +all: CMakeFiles/web-randomx.dir/all +.PHONY : all + +# The main recursive "codegen" target. +codegen: CMakeFiles/randomx.dir/codegen +codegen: CMakeFiles/web-randomx.dir/codegen +.PHONY : codegen + +# The main recursive "preinstall" target. +preinstall: +.PHONY : preinstall + +# The main recursive "clean" target. +clean: CMakeFiles/randomx.dir/clean +clean: CMakeFiles/web-randomx.dir/clean +.PHONY : clean + +#============================================================================= +# Target rules for target CMakeFiles/randomx.dir + +# All Build rule for target. +CMakeFiles/randomx.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 "Built target randomx" +.PHONY : CMakeFiles/randomx.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/randomx.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/someone/mysite/miner/build/CMakeFiles 22 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/randomx.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/someone/mysite/miner/build/CMakeFiles 0 +.PHONY : CMakeFiles/randomx.dir/rule + +# Convenience name for target. +randomx: CMakeFiles/randomx.dir/rule +.PHONY : randomx + +# codegen rule for target. +CMakeFiles/randomx.dir/codegen: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/codegen + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 "Finished codegen for target randomx" +.PHONY : CMakeFiles/randomx.dir/codegen + +# clean rule for target. +CMakeFiles/randomx.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/clean +.PHONY : CMakeFiles/randomx.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/web-randomx.dir + +# All Build rule for target. +CMakeFiles/web-randomx.dir/all: CMakeFiles/randomx.dir/all + $(MAKE) $(MAKESILENT) -f CMakeFiles/web-randomx.dir/build.make CMakeFiles/web-randomx.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/web-randomx.dir/build.make CMakeFiles/web-randomx.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=23,24 "Built target web-randomx" +.PHONY : CMakeFiles/web-randomx.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/web-randomx.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/someone/mysite/miner/build/CMakeFiles 24 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/web-randomx.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/someone/mysite/miner/build/CMakeFiles 0 +.PHONY : CMakeFiles/web-randomx.dir/rule + +# Convenience name for target. +web-randomx: CMakeFiles/web-randomx.dir/rule +.PHONY : web-randomx + +# codegen rule for target. +CMakeFiles/web-randomx.dir/codegen: + $(MAKE) $(MAKESILENT) -f CMakeFiles/web-randomx.dir/build.make CMakeFiles/web-randomx.dir/codegen + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=23,24 "Finished codegen for target web-randomx" +.PHONY : CMakeFiles/web-randomx.dir/codegen + +# clean rule for target. +CMakeFiles/web-randomx.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/web-randomx.dir/build.make CMakeFiles/web-randomx.dir/clean +.PHONY : CMakeFiles/web-randomx.dir/clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/miner/build/CMakeFiles/TargetDirectories.txt b/miner/build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..5cb3c46 --- /dev/null +++ b/miner/build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,8 @@ +/home/someone/mysite/miner/build/CMakeFiles/randomx.dir +/home/someone/mysite/miner/build/CMakeFiles/web-randomx.dir +/home/someone/mysite/miner/build/CMakeFiles/edit_cache.dir +/home/someone/mysite/miner/build/CMakeFiles/rebuild_cache.dir +/home/someone/mysite/miner/build/CMakeFiles/list_install_components.dir +/home/someone/mysite/miner/build/CMakeFiles/install.dir +/home/someone/mysite/miner/build/CMakeFiles/install/local.dir +/home/someone/mysite/miner/build/CMakeFiles/install/strip.dir diff --git a/miner/build/CMakeFiles/cmake.check_cache b/miner/build/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/miner/build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/miner/build/CMakeFiles/progress.marks b/miner/build/CMakeFiles/progress.marks new file mode 100644 index 0000000..a45fd52 --- /dev/null +++ b/miner/build/CMakeFiles/progress.marks @@ -0,0 +1 @@ +24 diff --git a/miner/build/CMakeFiles/randomx.dir/DependInfo.cmake b/miner/build/CMakeFiles/randomx.dir/DependInfo.cmake new file mode 100644 index 0000000..1831e63 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/DependInfo.cmake @@ -0,0 +1,43 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/someone/mysite/miner/src/cpp/argon2_core.c" "CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o.d" + "/home/someone/mysite/miner/src/cpp/argon2_simd.c" "CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o.d" + "/home/someone/mysite/miner/src/cpp/blake2b.c" "CMakeFiles/randomx.dir/src/cpp/blake2b.c.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/blake2b.c.o.d" + "/home/someone/mysite/miner/src/cpp/reciprocal.c" "CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o.d" + "/home/someone/mysite/miner/src/cpp/aes_hash.cpp" "CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o.d" + "/home/someone/mysite/miner/src/cpp/allocator.cpp" "CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o.d" + "/home/someone/mysite/miner/src/cpp/assembly_generator_x86.cpp" "CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o.d" + "/home/someone/mysite/miner/src/cpp/blake2_generator.cpp" "CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o.d" + "/home/someone/mysite/miner/src/cpp/bytecode_machine.cpp" "CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o.d" + "/home/someone/mysite/miner/src/cpp/dataset.cpp" "CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o.d" + "/home/someone/mysite/miner/src/cpp/instruction.cpp" "CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o.d" + "/home/someone/mysite/miner/src/cpp/intrin_wasm.cpp" "CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o.d" + "/home/someone/mysite/miner/src/cpp/randomx.cpp" "CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o.d" + "/home/someone/mysite/miner/src/cpp/softfloat.cpp" "CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o.d" + "/home/someone/mysite/miner/src/cpp/superscalar.cpp" "CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o.d" + "/home/someone/mysite/miner/src/cpp/virtual_machine.cpp" "CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o.d" + "/home/someone/mysite/miner/src/cpp/virtual_memory.cpp" "CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o.d" + "/home/someone/mysite/miner/src/cpp/vm_compiled.cpp" "CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o.d" + "/home/someone/mysite/miner/src/cpp/vm_compiled_light.cpp" "CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o.d" + "/home/someone/mysite/miner/src/cpp/vm_interpreted.cpp" "CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o.d" + "/home/someone/mysite/miner/src/cpp/vm_interpreted_light.cpp" "CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o" "gcc" "CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/miner/build/CMakeFiles/randomx.dir/build.make b/miner/build/CMakeFiles/randomx.dir/build.make new file mode 100644 index 0000000..636271f --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/build.make @@ -0,0 +1,434 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/someone/mysite/miner + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/someone/mysite/miner/build + +# Include any dependencies generated for this target. +include CMakeFiles/randomx.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include CMakeFiles/randomx.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/randomx.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/randomx.dir/flags.make + +CMakeFiles/randomx.dir/codegen: +.PHONY : CMakeFiles/randomx.dir/codegen + +CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o: /home/someone/mysite/miner/src/cpp/aes_hash.cpp +CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o -MF CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o.d -o CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o -c /home/someone/mysite/miner/src/cpp/aes_hash.cpp + +CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/aes_hash.cpp > CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.i + +CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/aes_hash.cpp -o CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.s + +CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o: /home/someone/mysite/miner/src/cpp/argon2_simd.c +CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o" + /usr/lib/emsdk/upstream/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o -MF CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o.d -o CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o -c /home/someone/mysite/miner/src/cpp/argon2_simd.c + +CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.i" + /usr/lib/emsdk/upstream/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/argon2_simd.c > CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.i + +CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.s" + /usr/lib/emsdk/upstream/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/argon2_simd.c -o CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.s + +CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o: /home/someone/mysite/miner/src/cpp/bytecode_machine.cpp +CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o -MF CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o.d -o CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o -c /home/someone/mysite/miner/src/cpp/bytecode_machine.cpp + +CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/bytecode_machine.cpp > CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.i + +CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/bytecode_machine.cpp -o CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.s + +CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o: /home/someone/mysite/miner/src/cpp/dataset.cpp +CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o -MF CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o.d -o CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o -c /home/someone/mysite/miner/src/cpp/dataset.cpp + +CMakeFiles/randomx.dir/src/cpp/dataset.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/randomx.dir/src/cpp/dataset.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/dataset.cpp > CMakeFiles/randomx.dir/src/cpp/dataset.cpp.i + +CMakeFiles/randomx.dir/src/cpp/dataset.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/randomx.dir/src/cpp/dataset.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/dataset.cpp -o CMakeFiles/randomx.dir/src/cpp/dataset.cpp.s + +CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o: /home/someone/mysite/miner/src/cpp/virtual_memory.cpp +CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o -MF CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o.d -o CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o -c /home/someone/mysite/miner/src/cpp/virtual_memory.cpp + +CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/virtual_memory.cpp > CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.i + +CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/virtual_memory.cpp -o CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.s + +CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o: /home/someone/mysite/miner/src/cpp/vm_interpreted.cpp +CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o -MF CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o.d -o CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o -c /home/someone/mysite/miner/src/cpp/vm_interpreted.cpp + +CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/vm_interpreted.cpp > CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.i + +CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/vm_interpreted.cpp -o CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.s + +CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o: /home/someone/mysite/miner/src/cpp/allocator.cpp +CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CXX object CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o -MF CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o.d -o CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o -c /home/someone/mysite/miner/src/cpp/allocator.cpp + +CMakeFiles/randomx.dir/src/cpp/allocator.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/randomx.dir/src/cpp/allocator.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/allocator.cpp > CMakeFiles/randomx.dir/src/cpp/allocator.cpp.i + +CMakeFiles/randomx.dir/src/cpp/allocator.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/randomx.dir/src/cpp/allocator.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/allocator.cpp -o CMakeFiles/randomx.dir/src/cpp/allocator.cpp.s + +CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o: /home/someone/mysite/miner/src/cpp/assembly_generator_x86.cpp +CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CXX object CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o -MF CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o.d -o CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o -c /home/someone/mysite/miner/src/cpp/assembly_generator_x86.cpp + +CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/assembly_generator_x86.cpp > CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.i + +CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/assembly_generator_x86.cpp -o CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.s + +CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o: /home/someone/mysite/miner/src/cpp/instruction.cpp +CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Building CXX object CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o -MF CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o.d -o CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o -c /home/someone/mysite/miner/src/cpp/instruction.cpp + +CMakeFiles/randomx.dir/src/cpp/instruction.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/randomx.dir/src/cpp/instruction.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/instruction.cpp > CMakeFiles/randomx.dir/src/cpp/instruction.cpp.i + +CMakeFiles/randomx.dir/src/cpp/instruction.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/randomx.dir/src/cpp/instruction.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/instruction.cpp -o CMakeFiles/randomx.dir/src/cpp/instruction.cpp.s + +CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o: /home/someone/mysite/miner/src/cpp/randomx.cpp +CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_10) "Building CXX object CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o -MF CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o.d -o CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o -c /home/someone/mysite/miner/src/cpp/randomx.cpp + +CMakeFiles/randomx.dir/src/cpp/randomx.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/randomx.dir/src/cpp/randomx.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/randomx.cpp > CMakeFiles/randomx.dir/src/cpp/randomx.cpp.i + +CMakeFiles/randomx.dir/src/cpp/randomx.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/randomx.dir/src/cpp/randomx.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/randomx.cpp -o CMakeFiles/randomx.dir/src/cpp/randomx.cpp.s + +CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o: /home/someone/mysite/miner/src/cpp/superscalar.cpp +CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_11) "Building CXX object CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o -MF CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o.d -o CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o -c /home/someone/mysite/miner/src/cpp/superscalar.cpp + +CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/superscalar.cpp > CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.i + +CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/superscalar.cpp -o CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.s + +CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o: /home/someone/mysite/miner/src/cpp/vm_compiled.cpp +CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_12) "Building CXX object CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o -MF CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o.d -o CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o -c /home/someone/mysite/miner/src/cpp/vm_compiled.cpp + +CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/vm_compiled.cpp > CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.i + +CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/vm_compiled.cpp -o CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.s + +CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o: /home/someone/mysite/miner/src/cpp/vm_interpreted_light.cpp +CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_13) "Building CXX object CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o -MF CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o.d -o CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o -c /home/someone/mysite/miner/src/cpp/vm_interpreted_light.cpp + +CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/vm_interpreted_light.cpp > CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.i + +CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/vm_interpreted_light.cpp -o CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.s + +CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o: /home/someone/mysite/miner/src/cpp/argon2_core.c +CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_14) "Building C object CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o" + /usr/lib/emsdk/upstream/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o -MF CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o.d -o CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o -c /home/someone/mysite/miner/src/cpp/argon2_core.c + +CMakeFiles/randomx.dir/src/cpp/argon2_core.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/randomx.dir/src/cpp/argon2_core.c.i" + /usr/lib/emsdk/upstream/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/argon2_core.c > CMakeFiles/randomx.dir/src/cpp/argon2_core.c.i + +CMakeFiles/randomx.dir/src/cpp/argon2_core.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/randomx.dir/src/cpp/argon2_core.c.s" + /usr/lib/emsdk/upstream/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/argon2_core.c -o CMakeFiles/randomx.dir/src/cpp/argon2_core.c.s + +CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o: /home/someone/mysite/miner/src/cpp/blake2_generator.cpp +CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_15) "Building CXX object CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o -MF CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o.d -o CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o -c /home/someone/mysite/miner/src/cpp/blake2_generator.cpp + +CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/blake2_generator.cpp > CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.i + +CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/blake2_generator.cpp -o CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.s + +CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o: /home/someone/mysite/miner/src/cpp/intrin_wasm.cpp +CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_16) "Building CXX object CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o -MF CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o.d -o CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o -c /home/someone/mysite/miner/src/cpp/intrin_wasm.cpp + +CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/intrin_wasm.cpp > CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.i + +CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/intrin_wasm.cpp -o CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.s + +CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o: /home/someone/mysite/miner/src/cpp/softfloat.cpp +CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_17) "Building CXX object CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o -MF CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o.d -o CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o -c /home/someone/mysite/miner/src/cpp/softfloat.cpp + +CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/softfloat.cpp > CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.i + +CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/softfloat.cpp -o CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.s + +CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o: /home/someone/mysite/miner/src/cpp/reciprocal.c +CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_18) "Building C object CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o" + /usr/lib/emsdk/upstream/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o -MF CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o.d -o CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o -c /home/someone/mysite/miner/src/cpp/reciprocal.c + +CMakeFiles/randomx.dir/src/cpp/reciprocal.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/randomx.dir/src/cpp/reciprocal.c.i" + /usr/lib/emsdk/upstream/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/reciprocal.c > CMakeFiles/randomx.dir/src/cpp/reciprocal.c.i + +CMakeFiles/randomx.dir/src/cpp/reciprocal.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/randomx.dir/src/cpp/reciprocal.c.s" + /usr/lib/emsdk/upstream/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/reciprocal.c -o CMakeFiles/randomx.dir/src/cpp/reciprocal.c.s + +CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o: /home/someone/mysite/miner/src/cpp/virtual_machine.cpp +CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_19) "Building CXX object CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o -MF CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o.d -o CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o -c /home/someone/mysite/miner/src/cpp/virtual_machine.cpp + +CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/virtual_machine.cpp > CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.i + +CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/virtual_machine.cpp -o CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.s + +CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o: /home/someone/mysite/miner/src/cpp/vm_compiled_light.cpp +CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_20) "Building CXX object CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o -MF CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o.d -o CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o -c /home/someone/mysite/miner/src/cpp/vm_compiled_light.cpp + +CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/vm_compiled_light.cpp > CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.i + +CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/vm_compiled_light.cpp -o CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.s + +CMakeFiles/randomx.dir/src/cpp/blake2b.c.o: CMakeFiles/randomx.dir/flags.make +CMakeFiles/randomx.dir/src/cpp/blake2b.c.o: /home/someone/mysite/miner/src/cpp/blake2b.c +CMakeFiles/randomx.dir/src/cpp/blake2b.c.o: CMakeFiles/randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_21) "Building C object CMakeFiles/randomx.dir/src/cpp/blake2b.c.o" + /usr/lib/emsdk/upstream/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -msimd128 -MD -MT CMakeFiles/randomx.dir/src/cpp/blake2b.c.o -MF CMakeFiles/randomx.dir/src/cpp/blake2b.c.o.d -o CMakeFiles/randomx.dir/src/cpp/blake2b.c.o -c /home/someone/mysite/miner/src/cpp/blake2b.c + +CMakeFiles/randomx.dir/src/cpp/blake2b.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing C source to CMakeFiles/randomx.dir/src/cpp/blake2b.c.i" + /usr/lib/emsdk/upstream/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -msimd128 -E /home/someone/mysite/miner/src/cpp/blake2b.c > CMakeFiles/randomx.dir/src/cpp/blake2b.c.i + +CMakeFiles/randomx.dir/src/cpp/blake2b.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling C source to assembly CMakeFiles/randomx.dir/src/cpp/blake2b.c.s" + /usr/lib/emsdk/upstream/emscripten/emcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -msimd128 -S /home/someone/mysite/miner/src/cpp/blake2b.c -o CMakeFiles/randomx.dir/src/cpp/blake2b.c.s + +# Object files for target randomx +randomx_OBJECTS = \ +"CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o" \ +"CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o" \ +"CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o" \ +"CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o" \ +"CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o" \ +"CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o" \ +"CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o" \ +"CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o" \ +"CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o" \ +"CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o" \ +"CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o" \ +"CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o" \ +"CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o" \ +"CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o" \ +"CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o" \ +"CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o" \ +"CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o" \ +"CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o" \ +"CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o" \ +"CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o" \ +"CMakeFiles/randomx.dir/src/cpp/blake2b.c.o" + +# External object files for target randomx +randomx_EXTERNAL_OBJECTS = + +librandomx.a: CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o +librandomx.a: CMakeFiles/randomx.dir/src/cpp/blake2b.c.o +librandomx.a: CMakeFiles/randomx.dir/build.make +librandomx.a: CMakeFiles/randomx.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_22) "Linking CXX static library librandomx.a" + $(CMAKE_COMMAND) -P CMakeFiles/randomx.dir/cmake_clean_target.cmake + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/randomx.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/randomx.dir/build: librandomx.a +.PHONY : CMakeFiles/randomx.dir/build + +CMakeFiles/randomx.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/randomx.dir/cmake_clean.cmake +.PHONY : CMakeFiles/randomx.dir/clean + +CMakeFiles/randomx.dir/depend: + cd /home/someone/mysite/miner/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/someone/mysite/miner /home/someone/mysite/miner /home/someone/mysite/miner/build /home/someone/mysite/miner/build /home/someone/mysite/miner/build/CMakeFiles/randomx.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/randomx.dir/depend + diff --git a/miner/build/CMakeFiles/randomx.dir/cmake_clean.cmake b/miner/build/CMakeFiles/randomx.dir/cmake_clean.cmake new file mode 100644 index 0000000..94dd5f0 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/cmake_clean.cmake @@ -0,0 +1,51 @@ +file(REMOVE_RECURSE + "CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o" + "CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o.d" + "CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o" + "CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o.d" + "CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o" + "CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o.d" + "CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o" + "CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o.d" + "CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o" + "CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o.d" + "CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o" + "CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o.d" + "CMakeFiles/randomx.dir/src/cpp/blake2b.c.o" + "CMakeFiles/randomx.dir/src/cpp/blake2b.c.o.d" + "CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o" + "CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o.d" + "CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o" + "CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o.d" + "CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o" + "CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o.d" + "CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o" + "CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o.d" + "CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o" + "CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o.d" + "CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o" + "CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o.d" + "CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o" + "CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o.d" + "CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o" + "CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o.d" + "CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o" + "CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o.d" + "CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o" + "CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o.d" + "CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o" + "CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o.d" + "CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o" + "CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o.d" + "CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o" + "CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o.d" + "CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o" + "CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o.d" + "librandomx.a" + "librandomx.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C CXX) + include(CMakeFiles/randomx.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/miner/build/CMakeFiles/randomx.dir/cmake_clean_target.cmake b/miner/build/CMakeFiles/randomx.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..debf75a --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "librandomx.a" +) diff --git a/miner/build/CMakeFiles/randomx.dir/compiler_depend.make b/miner/build/CMakeFiles/randomx.dir/compiler_depend.make new file mode 100644 index 0000000..55b2411 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for randomx. +# This may be replaced when dependencies are built. diff --git a/miner/build/CMakeFiles/randomx.dir/compiler_depend.ts b/miner/build/CMakeFiles/randomx.dir/compiler_depend.ts new file mode 100644 index 0000000..e559fd3 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for randomx. diff --git a/miner/build/CMakeFiles/randomx.dir/depend.make b/miner/build/CMakeFiles/randomx.dir/depend.make new file mode 100644 index 0000000..88ed928 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for randomx. +# This may be replaced when dependencies are built. diff --git a/miner/build/CMakeFiles/randomx.dir/flags.make b/miner/build/CMakeFiles/randomx.dir/flags.make new file mode 100644 index 0000000..aee5460 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/flags.make @@ -0,0 +1,59 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# compile C with /usr/lib/emsdk/upstream/emscripten/emcc +# compile CXX with /usr/lib/emsdk/upstream/emscripten/em++ +C_DEFINES = + +C_INCLUDES = + +C_FLAGS = -O3 -DNDEBUG -fPIC + +CXX_DEFINES = + +CXX_INCLUDES = + +CXX_FLAGS = -O3 -DNDEBUG -std=gnu++11 -fPIC + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o_FLAGS = -msimd128 + +# Custom flags: CMakeFiles/randomx.dir/src/cpp/blake2b.c.o_FLAGS = -msimd128 + diff --git a/miner/build/CMakeFiles/randomx.dir/link.txt b/miner/build/CMakeFiles/randomx.dir/link.txt new file mode 100644 index 0000000..df1ccee --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/link.txt @@ -0,0 +1,2 @@ +/usr/lib/emsdk/upstream/emscripten/emar qc librandomx.a CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o CMakeFiles/randomx.dir/src/cpp/blake2b.c.o +/usr/lib/emsdk/upstream/emscripten/emranlib librandomx.a diff --git a/miner/build/CMakeFiles/randomx.dir/progress.make b/miner/build/CMakeFiles/randomx.dir/progress.make new file mode 100644 index 0000000..cb545c5 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/progress.make @@ -0,0 +1,23 @@ +CMAKE_PROGRESS_1 = 1 +CMAKE_PROGRESS_2 = 2 +CMAKE_PROGRESS_3 = 3 +CMAKE_PROGRESS_4 = 4 +CMAKE_PROGRESS_5 = 5 +CMAKE_PROGRESS_6 = 6 +CMAKE_PROGRESS_7 = 7 +CMAKE_PROGRESS_8 = 8 +CMAKE_PROGRESS_9 = 9 +CMAKE_PROGRESS_10 = 10 +CMAKE_PROGRESS_11 = 11 +CMAKE_PROGRESS_12 = 12 +CMAKE_PROGRESS_13 = 13 +CMAKE_PROGRESS_14 = 14 +CMAKE_PROGRESS_15 = 15 +CMAKE_PROGRESS_16 = 16 +CMAKE_PROGRESS_17 = 17 +CMAKE_PROGRESS_18 = 18 +CMAKE_PROGRESS_19 = 19 +CMAKE_PROGRESS_20 = 20 +CMAKE_PROGRESS_21 = 21 +CMAKE_PROGRESS_22 = 22 + diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o new file mode 100644 index 0000000..9f6797c Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o.d new file mode 100644 index 0000000..4ad6403 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o.d @@ -0,0 +1,226 @@ +CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o: \ + /home/someone/mysite/miner/src/cpp/aes_hash.cpp \ + /home/someone/mysite/miner/src/cpp/soft_aes.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /home/someone/mysite/miner/src/cpp/intrin_wasm.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/enable_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/integral_constant.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constant_evaluated.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_same.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/promote.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/declval.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/limits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__undef_macros \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/version \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/type_traits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_lvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_referenceable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_void.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstddef \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_nullptr_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_rvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_storage.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conditional.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/nat.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_list.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/alignment_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/apply_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/can_extract_key.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/decay.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/void_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/dependent_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/disjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_unique_object_representation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_all_extents.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_virtual_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_base_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_core_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_function_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_object_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_abstract.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_aggregate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_bounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_callable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_char_like_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_standard_layout.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_class.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_compound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_fundamental.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_null_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_final.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_implicitly_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_literal_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/lazy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scalar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_object.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pod.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_polymorphic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scoped_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/underlying_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_specialization.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdint \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unbounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_const_lvalue_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/maybe_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/negation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/rank.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/result_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/unwrap_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/abs.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/copysign.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/error_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/exponential_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fdim.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/gamma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hypot.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/logarithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/min_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/modulo.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/remainder.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/roots.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/rounding_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdlib \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdexcept \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/exception \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/addressof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/voidify.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/new \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/typeinfo \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/nested_exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/terminate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iosfwd \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/fstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ios.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/istream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ostream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/sstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/streambuf.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__std_mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mbstate_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/wasm_simd128.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdbool.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdbool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdbool.h \ + /home/someone/mysite/miner/src/cpp/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /home/someone/mysite/miner/src/cpp/softfloat.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cassert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/assert.h diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o new file mode 100644 index 0000000..9886752 Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o.d new file mode 100644 index 0000000..ab0eebb --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o.d @@ -0,0 +1,831 @@ +CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o: \ + /home/someone/mysite/miner/src/cpp/allocator.cpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/new \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/integral_constant.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_same.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstddef \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/enable_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/version \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_nullptr_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdlib \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/type_traits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_lvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_referenceable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_void.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_rvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_storage.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conditional.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/nat.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_list.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/alignment_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/apply_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/can_extract_key.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/decay.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/void_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/declval.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/dependent_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/disjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_unique_object_representation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_all_extents.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_virtual_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_base_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_core_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_function_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_object_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_abstract.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_aggregate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_bounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_callable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_char_like_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_standard_layout.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_class.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_compound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_fundamental.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_null_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constant_evaluated.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_final.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_implicitly_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_literal_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/lazy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scalar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_object.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pod.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_polymorphic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scoped_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/underlying_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_specialization.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdint \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unbounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_const_lvalue_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/maybe_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/negation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/rank.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/result_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/unwrap_ref.h \ + /home/someone/mysite/miner/src/cpp/allocator.hpp \ + /home/someone/mysite/miner/src/cpp/intrin_wasm.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/promote.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/limits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__undef_macros \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/abs.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/copysign.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/error_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/exponential_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fdim.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/gamma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hypot.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/logarithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/min_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/modulo.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/remainder.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/roots.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/rounding_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdexcept \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/exception \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/addressof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/voidify.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/typeinfo \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/nested_exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/terminate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iosfwd \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/fstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ios.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/istream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ostream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/sstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/streambuf.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__std_mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mbstate_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/wasm_simd128.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdbool.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdbool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdbool.h \ + /home/someone/mysite/miner/src/cpp/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /home/someone/mysite/miner/src/cpp/softfloat.hpp \ + /home/someone/mysite/miner/src/cpp/virtual_memory.hpp \ + /home/someone/mysite/miner/src/cpp/common.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ios \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ios/fpos.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/shared_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/three_way_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/common_comparison_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/ordering.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_reference_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/convertible_to.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/same_as.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/boolean_testable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/totally_ordered.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/operation_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/weak_result_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocation_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/pointer_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocate_at_least.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/auto_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/compressed_pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/get.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/movable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/class_or_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exchange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_indices.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/integer_sequence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/piecewise_construct.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_move_common.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iterator_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_iterator_concept.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/derived_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/invocable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/predicate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/regular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/semiregular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/relation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/incrementable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_primary_template.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_valid_expansion.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/readable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/advance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/convert_to_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/unreachable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/distance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_borrowed_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/auto_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/initializer_list \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/next.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/prev.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/synth_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/different_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/pair_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/sfinae_helpers.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/make_tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like_ext.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/constexpr_c_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/datasizeof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_always_bitcastable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_lexicographically_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/is_pointer_in_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_segment.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/segmented_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/dangling.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/view_interface.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exception_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/unique_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstring \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/once_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/tuple \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_arg_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/compare \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_partial_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/partial_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/weak_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/strong_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/priority_tag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_strong_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_weak_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/is_eq.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/utility \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_lvalue.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/cmp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/in_place.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/rel_ops.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/to_underlying.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/no_destroy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/clocale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_segment_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/invert_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/bit_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwchar \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/enable_insertable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/wrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/swap_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/polymorphic_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/container_compatible_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/from_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/char_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wasi/api.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/extern_template_lists.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/noexcept_move_assign_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/climits \ + /usr/lib/emsdk/upstream/lib/clang/20/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string_view \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/bounded_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/algorithm \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/half_positive.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/popcount.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fold.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/movable_box.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/optional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/atomic \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/aliases.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_base.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_sync.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/contention_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/cxx_atomic_impl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/is_always_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/duration.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ratio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/poll_with_backoff.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/high_resolution_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/steady_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/time_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/system_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctime \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__threading_support \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/convert_to_timespec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/pthread.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/sched.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/check_memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_init.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/fence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/kill_dependency.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/concepts \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iterator \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/back_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/common_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/variant \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__variant/monostate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/counted_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/default_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/erase_if_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/front_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/indirectly_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/mergeable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/ranges_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/permutable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/sortable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/unreachable_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/memory \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/align.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/assume_aligned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/raw_storage_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temporary_buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator_construction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_found_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_fun_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/destruct_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/three_way_comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sift_down.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_max_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/strict_weak_ordering_check.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/randomize_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/blsr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_any_all_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/serial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_execution_policy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/execution \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_frontend_dispatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/cpp17_iterator_concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/pstl_transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_contains.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_ends_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_starts_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_int_distribution.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/is_valid.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/uniform_random_bit_generator_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_random_bit_generator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_left.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_right.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bit \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_ceil.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_floor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_width.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/byteswap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/has_single_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__support/musl/xlocale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_code.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/errc.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cerrno \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_condition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/system_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/mutex \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__condition_variable/condition_variable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/mutex.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/unique_lock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/tag_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/lock_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/id.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/system_error \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/istream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bitset \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit_reference \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/format \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_fwd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_parse_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_to_n_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/container_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_default_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/statically_widen.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg_store.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_args.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/streambuf \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/bsd_locale_fallbacks.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/locale_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdarg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___gnuc_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_arg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___va_copy.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdarg \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_output.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/parser_std_format_spec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/unicode.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/extended_grapheme_cluster_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/width_estimation_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/ref_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/queue \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/deque \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temp_value.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__split_buffer \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/functional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_back.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/perfect_forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_front.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder1st.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder2nd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/boyer_moore_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/array \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/unordered_map \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/is_transparent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__hash_table \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ranges_iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__node_handle \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/vector \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_bool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/tables.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_base_10.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_32_64_or_128_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/compose.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/default_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/builtin_new_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/strip_signature.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fun_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/not_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stack \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_char.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/write_escaped.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/escaped_output_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/chars_format.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/print \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/unistd.h \ + /home/someone/mysite/miner/src/cpp/configuration.h \ + /home/someone/mysite/miner/src/cpp/randomx.h diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o new file mode 100644 index 0000000..cc91ba7 Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o.d new file mode 100644 index 0000000..f61e842 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o.d @@ -0,0 +1,32 @@ +CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o: \ + /home/someone/mysite/miner/src/cpp/argon2_core.c \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wasi/api.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /home/someone/mysite/miner/src/cpp/argon2_core.h \ + /home/someone/mysite/miner/src/cpp/argon2.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/limits.h \ + /home/someone/mysite/miner/src/cpp/blake2.h \ + /home/someone/mysite/miner/src/cpp/blake2-impl.h \ + /home/someone/mysite/miner/src/cpp/endian.h diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o new file mode 100644 index 0000000..abf8678 Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o.d new file mode 100644 index 0000000..ba2a580 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o.d @@ -0,0 +1,35 @@ +CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o: \ + /home/someone/mysite/miner/src/cpp/argon2_simd.c \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /home/someone/mysite/miner/src/cpp/argon2.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/limits.h \ + /home/someone/mysite/miner/src/cpp/argon2_core.h \ + /home/someone/mysite/miner/src/cpp/blamka-round-simd.h \ + /home/someone/mysite/miner/src/cpp/blake2-impl.h \ + /home/someone/mysite/miner/src/cpp/endian.h \ + /home/someone/mysite/miner/src/cpp/intrin_wasm_simd.hpp \ + /usr/lib/emsdk/upstream/lib/clang/20/include/wasm_simd128.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdbool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdbool.h \ + /home/someone/mysite/miner/src/cpp/blake2.h diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o new file mode 100644 index 0000000..252a97d Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o.d new file mode 100644 index 0000000..575bac2 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o.d @@ -0,0 +1,832 @@ +CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o: \ + /home/someone/mysite/miner/src/cpp/assembly_generator_x86.cpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/climits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability \ + /usr/lib/emsdk/upstream/lib/clang/20/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/limits.h \ + /home/someone/mysite/miner/src/cpp/assembly_generator_x86.hpp \ + /home/someone/mysite/miner/src/cpp/common.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdint \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/version \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ios \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ios.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ios/fpos.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/shared_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/three_way_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/common_comparison_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/ordering.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/enable_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_same.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/integral_constant.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstddef \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_nullptr_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_reference_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/convertible_to.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_void.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/declval.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/same_as.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conditional.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/decay.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_referenceable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/void_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_lvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_rvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/boolean_testable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_const_lvalue_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/totally_ordered.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/operation_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/apply_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_base_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_core_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_function_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_object_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/nat.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/weak_result_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/addressof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ostream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocation_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/voidify.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__undef_macros \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/new \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdlib \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/type_traits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_storage.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_list.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/alignment_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/can_extract_key.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/dependent_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/disjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_unique_object_representation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_all_extents.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_virtual_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_abstract.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_aggregate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_bounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_callable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_char_like_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_standard_layout.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_class.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_compound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_fundamental.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_null_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constant_evaluated.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_final.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_implicitly_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_literal_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/lazy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scalar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_object.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pod.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_polymorphic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scoped_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/underlying_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_specialization.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unbounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/maybe_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/negation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/rank.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/result_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/unwrap_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/pointer_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/limits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocate_at_least.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/auto_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/compressed_pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/get.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/movable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/class_or_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exchange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_indices.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/integer_sequence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/piecewise_construct.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_move_common.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iterator_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_iterator_concept.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/derived_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/invocable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/predicate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/regular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/semiregular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/relation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/incrementable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_primary_template.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_valid_expansion.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/readable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/advance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/convert_to_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/unreachable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/distance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_borrowed_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/auto_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/initializer_list \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/next.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/prev.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/synth_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/different_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/pair_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/sfinae_helpers.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/make_tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like_ext.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/constexpr_c_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/datasizeof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_always_bitcastable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_lexicographically_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/is_pointer_in_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_segment.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/segmented_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/dangling.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/view_interface.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exception_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/unique_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstring \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/typeinfo \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/once_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/tuple \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_arg_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/compare \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_partial_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/partial_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/weak_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/strong_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/priority_tag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/promote.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/abs.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/copysign.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/error_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/exponential_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fdim.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/gamma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hypot.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/logarithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/min_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/modulo.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/remainder.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/roots.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/rounding_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_strong_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_weak_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/is_eq.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/exception \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/nested_exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/terminate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iosfwd \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/fstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/istream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/sstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/streambuf.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__std_mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/utility \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_lvalue.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/cmp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/in_place.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/rel_ops.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/to_underlying.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/no_destroy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/clocale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_segment_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/invert_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/bit_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwchar \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/enable_insertable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/wrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/swap_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/polymorphic_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/container_compatible_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/from_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/char_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wasi/api.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/extern_template_lists.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/noexcept_move_assign_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdexcept \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string_view \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/bounded_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/algorithm \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/half_positive.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/popcount.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fold.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/movable_box.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/optional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/atomic \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/aliases.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_base.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_sync.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/contention_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/cxx_atomic_impl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/is_always_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/duration.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ratio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/poll_with_backoff.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/high_resolution_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/steady_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/time_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/system_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctime \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__threading_support \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/convert_to_timespec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/pthread.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/sched.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/check_memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_init.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/fence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/kill_dependency.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/concepts \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iterator \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/back_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/common_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/variant \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__variant/monostate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/counted_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/default_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/erase_if_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/front_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/indirectly_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/mergeable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/ranges_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/permutable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/sortable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/unreachable_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/memory \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/align.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/assume_aligned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/raw_storage_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temporary_buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator_construction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_found_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_fun_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/destruct_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/three_way_comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sift_down.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_max_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/strict_weak_ordering_check.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/randomize_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/blsr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_any_all_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/serial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_execution_policy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/execution \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_frontend_dispatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/cpp17_iterator_concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/pstl_transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_contains.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_ends_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_starts_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_int_distribution.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/is_valid.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/uniform_random_bit_generator_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_random_bit_generator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_left.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_right.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bit \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_ceil.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_floor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_width.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/byteswap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/has_single_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__support/musl/xlocale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_code.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/errc.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cerrno \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_condition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/system_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/mutex \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__condition_variable/condition_variable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/mutex.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/unique_lock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/tag_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/lock_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/id.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/system_error \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/istream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bitset \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit_reference \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/format \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_fwd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_parse_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_to_n_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/container_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_default_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/statically_widen.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg_store.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_args.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/streambuf \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/bsd_locale_fallbacks.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/locale_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdarg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___gnuc_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_arg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___va_copy.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdarg \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_output.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/parser_std_format_spec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/unicode.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/extended_grapheme_cluster_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/width_estimation_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/ref_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/queue \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/deque \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temp_value.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__split_buffer \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/functional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_back.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/perfect_forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_front.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder1st.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder2nd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/boyer_moore_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/array \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/unordered_map \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/is_transparent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__hash_table \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ranges_iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__node_handle \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/vector \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_bool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/tables.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_base_10.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_32_64_or_128_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/compose.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/default_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/builtin_new_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/strip_signature.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fun_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/not_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stack \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_char.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/write_escaped.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/escaped_output_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/chars_format.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/print \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/unistd.h \ + /home/someone/mysite/miner/src/cpp/endian.h \ + /home/someone/mysite/miner/src/cpp/configuration.h \ + /home/someone/mysite/miner/src/cpp/randomx.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/sstream \ + /home/someone/mysite/miner/src/cpp/reciprocal.h \ + /home/someone/mysite/miner/src/cpp/program.hpp \ + /home/someone/mysite/miner/src/cpp/instruction.hpp \ + /home/someone/mysite/miner/src/cpp/superscalar.hpp \ + /home/someone/mysite/miner/src/cpp/superscalar_program.hpp \ + /home/someone/mysite/miner/src/cpp/blake2_generator.hpp \ + /home/someone/mysite/miner/src/cpp/instruction_weights.hpp diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o new file mode 100644 index 0000000..a8407cb Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o.d new file mode 100644 index 0000000..e9989d7 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o.d @@ -0,0 +1,36 @@ +CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o: \ + /home/someone/mysite/miner/src/cpp/blake2_generator.cpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_nullptr_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /home/someone/mysite/miner/src/cpp/blake2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/limits.h \ + /home/someone/mysite/miner/src/cpp/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /home/someone/mysite/miner/src/cpp/blake2_generator.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdint \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/blake2b.c.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/blake2b.c.o new file mode 100644 index 0000000..c3f9e2a Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/blake2b.c.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/blake2b.c.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/blake2b.c.o.d new file mode 100644 index 0000000..07b9530 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/blake2b.c.o.d @@ -0,0 +1,27 @@ +CMakeFiles/randomx.dir/src/cpp/blake2b.c.o: \ + /home/someone/mysite/miner/src/cpp/blake2b.c \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wasi/api.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /home/someone/mysite/miner/src/cpp/blake2.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/limits.h \ + /home/someone/mysite/miner/src/cpp/blake2-impl.h \ + /home/someone/mysite/miner/src/cpp/endian.h diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o new file mode 100644 index 0000000..386414a Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o.d new file mode 100644 index 0000000..9af6ee5 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o.d @@ -0,0 +1,833 @@ +CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o: \ + /home/someone/mysite/miner/src/cpp/bytecode_machine.cpp \ + /home/someone/mysite/miner/src/cpp/bytecode_machine.hpp \ + /home/someone/mysite/miner/src/cpp/common.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdint \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/version \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ios \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ios.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ios/fpos.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/shared_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/three_way_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/common_comparison_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/ordering.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/enable_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_same.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/integral_constant.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstddef \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_nullptr_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_reference_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/convertible_to.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_void.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/declval.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/same_as.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conditional.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/decay.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_referenceable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/void_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_lvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_rvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/boolean_testable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_const_lvalue_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/totally_ordered.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/operation_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/apply_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_base_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_core_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_function_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_object_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/nat.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/weak_result_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/addressof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ostream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocation_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/voidify.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__undef_macros \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/new \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdlib \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/type_traits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_storage.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_list.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/alignment_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/can_extract_key.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/dependent_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/disjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_unique_object_representation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_all_extents.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_virtual_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_abstract.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_aggregate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_bounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_callable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_char_like_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_standard_layout.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_class.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_compound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_fundamental.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_null_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constant_evaluated.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_final.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_implicitly_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_literal_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/lazy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scalar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_object.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pod.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_polymorphic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scoped_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/underlying_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_specialization.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unbounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/maybe_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/negation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/rank.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/result_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/unwrap_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/pointer_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/limits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocate_at_least.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/auto_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/compressed_pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/get.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/movable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/class_or_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exchange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_indices.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/integer_sequence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/piecewise_construct.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_move_common.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iterator_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_iterator_concept.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/derived_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/invocable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/predicate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/regular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/semiregular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/relation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/incrementable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_primary_template.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_valid_expansion.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/readable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/advance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/convert_to_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/unreachable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/distance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_borrowed_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/auto_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/initializer_list \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/next.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/prev.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/synth_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/different_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/pair_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/sfinae_helpers.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/make_tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like_ext.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/constexpr_c_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/datasizeof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_always_bitcastable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_lexicographically_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/is_pointer_in_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_segment.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/segmented_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/dangling.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/view_interface.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exception_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/unique_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstring \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/typeinfo \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/once_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/tuple \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_arg_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/compare \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_partial_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/partial_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/weak_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/strong_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/priority_tag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/promote.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/abs.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/copysign.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/error_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/exponential_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fdim.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/gamma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hypot.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/logarithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/min_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/modulo.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/remainder.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/roots.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/rounding_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_strong_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_weak_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/is_eq.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/exception \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/nested_exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/terminate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iosfwd \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/fstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/istream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/sstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/streambuf.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__std_mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/utility \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_lvalue.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/cmp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/in_place.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/rel_ops.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/to_underlying.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/no_destroy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/clocale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_segment_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/invert_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/bit_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwchar \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/enable_insertable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/wrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/swap_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/polymorphic_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/container_compatible_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/from_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/char_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wasi/api.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/extern_template_lists.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/noexcept_move_assign_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/climits \ + /usr/lib/emsdk/upstream/lib/clang/20/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdexcept \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string_view \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/bounded_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/algorithm \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/half_positive.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/popcount.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fold.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/movable_box.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/optional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/atomic \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/aliases.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_base.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_sync.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/contention_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/cxx_atomic_impl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/is_always_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/duration.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ratio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/poll_with_backoff.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/high_resolution_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/steady_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/time_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/system_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctime \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__threading_support \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/convert_to_timespec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/pthread.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/sched.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/check_memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_init.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/fence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/kill_dependency.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/concepts \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iterator \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/back_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/common_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/variant \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__variant/monostate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/counted_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/default_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/erase_if_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/front_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/indirectly_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/mergeable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/ranges_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/permutable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/sortable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/unreachable_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/memory \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/align.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/assume_aligned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/raw_storage_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temporary_buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator_construction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_found_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_fun_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/destruct_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/three_way_comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sift_down.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_max_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/strict_weak_ordering_check.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/randomize_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/blsr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_any_all_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/serial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_execution_policy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/execution \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_frontend_dispatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/cpp17_iterator_concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/pstl_transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_contains.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_ends_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_starts_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_int_distribution.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/is_valid.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/uniform_random_bit_generator_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_random_bit_generator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_left.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_right.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bit \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_ceil.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_floor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_width.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/byteswap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/has_single_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__support/musl/xlocale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_code.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/errc.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cerrno \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_condition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/system_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/mutex \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__condition_variable/condition_variable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/mutex.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/unique_lock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/tag_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/lock_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/id.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/system_error \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/istream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bitset \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit_reference \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/format \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_fwd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_parse_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_to_n_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/container_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_default_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/statically_widen.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg_store.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_args.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/streambuf \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/bsd_locale_fallbacks.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/locale_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdarg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___gnuc_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_arg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___va_copy.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdarg \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_output.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/parser_std_format_spec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/unicode.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/extended_grapheme_cluster_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/width_estimation_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/ref_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/queue \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/deque \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temp_value.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__split_buffer \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/functional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_back.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/perfect_forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_front.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder1st.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder2nd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/boyer_moore_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/array \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/unordered_map \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/is_transparent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__hash_table \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ranges_iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__node_handle \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/vector \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_bool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/tables.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_base_10.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_32_64_or_128_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/compose.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/default_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/builtin_new_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/strip_signature.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fun_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/not_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stack \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_char.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/write_escaped.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/escaped_output_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/chars_format.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/print \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/unistd.h \ + /home/someone/mysite/miner/src/cpp/endian.h \ + /home/someone/mysite/miner/src/cpp/configuration.h \ + /home/someone/mysite/miner/src/cpp/randomx.h \ + /home/someone/mysite/miner/src/cpp/intrin_wasm.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/wasm_simd128.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdbool.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdbool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdbool.h \ + /home/someone/mysite/miner/src/cpp/softfloat.hpp \ + /home/someone/mysite/miner/src/cpp/instruction.hpp \ + /home/someone/mysite/miner/src/cpp/program.hpp \ + /home/someone/mysite/miner/src/cpp/reciprocal.h diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o new file mode 100644 index 0000000..4399cb0 Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o.d new file mode 100644 index 0000000..86dbea6 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o.d @@ -0,0 +1,841 @@ +CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o: \ + /home/someone/mysite/miner/src/cpp/dataset.cpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/new \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/integral_constant.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_same.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstddef \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/enable_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/version \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_nullptr_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdlib \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/type_traits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_lvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_referenceable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_void.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_rvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_storage.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conditional.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/nat.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_list.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/alignment_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/apply_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/can_extract_key.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/decay.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/void_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/declval.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/dependent_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/disjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_unique_object_representation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_all_extents.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_virtual_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_base_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_core_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_function_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_object_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_abstract.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_aggregate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_bounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_callable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_char_like_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_standard_layout.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_class.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_compound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_fundamental.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_null_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constant_evaluated.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_final.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_implicitly_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_literal_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/lazy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scalar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_object.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pod.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_polymorphic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scoped_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/underlying_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_specialization.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdint \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unbounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_const_lvalue_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/maybe_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/negation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/rank.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/result_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/unwrap_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/algorithm \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/operation_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iterator_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__undef_macros \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_iterator_concept.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_reference_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/convertible_to.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/same_as.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/movable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/class_or_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exchange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/derived_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/boolean_testable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/invocable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/predicate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/regular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/semiregular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/relation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/totally_ordered.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/incrementable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_primary_template.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_valid_expansion.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/readable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/pointer_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/addressof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/advance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/convert_to_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/unreachable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/limits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/distance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_borrowed_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/auto_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/initializer_list \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/next.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/prev.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/half_positive.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/weak_result_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_move_common.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/common_comparison_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/ordering.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/synth_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/three_way_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/different_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/get.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_indices.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/integer_sequence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/pair_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/sfinae_helpers.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/make_tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like_ext.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/piecewise_construct.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/constexpr_c_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/voidify.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/datasizeof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_always_bitcastable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_lexicographically_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/is_pointer_in_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_segment.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/segmented_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/invert_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/popcount.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/bit_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_segment_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwchar \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/dangling.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/view_interface.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fold.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/movable_box.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/optional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstring \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/in_place.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/compare \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_partial_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/partial_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/weak_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/strong_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/priority_tag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/promote.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/abs.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/copysign.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/error_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/exponential_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fdim.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/gamma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hypot.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/logarithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/min_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/modulo.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/remainder.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/roots.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/rounding_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_strong_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_weak_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/is_eq.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/atomic \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/aliases.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_base.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_sync.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/contention_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/cxx_atomic_impl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/is_always_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/duration.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ratio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/climits \ + /usr/lib/emsdk/upstream/lib/clang/20/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/poll_with_backoff.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/high_resolution_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/steady_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/time_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/system_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctime \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__threading_support \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/convert_to_timespec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wasi/api.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/pthread.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/sched.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/check_memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_init.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/fence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/kill_dependency.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/concepts \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iterator \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/back_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/bounded_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/common_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/variant \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__variant/monostate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/tuple \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_arg_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/exception \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/typeinfo \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/nested_exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/terminate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iosfwd \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/fstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ios.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/istream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ostream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/sstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/streambuf.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__std_mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/utility \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_lvalue.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/cmp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exception_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/rel_ops.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/to_underlying.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/counted_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/default_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/erase_if_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/front_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/indirectly_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/mergeable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/ranges_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/permutable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/sortable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/unreachable_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/wrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/memory \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/align.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocate_at_least.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocation_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/assume_aligned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/auto_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/compressed_pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/raw_storage_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/shared_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/unique_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temporary_buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator_construction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdexcept \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_found_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_fun_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/destruct_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/three_way_comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sift_down.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_max_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/strict_weak_ordering_check.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/randomize_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/blsr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_any_all_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/serial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_execution_policy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/execution \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_frontend_dispatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/cpp17_iterator_concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/pstl_transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_contains.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_ends_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_starts_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_int_distribution.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/is_valid.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/uniform_random_bit_generator_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_random_bit_generator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_left.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_right.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bit \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_ceil.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_floor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_width.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/byteswap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/has_single_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cassert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/assert.h \ + /home/someone/mysite/miner/src/cpp/common.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ios \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ios/fpos.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/once_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/no_destroy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/clocale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/enable_insertable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/swap_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/polymorphic_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/container_compatible_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/from_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/char_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/extern_template_lists.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/noexcept_move_assign_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string_view \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__support/musl/xlocale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_code.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/errc.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cerrno \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_condition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/system_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/mutex \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__condition_variable/condition_variable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/mutex.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/unique_lock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/tag_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/lock_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/id.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/system_error \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/istream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bitset \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit_reference \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/format \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_fwd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_parse_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_to_n_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/container_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_default_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/statically_widen.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg_store.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_args.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/streambuf \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/bsd_locale_fallbacks.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/locale_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdarg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___gnuc_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_arg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___va_copy.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdarg \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_output.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/parser_std_format_spec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/unicode.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/extended_grapheme_cluster_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/width_estimation_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/ref_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/queue \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/deque \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temp_value.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__split_buffer \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/functional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_back.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/perfect_forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_front.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder1st.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder2nd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/boyer_moore_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/array \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/unordered_map \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/is_transparent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__hash_table \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ranges_iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__node_handle \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/vector \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_bool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/tables.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_base_10.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_32_64_or_128_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/compose.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/default_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/builtin_new_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/strip_signature.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fun_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/not_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stack \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_char.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/write_escaped.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/escaped_output_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/chars_format.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/print \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/unistd.h \ + /home/someone/mysite/miner/src/cpp/endian.h \ + /home/someone/mysite/miner/src/cpp/configuration.h \ + /home/someone/mysite/miner/src/cpp/randomx.h \ + /home/someone/mysite/miner/src/cpp/dataset.hpp \ + /home/someone/mysite/miner/src/cpp/superscalar_program.hpp \ + /home/someone/mysite/miner/src/cpp/instruction.hpp \ + /home/someone/mysite/miner/src/cpp/allocator.hpp \ + /home/someone/mysite/miner/src/cpp/argon2.h \ + /home/someone/mysite/miner/src/cpp/virtual_memory.hpp \ + /home/someone/mysite/miner/src/cpp/superscalar.hpp \ + /home/someone/mysite/miner/src/cpp/blake2_generator.hpp \ + /home/someone/mysite/miner/src/cpp/reciprocal.h \ + /home/someone/mysite/miner/src/cpp/argon2_core.h \ + /home/someone/mysite/miner/src/cpp/intrin_wasm.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/wasm_simd128.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdbool.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdbool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdbool.h \ + /home/someone/mysite/miner/src/cpp/softfloat.hpp diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o new file mode 100644 index 0000000..9880e60 Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o.d new file mode 100644 index 0000000..2832407 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o.d @@ -0,0 +1,825 @@ +CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o: \ + /home/someone/mysite/miner/src/cpp/instruction.cpp \ + /home/someone/mysite/miner/src/cpp/instruction.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdint \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/version \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ios \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ios.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ios/fpos.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/shared_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/three_way_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/common_comparison_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/ordering.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/enable_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_same.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/integral_constant.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstddef \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_nullptr_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_reference_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/convertible_to.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_void.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/declval.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/same_as.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conditional.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/decay.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_referenceable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/void_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_lvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_rvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/boolean_testable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_const_lvalue_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/totally_ordered.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/operation_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/apply_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_base_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_core_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_function_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_object_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/nat.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/weak_result_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/addressof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ostream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocation_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/voidify.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__undef_macros \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/new \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdlib \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/type_traits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_storage.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_list.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/alignment_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/can_extract_key.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/dependent_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/disjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_unique_object_representation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_all_extents.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_virtual_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_abstract.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_aggregate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_bounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_callable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_char_like_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_standard_layout.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_class.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_compound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_fundamental.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_null_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constant_evaluated.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_final.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_implicitly_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_literal_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/lazy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scalar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_object.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pod.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_polymorphic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scoped_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/underlying_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_specialization.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unbounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/maybe_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/negation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/rank.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/result_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/unwrap_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/pointer_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/limits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocate_at_least.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/auto_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/compressed_pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/get.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/movable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/class_or_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exchange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_indices.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/integer_sequence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/piecewise_construct.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_move_common.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iterator_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_iterator_concept.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/derived_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/invocable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/predicate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/regular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/semiregular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/relation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/incrementable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_primary_template.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_valid_expansion.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/readable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/advance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/convert_to_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/unreachable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/distance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_borrowed_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/auto_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/initializer_list \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/next.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/prev.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/synth_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/different_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/pair_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/sfinae_helpers.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/make_tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like_ext.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/constexpr_c_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/datasizeof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_always_bitcastable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_lexicographically_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/is_pointer_in_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_segment.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/segmented_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/dangling.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/view_interface.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exception_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/unique_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstring \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/typeinfo \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/once_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/tuple \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_arg_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/compare \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_partial_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/partial_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/weak_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/strong_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/priority_tag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/promote.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/abs.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/copysign.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/error_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/exponential_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fdim.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/gamma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hypot.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/logarithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/min_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/modulo.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/remainder.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/roots.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/rounding_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_strong_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_weak_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/is_eq.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/exception \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/nested_exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/terminate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iosfwd \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/fstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/istream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/sstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/streambuf.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__std_mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/utility \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_lvalue.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/cmp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/in_place.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/rel_ops.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/to_underlying.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/no_destroy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/clocale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_segment_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/invert_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/bit_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwchar \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/enable_insertable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/wrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/swap_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/polymorphic_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/container_compatible_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/from_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/char_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wasi/api.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/extern_template_lists.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/noexcept_move_assign_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/climits \ + /usr/lib/emsdk/upstream/lib/clang/20/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdexcept \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string_view \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/bounded_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/algorithm \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/half_positive.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/popcount.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fold.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/movable_box.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/optional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/atomic \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/aliases.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_base.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_sync.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/contention_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/cxx_atomic_impl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/is_always_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/duration.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ratio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/poll_with_backoff.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/high_resolution_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/steady_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/time_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/system_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctime \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__threading_support \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/convert_to_timespec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/pthread.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/sched.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/check_memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_init.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/fence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/kill_dependency.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/concepts \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iterator \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/back_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/common_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/variant \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__variant/monostate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/counted_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/default_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/erase_if_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/front_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/indirectly_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/mergeable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/ranges_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/permutable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/sortable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/unreachable_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/memory \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/align.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/assume_aligned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/raw_storage_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temporary_buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator_construction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_found_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_fun_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/destruct_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/three_way_comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sift_down.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_max_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/strict_weak_ordering_check.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/randomize_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/blsr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_any_all_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/serial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_execution_policy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/execution \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_frontend_dispatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/cpp17_iterator_concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/pstl_transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_contains.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_ends_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_starts_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_int_distribution.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/is_valid.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/uniform_random_bit_generator_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_random_bit_generator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_left.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_right.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bit \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_ceil.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_floor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_width.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/byteswap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/has_single_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__support/musl/xlocale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_code.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/errc.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cerrno \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_condition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/system_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/mutex \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__condition_variable/condition_variable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/mutex.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/unique_lock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/tag_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/lock_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/id.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/system_error \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/istream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bitset \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit_reference \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/format \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_fwd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_parse_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_to_n_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/container_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_default_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/statically_widen.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg_store.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_args.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/streambuf \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/bsd_locale_fallbacks.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/locale_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdarg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___gnuc_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_arg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___va_copy.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdarg \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_output.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/parser_std_format_spec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/unicode.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/extended_grapheme_cluster_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/width_estimation_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/ref_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/queue \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/deque \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temp_value.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__split_buffer \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/functional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_back.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/perfect_forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_front.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder1st.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder2nd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/boyer_moore_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/array \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/unordered_map \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/is_transparent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__hash_table \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ranges_iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__node_handle \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/vector \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_bool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/tables.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_base_10.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_32_64_or_128_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/compose.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/default_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/builtin_new_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/strip_signature.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fun_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/not_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stack \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_char.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/write_escaped.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/escaped_output_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/chars_format.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/print \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/unistd.h \ + /home/someone/mysite/miner/src/cpp/endian.h \ + /home/someone/mysite/miner/src/cpp/common.hpp \ + /home/someone/mysite/miner/src/cpp/configuration.h \ + /home/someone/mysite/miner/src/cpp/randomx.h \ + /home/someone/mysite/miner/src/cpp/instruction_weights.hpp diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o new file mode 100644 index 0000000..8054478 Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o.d new file mode 100644 index 0000000..ea396c5 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o.d @@ -0,0 +1,833 @@ +CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o: \ + /home/someone/mysite/miner/src/cpp/intrin_wasm.cpp \ + /home/someone/mysite/miner/src/cpp/intrin_wasm.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/enable_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/integral_constant.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constant_evaluated.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_same.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/promote.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/declval.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/limits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__undef_macros \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/version \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/type_traits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_lvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_referenceable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_void.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstddef \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_nullptr_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_rvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_storage.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conditional.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/nat.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_list.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/alignment_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/apply_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/can_extract_key.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/decay.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/void_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/dependent_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/disjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_unique_object_representation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_all_extents.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_virtual_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_base_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_core_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_function_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_object_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_abstract.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_aggregate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_bounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_callable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_char_like_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_standard_layout.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_class.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_compound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_fundamental.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_null_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_final.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_implicitly_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_literal_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/lazy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scalar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_object.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pod.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_polymorphic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scoped_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/underlying_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_specialization.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdint \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unbounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_const_lvalue_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/maybe_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/negation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/rank.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/result_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/unwrap_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/abs.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/copysign.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/error_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/exponential_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fdim.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/gamma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hypot.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/logarithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/min_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/modulo.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/remainder.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/roots.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/rounding_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdlib \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdexcept \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/exception \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/addressof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/voidify.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/new \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/typeinfo \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/nested_exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/terminate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iosfwd \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/fstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ios.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/istream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ostream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/sstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/streambuf.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__std_mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mbstate_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/wasm_simd128.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdbool.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdbool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdbool.h \ + /home/someone/mysite/miner/src/cpp/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /home/someone/mysite/miner/src/cpp/softfloat.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cfenv \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/fenv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/fenv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/fenv.h \ + /home/someone/mysite/miner/src/cpp/common.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ios \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ios/fpos.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/shared_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/three_way_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/common_comparison_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/ordering.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_reference_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/convertible_to.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/same_as.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/boolean_testable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/totally_ordered.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/operation_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/weak_result_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocation_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/pointer_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocate_at_least.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/auto_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/compressed_pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/get.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/movable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/class_or_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exchange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_indices.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/integer_sequence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/piecewise_construct.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_move_common.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iterator_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_iterator_concept.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/derived_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/invocable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/predicate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/regular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/semiregular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/relation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/incrementable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_primary_template.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_valid_expansion.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/readable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/advance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/convert_to_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/unreachable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/distance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_borrowed_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/auto_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/initializer_list \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/next.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/prev.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/synth_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/different_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/pair_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/sfinae_helpers.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/make_tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like_ext.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/constexpr_c_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/datasizeof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_always_bitcastable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_lexicographically_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/is_pointer_in_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_segment.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/segmented_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/dangling.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/view_interface.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exception_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/unique_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstring \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/once_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/tuple \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_arg_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/compare \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_partial_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/partial_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/weak_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/strong_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/priority_tag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_strong_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_weak_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/is_eq.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/utility \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_lvalue.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/cmp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/in_place.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/rel_ops.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/to_underlying.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/no_destroy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/clocale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_segment_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/invert_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/bit_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwchar \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/enable_insertable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/wrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/swap_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/polymorphic_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/container_compatible_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/from_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/char_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wasi/api.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/extern_template_lists.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/noexcept_move_assign_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/climits \ + /usr/lib/emsdk/upstream/lib/clang/20/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string_view \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/bounded_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/algorithm \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/half_positive.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/popcount.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fold.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/movable_box.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/optional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/atomic \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/aliases.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_base.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_sync.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/contention_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/cxx_atomic_impl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/is_always_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/duration.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ratio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/poll_with_backoff.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/high_resolution_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/steady_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/time_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/system_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctime \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__threading_support \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/convert_to_timespec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/pthread.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/sched.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/check_memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_init.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/fence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/kill_dependency.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/concepts \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iterator \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/back_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/common_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/variant \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__variant/monostate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/counted_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/default_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/erase_if_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/front_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/indirectly_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/mergeable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/ranges_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/permutable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/sortable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/unreachable_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/memory \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/align.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/assume_aligned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/raw_storage_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temporary_buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator_construction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_found_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_fun_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/destruct_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/three_way_comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sift_down.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_max_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/strict_weak_ordering_check.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/randomize_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/blsr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_any_all_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/serial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_execution_policy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/execution \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_frontend_dispatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/cpp17_iterator_concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/pstl_transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_contains.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_ends_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_starts_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_int_distribution.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/is_valid.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/uniform_random_bit_generator_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_random_bit_generator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_left.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_right.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bit \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_ceil.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_floor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_width.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/byteswap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/has_single_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__support/musl/xlocale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_code.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/errc.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cerrno \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_condition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/system_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/mutex \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__condition_variable/condition_variable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/mutex.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/unique_lock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/tag_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/lock_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/id.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/system_error \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/istream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bitset \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit_reference \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/format \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_fwd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_parse_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_to_n_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/container_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_default_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/statically_widen.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg_store.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_args.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/streambuf \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/bsd_locale_fallbacks.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/locale_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdarg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___gnuc_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_arg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___va_copy.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdarg \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_output.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/parser_std_format_spec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/unicode.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/extended_grapheme_cluster_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/width_estimation_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/ref_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/queue \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/deque \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temp_value.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__split_buffer \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/functional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_back.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/perfect_forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_front.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder1st.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder2nd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/boyer_moore_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/array \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/unordered_map \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/is_transparent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__hash_table \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ranges_iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__node_handle \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/vector \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_bool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/tables.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_base_10.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_32_64_or_128_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/compose.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/default_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/builtin_new_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/strip_signature.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fun_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/not_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stack \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_char.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/write_escaped.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/escaped_output_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/chars_format.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/print \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/unistd.h \ + /home/someone/mysite/miner/src/cpp/configuration.h \ + /home/someone/mysite/miner/src/cpp/randomx.h diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o new file mode 100644 index 0000000..40dc2b9 Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o.d new file mode 100644 index 0000000..6928944 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o.d @@ -0,0 +1,844 @@ +CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o: \ + /home/someone/mysite/miner/src/cpp/randomx.cpp \ + /home/someone/mysite/miner/src/cpp/randomx.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_nullptr_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /home/someone/mysite/miner/src/cpp/dataset.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdint \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/vector \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_move_common.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iterator_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/declval.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_lvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_referenceable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/integral_constant.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_same.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_rvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstddef \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/enable_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/version \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conditional.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_void.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/nat.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__undef_macros \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_iterator_concept.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_reference_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/convertible_to.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/same_as.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/decay.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/void_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_const_lvalue_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_all_extents.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scalar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_function_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_null_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/movable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/class_or_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_class.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exchange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_object.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/derived_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_base_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/boolean_testable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/invocable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/apply_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_core_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_object_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/predicate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/regular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/semiregular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/relation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/totally_ordered.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/incrementable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_primary_template.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_valid_expansion.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_list.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/readable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/disjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/pointer_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/addressof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/advance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/convert_to_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/underlying_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/unreachable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/limits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/type_traits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_storage.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/alignment_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/can_extract_key.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/dependent_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_unique_object_representation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_virtual_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_abstract.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_aggregate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_bounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_callable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_char_like_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_standard_layout.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_compound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_fundamental.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constant_evaluated.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_final.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_implicitly_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_literal_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/lazy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pod.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_polymorphic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scoped_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_specialization.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unbounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/maybe_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/negation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/rank.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/result_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/unwrap_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/distance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_borrowed_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/auto_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/initializer_list \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/next.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/prev.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/common_comparison_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/ordering.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/synth_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/three_way_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/different_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/get.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_indices.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/integer_sequence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/pair_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/sfinae_helpers.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/make_tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like_ext.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/piecewise_construct.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/constexpr_c_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/voidify.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/new \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdlib \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/datasizeof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_always_bitcastable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_lexicographically_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/is_pointer_in_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/operation_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_segment.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/segmented_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/weak_result_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/three_way_comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_segment_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/invert_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/bit_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwchar \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit_reference \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/popcount.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstring \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/enable_insertable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_fwd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_bool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_parse_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdexcept \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/exception \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/typeinfo \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/nested_exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/terminate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iosfwd \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/fstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ios.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/istream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ostream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/sstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/streambuf.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__std_mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string_view \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/bounded_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/dangling.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/view_interface.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/char_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wasi/api.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/compare \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_partial_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/partial_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/weak_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/strong_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/priority_tag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/promote.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/abs.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/copysign.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/error_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/exponential_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fdim.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/gamma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hypot.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/logarithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/min_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/modulo.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/remainder.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/roots.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/rounding_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_strong_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_weak_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/is_eq.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/algorithm \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/half_positive.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fold.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/movable_box.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/optional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/in_place.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/atomic \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/aliases.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_base.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_sync.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/contention_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/cxx_atomic_impl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/is_always_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/duration.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ratio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/climits \ + /usr/lib/emsdk/upstream/lib/clang/20/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/poll_with_backoff.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/high_resolution_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/steady_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/time_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/system_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctime \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__threading_support \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/convert_to_timespec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/pthread.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/sched.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/check_memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_init.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/fence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/kill_dependency.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/concepts \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iterator \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/back_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/common_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/variant \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__variant/monostate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/tuple \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_arg_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/utility \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_lvalue.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/cmp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exception_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/rel_ops.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/to_underlying.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/counted_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/default_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/erase_if_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/front_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/indirectly_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/mergeable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/ranges_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/permutable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/sortable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/unreachable_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/wrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/memory \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/align.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocate_at_least.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocation_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/assume_aligned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/auto_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/compressed_pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/raw_storage_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/shared_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/unique_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temporary_buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator_construction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_found_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_fun_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/destruct_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sift_down.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_max_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/strict_weak_ordering_check.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/randomize_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/blsr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_any_all_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/serial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_execution_policy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/execution \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_frontend_dispatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/cpp17_iterator_concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/pstl_transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_contains.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_ends_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_starts_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_int_distribution.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/is_valid.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/uniform_random_bit_generator_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_random_bit_generator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_left.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_right.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bit \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_ceil.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_floor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_width.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/byteswap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/has_single_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/tables.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_base_10.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/errc.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cerrno \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_32_64_or_128_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_output.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_to_n_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/parser_std_format_spec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/unicode.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/extended_grapheme_cluster_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/width_estimation_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ios/fpos.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/swap_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/polymorphic_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/container_compatible_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/from_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/extern_template_lists.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/noexcept_move_assign_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/array \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/once_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/no_destroy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/clocale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__support/musl/xlocale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ios \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_code.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_condition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/system_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/mutex \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__condition_variable/condition_variable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/mutex.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/unique_lock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/tag_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/lock_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/id.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/system_error \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/streambuf \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/bsd_locale_fallbacks.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/locale_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdarg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___gnuc_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_arg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___va_copy.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdarg \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temp_value.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__split_buffer \ + /home/someone/mysite/miner/src/cpp/common.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/istream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bitset \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/format \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/container_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_default_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/statically_widen.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg_store.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_args.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/ref_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/queue \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/deque \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/functional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_back.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/perfect_forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_front.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder1st.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder2nd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/boyer_moore_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/unordered_map \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/is_transparent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__hash_table \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ranges_iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__node_handle \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/compose.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/default_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/builtin_new_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/strip_signature.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fun_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/not_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stack \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_char.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/write_escaped.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/escaped_output_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/chars_format.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/print \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/unistd.h \ + /home/someone/mysite/miner/src/cpp/endian.h \ + /home/someone/mysite/miner/src/cpp/configuration.h \ + /home/someone/mysite/miner/src/cpp/superscalar_program.hpp \ + /home/someone/mysite/miner/src/cpp/instruction.hpp \ + /home/someone/mysite/miner/src/cpp/allocator.hpp \ + /home/someone/mysite/miner/src/cpp/argon2.h \ + /home/someone/mysite/miner/src/cpp/vm_interpreted.hpp \ + /home/someone/mysite/miner/src/cpp/virtual_machine.hpp \ + /home/someone/mysite/miner/src/cpp/program.hpp \ + /home/someone/mysite/miner/src/cpp/bytecode_machine.hpp \ + /home/someone/mysite/miner/src/cpp/intrin_wasm.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/wasm_simd128.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdbool.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdbool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdbool.h \ + /home/someone/mysite/miner/src/cpp/softfloat.hpp \ + /home/someone/mysite/miner/src/cpp/vm_interpreted_light.hpp \ + /home/someone/mysite/miner/src/cpp/vm_compiled.hpp \ + /home/someone/mysite/miner/src/cpp/vm_compiled_light.hpp \ + /home/someone/mysite/miner/src/cpp/blake2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cassert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/assert.h diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o new file mode 100644 index 0000000..8c4ea9c Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o.d new file mode 100644 index 0000000..77a85c1 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o.d @@ -0,0 +1,9 @@ +CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o: \ + /home/someone/mysite/miner/src/cpp/reciprocal.c \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/assert.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /home/someone/mysite/miner/src/cpp/reciprocal.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o new file mode 100644 index 0000000..1605bd4 Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o.d new file mode 100644 index 0000000..dc65c63 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o.d @@ -0,0 +1,15 @@ +CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o: \ + /home/someone/mysite/miner/src/cpp/softfloat.cpp \ + /home/someone/mysite/miner/src/cpp/softfloat.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdint \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o new file mode 100644 index 0000000..7283193 Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o.d new file mode 100644 index 0000000..48e7a8a --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o.d @@ -0,0 +1,836 @@ +CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o: \ + /home/someone/mysite/miner/src/cpp/superscalar.cpp \ + /home/someone/mysite/miner/src/cpp/configuration.h \ + /home/someone/mysite/miner/src/cpp/program.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdint \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstddef \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/enable_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/integral_constant.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/version \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_nullptr_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ostream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/shared_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/three_way_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/common_comparison_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/ordering.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_same.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_reference_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/convertible_to.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_void.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/declval.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/same_as.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conditional.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/decay.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_referenceable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/void_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_lvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_rvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/boolean_testable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_const_lvalue_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/totally_ordered.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/operation_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/apply_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_base_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_core_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_function_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_object_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/nat.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/weak_result_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/addressof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocation_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/voidify.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__undef_macros \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/new \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdlib \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/type_traits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_storage.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_list.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/alignment_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/can_extract_key.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/dependent_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/disjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_unique_object_representation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_all_extents.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_virtual_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_abstract.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_aggregate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_bounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_callable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_char_like_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_standard_layout.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_class.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_compound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_fundamental.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_null_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constant_evaluated.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_final.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_implicitly_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_literal_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/lazy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scalar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_object.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pod.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_polymorphic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scoped_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/underlying_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_specialization.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unbounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/maybe_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/negation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/rank.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/result_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/unwrap_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/pointer_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/limits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocate_at_least.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/auto_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/compressed_pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/get.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/movable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/class_or_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exchange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_indices.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/integer_sequence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/piecewise_construct.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_move_common.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iterator_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_iterator_concept.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/derived_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/invocable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/predicate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/regular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/semiregular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/relation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/incrementable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_primary_template.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_valid_expansion.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/readable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/advance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/convert_to_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/unreachable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/distance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_borrowed_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/auto_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/initializer_list \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/next.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/prev.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/synth_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/different_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/pair_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/sfinae_helpers.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/make_tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like_ext.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/constexpr_c_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/datasizeof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_always_bitcastable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_lexicographically_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/is_pointer_in_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_segment.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/segmented_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/dangling.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/view_interface.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exception_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/unique_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstring \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/typeinfo \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_code.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/errc.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cerrno \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wasi/api.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_segment_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/invert_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/bit_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwchar \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/enable_insertable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ios/fpos.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ios.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/wrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/swap_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/polymorphic_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/tuple \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_arg_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/compare \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_partial_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/partial_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/weak_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/strong_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/priority_tag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/promote.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/abs.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/copysign.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/error_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/exponential_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fdim.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/gamma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hypot.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/logarithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/min_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/modulo.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/remainder.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/roots.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/rounding_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_strong_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_weak_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/is_eq.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/exception \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/nested_exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/terminate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iosfwd \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/fstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/istream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/sstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/streambuf.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__std_mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/utility \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_lvalue.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/cmp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/in_place.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/rel_ops.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/to_underlying.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/container_compatible_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/from_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/char_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/extern_template_lists.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/noexcept_move_assign_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/climits \ + /usr/lib/emsdk/upstream/lib/clang/20/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdexcept \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string_view \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/bounded_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/algorithm \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/half_positive.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/popcount.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fold.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/movable_box.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/optional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/atomic \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/aliases.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_base.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_sync.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/contention_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/cxx_atomic_impl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/is_always_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/duration.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ratio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/poll_with_backoff.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/high_resolution_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/steady_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/time_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/system_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctime \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__threading_support \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/convert_to_timespec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/pthread.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/sched.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/check_memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_init.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/fence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/kill_dependency.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/concepts \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iterator \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/back_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/common_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/variant \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__variant/monostate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/counted_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/default_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/erase_if_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/front_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/indirectly_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/mergeable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/ranges_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/permutable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/sortable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/unreachable_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/memory \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/align.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/assume_aligned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/raw_storage_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temporary_buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator_construction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_found_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_fun_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/destruct_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/three_way_comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sift_down.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_max_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/strict_weak_ordering_check.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/randomize_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/blsr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_any_all_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/serial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_execution_policy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/execution \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_frontend_dispatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/cpp17_iterator_concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/pstl_transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_contains.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_ends_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_starts_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_int_distribution.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/is_valid.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/uniform_random_bit_generator_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_random_bit_generator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_left.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_right.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bit \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_ceil.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_floor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_width.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/byteswap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/has_single_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_condition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bitset \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit_reference \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/format \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_fwd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_parse_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_to_n_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/container_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_default_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/statically_widen.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg_store.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_args.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/once_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/no_destroy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/clocale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__support/musl/xlocale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ios \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/system_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/mutex \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__condition_variable/condition_variable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/mutex.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/unique_lock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/tag_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/lock_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/id.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/system_error \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/streambuf \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/bsd_locale_fallbacks.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/locale_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdarg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___gnuc_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_arg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___va_copy.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdarg \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_output.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/parser_std_format_spec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/unicode.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/extended_grapheme_cluster_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/width_estimation_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/ref_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/queue \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/deque \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temp_value.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__split_buffer \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/functional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_back.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/perfect_forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_front.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder1st.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder2nd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/boyer_moore_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/array \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/unordered_map \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/is_transparent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__hash_table \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ranges_iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__node_handle \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/vector \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_bool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/tables.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_base_10.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_32_64_or_128_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/compose.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/default_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/builtin_new_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/strip_signature.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fun_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/not_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stack \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_char.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/write_escaped.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/escaped_output_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/chars_format.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/print \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/unistd.h \ + /home/someone/mysite/miner/src/cpp/common.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/istream \ + /home/someone/mysite/miner/src/cpp/endian.h \ + /home/someone/mysite/miner/src/cpp/randomx.h \ + /home/someone/mysite/miner/src/cpp/instruction.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iomanip \ + /home/someone/mysite/miner/src/cpp/superscalar.hpp \ + /home/someone/mysite/miner/src/cpp/superscalar_program.hpp \ + /home/someone/mysite/miner/src/cpp/blake2_generator.hpp \ + /home/someone/mysite/miner/src/cpp/intrin_wasm.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/wasm_simd128.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdbool.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdbool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdbool.h \ + /home/someone/mysite/miner/src/cpp/softfloat.hpp \ + /home/someone/mysite/miner/src/cpp/reciprocal.h diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o new file mode 100644 index 0000000..bbdd3ee Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o.d new file mode 100644 index 0000000..63ae852 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o.d @@ -0,0 +1,836 @@ +CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o: \ + /home/someone/mysite/miner/src/cpp/virtual_machine.cpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstring \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constant_evaluated.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iomanip \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/istream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/istream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/streambuf.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/default_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstddef \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/enable_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/integral_constant.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/version \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_nullptr_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/convertible_to.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_void.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_same.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/declval.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_all_extents.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scalar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_function_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_null_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_reference_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/same_as.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conditional.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/decay.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_referenceable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/void_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_lvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_rvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_const_lvalue_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/movable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/class_or_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_class.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exchange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__undef_macros \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/nat.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_object.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/boolean_testable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/totally_ordered.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/incrementable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_primary_template.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_valid_expansion.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/apply_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_list.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/readable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/disjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_base_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ostream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/shared_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/three_way_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/common_comparison_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/ordering.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/operation_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_core_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_object_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/weak_result_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/addressof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocation_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/voidify.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/new \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdlib \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/type_traits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_storage.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/alignment_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/can_extract_key.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/dependent_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_unique_object_representation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_virtual_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_abstract.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_aggregate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_bounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_callable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_char_like_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_standard_layout.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_compound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_fundamental.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_final.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_implicitly_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_literal_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/lazy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pod.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_polymorphic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scoped_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/underlying_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_specialization.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdint \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unbounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/maybe_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/negation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/rank.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/result_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/unwrap_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/pointer_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/limits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocate_at_least.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/auto_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/compressed_pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/get.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_indices.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/integer_sequence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/piecewise_construct.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_move_common.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iterator_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_iterator_concept.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/derived_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/invocable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/predicate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/regular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/semiregular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/relation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/advance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/convert_to_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/unreachable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/distance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_borrowed_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/auto_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/initializer_list \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/next.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/prev.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/synth_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/different_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/pair_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/sfinae_helpers.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/make_tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like_ext.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/constexpr_c_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/datasizeof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_always_bitcastable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_lexicographically_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/is_pointer_in_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_segment.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/segmented_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/dangling.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/view_interface.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exception_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/unique_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/typeinfo \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_code.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/errc.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cerrno \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wasi/api.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_segment_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/invert_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/bit_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwchar \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/enable_insertable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ios/fpos.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ios.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/wrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/swap_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/polymorphic_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/tuple \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_arg_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/compare \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_partial_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/partial_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/weak_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/strong_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/priority_tag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/promote.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/abs.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/copysign.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/error_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/exponential_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fdim.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/gamma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hypot.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/logarithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/min_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/modulo.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/remainder.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/roots.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/rounding_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_strong_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_weak_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/is_eq.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/exception \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/nested_exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/terminate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iosfwd \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/fstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/sstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__std_mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/utility \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_lvalue.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/cmp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/in_place.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/rel_ops.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/to_underlying.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/container_compatible_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/from_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/char_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/extern_template_lists.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/noexcept_move_assign_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/climits \ + /usr/lib/emsdk/upstream/lib/clang/20/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdexcept \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string_view \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/bounded_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/algorithm \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/half_positive.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/popcount.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fold.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/movable_box.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/optional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/atomic \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/aliases.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_base.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_sync.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/contention_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/cxx_atomic_impl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/is_always_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/duration.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ratio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/poll_with_backoff.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/high_resolution_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/steady_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/time_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/system_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctime \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__threading_support \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/convert_to_timespec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/pthread.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/sched.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/check_memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_init.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/fence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/kill_dependency.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/concepts \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iterator \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/back_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/common_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/variant \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__variant/monostate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/counted_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/erase_if_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/front_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/indirectly_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/mergeable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/ranges_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/permutable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/sortable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/unreachable_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/memory \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/align.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/assume_aligned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/raw_storage_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temporary_buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator_construction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_found_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_fun_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/destruct_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/three_way_comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sift_down.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_max_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/strict_weak_ordering_check.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/randomize_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/blsr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_any_all_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/serial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_execution_policy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/execution \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_frontend_dispatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/cpp17_iterator_concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/pstl_transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_contains.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_ends_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_starts_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_int_distribution.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/is_valid.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/uniform_random_bit_generator_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_random_bit_generator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_left.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_right.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bit \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_ceil.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_floor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_width.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/byteswap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/has_single_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_condition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bitset \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit_reference \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/format \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_fwd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_parse_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_to_n_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/container_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_default_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/statically_widen.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg_store.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_args.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/once_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/no_destroy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/clocale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__support/musl/xlocale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ios \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/system_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/mutex \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__condition_variable/condition_variable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/mutex.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/unique_lock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/tag_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/lock_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/id.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/system_error \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/streambuf \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/bsd_locale_fallbacks.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/locale_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdarg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___gnuc_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_arg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___va_copy.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdarg \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_output.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/parser_std_format_spec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/unicode.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/extended_grapheme_cluster_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/width_estimation_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/ref_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/queue \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/deque \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temp_value.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__split_buffer \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/functional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_back.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/perfect_forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_front.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder1st.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder2nd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/boyer_moore_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/array \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/unordered_map \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/is_transparent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__hash_table \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ranges_iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__node_handle \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/vector \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_bool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/tables.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_base_10.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_32_64_or_128_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/compose.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/default_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/builtin_new_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/strip_signature.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fun_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/not_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stack \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_char.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/write_escaped.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/escaped_output_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/chars_format.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/print \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/unistd.h \ + /home/someone/mysite/miner/src/cpp/virtual_machine.hpp \ + /home/someone/mysite/miner/src/cpp/common.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iostream \ + /home/someone/mysite/miner/src/cpp/endian.h \ + /home/someone/mysite/miner/src/cpp/configuration.h \ + /home/someone/mysite/miner/src/cpp/randomx.h \ + /home/someone/mysite/miner/src/cpp/program.hpp \ + /home/someone/mysite/miner/src/cpp/instruction.hpp \ + /home/someone/mysite/miner/src/cpp/aes_hash.hpp \ + /home/someone/mysite/miner/src/cpp/blake2.h \ + /home/someone/mysite/miner/src/cpp/intrin_wasm.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/wasm_simd128.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdbool.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdbool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdbool.h \ + /home/someone/mysite/miner/src/cpp/softfloat.hpp \ + /home/someone/mysite/miner/src/cpp/allocator.hpp diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o new file mode 100644 index 0000000..0f13aed Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o.d new file mode 100644 index 0000000..159ed97 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o.d @@ -0,0 +1,193 @@ +CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o: \ + /home/someone/mysite/miner/src/cpp/virtual_memory.cpp \ + /home/someone/mysite/miner/src/cpp/virtual_memory.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstddef \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/enable_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/integral_constant.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/version \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_nullptr_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdexcept \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdlib \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/exception \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/addressof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/voidify.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/declval.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conditional.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_lvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_referenceable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_same.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_rvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__undef_macros \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/new \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/type_traits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_void.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_storage.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/nat.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_list.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/alignment_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/apply_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/can_extract_key.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/decay.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/void_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/dependent_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/disjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_unique_object_representation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_all_extents.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_virtual_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_base_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_core_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_function_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_object_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_abstract.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_aggregate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_bounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_callable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_char_like_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_standard_layout.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_class.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_compound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_fundamental.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_null_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constant_evaluated.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_final.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_implicitly_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_literal_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/lazy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scalar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_object.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pod.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_polymorphic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scoped_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/underlying_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_specialization.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdint \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unbounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_const_lvalue_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/maybe_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/negation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/rank.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/result_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/unwrap_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/typeinfo \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/nested_exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/terminate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iosfwd \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/fstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ios.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/istream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ostream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/sstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/streambuf.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__std_mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/sys/types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/sys/select.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/sys/mman.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/mman.h diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o new file mode 100644 index 0000000..8e637c1 Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o.d new file mode 100644 index 0000000..f884723 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o.d @@ -0,0 +1,831 @@ +CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o: \ + /home/someone/mysite/miner/src/cpp/vm_compiled.cpp \ + /home/someone/mysite/miner/src/cpp/vm_compiled.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/new \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/integral_constant.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_same.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstddef \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/enable_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/version \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_nullptr_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdlib \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/type_traits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_lvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_referenceable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_void.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_rvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_storage.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conditional.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/nat.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_list.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/alignment_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/apply_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/can_extract_key.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/decay.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/void_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/declval.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/dependent_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/disjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_unique_object_representation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_all_extents.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_virtual_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_base_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_core_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_function_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_object_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_abstract.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_aggregate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_bounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_callable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_char_like_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_standard_layout.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_class.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_compound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_fundamental.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_null_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constant_evaluated.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_final.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_implicitly_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_literal_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/lazy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scalar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_object.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pod.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_polymorphic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scoped_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/underlying_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_specialization.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdint \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unbounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_const_lvalue_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/maybe_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/negation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/rank.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/result_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/unwrap_ref.h \ + /home/someone/mysite/miner/src/cpp/virtual_machine.hpp \ + /home/someone/mysite/miner/src/cpp/common.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ios \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ios.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ios/fpos.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/shared_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/three_way_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/common_comparison_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/ordering.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_reference_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/convertible_to.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/same_as.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/boolean_testable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/totally_ordered.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/operation_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/weak_result_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/addressof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ostream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocation_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/voidify.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__undef_macros \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/pointer_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/limits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocate_at_least.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/auto_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/compressed_pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/get.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/movable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/class_or_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exchange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_indices.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/integer_sequence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/piecewise_construct.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_move_common.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iterator_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_iterator_concept.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/derived_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/invocable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/predicate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/regular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/semiregular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/relation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/incrementable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_primary_template.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_valid_expansion.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/readable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/advance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/convert_to_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/unreachable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/distance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_borrowed_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/auto_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/initializer_list \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/next.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/prev.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/synth_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/different_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/pair_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/sfinae_helpers.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/make_tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like_ext.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/constexpr_c_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/datasizeof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_always_bitcastable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_lexicographically_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/is_pointer_in_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_segment.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/segmented_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/dangling.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/view_interface.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exception_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/unique_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstring \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/typeinfo \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/once_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/tuple \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_arg_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/compare \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_partial_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/partial_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/weak_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/strong_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/priority_tag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/promote.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/abs.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/copysign.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/error_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/exponential_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fdim.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/gamma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hypot.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/logarithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/min_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/modulo.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/remainder.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/roots.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/rounding_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_strong_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_weak_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/is_eq.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/exception \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/nested_exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/terminate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iosfwd \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/fstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/istream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/sstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/streambuf.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__std_mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/utility \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_lvalue.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/cmp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/in_place.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/rel_ops.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/to_underlying.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/no_destroy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/clocale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_segment_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/invert_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/bit_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwchar \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/enable_insertable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/wrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/swap_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/polymorphic_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/container_compatible_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/from_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/char_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wasi/api.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/extern_template_lists.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/noexcept_move_assign_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/climits \ + /usr/lib/emsdk/upstream/lib/clang/20/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdexcept \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string_view \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/bounded_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/algorithm \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/half_positive.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/popcount.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fold.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/movable_box.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/optional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/atomic \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/aliases.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_base.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_sync.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/contention_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/cxx_atomic_impl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/is_always_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/duration.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ratio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/poll_with_backoff.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/high_resolution_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/steady_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/time_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/system_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctime \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__threading_support \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/convert_to_timespec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/pthread.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/sched.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/check_memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_init.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/fence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/kill_dependency.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/concepts \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iterator \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/back_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/common_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/variant \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__variant/monostate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/counted_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/default_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/erase_if_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/front_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/indirectly_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/mergeable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/ranges_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/permutable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/sortable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/unreachable_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/memory \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/align.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/assume_aligned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/raw_storage_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temporary_buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator_construction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_found_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_fun_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/destruct_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/three_way_comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sift_down.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_max_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/strict_weak_ordering_check.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/randomize_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/blsr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_any_all_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/serial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_execution_policy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/execution \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_frontend_dispatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/cpp17_iterator_concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/pstl_transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_contains.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_ends_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_starts_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_int_distribution.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/is_valid.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/uniform_random_bit_generator_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_random_bit_generator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_left.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_right.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bit \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_ceil.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_floor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_width.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/byteswap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/has_single_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__support/musl/xlocale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_code.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/errc.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cerrno \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_condition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/system_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/mutex \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__condition_variable/condition_variable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/mutex.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/unique_lock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/tag_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/lock_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/id.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/system_error \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/istream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bitset \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit_reference \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/format \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_fwd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_parse_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_to_n_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/container_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_default_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/statically_widen.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg_store.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_args.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/streambuf \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/bsd_locale_fallbacks.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/locale_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdarg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___gnuc_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_arg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___va_copy.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdarg \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_output.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/parser_std_format_spec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/unicode.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/extended_grapheme_cluster_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/width_estimation_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/ref_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/queue \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/deque \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temp_value.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__split_buffer \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/functional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_back.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/perfect_forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_front.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder1st.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder2nd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/boyer_moore_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/array \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/unordered_map \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/is_transparent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__hash_table \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ranges_iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__node_handle \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/vector \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_bool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/tables.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_base_10.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_32_64_or_128_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/compose.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/default_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/builtin_new_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/strip_signature.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fun_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/not_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stack \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_char.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/write_escaped.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/escaped_output_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/chars_format.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/print \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/unistd.h \ + /home/someone/mysite/miner/src/cpp/endian.h \ + /home/someone/mysite/miner/src/cpp/configuration.h \ + /home/someone/mysite/miner/src/cpp/randomx.h \ + /home/someone/mysite/miner/src/cpp/program.hpp \ + /home/someone/mysite/miner/src/cpp/instruction.hpp \ + /home/someone/mysite/miner/src/cpp/allocator.hpp \ + /home/someone/mysite/miner/src/cpp/dataset.hpp \ + /home/someone/mysite/miner/src/cpp/superscalar_program.hpp \ + /home/someone/mysite/miner/src/cpp/argon2.h diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o new file mode 100644 index 0000000..9643f30 Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o.d new file mode 100644 index 0000000..eb7f581 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o.d @@ -0,0 +1,832 @@ +CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o: \ + /home/someone/mysite/miner/src/cpp/vm_compiled_light.cpp \ + /home/someone/mysite/miner/src/cpp/vm_compiled_light.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/new \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/integral_constant.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_same.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstddef \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/enable_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/version \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_nullptr_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdlib \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/type_traits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_lvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_referenceable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_void.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_rvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_storage.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conditional.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/nat.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_list.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/alignment_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/apply_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/can_extract_key.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/decay.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/void_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/declval.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/dependent_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/disjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_unique_object_representation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_all_extents.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_virtual_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_base_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_core_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_function_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_object_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_abstract.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_aggregate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_bounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_callable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_char_like_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_standard_layout.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_class.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_compound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_fundamental.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_null_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constant_evaluated.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_final.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_implicitly_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_literal_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/lazy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scalar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_object.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pod.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_polymorphic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scoped_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/underlying_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_specialization.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdint \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unbounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_const_lvalue_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/maybe_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/negation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/rank.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/result_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/unwrap_ref.h \ + /home/someone/mysite/miner/src/cpp/vm_compiled.hpp \ + /home/someone/mysite/miner/src/cpp/virtual_machine.hpp \ + /home/someone/mysite/miner/src/cpp/common.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ios \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ios.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ios/fpos.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/shared_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/three_way_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/common_comparison_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/ordering.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_reference_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/convertible_to.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/same_as.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/boolean_testable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/totally_ordered.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/operation_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/weak_result_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/addressof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ostream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocation_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/voidify.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__undef_macros \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/pointer_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/limits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocate_at_least.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/auto_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/compressed_pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/get.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/movable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/class_or_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exchange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_indices.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/integer_sequence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/piecewise_construct.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_move_common.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iterator_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_iterator_concept.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/derived_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/invocable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/predicate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/regular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/semiregular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/relation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/incrementable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_primary_template.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_valid_expansion.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/readable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/advance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/convert_to_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/unreachable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/distance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_borrowed_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/auto_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/initializer_list \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/next.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/prev.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/synth_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/different_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/pair_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/sfinae_helpers.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/make_tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like_ext.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/constexpr_c_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/datasizeof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_always_bitcastable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_lexicographically_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/is_pointer_in_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_segment.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/segmented_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/dangling.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/view_interface.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exception_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/unique_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstring \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/typeinfo \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/once_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/tuple \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_arg_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/compare \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_partial_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/partial_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/weak_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/strong_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/priority_tag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/promote.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/abs.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/copysign.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/error_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/exponential_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fdim.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/gamma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hypot.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/logarithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/min_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/modulo.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/remainder.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/roots.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/rounding_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_strong_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_weak_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/is_eq.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/exception \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/nested_exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/terminate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iosfwd \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/fstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/istream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/sstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/streambuf.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__std_mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/utility \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_lvalue.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/cmp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/in_place.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/rel_ops.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/to_underlying.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/no_destroy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/clocale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_segment_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/invert_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/bit_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwchar \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/enable_insertable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/wrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/swap_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/polymorphic_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/container_compatible_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/from_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/char_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wasi/api.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/extern_template_lists.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/noexcept_move_assign_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/climits \ + /usr/lib/emsdk/upstream/lib/clang/20/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdexcept \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string_view \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/bounded_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/algorithm \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/half_positive.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/popcount.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fold.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/movable_box.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/optional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/atomic \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/aliases.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_base.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_sync.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/contention_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/cxx_atomic_impl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/is_always_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/duration.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ratio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/poll_with_backoff.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/high_resolution_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/steady_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/time_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/system_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctime \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__threading_support \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/convert_to_timespec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/pthread.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/sched.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/check_memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_init.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/fence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/kill_dependency.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/concepts \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iterator \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/back_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/common_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/variant \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__variant/monostate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/counted_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/default_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/erase_if_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/front_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/indirectly_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/mergeable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/ranges_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/permutable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/sortable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/unreachable_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/memory \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/align.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/assume_aligned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/raw_storage_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temporary_buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator_construction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_found_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_fun_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/destruct_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/three_way_comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sift_down.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_max_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/strict_weak_ordering_check.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/randomize_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/blsr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_any_all_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/serial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_execution_policy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/execution \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_frontend_dispatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/cpp17_iterator_concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/pstl_transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_contains.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_ends_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_starts_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_int_distribution.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/is_valid.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/uniform_random_bit_generator_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_random_bit_generator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_left.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_right.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bit \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_ceil.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_floor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_width.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/byteswap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/has_single_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__support/musl/xlocale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_code.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/errc.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cerrno \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_condition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/system_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/mutex \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__condition_variable/condition_variable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/mutex.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/unique_lock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/tag_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/lock_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/id.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/system_error \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/istream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bitset \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit_reference \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/format \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_fwd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_parse_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_to_n_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/container_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_default_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/statically_widen.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg_store.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_args.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/streambuf \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/bsd_locale_fallbacks.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/locale_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdarg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___gnuc_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_arg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___va_copy.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdarg \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_output.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/parser_std_format_spec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/unicode.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/extended_grapheme_cluster_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/width_estimation_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/ref_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/queue \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/deque \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temp_value.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__split_buffer \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/functional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_back.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/perfect_forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_front.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder1st.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder2nd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/boyer_moore_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/array \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/unordered_map \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/is_transparent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__hash_table \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ranges_iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__node_handle \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/vector \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_bool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/tables.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_base_10.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_32_64_or_128_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/compose.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/default_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/builtin_new_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/strip_signature.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fun_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/not_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stack \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_char.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/write_escaped.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/escaped_output_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/chars_format.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/print \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/unistd.h \ + /home/someone/mysite/miner/src/cpp/endian.h \ + /home/someone/mysite/miner/src/cpp/configuration.h \ + /home/someone/mysite/miner/src/cpp/randomx.h \ + /home/someone/mysite/miner/src/cpp/program.hpp \ + /home/someone/mysite/miner/src/cpp/instruction.hpp \ + /home/someone/mysite/miner/src/cpp/allocator.hpp \ + /home/someone/mysite/miner/src/cpp/dataset.hpp \ + /home/someone/mysite/miner/src/cpp/superscalar_program.hpp \ + /home/someone/mysite/miner/src/cpp/argon2.h diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o new file mode 100644 index 0000000..df48d1d Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o.d new file mode 100644 index 0000000..e6e17cd --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o.d @@ -0,0 +1,845 @@ +CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o: \ + /home/someone/mysite/miner/src/cpp/vm_interpreted.cpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/version \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ios \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ios.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ios/fpos.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/shared_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/three_way_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/common_comparison_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/ordering.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/enable_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_same.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/integral_constant.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstddef \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_nullptr_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_reference_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/convertible_to.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_void.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/declval.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/same_as.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conditional.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/decay.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_referenceable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/void_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_lvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_rvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/boolean_testable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_const_lvalue_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/totally_ordered.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/operation_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/apply_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_base_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_core_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_function_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_object_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/nat.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/weak_result_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/addressof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ostream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocation_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/voidify.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__undef_macros \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/new \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdlib \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/type_traits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_storage.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_list.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/alignment_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/can_extract_key.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/dependent_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/disjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_unique_object_representation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_all_extents.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_virtual_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_abstract.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_aggregate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_bounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_callable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_char_like_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_standard_layout.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_class.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_compound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_fundamental.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_null_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constant_evaluated.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_final.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_implicitly_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_literal_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/lazy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scalar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_object.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pod.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_polymorphic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scoped_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/underlying_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_specialization.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdint \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unbounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/maybe_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/negation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/rank.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/result_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/unwrap_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/pointer_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/limits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocate_at_least.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/auto_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/compressed_pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/get.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/movable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/class_or_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exchange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_indices.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/integer_sequence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/piecewise_construct.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_move_common.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iterator_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_iterator_concept.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/derived_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/invocable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/predicate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/regular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/semiregular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/relation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/incrementable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_primary_template.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_valid_expansion.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/readable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/advance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/convert_to_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/unreachable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/distance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_borrowed_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/auto_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/initializer_list \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/next.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/prev.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/synth_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/different_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/pair_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/sfinae_helpers.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/make_tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like_ext.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/constexpr_c_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/datasizeof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_always_bitcastable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_lexicographically_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/is_pointer_in_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_segment.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/segmented_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/dangling.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/view_interface.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exception_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/unique_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstring \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/typeinfo \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/once_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/tuple \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_arg_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/compare \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_partial_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/partial_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/weak_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/strong_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/priority_tag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/promote.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/abs.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/copysign.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/error_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/exponential_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fdim.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/gamma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hypot.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/logarithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/min_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/modulo.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/remainder.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/roots.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/rounding_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_strong_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_weak_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/is_eq.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/exception \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/nested_exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/terminate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iosfwd \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/fstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/istream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/sstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/streambuf.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__std_mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/utility \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_lvalue.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/cmp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/in_place.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/rel_ops.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/to_underlying.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/no_destroy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/clocale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_segment_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/invert_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/bit_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwchar \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/enable_insertable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/wrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/swap_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/polymorphic_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/container_compatible_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/from_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/char_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wasi/api.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/extern_template_lists.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/noexcept_move_assign_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/climits \ + /usr/lib/emsdk/upstream/lib/clang/20/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdexcept \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string_view \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/bounded_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/algorithm \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/half_positive.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/popcount.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fold.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/movable_box.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/optional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/atomic \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/aliases.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_base.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_sync.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/contention_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/cxx_atomic_impl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/is_always_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/duration.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ratio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/poll_with_backoff.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/high_resolution_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/steady_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/time_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/system_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctime \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__threading_support \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/convert_to_timespec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/pthread.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/sched.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/check_memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_init.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/fence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/kill_dependency.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/concepts \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iterator \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/back_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/common_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/variant \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__variant/monostate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/counted_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/default_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/erase_if_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/front_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/indirectly_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/mergeable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/ranges_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/permutable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/sortable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/unreachable_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/memory \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/align.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/assume_aligned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/raw_storage_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temporary_buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator_construction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_found_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_fun_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/destruct_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/three_way_comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sift_down.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_max_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/strict_weak_ordering_check.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/randomize_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/blsr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_any_all_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/serial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_execution_policy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/execution \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_frontend_dispatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/cpp17_iterator_concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/pstl_transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_contains.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_ends_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_starts_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_int_distribution.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/is_valid.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/uniform_random_bit_generator_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_random_bit_generator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_left.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_right.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bit \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_ceil.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_floor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_width.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/byteswap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/has_single_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__support/musl/xlocale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_code.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/errc.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cerrno \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_condition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/system_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/mutex \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__condition_variable/condition_variable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/mutex.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/unique_lock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/tag_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/lock_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/id.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/system_error \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/istream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bitset \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit_reference \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/format \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_fwd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_parse_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_to_n_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/container_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_default_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/statically_widen.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg_store.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_args.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/streambuf \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/bsd_locale_fallbacks.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/locale_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdarg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___gnuc_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_arg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___va_copy.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdarg \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_output.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/parser_std_format_spec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/unicode.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/extended_grapheme_cluster_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/width_estimation_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/ref_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/queue \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/deque \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temp_value.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__split_buffer \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/functional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_back.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/perfect_forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_front.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder1st.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder2nd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/boyer_moore_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/array \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/unordered_map \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/is_transparent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__hash_table \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ranges_iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__node_handle \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/vector \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_bool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/tables.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_base_10.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_32_64_or_128_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/compose.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/default_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/builtin_new_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/strip_signature.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fun_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/not_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stack \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_char.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/write_escaped.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/escaped_output_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/chars_format.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/print \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/unistd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iomanip \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/sstream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cfloat \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/float.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/float.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/float.h \ + /home/someone/mysite/miner/src/cpp/vm_interpreted.hpp \ + /home/someone/mysite/miner/src/cpp/common.hpp \ + /home/someone/mysite/miner/src/cpp/endian.h \ + /home/someone/mysite/miner/src/cpp/configuration.h \ + /home/someone/mysite/miner/src/cpp/randomx.h \ + /home/someone/mysite/miner/src/cpp/virtual_machine.hpp \ + /home/someone/mysite/miner/src/cpp/program.hpp \ + /home/someone/mysite/miner/src/cpp/instruction.hpp \ + /home/someone/mysite/miner/src/cpp/bytecode_machine.hpp \ + /home/someone/mysite/miner/src/cpp/intrin_wasm.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/wasm_simd128.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdbool.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdbool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdbool.h \ + /home/someone/mysite/miner/src/cpp/softfloat.hpp \ + /home/someone/mysite/miner/src/cpp/allocator.hpp \ + /home/someone/mysite/miner/src/cpp/dataset.hpp \ + /home/someone/mysite/miner/src/cpp/superscalar_program.hpp \ + /home/someone/mysite/miner/src/cpp/argon2.h \ + /home/someone/mysite/miner/src/cpp/reciprocal.h diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o b/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o new file mode 100644 index 0000000..b4d9951 Binary files /dev/null and b/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o differ diff --git a/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o.d b/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o.d new file mode 100644 index 0000000..a03f984 --- /dev/null +++ b/miner/build/CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o.d @@ -0,0 +1,839 @@ +CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o: \ + /home/someone/mysite/miner/src/cpp/vm_interpreted_light.cpp \ + /home/someone/mysite/miner/src/cpp/vm_interpreted_light.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/new \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/integral_constant.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_same.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstddef \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/enable_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/version \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_nullptr_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdlib \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/type_traits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_lvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_referenceable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_void.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_rvalue_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/add_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_storage.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conditional.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/nat.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_list.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/aligned_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/alignment_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/apply_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/can_extract_key.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/common_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/decay.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/void_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/declval.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/copy_cvref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/conjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/dependent_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/disjunction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/extent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_unique_object_representation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_all_extents.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/has_virtual_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_base_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_core_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_function_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_object_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_abstract.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_aggregate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_bounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_callable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_char_like_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_standard_layout.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_class.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_compound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_fundamental.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_null_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constant_evaluated.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_final.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_implicitly_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_literal_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_member_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_convertible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/lazy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scalar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_nothrow_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_object.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_pod.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_polymorphic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_scoped_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/underlying_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_specialization.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copy_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdint \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_default_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_move_constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unbounded_array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_const_lvalue_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_signed.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_unsigned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/maybe_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/negation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/rank.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/result_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/invoke.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/type_identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/unwrap_ref.h \ + /home/someone/mysite/miner/src/cpp/vm_interpreted.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/vector \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_move_common.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iterator_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__undef_macros \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_iterator_concept.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/arithmetic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_signed_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_unsigned_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/assignable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_reference_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/convertible_to.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/same_as.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/constructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/destructible.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/copyable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/movable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/swappable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/class_or_enum.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exchange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/derived_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/boolean_testable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/invocable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/predicate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/regular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/semiregular.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/relation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/totally_ordered.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/incrementable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_primary_template.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_valid_expansion.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/readable_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/pointer_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/addressof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/advance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/convert_to_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/unreachable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/limits \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/distance.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_borrowed_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/auto_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/enable_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/initializer_list \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iter_swap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/next.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/prev.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unwrap_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/common_comparison_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/ordering.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/synth_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/three_way_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/different_from.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/array.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/get.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_indices.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/integer_sequence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/pair_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/sfinae_helpers.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/make_tuple_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__tuple/tuple_like_ext.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/piecewise_construct.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/constexpr_c_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/voidify.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/datasizeof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_always_bitcastable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_equality_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_trivially_lexicographically_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/is_pointer_in_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/operation_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_segment.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/segmented_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/identity.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/reference_wrapper.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/weak_result_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lexicographical_compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/three_way_comp_ref_type.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_segment_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/invert_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/bit_reference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwchar \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cwctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cctype \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/ctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wctype.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wchar.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit_reference \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/popcount.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstring \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/strings.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/enable_insertable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_fwd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_bool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_parse_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdexcept \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/exception \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/exception_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/typeinfo \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/nested_exception.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__exception/terminate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iosfwd \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/fstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ios.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/istream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/ostream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/sstream.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/streambuf.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__std_mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mbstate_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string_view \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/hash.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__fwd/string_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/bounded_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_three_way_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/subrange.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/dangling.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/view_interface.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/char_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdio.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/wasi/api.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/data.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/reverse_access.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/size.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/compare \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_partial_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/partial_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/weak_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/strong_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_cast.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/priority_tag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cmath \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/promote.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/math.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/abs.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/copysign.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/error_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/exponential_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fdim.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/fma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/gamma.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/hypot.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_hyperbolic_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/inverse_trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/logarithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/min_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/modulo.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/remainder.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/roots.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/rounding_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__math/trigonometric_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_strong_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/compare_weak_order_fallback.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__compare/is_eq.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/algorithm \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/half_positive.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/fold.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/movable_box.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/optional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/in_place.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/atomic \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/aliases.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_base.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_sync.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/contention_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/cxx_atomic_impl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/is_always_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/duration.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ratio \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/climits \ + /usr/lib/emsdk/upstream/lib/clang/20/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/limits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/poll_with_backoff.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/high_resolution_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/steady_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/time_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/system_clock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ctime \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/time.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__threading_support \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/convert_to_timespec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/errno.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/pthread.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/sched.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/check_memory_order.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_lock_free.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/atomic_init.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/fence.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__atomic/kill_dependency.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/concepts \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__concepts/common_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iterator \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/back_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/common_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/variant \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/forward_like.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__variant/monostate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/tuple \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_arg_t.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/utility \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/as_lvalue.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/cmp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/exception_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/rel_ops.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/to_underlying.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/counted_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/default_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/erase_if_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/front_insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/indirectly_comparable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/insert_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/istreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/mergeable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/ranges_operations.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/move_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostream_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ostreambuf_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/permutable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/sortable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/unreachable_sentinel.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/wrap_iter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/memory \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/align.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocate_at_least.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocation_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/assume_aligned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/auto_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/compressed_pair.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_construct_at.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/ranges_uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uninitialized_algorithms.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/raw_storage_iterator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/shared_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/allocator_destructor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/unique_ptr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temporary_buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/uses_allocator_construction.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_found_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_fun_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_in_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/in_out_out_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/destruct_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sift_down.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/min_max_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/strict_weak_ordering_check.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__debug_utils/randomize_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/blsr.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/countl.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/make_projected.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_any_all_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/backend.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/serial.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/empty.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_execution_policy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_backends/cpu_backends/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/execution \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_frontend_dispatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/cpp17_iterator_concepts.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__numeric/pstl_transform_reduce.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/pstl_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_adjacent_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_all_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_any_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_binary_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_clamp.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_contains.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_copy_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_count_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_ends_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_starts_with.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_mismatch.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_equal_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_fill_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_end.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_first_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_find_if_not.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_for_each_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_generate_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_includes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_inplace_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_heap_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_partitioned.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_is_sorted_until.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lexicographical_compare.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_lower_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_make_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_max_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_merge.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_min.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_minmax_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_move_backward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_next_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_none_of.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_nth_element.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partial_sort_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_partition_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_pop_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_prev_permutation.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_push_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/sample.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_int_distribution.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/is_valid.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/uniform_random_bit_generator_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__random/uniform_random_bit_generator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/search_n.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_intersection.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_symmetric_difference.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/set_union.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shuffle.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_sort_heap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/stable_partition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_stable_sort.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_swap_ranges.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_transform.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/unique_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/ranges_upper_bound.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/remove_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_copy_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/replace_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/reverse_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/rotate_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_left.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__algorithm/shift_right.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bit \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_ceil.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_floor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_log2.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/bit_width.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/byteswap.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/endian.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__bit/has_single_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/tables.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_base_10.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/errc.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cerrno \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/make_32_64_or_128_bit.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_output.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/buffer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_to_n_result.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/parser_std_format_spec.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/unicode.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/extended_grapheme_cluster_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/width_estimation_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/string \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ios/fpos.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/swap_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/polymorphic_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory_resource/memory_resource.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/container_compatible_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/from_range.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__string/extern_template_lists.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/noexcept_move_assign_container.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/array \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/once_flag.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__utility/no_destroy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/clocale \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/locale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__support/musl/xlocale.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ios \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_category.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_code.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/error_condition.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__system_error/system_error.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/mutex \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__condition_variable/condition_variable.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/mutex.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/unique_lock.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/tag_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__mutex/lock_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__thread/id.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/system_error \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/streambuf \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/bsd_locale_fallbacks.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__locale_dir/locale_base_api/locale_guard.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdarg.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdarg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___gnuc_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_list.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_arg.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg___va_copy.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stdarg_va_copy.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstdarg \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/temp_value.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__split_buffer \ + /home/someone/mysite/miner/src/cpp/common.hpp \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/iostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/istream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/ostream \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/bitset \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/format \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/container_adaptor.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_default_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__chrono/statically_widen.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/range_formatter.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_context.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_arg_store.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_args.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__ranges/ref_view.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/queue \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/deque \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/functional \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_back.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/perfect_forward.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/bind_front.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder1st.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/binder2nd.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/boyer_moore_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/unordered_map \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/is_transparent.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__hash_table \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__iterator/ranges_iterator_traits.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__node_handle \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/compose.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/default_searcher.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__memory/builtin_new_allocator.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/strip_signature.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/mem_fun_ref.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/not_fn.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_binary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/pointer_to_unary_function.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__functional/unary_negate.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stack \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/format_functions.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_char.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/write_escaped.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/escaped_output_table.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/chars_format.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__charconv/to_chars_floating_point.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_integer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_pointer.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_string.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__format/formatter_tuple.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/print \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/unistd.h \ + /home/someone/mysite/miner/src/cpp/endian.h \ + /home/someone/mysite/miner/src/cpp/configuration.h \ + /home/someone/mysite/miner/src/cpp/randomx.h \ + /home/someone/mysite/miner/src/cpp/virtual_machine.hpp \ + /home/someone/mysite/miner/src/cpp/program.hpp \ + /home/someone/mysite/miner/src/cpp/instruction.hpp \ + /home/someone/mysite/miner/src/cpp/bytecode_machine.hpp \ + /home/someone/mysite/miner/src/cpp/intrin_wasm.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/wasm_simd128.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdbool.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdbool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdbool.h \ + /home/someone/mysite/miner/src/cpp/softfloat.hpp \ + /home/someone/mysite/miner/src/cpp/allocator.hpp \ + /home/someone/mysite/miner/src/cpp/dataset.hpp \ + /home/someone/mysite/miner/src/cpp/superscalar_program.hpp \ + /home/someone/mysite/miner/src/cpp/argon2.h diff --git a/miner/build/CMakeFiles/web-randomx.dir/DependInfo.cmake b/miner/build/CMakeFiles/web-randomx.dir/DependInfo.cmake new file mode 100644 index 0000000..6cc97d4 --- /dev/null +++ b/miner/build/CMakeFiles/web-randomx.dir/DependInfo.cmake @@ -0,0 +1,23 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/someone/mysite/miner/src/cpp/web_randomx.cpp" "CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o" "gcc" "CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o.d" + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES + ) + +# Targets to which this target links which contain Fortran sources. +set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/miner/build/CMakeFiles/web-randomx.dir/build.make b/miner/build/CMakeFiles/web-randomx.dir/build.make new file mode 100644 index 0000000..77a5373 --- /dev/null +++ b/miner/build/CMakeFiles/web-randomx.dir/build.make @@ -0,0 +1,116 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/someone/mysite/miner + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/someone/mysite/miner/build + +# Include any dependencies generated for this target. +include CMakeFiles/web-randomx.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include CMakeFiles/web-randomx.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/web-randomx.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/web-randomx.dir/flags.make + +CMakeFiles/web-randomx.dir/codegen: +.PHONY : CMakeFiles/web-randomx.dir/codegen + +CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o: CMakeFiles/web-randomx.dir/flags.make +CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o: /home/someone/mysite/miner/src/cpp/web_randomx.cpp +CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o: CMakeFiles/web-randomx.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o -MF CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o.d -o CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o -c /home/someone/mysite/miner/src/cpp/web_randomx.cpp + +CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.i" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/someone/mysite/miner/src/cpp/web_randomx.cpp > CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.i + +CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.s" + /usr/lib/emsdk/upstream/emscripten/em++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/someone/mysite/miner/src/cpp/web_randomx.cpp -o CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.s + +# Object files for target web-randomx +web__randomx_OBJECTS = \ +"CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o" + +# External object files for target web-randomx +web__randomx_EXTERNAL_OBJECTS = + +web-randomx.js: CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o +web-randomx.js: CMakeFiles/web-randomx.dir/build.make +web-randomx.js: librandomx.a +web-randomx.js: CMakeFiles/web-randomx.dir/linkLibs.rsp +web-randomx.js: CMakeFiles/web-randomx.dir/objects1.rsp +web-randomx.js: CMakeFiles/web-randomx.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/someone/mysite/miner/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking CXX executable web-randomx.js" + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/web-randomx.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/web-randomx.dir/build: web-randomx.js +.PHONY : CMakeFiles/web-randomx.dir/build + +CMakeFiles/web-randomx.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/web-randomx.dir/cmake_clean.cmake +.PHONY : CMakeFiles/web-randomx.dir/clean + +CMakeFiles/web-randomx.dir/depend: + cd /home/someone/mysite/miner/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/someone/mysite/miner /home/someone/mysite/miner /home/someone/mysite/miner/build /home/someone/mysite/miner/build /home/someone/mysite/miner/build/CMakeFiles/web-randomx.dir/DependInfo.cmake "--color=$(COLOR)" +.PHONY : CMakeFiles/web-randomx.dir/depend + diff --git a/miner/build/CMakeFiles/web-randomx.dir/cmake_clean.cmake b/miner/build/CMakeFiles/web-randomx.dir/cmake_clean.cmake new file mode 100644 index 0000000..adf2b5e --- /dev/null +++ b/miner/build/CMakeFiles/web-randomx.dir/cmake_clean.cmake @@ -0,0 +1,11 @@ +file(REMOVE_RECURSE + "CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o" + "CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o.d" + "web-randomx.js" + "web-randomx.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang CXX) + include(CMakeFiles/web-randomx.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/miner/build/CMakeFiles/web-randomx.dir/compiler_depend.make b/miner/build/CMakeFiles/web-randomx.dir/compiler_depend.make new file mode 100644 index 0000000..a5b2b3a --- /dev/null +++ b/miner/build/CMakeFiles/web-randomx.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for web-randomx. +# This may be replaced when dependencies are built. diff --git a/miner/build/CMakeFiles/web-randomx.dir/compiler_depend.ts b/miner/build/CMakeFiles/web-randomx.dir/compiler_depend.ts new file mode 100644 index 0000000..070ffcb --- /dev/null +++ b/miner/build/CMakeFiles/web-randomx.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for web-randomx. diff --git a/miner/build/CMakeFiles/web-randomx.dir/depend.make b/miner/build/CMakeFiles/web-randomx.dir/depend.make new file mode 100644 index 0000000..812ca60 --- /dev/null +++ b/miner/build/CMakeFiles/web-randomx.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for web-randomx. +# This may be replaced when dependencies are built. diff --git a/miner/build/CMakeFiles/web-randomx.dir/flags.make b/miner/build/CMakeFiles/web-randomx.dir/flags.make new file mode 100644 index 0000000..31e3603 --- /dev/null +++ b/miner/build/CMakeFiles/web-randomx.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# compile CXX with /usr/lib/emsdk/upstream/emscripten/em++ +CXX_DEFINES = + +CXX_INCLUDES = + +CXX_FLAGS = -O3 -DNDEBUG -std=gnu++11 -fPIE + diff --git a/miner/build/CMakeFiles/web-randomx.dir/link.txt b/miner/build/CMakeFiles/web-randomx.dir/link.txt new file mode 100644 index 0000000..b68bcb8 --- /dev/null +++ b/miner/build/CMakeFiles/web-randomx.dir/link.txt @@ -0,0 +1 @@ +/usr/lib/emsdk/upstream/emscripten/em++ -O3 -DNDEBUG -O3 -s WASM=1 -s WASM_BIGINT -s ALLOW_MEMORY_GROWTH=1 -msimd128 -s EXPORTED_FUNCTIONS="['_free', '_malloc', '_web_randomx_init_cache', '_web_randomx_create_vm', '_web_randomx_hash', '_web_randomx_release_cache', '_web_randomx_destroy_vm']" @CMakeFiles/web-randomx.dir/objects1.rsp -o web-randomx.js @CMakeFiles/web-randomx.dir/linkLibs.rsp diff --git a/miner/build/CMakeFiles/web-randomx.dir/linkLibs.rsp b/miner/build/CMakeFiles/web-randomx.dir/linkLibs.rsp new file mode 100644 index 0000000..74a5a97 --- /dev/null +++ b/miner/build/CMakeFiles/web-randomx.dir/linkLibs.rsp @@ -0,0 +1 @@ + librandomx.a diff --git a/miner/build/CMakeFiles/web-randomx.dir/objects1.rsp b/miner/build/CMakeFiles/web-randomx.dir/objects1.rsp new file mode 100644 index 0000000..6596ec5 --- /dev/null +++ b/miner/build/CMakeFiles/web-randomx.dir/objects1.rsp @@ -0,0 +1 @@ +"CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o" diff --git a/miner/build/CMakeFiles/web-randomx.dir/progress.make b/miner/build/CMakeFiles/web-randomx.dir/progress.make new file mode 100644 index 0000000..6c29f4f --- /dev/null +++ b/miner/build/CMakeFiles/web-randomx.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 23 +CMAKE_PROGRESS_2 = 24 + diff --git a/miner/build/CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o b/miner/build/CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o new file mode 100644 index 0000000..1457940 Binary files /dev/null and b/miner/build/CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o differ diff --git a/miner/build/CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o.d b/miner/build/CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o.d new file mode 100644 index 0000000..f04a43e --- /dev/null +++ b/miner/build/CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o.d @@ -0,0 +1,51 @@ +CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o: \ + /home/someone/mysite/miner/src/cpp/web_randomx.cpp \ + /home/someone/mysite/miner/src/cpp/randomx.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__config_site \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stddef.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stddef.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_header_macro.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_ptrdiff_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_size_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_wchar_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_null.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_nullptr_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_max_align_t.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/__stddef_offsetof.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdint.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdint.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/alltypes.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/bits/stdint.h \ + /home/someone/mysite/miner/src/cpp/web_randomx.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/emscripten.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/emscripten/emscripten.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/emscripten/em_asm.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/emscripten/em_macros.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/emscripten/em_types.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdbool.h \ + /usr/lib/emsdk/upstream/lib/clang/20/include/stdbool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdbool.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/emscripten/em_js.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/emscripten/promise.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/compat/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/stdlib.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/features.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/alloca.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/emscripten/wget.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/emscripten/version.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/cstddef \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assert \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__assertion_handler \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__verbose_abort \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__availability \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/enable_if.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/integral_constant.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/is_integral.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_cv.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_const.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/__type_traits/remove_volatile.h \ + /usr/lib/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1/version diff --git a/miner/build/Makefile b/miner/build/Makefile new file mode 100644 index 0000000..5a388b2 --- /dev/null +++ b/miner/build/Makefile @@ -0,0 +1,811 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 4.1 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/someone/mysite/miner + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/someone/mysite/miner/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..." + /usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# The main all target +all: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/someone/mysite/miner/build/CMakeFiles /home/someone/mysite/miner/build//CMakeFiles/progress.marks + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all + $(CMAKE_COMMAND) -E cmake_progress_start /home/someone/mysite/miner/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +#============================================================================= +# Target rules for targets named randomx + +# Build rule for target. +randomx: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 randomx +.PHONY : randomx + +# fast build rule for target. +randomx/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/build +.PHONY : randomx/fast + +#============================================================================= +# Target rules for targets named web-randomx + +# Build rule for target. +web-randomx: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 web-randomx +.PHONY : web-randomx + +# fast build rule for target. +web-randomx/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/web-randomx.dir/build.make CMakeFiles/web-randomx.dir/build +.PHONY : web-randomx/fast + +src/cpp/aes_hash.o: src/cpp/aes_hash.cpp.o +.PHONY : src/cpp/aes_hash.o + +# target to build an object file +src/cpp/aes_hash.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.o +.PHONY : src/cpp/aes_hash.cpp.o + +src/cpp/aes_hash.i: src/cpp/aes_hash.cpp.i +.PHONY : src/cpp/aes_hash.i + +# target to preprocess a source file +src/cpp/aes_hash.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.i +.PHONY : src/cpp/aes_hash.cpp.i + +src/cpp/aes_hash.s: src/cpp/aes_hash.cpp.s +.PHONY : src/cpp/aes_hash.s + +# target to generate assembly for a file +src/cpp/aes_hash.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/aes_hash.cpp.s +.PHONY : src/cpp/aes_hash.cpp.s + +src/cpp/allocator.o: src/cpp/allocator.cpp.o +.PHONY : src/cpp/allocator.o + +# target to build an object file +src/cpp/allocator.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/allocator.cpp.o +.PHONY : src/cpp/allocator.cpp.o + +src/cpp/allocator.i: src/cpp/allocator.cpp.i +.PHONY : src/cpp/allocator.i + +# target to preprocess a source file +src/cpp/allocator.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/allocator.cpp.i +.PHONY : src/cpp/allocator.cpp.i + +src/cpp/allocator.s: src/cpp/allocator.cpp.s +.PHONY : src/cpp/allocator.s + +# target to generate assembly for a file +src/cpp/allocator.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/allocator.cpp.s +.PHONY : src/cpp/allocator.cpp.s + +src/cpp/argon2_core.o: src/cpp/argon2_core.c.o +.PHONY : src/cpp/argon2_core.o + +# target to build an object file +src/cpp/argon2_core.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/argon2_core.c.o +.PHONY : src/cpp/argon2_core.c.o + +src/cpp/argon2_core.i: src/cpp/argon2_core.c.i +.PHONY : src/cpp/argon2_core.i + +# target to preprocess a source file +src/cpp/argon2_core.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/argon2_core.c.i +.PHONY : src/cpp/argon2_core.c.i + +src/cpp/argon2_core.s: src/cpp/argon2_core.c.s +.PHONY : src/cpp/argon2_core.s + +# target to generate assembly for a file +src/cpp/argon2_core.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/argon2_core.c.s +.PHONY : src/cpp/argon2_core.c.s + +src/cpp/argon2_simd.o: src/cpp/argon2_simd.c.o +.PHONY : src/cpp/argon2_simd.o + +# target to build an object file +src/cpp/argon2_simd.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.o +.PHONY : src/cpp/argon2_simd.c.o + +src/cpp/argon2_simd.i: src/cpp/argon2_simd.c.i +.PHONY : src/cpp/argon2_simd.i + +# target to preprocess a source file +src/cpp/argon2_simd.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.i +.PHONY : src/cpp/argon2_simd.c.i + +src/cpp/argon2_simd.s: src/cpp/argon2_simd.c.s +.PHONY : src/cpp/argon2_simd.s + +# target to generate assembly for a file +src/cpp/argon2_simd.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/argon2_simd.c.s +.PHONY : src/cpp/argon2_simd.c.s + +src/cpp/assembly_generator_x86.o: src/cpp/assembly_generator_x86.cpp.o +.PHONY : src/cpp/assembly_generator_x86.o + +# target to build an object file +src/cpp/assembly_generator_x86.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.o +.PHONY : src/cpp/assembly_generator_x86.cpp.o + +src/cpp/assembly_generator_x86.i: src/cpp/assembly_generator_x86.cpp.i +.PHONY : src/cpp/assembly_generator_x86.i + +# target to preprocess a source file +src/cpp/assembly_generator_x86.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.i +.PHONY : src/cpp/assembly_generator_x86.cpp.i + +src/cpp/assembly_generator_x86.s: src/cpp/assembly_generator_x86.cpp.s +.PHONY : src/cpp/assembly_generator_x86.s + +# target to generate assembly for a file +src/cpp/assembly_generator_x86.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/assembly_generator_x86.cpp.s +.PHONY : src/cpp/assembly_generator_x86.cpp.s + +src/cpp/blake2_generator.o: src/cpp/blake2_generator.cpp.o +.PHONY : src/cpp/blake2_generator.o + +# target to build an object file +src/cpp/blake2_generator.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.o +.PHONY : src/cpp/blake2_generator.cpp.o + +src/cpp/blake2_generator.i: src/cpp/blake2_generator.cpp.i +.PHONY : src/cpp/blake2_generator.i + +# target to preprocess a source file +src/cpp/blake2_generator.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.i +.PHONY : src/cpp/blake2_generator.cpp.i + +src/cpp/blake2_generator.s: src/cpp/blake2_generator.cpp.s +.PHONY : src/cpp/blake2_generator.s + +# target to generate assembly for a file +src/cpp/blake2_generator.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/blake2_generator.cpp.s +.PHONY : src/cpp/blake2_generator.cpp.s + +src/cpp/blake2b.o: src/cpp/blake2b.c.o +.PHONY : src/cpp/blake2b.o + +# target to build an object file +src/cpp/blake2b.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/blake2b.c.o +.PHONY : src/cpp/blake2b.c.o + +src/cpp/blake2b.i: src/cpp/blake2b.c.i +.PHONY : src/cpp/blake2b.i + +# target to preprocess a source file +src/cpp/blake2b.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/blake2b.c.i +.PHONY : src/cpp/blake2b.c.i + +src/cpp/blake2b.s: src/cpp/blake2b.c.s +.PHONY : src/cpp/blake2b.s + +# target to generate assembly for a file +src/cpp/blake2b.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/blake2b.c.s +.PHONY : src/cpp/blake2b.c.s + +src/cpp/bytecode_machine.o: src/cpp/bytecode_machine.cpp.o +.PHONY : src/cpp/bytecode_machine.o + +# target to build an object file +src/cpp/bytecode_machine.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.o +.PHONY : src/cpp/bytecode_machine.cpp.o + +src/cpp/bytecode_machine.i: src/cpp/bytecode_machine.cpp.i +.PHONY : src/cpp/bytecode_machine.i + +# target to preprocess a source file +src/cpp/bytecode_machine.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.i +.PHONY : src/cpp/bytecode_machine.cpp.i + +src/cpp/bytecode_machine.s: src/cpp/bytecode_machine.cpp.s +.PHONY : src/cpp/bytecode_machine.s + +# target to generate assembly for a file +src/cpp/bytecode_machine.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/bytecode_machine.cpp.s +.PHONY : src/cpp/bytecode_machine.cpp.s + +src/cpp/dataset.o: src/cpp/dataset.cpp.o +.PHONY : src/cpp/dataset.o + +# target to build an object file +src/cpp/dataset.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/dataset.cpp.o +.PHONY : src/cpp/dataset.cpp.o + +src/cpp/dataset.i: src/cpp/dataset.cpp.i +.PHONY : src/cpp/dataset.i + +# target to preprocess a source file +src/cpp/dataset.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/dataset.cpp.i +.PHONY : src/cpp/dataset.cpp.i + +src/cpp/dataset.s: src/cpp/dataset.cpp.s +.PHONY : src/cpp/dataset.s + +# target to generate assembly for a file +src/cpp/dataset.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/dataset.cpp.s +.PHONY : src/cpp/dataset.cpp.s + +src/cpp/instruction.o: src/cpp/instruction.cpp.o +.PHONY : src/cpp/instruction.o + +# target to build an object file +src/cpp/instruction.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/instruction.cpp.o +.PHONY : src/cpp/instruction.cpp.o + +src/cpp/instruction.i: src/cpp/instruction.cpp.i +.PHONY : src/cpp/instruction.i + +# target to preprocess a source file +src/cpp/instruction.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/instruction.cpp.i +.PHONY : src/cpp/instruction.cpp.i + +src/cpp/instruction.s: src/cpp/instruction.cpp.s +.PHONY : src/cpp/instruction.s + +# target to generate assembly for a file +src/cpp/instruction.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/instruction.cpp.s +.PHONY : src/cpp/instruction.cpp.s + +src/cpp/intrin_wasm.o: src/cpp/intrin_wasm.cpp.o +.PHONY : src/cpp/intrin_wasm.o + +# target to build an object file +src/cpp/intrin_wasm.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.o +.PHONY : src/cpp/intrin_wasm.cpp.o + +src/cpp/intrin_wasm.i: src/cpp/intrin_wasm.cpp.i +.PHONY : src/cpp/intrin_wasm.i + +# target to preprocess a source file +src/cpp/intrin_wasm.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.i +.PHONY : src/cpp/intrin_wasm.cpp.i + +src/cpp/intrin_wasm.s: src/cpp/intrin_wasm.cpp.s +.PHONY : src/cpp/intrin_wasm.s + +# target to generate assembly for a file +src/cpp/intrin_wasm.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/intrin_wasm.cpp.s +.PHONY : src/cpp/intrin_wasm.cpp.s + +src/cpp/randomx.o: src/cpp/randomx.cpp.o +.PHONY : src/cpp/randomx.o + +# target to build an object file +src/cpp/randomx.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/randomx.cpp.o +.PHONY : src/cpp/randomx.cpp.o + +src/cpp/randomx.i: src/cpp/randomx.cpp.i +.PHONY : src/cpp/randomx.i + +# target to preprocess a source file +src/cpp/randomx.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/randomx.cpp.i +.PHONY : src/cpp/randomx.cpp.i + +src/cpp/randomx.s: src/cpp/randomx.cpp.s +.PHONY : src/cpp/randomx.s + +# target to generate assembly for a file +src/cpp/randomx.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/randomx.cpp.s +.PHONY : src/cpp/randomx.cpp.s + +src/cpp/reciprocal.o: src/cpp/reciprocal.c.o +.PHONY : src/cpp/reciprocal.o + +# target to build an object file +src/cpp/reciprocal.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/reciprocal.c.o +.PHONY : src/cpp/reciprocal.c.o + +src/cpp/reciprocal.i: src/cpp/reciprocal.c.i +.PHONY : src/cpp/reciprocal.i + +# target to preprocess a source file +src/cpp/reciprocal.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/reciprocal.c.i +.PHONY : src/cpp/reciprocal.c.i + +src/cpp/reciprocal.s: src/cpp/reciprocal.c.s +.PHONY : src/cpp/reciprocal.s + +# target to generate assembly for a file +src/cpp/reciprocal.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/reciprocal.c.s +.PHONY : src/cpp/reciprocal.c.s + +src/cpp/softfloat.o: src/cpp/softfloat.cpp.o +.PHONY : src/cpp/softfloat.o + +# target to build an object file +src/cpp/softfloat.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.o +.PHONY : src/cpp/softfloat.cpp.o + +src/cpp/softfloat.i: src/cpp/softfloat.cpp.i +.PHONY : src/cpp/softfloat.i + +# target to preprocess a source file +src/cpp/softfloat.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.i +.PHONY : src/cpp/softfloat.cpp.i + +src/cpp/softfloat.s: src/cpp/softfloat.cpp.s +.PHONY : src/cpp/softfloat.s + +# target to generate assembly for a file +src/cpp/softfloat.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/softfloat.cpp.s +.PHONY : src/cpp/softfloat.cpp.s + +src/cpp/superscalar.o: src/cpp/superscalar.cpp.o +.PHONY : src/cpp/superscalar.o + +# target to build an object file +src/cpp/superscalar.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.o +.PHONY : src/cpp/superscalar.cpp.o + +src/cpp/superscalar.i: src/cpp/superscalar.cpp.i +.PHONY : src/cpp/superscalar.i + +# target to preprocess a source file +src/cpp/superscalar.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.i +.PHONY : src/cpp/superscalar.cpp.i + +src/cpp/superscalar.s: src/cpp/superscalar.cpp.s +.PHONY : src/cpp/superscalar.s + +# target to generate assembly for a file +src/cpp/superscalar.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/superscalar.cpp.s +.PHONY : src/cpp/superscalar.cpp.s + +src/cpp/virtual_machine.o: src/cpp/virtual_machine.cpp.o +.PHONY : src/cpp/virtual_machine.o + +# target to build an object file +src/cpp/virtual_machine.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.o +.PHONY : src/cpp/virtual_machine.cpp.o + +src/cpp/virtual_machine.i: src/cpp/virtual_machine.cpp.i +.PHONY : src/cpp/virtual_machine.i + +# target to preprocess a source file +src/cpp/virtual_machine.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.i +.PHONY : src/cpp/virtual_machine.cpp.i + +src/cpp/virtual_machine.s: src/cpp/virtual_machine.cpp.s +.PHONY : src/cpp/virtual_machine.s + +# target to generate assembly for a file +src/cpp/virtual_machine.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/virtual_machine.cpp.s +.PHONY : src/cpp/virtual_machine.cpp.s + +src/cpp/virtual_memory.o: src/cpp/virtual_memory.cpp.o +.PHONY : src/cpp/virtual_memory.o + +# target to build an object file +src/cpp/virtual_memory.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.o +.PHONY : src/cpp/virtual_memory.cpp.o + +src/cpp/virtual_memory.i: src/cpp/virtual_memory.cpp.i +.PHONY : src/cpp/virtual_memory.i + +# target to preprocess a source file +src/cpp/virtual_memory.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.i +.PHONY : src/cpp/virtual_memory.cpp.i + +src/cpp/virtual_memory.s: src/cpp/virtual_memory.cpp.s +.PHONY : src/cpp/virtual_memory.s + +# target to generate assembly for a file +src/cpp/virtual_memory.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/virtual_memory.cpp.s +.PHONY : src/cpp/virtual_memory.cpp.s + +src/cpp/vm_compiled.o: src/cpp/vm_compiled.cpp.o +.PHONY : src/cpp/vm_compiled.o + +# target to build an object file +src/cpp/vm_compiled.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.o +.PHONY : src/cpp/vm_compiled.cpp.o + +src/cpp/vm_compiled.i: src/cpp/vm_compiled.cpp.i +.PHONY : src/cpp/vm_compiled.i + +# target to preprocess a source file +src/cpp/vm_compiled.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.i +.PHONY : src/cpp/vm_compiled.cpp.i + +src/cpp/vm_compiled.s: src/cpp/vm_compiled.cpp.s +.PHONY : src/cpp/vm_compiled.s + +# target to generate assembly for a file +src/cpp/vm_compiled.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/vm_compiled.cpp.s +.PHONY : src/cpp/vm_compiled.cpp.s + +src/cpp/vm_compiled_light.o: src/cpp/vm_compiled_light.cpp.o +.PHONY : src/cpp/vm_compiled_light.o + +# target to build an object file +src/cpp/vm_compiled_light.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.o +.PHONY : src/cpp/vm_compiled_light.cpp.o + +src/cpp/vm_compiled_light.i: src/cpp/vm_compiled_light.cpp.i +.PHONY : src/cpp/vm_compiled_light.i + +# target to preprocess a source file +src/cpp/vm_compiled_light.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.i +.PHONY : src/cpp/vm_compiled_light.cpp.i + +src/cpp/vm_compiled_light.s: src/cpp/vm_compiled_light.cpp.s +.PHONY : src/cpp/vm_compiled_light.s + +# target to generate assembly for a file +src/cpp/vm_compiled_light.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/vm_compiled_light.cpp.s +.PHONY : src/cpp/vm_compiled_light.cpp.s + +src/cpp/vm_interpreted.o: src/cpp/vm_interpreted.cpp.o +.PHONY : src/cpp/vm_interpreted.o + +# target to build an object file +src/cpp/vm_interpreted.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.o +.PHONY : src/cpp/vm_interpreted.cpp.o + +src/cpp/vm_interpreted.i: src/cpp/vm_interpreted.cpp.i +.PHONY : src/cpp/vm_interpreted.i + +# target to preprocess a source file +src/cpp/vm_interpreted.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.i +.PHONY : src/cpp/vm_interpreted.cpp.i + +src/cpp/vm_interpreted.s: src/cpp/vm_interpreted.cpp.s +.PHONY : src/cpp/vm_interpreted.s + +# target to generate assembly for a file +src/cpp/vm_interpreted.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/vm_interpreted.cpp.s +.PHONY : src/cpp/vm_interpreted.cpp.s + +src/cpp/vm_interpreted_light.o: src/cpp/vm_interpreted_light.cpp.o +.PHONY : src/cpp/vm_interpreted_light.o + +# target to build an object file +src/cpp/vm_interpreted_light.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.o +.PHONY : src/cpp/vm_interpreted_light.cpp.o + +src/cpp/vm_interpreted_light.i: src/cpp/vm_interpreted_light.cpp.i +.PHONY : src/cpp/vm_interpreted_light.i + +# target to preprocess a source file +src/cpp/vm_interpreted_light.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.i +.PHONY : src/cpp/vm_interpreted_light.cpp.i + +src/cpp/vm_interpreted_light.s: src/cpp/vm_interpreted_light.cpp.s +.PHONY : src/cpp/vm_interpreted_light.s + +# target to generate assembly for a file +src/cpp/vm_interpreted_light.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/randomx.dir/build.make CMakeFiles/randomx.dir/src/cpp/vm_interpreted_light.cpp.s +.PHONY : src/cpp/vm_interpreted_light.cpp.s + +src/cpp/web_randomx.o: src/cpp/web_randomx.cpp.o +.PHONY : src/cpp/web_randomx.o + +# target to build an object file +src/cpp/web_randomx.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/web-randomx.dir/build.make CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.o +.PHONY : src/cpp/web_randomx.cpp.o + +src/cpp/web_randomx.i: src/cpp/web_randomx.cpp.i +.PHONY : src/cpp/web_randomx.i + +# target to preprocess a source file +src/cpp/web_randomx.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/web-randomx.dir/build.make CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.i +.PHONY : src/cpp/web_randomx.cpp.i + +src/cpp/web_randomx.s: src/cpp/web_randomx.cpp.s +.PHONY : src/cpp/web_randomx.s + +# target to generate assembly for a file +src/cpp/web_randomx.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/web-randomx.dir/build.make CMakeFiles/web-randomx.dir/src/cpp/web_randomx.cpp.s +.PHONY : src/cpp/web_randomx.cpp.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... randomx" + @echo "... web-randomx" + @echo "... src/cpp/aes_hash.o" + @echo "... src/cpp/aes_hash.i" + @echo "... src/cpp/aes_hash.s" + @echo "... src/cpp/allocator.o" + @echo "... src/cpp/allocator.i" + @echo "... src/cpp/allocator.s" + @echo "... src/cpp/argon2_core.o" + @echo "... src/cpp/argon2_core.i" + @echo "... src/cpp/argon2_core.s" + @echo "... src/cpp/argon2_simd.o" + @echo "... src/cpp/argon2_simd.i" + @echo "... src/cpp/argon2_simd.s" + @echo "... src/cpp/assembly_generator_x86.o" + @echo "... src/cpp/assembly_generator_x86.i" + @echo "... src/cpp/assembly_generator_x86.s" + @echo "... src/cpp/blake2_generator.o" + @echo "... src/cpp/blake2_generator.i" + @echo "... src/cpp/blake2_generator.s" + @echo "... src/cpp/blake2b.o" + @echo "... src/cpp/blake2b.i" + @echo "... src/cpp/blake2b.s" + @echo "... src/cpp/bytecode_machine.o" + @echo "... src/cpp/bytecode_machine.i" + @echo "... src/cpp/bytecode_machine.s" + @echo "... src/cpp/dataset.o" + @echo "... src/cpp/dataset.i" + @echo "... src/cpp/dataset.s" + @echo "... src/cpp/instruction.o" + @echo "... src/cpp/instruction.i" + @echo "... src/cpp/instruction.s" + @echo "... src/cpp/intrin_wasm.o" + @echo "... src/cpp/intrin_wasm.i" + @echo "... src/cpp/intrin_wasm.s" + @echo "... src/cpp/randomx.o" + @echo "... src/cpp/randomx.i" + @echo "... src/cpp/randomx.s" + @echo "... src/cpp/reciprocal.o" + @echo "... src/cpp/reciprocal.i" + @echo "... src/cpp/reciprocal.s" + @echo "... src/cpp/softfloat.o" + @echo "... src/cpp/softfloat.i" + @echo "... src/cpp/softfloat.s" + @echo "... src/cpp/superscalar.o" + @echo "... src/cpp/superscalar.i" + @echo "... src/cpp/superscalar.s" + @echo "... src/cpp/virtual_machine.o" + @echo "... src/cpp/virtual_machine.i" + @echo "... src/cpp/virtual_machine.s" + @echo "... src/cpp/virtual_memory.o" + @echo "... src/cpp/virtual_memory.i" + @echo "... src/cpp/virtual_memory.s" + @echo "... src/cpp/vm_compiled.o" + @echo "... src/cpp/vm_compiled.i" + @echo "... src/cpp/vm_compiled.s" + @echo "... src/cpp/vm_compiled_light.o" + @echo "... src/cpp/vm_compiled_light.i" + @echo "... src/cpp/vm_compiled_light.s" + @echo "... src/cpp/vm_interpreted.o" + @echo "... src/cpp/vm_interpreted.i" + @echo "... src/cpp/vm_interpreted.s" + @echo "... src/cpp/vm_interpreted_light.o" + @echo "... src/cpp/vm_interpreted_light.i" + @echo "... src/cpp/vm_interpreted_light.s" + @echo "... src/cpp/web_randomx.o" + @echo "... src/cpp/web_randomx.i" + @echo "... src/cpp/web_randomx.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/miner/build/cmake_install.cmake b/miner/build/cmake_install.cmake new file mode 100644 index 0000000..2320c85 --- /dev/null +++ b/miner/build/cmake_install.cmake @@ -0,0 +1,69 @@ +# Install script for directory: /home/someone/mysite/miner + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/lib/emsdk/upstream/emscripten/cache/sysroot") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "TRUE") +endif() + +# Set path to fallback-tool for dependency-resolution. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY FILES "/home/someone/mysite/miner/build/librandomx.a") +endif() + +if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/include" TYPE FILE FILES "/home/someone/mysite/miner/src/cpp/randomx.h") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +if(CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/home/someone/mysite/miner/build/install_local_manifest.txt" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() +if(CMAKE_INSTALL_COMPONENT) + if(CMAKE_INSTALL_COMPONENT MATCHES "^[a-zA-Z0-9_.+-]+$") + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") + else() + string(MD5 CMAKE_INST_COMP_HASH "${CMAKE_INSTALL_COMPONENT}") + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INST_COMP_HASH}.txt") + unset(CMAKE_INST_COMP_HASH) + endif() +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +if(NOT CMAKE_INSTALL_LOCAL_ONLY) + file(WRITE "/home/someone/mysite/miner/build/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") +endif() diff --git a/miner/build/librandomx.a b/miner/build/librandomx.a new file mode 100644 index 0000000..c15826a Binary files /dev/null and b/miner/build/librandomx.a differ diff --git a/miner/build/web-randomx.js b/miner/build/web-randomx.js new file mode 100644 index 0000000..7ca83a0 --- /dev/null +++ b/miner/build/web-randomx.js @@ -0,0 +1 @@ +var Module=typeof Module!="undefined"?Module:{};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope!="undefined";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer";if(ENVIRONMENT_IS_NODE){}var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");scriptDirectory=__dirname+"/";readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);var ret=fs.readFileSync(filename);return ret};readAsync=(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return new Promise((resolve,reject)=>{fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)reject(err);else resolve(binary?data.buffer:data)})})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=url=>{if(isFileURI(url)){return new Promise((resolve,reject)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}return fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");function findWasmBinary(){var f="web-randomx.wasm";if(!isDataURI(f)){return locateFile(f)}return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary){return readAsync(binaryFile).then(response=>new Uint8Array(response),()=>getBinarySync(binaryFile))}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["e"];updateMemoryViews();addOnInit(wasmExports["f"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}wasmBinaryFile??=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var __abort_js=()=>{abort("")};var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function __munmap_js(addr,len,prot,flags,fd,offset){offset=bigintToI53Checked(offset)}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var wasmImports={a:___cxa_throw,b:__abort_js,d:__munmap_js,c:_emscripten_resize_heap};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["f"])();var _web_randomx_init_cache=Module["_web_randomx_init_cache"]=(a0,a1,a2)=>(_web_randomx_init_cache=Module["_web_randomx_init_cache"]=wasmExports["g"])(a0,a1,a2);var _web_randomx_create_vm=Module["_web_randomx_create_vm"]=()=>(_web_randomx_create_vm=Module["_web_randomx_create_vm"]=wasmExports["h"])();var _web_randomx_hash=Module["_web_randomx_hash"]=(a0,a1,a2,a3,a4,a5)=>(_web_randomx_hash=Module["_web_randomx_hash"]=wasmExports["i"])(a0,a1,a2,a3,a4,a5);var _web_randomx_release_cache=Module["_web_randomx_release_cache"]=()=>(_web_randomx_release_cache=Module["_web_randomx_release_cache"]=wasmExports["j"])();var _web_randomx_destroy_vm=Module["_web_randomx_destroy_vm"]=()=>(_web_randomx_destroy_vm=Module["_web_randomx_destroy_vm"]=wasmExports["k"])();var _free=Module["_free"]=a0=>(_free=Module["_free"]=wasmExports["m"])(a0);var _malloc=Module["_malloc"]=a0=>(_malloc=Module["_malloc"]=wasmExports["n"])(a0);var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); diff --git a/miner/build/web-randomx.wasm b/miner/build/web-randomx.wasm new file mode 100755 index 0000000..913c43f Binary files /dev/null and b/miner/build/web-randomx.wasm differ diff --git a/miner/package-lock.json b/miner/package-lock.json new file mode 100644 index 0000000..57204cc --- /dev/null +++ b/miner/package-lock.json @@ -0,0 +1,8065 @@ +{ + "name": "webrandomx", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "webrandomx", + "version": "1.0.0", + "dependencies": { + "echarts": "^5.5.0", + "file-loader": "^6.2.0", + "html-loader": "^3.0.1", + "html-webpack-plugin": "^5.5.0", + "path": "^0.12.7", + "source-map-loader": "^3.0.0", + "webpack": "^5.61.0", + "webpack-cli": "^4.9.1", + "webpack-dev-server": "^4.4.0", + "webpack-merge": "^5.8.0" + }, + "devDependencies": { + "benchmark": "^2.1.4", + "crypto": "^1.0.1", + "eslint": "^8.1.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", + "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz", + "integrity": "sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + }, + "node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + }, + "node_modules/benchmark": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", + "integrity": "sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==", + "dev": true, + "dependencies": { + "lodash": "^4.17.4", + "platform": "^1.3.3" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001629", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001629.tgz", + "integrity": "sha512-c3dl911slnQhmxUIT4HhYzT7wnBK/XYpGnYLOj4nJBaRiw52Ibe7YxlDaAeRECvA786zCuExhxIUJ2K7nHMrBw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", + "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.", + "dev": true + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/echarts": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.0.tgz", + "integrity": "sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw==", + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.5.0" + } + }, + "node_modules/echarts/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.796", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.796.tgz", + "integrity": "sha512-NglN/xprcM+SHD2XCli4oC6bWe6kHoytcyLKCWXmRL854F0qhPhaYgUswUsglnPxYaNQIg2uMY4BvaomIf3kLA==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", + "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==" + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-loader": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-3.1.2.tgz", + "integrity": "sha512-9WQlLiAV5N9fCna4MUmBW/ifaUbuFZ2r7IZmtXzhyfyi4zgPEjXsmsYCKs+yT873MzRj+f1WMjuAiPNA7C6Tcw==", + "dependencies": { + "html-minifier-terser": "^6.0.2", + "parse5": "^6.0.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/platform": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", + "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", + "dependencies": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.31.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz", + "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webpack": { + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "peer": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.16.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "peer": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zrender": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.5.0.tgz", + "integrity": "sha512-O3MilSi/9mwoovx77m6ROZM7sXShR/O/JIanvzTwjN3FORfLSr81PsUGd7jlaYOeds9d8tw82oP44+3YucVo+w==", + "dependencies": { + "tslib": "2.3.0" + } + }, + "node_modules/zrender/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + }, + "dependencies": { + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==" + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", + "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true + }, + "@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" + }, + "@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==" + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz", + "integrity": "sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + }, + "@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + }, + "@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "requires": { + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + }, + "@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + }, + "@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "requires": { + "undici-types": "~5.26.4" + } + }, + "@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" + }, + "@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + }, + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "requires": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "requires": { + "@types/node": "*" + } + }, + "@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "requires": { + "@types/node": "*" + } + }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "requires": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "requires": {} + }, + "@webpack-cli/info": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "peer": true + }, + "acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "requires": {} + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "requires": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + }, + "benchmark": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", + "integrity": "sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==", + "dev": true, + "requires": { + "lodash": "^4.17.4", + "platform": "^1.3.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==" + }, + "body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "requires": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "requires": { + "fill-range": "^7.1.1" + } + }, + "browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "peer": true, + "requires": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" + }, + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "caniuse-lite": { + "version": "1.0.30001629", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001629.tgz", + "integrity": "sha512-c3dl911slnQhmxUIT4HhYzT7wnBK/XYpGnYLOj4nJBaRiw52Ibe7YxlDaAeRECvA786zCuExhxIUJ2K7nHMrBw==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==" + }, + "clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "requires": { + "source-map": "~0.6.0" + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==" + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + }, + "cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", + "dev": true + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + }, + "debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "requires": { + "ms": "2.1.2" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "requires": { + "execa": "^5.0.0" + } + }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "echarts": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.0.tgz", + "integrity": "sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw==", + "requires": { + "tslib": "2.3.0", + "zrender": "5.5.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "electron-to-chromium": { + "version": "1.4.796", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.796.tgz", + "integrity": "sha512-NglN/xprcM+SHD2XCli4oC6bWe6kHoytcyLKCWXmRL854F0qhPhaYgUswUsglnPxYaNQIg2uMY4BvaomIf3kLA==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "enhanced-resolve": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "envinfo": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==" + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-module-lexer": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", + "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==" + }, + "escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "peer": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + } + }, + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + }, + "espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==" + }, + "fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" + }, + "flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "requires": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "fs-monkey": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "optional": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==" + }, + "html-loader": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-3.1.2.tgz", + "integrity": "sha512-9WQlLiAV5N9fCna4MUmBW/ifaUbuFZ2r7IZmtXzhyfyi4zgPEjXsmsYCKs+yT873MzRj+f1WMjuAiPNA7C6Tcw==", + "requires": { + "html-minifier-terser": "^6.0.2", + "parse5": "^6.0.1" + } + }, + "html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "requires": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + } + }, + "html-webpack-plugin": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", + "requires": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==" + }, + "ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "requires": { + "hasown": "^2.0.0" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "requires": { + "tslib": "^2.0.3" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "requires": { + "fs-monkey": "^1.0.4" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "requires": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" + }, + "node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "requires": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "platform": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + } + } + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "requires": { + "resolve": "^1.9.0" + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" + }, + "renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + }, + "selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "requires": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==" + }, + "side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==" + }, + "source-map-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", + "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", + "requires": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + }, + "terser": { + "version": "5.31.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz", + "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==", + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "requires": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "requires": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + }, + "watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webpack": { + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "peer": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.16.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + } + } + }, + "webpack-cli": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "peer": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + } + } + }, + "webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "dependencies": { + "ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, + "webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "requires": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + }, + "word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "requires": {} + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, + "zrender": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.5.0.tgz", + "integrity": "sha512-O3MilSi/9mwoovx77m6ROZM7sXShR/O/JIanvzTwjN3FORfLSr81PsUGd7jlaYOeds9d8tw82oP44+3YucVo+w==", + "requires": { + "tslib": "2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + } + } +} diff --git a/miner/package.json b/miner/package.json new file mode 100644 index 0000000..379fdb0 --- /dev/null +++ b/miner/package.json @@ -0,0 +1,36 @@ +{ + "name": "webrandomx", + "version": "1.0.0", + "description": "A JavaScript/WASM implementation of RandomX PoW for web platforms", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "build": "webpack --config ./webpack/webpack.config.prod.js", + "dev": "webpack-dev-server --config ./webpack/webpack.config.dev.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/WebCryptojacking/WebRandomX.git" + }, + "author": "WebCryptojacking", + "bugs": { + "url": "https://github.com/WebCryptojacking/WebRandomX/issues" + }, + "homepage": "https://github.com/WebCryptojacking/WebRandomX#readme", + "devDependencies": { + "benchmark": "^2.1.4", + "crypto": "^1.0.1", + "eslint": "^8.1.0" + }, + "dependencies": { + "echarts": "^5.5.0", + "file-loader": "^6.2.0", + "html-loader": "^3.0.1", + "html-webpack-plugin": "^5.5.0", + "path": "^0.12.7", + "source-map-loader": "^3.0.0", + "webpack": "^5.61.0", + "webpack-cli": "^4.9.1", + "webpack-dev-server": "^4.4.0", + "webpack-merge": "^5.8.0" + } +} diff --git a/miner/src/cpp/aes_hash.cpp b/miner/src/cpp/aes_hash.cpp new file mode 100644 index 0000000..d5edde9 --- /dev/null +++ b/miner/src/cpp/aes_hash.cpp @@ -0,0 +1,315 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "soft_aes.hpp" +#include + +//NOTE: The functions below were tuned for maximum performance +//and are not cryptographically secure outside of the scope of RandomX. +//It's not recommended to use them as general hash functions and PRNGs. + +//AesHash1R: +//state0, state1, state2, state3 = Blake2b-512("RandomX AesHash1R state") +//xkey0, xkey1 = Blake2b-256("RandomX AesHash1R xkeys") + +#define AES_HASH_1R_STATE0 0xd7983aad, 0xcc82db47, 0x9fa856de, 0x92b52c0d +#define AES_HASH_1R_STATE1 0xace78057, 0xf59e125a, 0x15c7b798, 0x338d996e +#define AES_HASH_1R_STATE2 0xe8a07ce4, 0x5079506b, 0xae62c7d0, 0x6a770017 +#define AES_HASH_1R_STATE3 0x7e994948, 0x79a10005, 0x07ad828d, 0x630a240c + +#define AES_HASH_1R_XKEY0 0x06890201, 0x90dc56bf, 0x8b24949f, 0xf6fa8389 +#define AES_HASH_1R_XKEY1 0xed18f99b, 0xee1043c6, 0x51f4e03c, 0x61b263d1 + +/* + Calculate a 512-bit hash of 'input' using 4 lanes of AES. + The input is treated as a set of round keys for the encryption + of the initial state. + + 'inputSize' must be a multiple of 64. + + For a 2 MiB input, this has the same security as 32768-round + AES encryption. +*/ +void hashAes1Rx4(const void *input, size_t inputSize, void *hash) { + assert(inputSize % 64 == 0); + const uint8_t* inptr = (uint8_t*)input; + const uint8_t* inputEnd = inptr + inputSize; + + rx_vec_i128 state0, state1, state2, state3; + rx_vec_i128 in0, in1, in2, in3; + + //intial state + state0 = rx_set_int_vec_i128(AES_HASH_1R_STATE0); + state1 = rx_set_int_vec_i128(AES_HASH_1R_STATE1); + state2 = rx_set_int_vec_i128(AES_HASH_1R_STATE2); + state3 = rx_set_int_vec_i128(AES_HASH_1R_STATE3); + + //process 64 bytes at a time in 4 lanes + while (inptr < inputEnd) { + in0 = rx_load_vec_i128((rx_vec_i128*)inptr + 0); + in1 = rx_load_vec_i128((rx_vec_i128*)inptr + 1); + in2 = rx_load_vec_i128((rx_vec_i128*)inptr + 2); + in3 = rx_load_vec_i128((rx_vec_i128*)inptr + 3); + + state0 = aesenc(state0, in0); + state1 = aesdec(state1, in1); + state2 = aesenc(state2, in2); + state3 = aesdec(state3, in3); + + inptr += 64; + } + + //two extra rounds to achieve full diffusion + rx_vec_i128 xkey0 = rx_set_int_vec_i128(AES_HASH_1R_XKEY0); + rx_vec_i128 xkey1 = rx_set_int_vec_i128(AES_HASH_1R_XKEY1); + + state0 = aesenc(state0, xkey0); + state1 = aesdec(state1, xkey0); + state2 = aesenc(state2, xkey0); + state3 = aesdec(state3, xkey0); + + state0 = aesenc(state0, xkey1); + state1 = aesdec(state1, xkey1); + state2 = aesenc(state2, xkey1); + state3 = aesdec(state3, xkey1); + + //output hash + rx_store_vec_i128((rx_vec_i128*)hash + 0, state0); + rx_store_vec_i128((rx_vec_i128*)hash + 1, state1); + rx_store_vec_i128((rx_vec_i128*)hash + 2, state2); + rx_store_vec_i128((rx_vec_i128*)hash + 3, state3); +} + +void hashAes1Rx4(const void *input, size_t inputSize, void *hash); + +//AesGenerator1R: +//key0, key1, key2, key3 = Blake2b-512("RandomX AesGenerator1R keys") + +#define AES_GEN_1R_KEY0 0xb4f44917, 0xdbb5552b, 0x62716609, 0x6daca553 +#define AES_GEN_1R_KEY1 0x0da1dc4e, 0x1725d378, 0x846a710d, 0x6d7caf07 +#define AES_GEN_1R_KEY2 0x3e20e345, 0xf4c0794f, 0x9f947ec6, 0x3f1262f1 +#define AES_GEN_1R_KEY3 0x49169154, 0x16314c88, 0xb1ba317c, 0x6aef8135 + +/* + Fill 'buffer' with pseudorandom data based on 512-bit 'state'. + The state is encrypted using a single AES round per 16 bytes of output + in 4 lanes. + + 'outputSize' must be a multiple of 64. + + The modified state is written back to 'state' to allow multiple + calls to this function. +*/ + +void fillAes1Rx4(void *state, size_t outputSize, void *buffer) { + assert(outputSize % 64 == 0); + const uint8_t* outptr = (uint8_t*)buffer; + const uint8_t* outputEnd = outptr + outputSize; + + rx_vec_i128 state0, state1, state2, state3; + rx_vec_i128 key0, key1, key2, key3; + + key0 = rx_set_int_vec_i128(AES_GEN_1R_KEY0); + key1 = rx_set_int_vec_i128(AES_GEN_1R_KEY1); + key2 = rx_set_int_vec_i128(AES_GEN_1R_KEY2); + key3 = rx_set_int_vec_i128(AES_GEN_1R_KEY3); + + state0 = rx_load_vec_i128((rx_vec_i128*)state + 0); + state1 = rx_load_vec_i128((rx_vec_i128*)state + 1); + state2 = rx_load_vec_i128((rx_vec_i128*)state + 2); + state3 = rx_load_vec_i128((rx_vec_i128*)state + 3); + + while (outptr < outputEnd) { + state0 = aesdec(state0, key0); + state1 = aesenc(state1, key1); + state2 = aesdec(state2, key2); + state3 = aesenc(state3, key3); + + rx_store_vec_i128((rx_vec_i128*)outptr + 0, state0); + rx_store_vec_i128((rx_vec_i128*)outptr + 1, state1); + rx_store_vec_i128((rx_vec_i128*)outptr + 2, state2); + rx_store_vec_i128((rx_vec_i128*)outptr + 3, state3); + + outptr += 64; + } + + rx_store_vec_i128((rx_vec_i128*)state + 0, state0); + rx_store_vec_i128((rx_vec_i128*)state + 1, state1); + rx_store_vec_i128((rx_vec_i128*)state + 2, state2); + rx_store_vec_i128((rx_vec_i128*)state + 3, state3); +} + +void fillAes1Rx4(void *state, size_t outputSize, void *buffer); + +//AesGenerator4R: +//key0, key1, key2, key3 = Blake2b-512("RandomX AesGenerator4R keys 0-3") +//key4, key5, key6, key7 = Blake2b-512("RandomX AesGenerator4R keys 4-7") + +#define AES_GEN_4R_KEY0 0x99e5d23f, 0x2f546d2b, 0xd1833ddb, 0x6421aadd +#define AES_GEN_4R_KEY1 0xa5dfcde5, 0x06f79d53, 0xb6913f55, 0xb20e3450 +#define AES_GEN_4R_KEY2 0x171c02bf, 0x0aa4679f, 0x515e7baf, 0x5c3ed904 +#define AES_GEN_4R_KEY3 0xd8ded291, 0xcd673785, 0xe78f5d08, 0x85623763 +#define AES_GEN_4R_KEY4 0x229effb4, 0x3d518b6d, 0xe3d6a7a6, 0xb5826f73 +#define AES_GEN_4R_KEY5 0xb272b7d2, 0xe9024d4e, 0x9c10b3d9, 0xc7566bf3 +#define AES_GEN_4R_KEY6 0xf63befa7, 0x2ba9660a, 0xf765a38b, 0xf273c9e7 +#define AES_GEN_4R_KEY7 0xc0b0762d, 0x0c06d1fd, 0x915839de, 0x7a7cd609 + + +void fillAes4Rx4(void *state, size_t outputSize, void *buffer) { + assert(outputSize % 64 == 0); + const uint8_t* outptr = (uint8_t*)buffer; + const uint8_t* outputEnd = outptr + outputSize; + + rx_vec_i128 state0, state1, state2, state3; + rx_vec_i128 key0, key1, key2, key3, key4, key5, key6, key7; + + key0 = rx_set_int_vec_i128(AES_GEN_4R_KEY0); + key1 = rx_set_int_vec_i128(AES_GEN_4R_KEY1); + key2 = rx_set_int_vec_i128(AES_GEN_4R_KEY2); + key3 = rx_set_int_vec_i128(AES_GEN_4R_KEY3); + key4 = rx_set_int_vec_i128(AES_GEN_4R_KEY4); + key5 = rx_set_int_vec_i128(AES_GEN_4R_KEY5); + key6 = rx_set_int_vec_i128(AES_GEN_4R_KEY6); + key7 = rx_set_int_vec_i128(AES_GEN_4R_KEY7); + + state0 = rx_load_vec_i128((rx_vec_i128*)state + 0); + state1 = rx_load_vec_i128((rx_vec_i128*)state + 1); + state2 = rx_load_vec_i128((rx_vec_i128*)state + 2); + state3 = rx_load_vec_i128((rx_vec_i128*)state + 3); + + while (outptr < outputEnd) { + state0 = aesdec(state0, key0); + state1 = aesenc(state1, key0); + state2 = aesdec(state2, key4); + state3 = aesenc(state3, key4); + + state0 = aesdec(state0, key1); + state1 = aesenc(state1, key1); + state2 = aesdec(state2, key5); + state3 = aesenc(state3, key5); + + state0 = aesdec(state0, key2); + state1 = aesenc(state1, key2); + state2 = aesdec(state2, key6); + state3 = aesenc(state3, key6); + + state0 = aesdec(state0, key3); + state1 = aesenc(state1, key3); + state2 = aesdec(state2, key7); + state3 = aesenc(state3, key7); + + rx_store_vec_i128((rx_vec_i128*)outptr + 0, state0); + rx_store_vec_i128((rx_vec_i128*)outptr + 1, state1); + rx_store_vec_i128((rx_vec_i128*)outptr + 2, state2); + rx_store_vec_i128((rx_vec_i128*)outptr + 3, state3); + + outptr += 64; + } +} + +void fillAes4Rx4(void *state, size_t outputSize, void *buffer); + + +void hashAndFillAes1Rx4(void *scratchpad, size_t scratchpadSize, void *hash, void* fill_state) { + uint8_t* scratchpadPtr = (uint8_t*)scratchpad; + const uint8_t* scratchpadEnd = scratchpadPtr + scratchpadSize; + + // initial state + rx_vec_i128 hash_state0 = rx_set_int_vec_i128(AES_HASH_1R_STATE0); + rx_vec_i128 hash_state1 = rx_set_int_vec_i128(AES_HASH_1R_STATE1); + rx_vec_i128 hash_state2 = rx_set_int_vec_i128(AES_HASH_1R_STATE2); + rx_vec_i128 hash_state3 = rx_set_int_vec_i128(AES_HASH_1R_STATE3); + + const rx_vec_i128 key0 = rx_set_int_vec_i128(AES_GEN_1R_KEY0); + const rx_vec_i128 key1 = rx_set_int_vec_i128(AES_GEN_1R_KEY1); + const rx_vec_i128 key2 = rx_set_int_vec_i128(AES_GEN_1R_KEY2); + const rx_vec_i128 key3 = rx_set_int_vec_i128(AES_GEN_1R_KEY3); + + rx_vec_i128 fill_state0 = rx_load_vec_i128((rx_vec_i128*)fill_state + 0); + rx_vec_i128 fill_state1 = rx_load_vec_i128((rx_vec_i128*)fill_state + 1); + rx_vec_i128 fill_state2 = rx_load_vec_i128((rx_vec_i128*)fill_state + 2); + rx_vec_i128 fill_state3 = rx_load_vec_i128((rx_vec_i128*)fill_state + 3); + + constexpr int PREFETCH_DISTANCE = 4096; + const char* prefetchPtr = ((const char*)scratchpad) + PREFETCH_DISTANCE; + scratchpadEnd -= PREFETCH_DISTANCE; + + for (int i = 0; i < 2; ++i) { + //process 64 bytes at a time in 4 lanes + while (scratchpadPtr < scratchpadEnd) { + hash_state0 = aesenc(hash_state0, rx_load_vec_i128((rx_vec_i128*)scratchpadPtr + 0)); + hash_state1 = aesdec(hash_state1, rx_load_vec_i128((rx_vec_i128*)scratchpadPtr + 1)); + hash_state2 = aesenc(hash_state2, rx_load_vec_i128((rx_vec_i128*)scratchpadPtr + 2)); + hash_state3 = aesdec(hash_state3, rx_load_vec_i128((rx_vec_i128*)scratchpadPtr + 3)); + + fill_state0 = aesdec(fill_state0, key0); + fill_state1 = aesenc(fill_state1, key1); + fill_state2 = aesdec(fill_state2, key2); + fill_state3 = aesenc(fill_state3, key3); + + rx_store_vec_i128((rx_vec_i128*)scratchpadPtr + 0, fill_state0); + rx_store_vec_i128((rx_vec_i128*)scratchpadPtr + 1, fill_state1); + rx_store_vec_i128((rx_vec_i128*)scratchpadPtr + 2, fill_state2); + rx_store_vec_i128((rx_vec_i128*)scratchpadPtr + 3, fill_state3); + + rx_prefetch_t0(prefetchPtr); + + scratchpadPtr += 64; + prefetchPtr += 64; + } + prefetchPtr = (const char*) scratchpad; + scratchpadEnd += PREFETCH_DISTANCE; + } + + rx_store_vec_i128((rx_vec_i128*)fill_state + 0, fill_state0); + rx_store_vec_i128((rx_vec_i128*)fill_state + 1, fill_state1); + rx_store_vec_i128((rx_vec_i128*)fill_state + 2, fill_state2); + rx_store_vec_i128((rx_vec_i128*)fill_state + 3, fill_state3); + + //two extra rounds to achieve full diffusion + rx_vec_i128 xkey0 = rx_set_int_vec_i128(AES_HASH_1R_XKEY0); + rx_vec_i128 xkey1 = rx_set_int_vec_i128(AES_HASH_1R_XKEY1); + + hash_state0 = aesenc(hash_state0, xkey0); + hash_state1 = aesdec(hash_state1, xkey0); + hash_state2 = aesenc(hash_state2, xkey0); + hash_state3 = aesdec(hash_state3, xkey0); + + hash_state0 = aesenc(hash_state0, xkey1); + hash_state1 = aesdec(hash_state1, xkey1); + hash_state2 = aesenc(hash_state2, xkey1); + hash_state3 = aesdec(hash_state3, xkey1); + + //output hash + rx_store_vec_i128((rx_vec_i128*)hash + 0, hash_state0); + rx_store_vec_i128((rx_vec_i128*)hash + 1, hash_state1); + rx_store_vec_i128((rx_vec_i128*)hash + 2, hash_state2); + rx_store_vec_i128((rx_vec_i128*)hash + 3, hash_state3); +} + +void hashAndFillAes1Rx4(void *scratchpad, size_t scratchpadSize, void *hash, void* fill_state); diff --git a/miner/src/cpp/aes_hash.hpp b/miner/src/cpp/aes_hash.hpp new file mode 100644 index 0000000..1456446 --- /dev/null +++ b/miner/src/cpp/aes_hash.hpp @@ -0,0 +1,39 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include + +void hashAes1Rx4(const void *input, size_t inputSize, void *hash); + +void fillAes1Rx4(void *state, size_t outputSize, void *buffer); + +void fillAes4Rx4(void *state, size_t outputSize, void *buffer); + +void hashAndFillAes1Rx4(void *scratchpad, size_t scratchpadSize, void *hash, void* fill_state); diff --git a/miner/src/cpp/allocator.cpp b/miner/src/cpp/allocator.cpp new file mode 100644 index 0000000..4f0c619 --- /dev/null +++ b/miner/src/cpp/allocator.cpp @@ -0,0 +1,60 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include "allocator.hpp" +#include "intrin_wasm.h" +#include "virtual_memory.hpp" +#include "common.hpp" + +namespace randomx { + + template + void* AlignedAllocator::allocMemory(size_t count) { + void *mem = rx_aligned_alloc(count, alignment); + if (mem == nullptr) + throw std::bad_alloc(); + return mem; + } + + template + void AlignedAllocator::freeMemory(void* ptr, size_t count) { + rx_aligned_free(ptr); + } + + template struct AlignedAllocator; + + void* LargePageAllocator::allocMemory(size_t count) { + return allocLargePagesMemory(count); + } + + void LargePageAllocator::freeMemory(void* ptr, size_t count) { + freePagedMemory(ptr, count); + }; + +} \ No newline at end of file diff --git a/miner/src/cpp/allocator.hpp b/miner/src/cpp/allocator.hpp new file mode 100644 index 0000000..8b86b6b --- /dev/null +++ b/miner/src/cpp/allocator.hpp @@ -0,0 +1,46 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include + +namespace randomx { + + template + struct AlignedAllocator { + static void* allocMemory(size_t); + static void freeMemory(void*, size_t); + }; + + struct LargePageAllocator { + static void* allocMemory(size_t); + static void freeMemory(void*, size_t); + }; + +} \ No newline at end of file diff --git a/miner/src/cpp/argon2.h b/miner/src/cpp/argon2.h new file mode 100644 index 0000000..3dbcda5 --- /dev/null +++ b/miner/src/cpp/argon2.h @@ -0,0 +1,258 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/* Original code from Argon2 reference source code package used under CC0 Licence + * https://github.com/P-H-C/phc-winner-argon2 + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves +*/ + +#pragma once + +#include +#include +#include + +/* + * Argon2 input parameter restrictions + */ + + /* Minimum and maximum number of lanes (degree of parallelism) */ +#define ARGON2_MIN_LANES UINT32_C(1) +#define ARGON2_MAX_LANES UINT32_C(0xFFFFFF) + +/* Minimum and maximum number of threads */ +#define ARGON2_MIN_THREADS UINT32_C(1) +#define ARGON2_MAX_THREADS UINT32_C(0xFFFFFF) + +/* Number of synchronization points between lanes per pass */ +#define ARGON2_SYNC_POINTS UINT32_C(4) + +/* Minimum and maximum digest size in bytes */ +#define ARGON2_MIN_OUTLEN UINT32_C(4) +#define ARGON2_MAX_OUTLEN UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum number of memory blocks (each of BLOCK_SIZE bytes) */ +#define ARGON2_MIN_MEMORY (2 * ARGON2_SYNC_POINTS) /* 2 blocks per slice */ + +#define ARGON2_MIN(a, b) ((a) < (b) ? (a) : (b)) +/* Max memory size is addressing-space/2, topping at 2^32 blocks (4 TB) */ +#define ARGON2_MAX_MEMORY_BITS \ + ARGON2_MIN(UINT32_C(32), (sizeof(void *) * CHAR_BIT - 10 - 1)) +#define ARGON2_MAX_MEMORY \ + ARGON2_MIN(UINT32_C(0xFFFFFFFF), UINT64_C(1) << ARGON2_MAX_MEMORY_BITS) + +/* Minimum and maximum number of passes */ +#define ARGON2_MIN_TIME UINT32_C(1) +#define ARGON2_MAX_TIME UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum password length in bytes */ +#define ARGON2_MIN_PWD_LENGTH UINT32_C(0) +#define ARGON2_MAX_PWD_LENGTH UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum associated data length in bytes */ +#define ARGON2_MIN_AD_LENGTH UINT32_C(0) +#define ARGON2_MAX_AD_LENGTH UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum salt length in bytes */ +#define ARGON2_MIN_SALT_LENGTH UINT32_C(8) +#define ARGON2_MAX_SALT_LENGTH UINT32_C(0xFFFFFFFF) + +/* Minimum and maximum key length in bytes */ +#define ARGON2_MIN_SECRET UINT32_C(0) +#define ARGON2_MAX_SECRET UINT32_C(0xFFFFFFFF) + +/* Flags to determine which fields are securely wiped (default = no wipe). */ +#define ARGON2_DEFAULT_FLAGS UINT32_C(0) +#define ARGON2_FLAG_CLEAR_PASSWORD (UINT32_C(1) << 0) +#define ARGON2_FLAG_CLEAR_SECRET (UINT32_C(1) << 1) + + +/* Error codes */ +typedef enum Argon2_ErrorCodes { + ARGON2_OK = 0, + + ARGON2_OUTPUT_PTR_NULL = -1, + + ARGON2_OUTPUT_TOO_SHORT = -2, + ARGON2_OUTPUT_TOO_LONG = -3, + + ARGON2_PWD_TOO_SHORT = -4, + ARGON2_PWD_TOO_LONG = -5, + + ARGON2_SALT_TOO_SHORT = -6, + ARGON2_SALT_TOO_LONG = -7, + + ARGON2_AD_TOO_SHORT = -8, + ARGON2_AD_TOO_LONG = -9, + + ARGON2_SECRET_TOO_SHORT = -10, + ARGON2_SECRET_TOO_LONG = -11, + + ARGON2_TIME_TOO_SMALL = -12, + ARGON2_TIME_TOO_LARGE = -13, + + ARGON2_MEMORY_TOO_LITTLE = -14, + ARGON2_MEMORY_TOO_MUCH = -15, + + ARGON2_LANES_TOO_FEW = -16, + ARGON2_LANES_TOO_MANY = -17, + + ARGON2_PWD_PTR_MISMATCH = -18, /* NULL ptr with non-zero length */ + ARGON2_SALT_PTR_MISMATCH = -19, /* NULL ptr with non-zero length */ + ARGON2_SECRET_PTR_MISMATCH = -20, /* NULL ptr with non-zero length */ + ARGON2_AD_PTR_MISMATCH = -21, /* NULL ptr with non-zero length */ + + ARGON2_MEMORY_ALLOCATION_ERROR = -22, + + ARGON2_FREE_MEMORY_CBK_NULL = -23, + ARGON2_ALLOCATE_MEMORY_CBK_NULL = -24, + + ARGON2_INCORRECT_PARAMETER = -25, + ARGON2_INCORRECT_TYPE = -26, + + ARGON2_OUT_PTR_MISMATCH = -27, + + ARGON2_THREADS_TOO_FEW = -28, + ARGON2_THREADS_TOO_MANY = -29, + + ARGON2_MISSING_ARGS = -30, + + ARGON2_ENCODING_FAIL = -31, + + ARGON2_DECODING_FAIL = -32, + + ARGON2_THREAD_FAIL = -33, + + ARGON2_DECODING_LENGTH_FAIL = -34, + + ARGON2_VERIFY_MISMATCH = -35 +} argon2_error_codes; + +/* Memory allocator types --- for external allocation */ +typedef int(*allocate_fptr)(uint8_t **memory, size_t bytes_to_allocate); +typedef void(*deallocate_fptr)(uint8_t *memory, size_t bytes_to_allocate); + +/* Argon2 external data structures */ + +/* + ***** + * Context: structure to hold Argon2 inputs: + * output array and its length, + * password and its length, + * salt and its length, + * secret and its length, + * associated data and its length, + * number of passes, amount of used memory (in KBytes, can be rounded up a bit) + * number of parallel threads that will be run. + * All the parameters above affect the output hash value. + * Additionally, two function pointers can be provided to allocate and + * deallocate the memory (if NULL, memory will be allocated internally). + * Also, three flags indicate whether to erase password, secret as soon as they + * are pre-hashed (and thus not needed anymore), and the entire memory + ***** + * Simplest situation: you have output array out[8], password is stored in + * pwd[32], salt is stored in salt[16], you do not have keys nor associated + * data. You need to spend 1 GB of RAM and you run 5 passes of Argon2d with + * 4 parallel lanes. + * You want to erase the password, but you're OK with last pass not being + * erased. You want to use the default memory allocator. + * Then you initialize: + Argon2_Context(out,8,pwd,32,salt,16,NULL,0,NULL,0,5,1<<20,4,4,NULL,NULL,true,false,false,false) + */ +typedef struct Argon2_Context { + uint8_t *out; /* output array */ + uint32_t outlen; /* digest length */ + + uint8_t *pwd; /* password array */ + uint32_t pwdlen; /* password length */ + + uint8_t *salt; /* salt array */ + uint32_t saltlen; /* salt length */ + + uint8_t *secret; /* key array */ + uint32_t secretlen; /* key length */ + + uint8_t *ad; /* associated data array */ + uint32_t adlen; /* associated data length */ + + uint32_t t_cost; /* number of passes */ + uint32_t m_cost; /* amount of memory requested (KB) */ + uint32_t lanes; /* number of lanes */ + uint32_t threads; /* maximum number of threads */ + + uint32_t version; /* version number */ + + allocate_fptr allocate_cbk; /* pointer to memory allocator */ + deallocate_fptr free_cbk; /* pointer to memory deallocator */ + + uint32_t flags; /* array of bool options */ +} argon2_context; + +/* Argon2 primitive type */ +typedef enum Argon2_type { + Argon2_d = 0, + Argon2_i = 1, + Argon2_id = 2 +} argon2_type; + +/* Version of the algorithm */ +typedef enum Argon2_version { + ARGON2_VERSION_10 = 0x10, + ARGON2_VERSION_13 = 0x13, + ARGON2_VERSION_NUMBER = ARGON2_VERSION_13 +} argon2_version; + +//Argon2 instance - forward declaration +typedef struct Argon2_instance_t argon2_instance_t; + +//Argon2 position = forward declaration +typedef struct Argon2_position_t argon2_position_t; + +//Argon2 implementation function +typedef void randomx_argon2_impl(const argon2_instance_t* instance, + argon2_position_t position); + +#if defined(__cplusplus) +extern "C" { +#endif + +/* + * Function that fills the segment using previous segments also from other + * threads + * @param context current context + * @param instance Pointer to the current instance + * @param position Current position + * @pre all block pointers must be valid + */ + +randomx_argon2_impl *randomx_argon2_impl_simd(); + +#if defined(__cplusplus) +} +#endif diff --git a/miner/src/cpp/argon2_core.c b/miner/src/cpp/argon2_core.c new file mode 100644 index 0000000..089a0e7 --- /dev/null +++ b/miner/src/cpp/argon2_core.c @@ -0,0 +1,411 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/* Original code from Argon2 reference source code package used under CC0 Licence + * https://github.com/P-H-C/phc-winner-argon2 + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves +*/ + + /*For memory wiping*/ +#ifdef _MSC_VER +#include +#include /* For SecureZeroMemory */ +#endif +#if defined __STDC_LIB_EXT1__ +#define __STDC_WANT_LIB_EXT1__ 1 +#endif +#define VC_GE_2005(version) (version >= 1400) + +#include +#include +#include + +#include "argon2_core.h" +#include "blake2.h" +#include "blake2-impl.h" + +#ifdef GENKAT +#include "genkat.h" +#endif + +#if defined(__clang__) +#if __has_attribute(optnone) +#define NOT_OPTIMIZED __attribute__((optnone)) +#endif +#elif defined(__GNUC__) +#define GCC_VERSION \ + (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) +#if GCC_VERSION >= 40400 +#define NOT_OPTIMIZED __attribute__((optimize("O0"))) +#endif +#endif +#ifndef NOT_OPTIMIZED +#define NOT_OPTIMIZED +#endif + +/***************Instance and Position constructors**********/ + +static void load_block(block *dst, const void *input) { + unsigned i; + for (i = 0; i < ARGON2_QWORDS_IN_BLOCK; ++i) { + dst->v[i] = load64((const uint8_t *)input + i * sizeof(dst->v[i])); + } +} + +static void store_block(void *output, const block *src) { + unsigned i; + for (i = 0; i < ARGON2_QWORDS_IN_BLOCK; ++i) { + store64((uint8_t *)output + i * sizeof(src->v[i]), src->v[i]); + } +} + +uint32_t randomx_argon2_index_alpha(const argon2_instance_t *instance, + const argon2_position_t *position, uint32_t pseudo_rand, + int same_lane) { + /* + * Pass 0: + * This lane : all already finished segments plus already constructed + * blocks in this segment + * Other lanes : all already finished segments + * Pass 1+: + * This lane : (SYNC_POINTS - 1) last segments plus already constructed + * blocks in this segment + * Other lanes : (SYNC_POINTS - 1) last segments + */ + uint32_t reference_area_size; + uint64_t relative_position; + uint32_t start_position, absolute_position; + + if (0 == position->pass) { + /* First pass */ + if (0 == position->slice) { + /* First slice */ + reference_area_size = + position->index - 1; /* all but the previous */ + } + else { + if (same_lane) { + /* The same lane => add current segment */ + reference_area_size = + position->slice * instance->segment_length + + position->index - 1; + } + else { + reference_area_size = + position->slice * instance->segment_length + + ((position->index == 0) ? (-1) : 0); + } + } + } + else { + /* Second pass */ + if (same_lane) { + reference_area_size = instance->lane_length - + instance->segment_length + position->index - + 1; + } + else { + reference_area_size = instance->lane_length - + instance->segment_length + + ((position->index == 0) ? (-1) : 0); + } + } + + /* 1.2.4. Mapping pseudo_rand to 0.. and produce + * relative position */ + relative_position = pseudo_rand; + relative_position = relative_position * relative_position >> 32; + relative_position = reference_area_size - 1 - + (reference_area_size * relative_position >> 32); + + /* 1.2.5 Computing starting position */ + start_position = 0; + + if (0 != position->pass) { + start_position = (position->slice == ARGON2_SYNC_POINTS - 1) + ? 0 + : (position->slice + 1) * instance->segment_length; + } + + /* 1.2.6. Computing absolute position */ + absolute_position = (start_position + relative_position) % + instance->lane_length; /* absolute position */ + return absolute_position; +} + +/* Single-threaded version for p=1 case */ +static int fill_memory_blocks_st(argon2_instance_t *instance) { + uint32_t r, s, l; + + for (r = 0; r < instance->passes; ++r) { + for (s = 0; s < ARGON2_SYNC_POINTS; ++s) { + for (l = 0; l < instance->lanes; ++l) { + argon2_position_t position = { r, l, (uint8_t)s, 0 }; + //fill the segment using the selected implementation + instance->impl(instance, position); + } + } + } + return ARGON2_OK; +} + +int randomx_argon2_fill_memory_blocks(argon2_instance_t *instance) { + if (instance == NULL || instance->lanes == 0) { + return ARGON2_INCORRECT_PARAMETER; + } + return fill_memory_blocks_st(instance); +} + +int randomx_argon2_validate_inputs(const argon2_context *context) { + if (NULL == context) { + return ARGON2_INCORRECT_PARAMETER; + } + + /* Validate password (required param) */ + if (NULL == context->pwd) { + if (0 != context->pwdlen) { + return ARGON2_PWD_PTR_MISMATCH; + } + } + + if (ARGON2_MIN_PWD_LENGTH > context->pwdlen) { + return ARGON2_PWD_TOO_SHORT; + } + + if (ARGON2_MAX_PWD_LENGTH < context->pwdlen) { + return ARGON2_PWD_TOO_LONG; + } + + /* Validate salt (required param) */ + if (NULL == context->salt) { + if (0 != context->saltlen) { + return ARGON2_SALT_PTR_MISMATCH; + } + } + + if (ARGON2_MIN_SALT_LENGTH > context->saltlen) { + return ARGON2_SALT_TOO_SHORT; + } + + if (ARGON2_MAX_SALT_LENGTH < context->saltlen) { + return ARGON2_SALT_TOO_LONG; + } + + /* Validate secret (optional param) */ + if (NULL == context->secret) { + if (0 != context->secretlen) { + return ARGON2_SECRET_PTR_MISMATCH; + } + } + else { + if (ARGON2_MIN_SECRET > context->secretlen) { + return ARGON2_SECRET_TOO_SHORT; + } + if (ARGON2_MAX_SECRET < context->secretlen) { + return ARGON2_SECRET_TOO_LONG; + } + } + + /* Validate associated data (optional param) */ + if (NULL == context->ad) { + if (0 != context->adlen) { + return ARGON2_AD_PTR_MISMATCH; + } + } + else { + if (ARGON2_MIN_AD_LENGTH > context->adlen) { + return ARGON2_AD_TOO_SHORT; + } + if (ARGON2_MAX_AD_LENGTH < context->adlen) { + return ARGON2_AD_TOO_LONG; + } + } + + /* Validate memory cost */ + if (ARGON2_MIN_MEMORY > context->m_cost) { + return ARGON2_MEMORY_TOO_LITTLE; + } + + if (ARGON2_MAX_MEMORY < context->m_cost) { + return ARGON2_MEMORY_TOO_MUCH; + } + + if (context->m_cost < 8 * context->lanes) { + return ARGON2_MEMORY_TOO_LITTLE; + } + + /* Validate time cost */ + if (ARGON2_MIN_TIME > context->t_cost) { + return ARGON2_TIME_TOO_SMALL; + } + + if (ARGON2_MAX_TIME < context->t_cost) { + return ARGON2_TIME_TOO_LARGE; + } + + /* Validate lanes */ + if (ARGON2_MIN_LANES > context->lanes) { + return ARGON2_LANES_TOO_FEW; + } + + if (ARGON2_MAX_LANES < context->lanes) { + return ARGON2_LANES_TOO_MANY; + } + + /* Validate threads */ + if (ARGON2_MIN_THREADS > context->threads) { + return ARGON2_THREADS_TOO_FEW; + } + + if (ARGON2_MAX_THREADS < context->threads) { + return ARGON2_THREADS_TOO_MANY; + } + + if (NULL != context->allocate_cbk && NULL == context->free_cbk) { + return ARGON2_FREE_MEMORY_CBK_NULL; + } + + if (NULL == context->allocate_cbk && NULL != context->free_cbk) { + return ARGON2_ALLOCATE_MEMORY_CBK_NULL; + } + + return ARGON2_OK; +} + +void rxa2_fill_first_blocks(uint8_t *blockhash, const argon2_instance_t *instance) { + uint32_t l; + /* Make the first and second block in each lane as G(H0||0||i) or + G(H0||1||i) */ + uint8_t blockhash_bytes[ARGON2_BLOCK_SIZE]; + for (l = 0; l < instance->lanes; ++l) { + + store32(blockhash + ARGON2_PREHASH_DIGEST_LENGTH, 0); + store32(blockhash + ARGON2_PREHASH_DIGEST_LENGTH + 4, l); + blake2b_long(blockhash_bytes, ARGON2_BLOCK_SIZE, blockhash, + ARGON2_PREHASH_SEED_LENGTH); + load_block(&instance->memory[l * instance->lane_length + 0], + blockhash_bytes); + + store32(blockhash + ARGON2_PREHASH_DIGEST_LENGTH, 1); + blake2b_long(blockhash_bytes, ARGON2_BLOCK_SIZE, blockhash, + ARGON2_PREHASH_SEED_LENGTH); + load_block(&instance->memory[l * instance->lane_length + 1], + blockhash_bytes); + } +} + +void rxa2_initial_hash(uint8_t *blockhash, argon2_context *context, argon2_type type) { + blake2b_state BlakeHash; + uint8_t value[sizeof(uint32_t)]; + + if (NULL == context || NULL == blockhash) { + return; + } + + blake2b_init(&BlakeHash, ARGON2_PREHASH_DIGEST_LENGTH); + + store32(&value, context->lanes); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, context->outlen); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, context->m_cost); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, context->t_cost); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, context->version); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, (uint32_t)type); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + store32(&value, context->pwdlen); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + if (context->pwd != NULL) { + blake2b_update(&BlakeHash, (const uint8_t *)context->pwd, + context->pwdlen); + } + + store32(&value, context->saltlen); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + if (context->salt != NULL) { + blake2b_update(&BlakeHash, (const uint8_t *)context->salt, context->saltlen); + } + + store32(&value, context->secretlen); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + if (context->secret != NULL) { + blake2b_update(&BlakeHash, (const uint8_t *)context->secret, + context->secretlen); + } + + store32(&value, context->adlen); + blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value)); + + if (context->ad != NULL) { + blake2b_update(&BlakeHash, (const uint8_t *)context->ad, + context->adlen); + } + + blake2b_final(&BlakeHash, blockhash, ARGON2_PREHASH_DIGEST_LENGTH); +} + +int randomx_argon2_initialize(argon2_instance_t *instance, argon2_context *context) { + uint8_t blockhash[ARGON2_PREHASH_SEED_LENGTH]; + int result = ARGON2_OK; + + if (instance == NULL || context == NULL) + return ARGON2_INCORRECT_PARAMETER; + instance->context_ptr = context; + + /* 1. Memory allocation */ + //RandomX takes care of memory allocation + + /* 2. Initial hashing */ + /* H_0 + 8 extra bytes to produce the first blocks */ + /* uint8_t blockhash[ARGON2_PREHASH_SEED_LENGTH]; */ + /* Hashing all inputs */ + rxa2_initial_hash(blockhash, context, instance->type); + /* Zeroing 8 extra bytes */ + /*rxa2_clear_internal_memory(blockhash + ARGON2_PREHASH_DIGEST_LENGTH, + ARGON2_PREHASH_SEED_LENGTH - + ARGON2_PREHASH_DIGEST_LENGTH);*/ + + /* 3. Creating first blocks, we always have at least two blocks in a slice + */ + rxa2_fill_first_blocks(blockhash, instance); + + return ARGON2_OK; +} diff --git a/miner/src/cpp/argon2_core.h b/miner/src/cpp/argon2_core.h new file mode 100644 index 0000000..b898588 --- /dev/null +++ b/miner/src/cpp/argon2_core.h @@ -0,0 +1,163 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/* Original code from Argon2 reference source code package used under CC0 Licence + * https://github.com/P-H-C/phc-winner-argon2 + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves +*/ + +#ifndef ARGON2_CORE_H +#define ARGON2_CORE_H + +#include +#include "argon2.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define CONST_CAST(x) (x)(uintptr_t) + + /**********************Argon2 internal constants*******************************/ + +enum argon2_core_constants { + /* Memory block size in bytes */ + ARGON2_BLOCK_SIZE = 1024, + ARGON2_QWORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 8, + ARGON2_OWORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 16, + ARGON2_HWORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 32, + ARGON2_512BIT_WORDS_IN_BLOCK = ARGON2_BLOCK_SIZE / 64, + + /* Number of pseudo-random values generated by one call to Blake in Argon2i + to + generate reference block positions */ + ARGON2_ADDRESSES_IN_BLOCK = 128, + + /* Pre-hashing digest length and its extension*/ + ARGON2_PREHASH_DIGEST_LENGTH = 64, + ARGON2_PREHASH_SEED_LENGTH = 72 +}; + +/*************************Argon2 internal data types***********************/ + +/* + * Structure for the (1KB) memory block implemented as 128 64-bit words. + * Memory blocks can be copied, XORed. Internal words can be accessed by [] (no + * bounds checking). + */ +typedef struct block_ { uint64_t v[ARGON2_QWORDS_IN_BLOCK]; } block; + +/* + * Argon2 instance: memory pointer, number of passes, amount of memory, type, + * and derived values. + * Used to evaluate the number and location of blocks to construct in each + * thread + */ +typedef struct Argon2_instance_t { + block *memory; /* Memory pointer */ + uint32_t version; + uint32_t passes; /* Number of passes */ + uint32_t memory_blocks; /* Number of blocks in memory */ + uint32_t segment_length; + uint32_t lane_length; + uint32_t lanes; + uint32_t threads; + argon2_type type; + int print_internals; /* whether to print the memory blocks */ + argon2_context *context_ptr; /* points back to original context */ + randomx_argon2_impl *impl; +} argon2_instance_t; + +/* + * Argon2 position: where we construct the block right now. Used to distribute + * work between threads. + */ +typedef struct Argon2_position_t { + uint32_t pass; + uint32_t lane; + uint8_t slice; + uint32_t index; +} argon2_position_t; + +/*Struct that holds the inputs for thread handling FillSegment*/ +typedef struct Argon2_thread_data { + argon2_instance_t *instance_ptr; + argon2_position_t pos; +} argon2_thread_data; + +/*************************Argon2 core functions********************************/ + +/* + * Computes absolute position of reference block in the lane following a skewed + * distribution and using a pseudo-random value as input + * @param instance Pointer to the current instance + * @param position Pointer to the current position + * @param pseudo_rand 32-bit pseudo-random value used to determine the position + * @param same_lane Indicates if the block will be taken from the current lane. + * If so we can reference the current segment + * @pre All pointers must be valid + */ +uint32_t randomx_argon2_index_alpha(const argon2_instance_t *instance, + const argon2_position_t *position, uint32_t pseudo_rand, + int same_lane); + +/* + * Function that validates all inputs against predefined restrictions and return + * an error code + * @param context Pointer to current Argon2 context + * @return ARGON2_OK if everything is all right, otherwise one of error codes + * (all defined in + */ +int randomx_argon2_validate_inputs(const argon2_context *context); + +/* + * Function allocates memory, hashes the inputs with Blake, and creates first + * two blocks. Returns the pointer to the main memory with 2 blocks per lane + * initialized + * @param context Pointer to the Argon2 internal structure containing memory + * pointer, and parameters for time and space requirements. + * @param instance Current Argon2 instance + * @return Zero if successful, -1 if memory failed to allocate. @context->state + * will be modified if successful. + */ +int randomx_argon2_initialize(argon2_instance_t *instance, argon2_context *context); + +/* + * Function that fills the entire memory t_cost times based on the first two + * blocks in each lane + * @param instance Pointer to the current instance + * @return ARGON2_OK if successful, @context->state + */ +int randomx_argon2_fill_memory_blocks(argon2_instance_t* instance); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/miner/src/cpp/argon2_simd.c b/miner/src/cpp/argon2_simd.c new file mode 100644 index 0000000..d708d2c --- /dev/null +++ b/miner/src/cpp/argon2_simd.c @@ -0,0 +1,135 @@ +#include +#include +#include + +#include "argon2.h" +#include "argon2_core.h" + +#include "blamka-round-simd.h" +#include "blake2-impl.h" +#include "blake2.h" + +void randomx_argon2_fill_segment_simd(const argon2_instance_t* instance, + argon2_position_t position); + +randomx_argon2_impl* randomx_argon2_impl_simd() { + return &randomx_argon2_fill_segment_simd; +} + +static void fill_block(v128_t* state, const block* ref_block, + block* next_block, int with_xor) { + v128_t block_XY[ARGON2_OWORDS_IN_BLOCK]; + unsigned int i; + + if (with_xor) { + for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) { + state[i] = wasm_v128_xor( + state[i], wasm_v128_load((const v128_t*)ref_block->v + i)); + block_XY[i] = wasm_v128_xor( + state[i], wasm_v128_load((const v128_t*)next_block->v + i)); + } + } + else { + for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) { + block_XY[i] = state[i] = wasm_v128_xor( + state[i], wasm_v128_load((const v128_t*)ref_block->v + i)); + } + } + + for (i = 0; i < 8; ++i) { + BLAKE2_ROUND(state[8 * i + 0], state[8 * i + 1], state[8 * i + 2], + state[8 * i + 3], state[8 * i + 4], state[8 * i + 5], + state[8 * i + 6], state[8 * i + 7]); + } + + for (i = 0; i < 8; ++i) { + BLAKE2_ROUND(state[8 * 0 + i], state[8 * 1 + i], state[8 * 2 + i], + state[8 * 3 + i], state[8 * 4 + i], state[8 * 5 + i], + state[8 * 6 + i], state[8 * 7 + i]); + } + + for (i = 0; i < ARGON2_OWORDS_IN_BLOCK; i++) { + state[i] = wasm_v128_xor(state[i], block_XY[i]); + wasm_v128_store((v128_t*)next_block->v + i, state[i]); + } +} + + +void randomx_argon2_fill_segment_simd(const argon2_instance_t* instance, + argon2_position_t position) { + block* ref_block = NULL, * curr_block = NULL; + block address_block, input_block; + uint64_t pseudo_rand, ref_index, ref_lane; + uint32_t prev_offset, curr_offset; + uint32_t starting_index, i; + v128_t state[ARGON2_OWORDS_IN_BLOCK]; + + if (instance == NULL) { + return; + } + + starting_index = 0; + + if ((0 == position.pass) && (0 == position.slice)) { + starting_index = 2; /* we have already generated the first two blocks */ + } + + /* Offset of the current block */ + curr_offset = position.lane * instance->lane_length + + position.slice * instance->segment_length + starting_index; + + if (0 == curr_offset % instance->lane_length) { + /* Last block in this lane */ + prev_offset = curr_offset + instance->lane_length - 1; + } + else { + /* Previous block */ + prev_offset = curr_offset - 1; + } + + memcpy(state, ((instance->memory + prev_offset)->v), ARGON2_BLOCK_SIZE); + + for (i = starting_index; i < instance->segment_length; + ++i, ++curr_offset, ++prev_offset) { + /*1.1 Rotating prev_offset if needed */ + if (curr_offset % instance->lane_length == 1) { + prev_offset = curr_offset - 1; + } + + /* 1.2 Computing the index of the reference block */ + /* 1.2.1 Taking pseudo-random value from the previous block */ + pseudo_rand = instance->memory[prev_offset].v[0]; + + /* 1.2.2 Computing the lane of the reference block */ + ref_lane = ((pseudo_rand >> 32)) % instance->lanes; + + if ((position.pass == 0) && (position.slice == 0)) { + /* Can not reference other lanes yet */ + ref_lane = position.lane; + } + + /* 1.2.3 Computing the number of possible reference block within the + * lane. + */ + position.index = i; + ref_index = randomx_argon2_index_alpha(instance, &position, pseudo_rand & 0xFFFFFFFF, + ref_lane == position.lane); + + /* 2 Creating a new block */ + ref_block = + instance->memory + instance->lane_length * ref_lane + ref_index; + curr_block = instance->memory + curr_offset; + if (ARGON2_VERSION_10 == instance->version) { + /* version 1.2.1 and earlier: overwrite, not XOR */ + fill_block(state, ref_block, curr_block, 0); + } + else { + if (0 == position.pass) { + fill_block(state, ref_block, curr_block, 0); + } + else { + fill_block(state, ref_block, curr_block, 1); + } + } + } +} \ No newline at end of file diff --git a/miner/src/cpp/asm/configuration.asm b/miner/src/cpp/asm/configuration.asm new file mode 100644 index 0000000..340ced2 --- /dev/null +++ b/miner/src/cpp/asm/configuration.asm @@ -0,0 +1,48 @@ +; File start: ..\src\configuration.h +RANDOMX_ARGON_MEMORY EQU 262144t +RANDOMX_ARGON_ITERATIONS EQU 3t +RANDOMX_ARGON_LANES EQU 1t +RANDOMX_ARGON_SALT TEXTEQU <"RandomX\x03"> +RANDOMX_CACHE_ACCESSES EQU 8t +RANDOMX_SUPERSCALAR_LATENCY EQU 170t +RANDOMX_DATASET_BASE_SIZE EQU 2147483648t +RANDOMX_DATASET_EXTRA_SIZE EQU 33554368t +RANDOMX_PROGRAM_SIZE EQU 256t +RANDOMX_PROGRAM_ITERATIONS EQU 2048t +RANDOMX_PROGRAM_COUNT EQU 8t +RANDOMX_SCRATCHPAD_L3 EQU 2097152t +RANDOMX_SCRATCHPAD_L2 EQU 262144t +RANDOMX_SCRATCHPAD_L1 EQU 16384t +RANDOMX_JUMP_BITS EQU 8t +RANDOMX_JUMP_OFFSET EQU 8t +RANDOMX_FREQ_IADD_RS EQU 16t +RANDOMX_FREQ_IADD_M EQU 7t +RANDOMX_FREQ_ISUB_R EQU 16t +RANDOMX_FREQ_ISUB_M EQU 7t +RANDOMX_FREQ_IMUL_R EQU 16t +RANDOMX_FREQ_IMUL_M EQU 4t +RANDOMX_FREQ_IMULH_R EQU 4t +RANDOMX_FREQ_IMULH_M EQU 1t +RANDOMX_FREQ_ISMULH_R EQU 4t +RANDOMX_FREQ_ISMULH_M EQU 1t +RANDOMX_FREQ_IMUL_RCP EQU 8t +RANDOMX_FREQ_INEG_R EQU 2t +RANDOMX_FREQ_IXOR_R EQU 15t +RANDOMX_FREQ_IXOR_M EQU 5t +RANDOMX_FREQ_IROR_R EQU 8t +RANDOMX_FREQ_IROL_R EQU 2t +RANDOMX_FREQ_ISWAP_R EQU 4t +RANDOMX_FREQ_FSWAP_R EQU 4t +RANDOMX_FREQ_FADD_R EQU 16t +RANDOMX_FREQ_FADD_M EQU 5t +RANDOMX_FREQ_FSUB_R EQU 16t +RANDOMX_FREQ_FSUB_M EQU 5t +RANDOMX_FREQ_FSCAL_R EQU 6t +RANDOMX_FREQ_FMUL_R EQU 32t +RANDOMX_FREQ_FDIV_M EQU 4t +RANDOMX_FREQ_FSQRT_R EQU 6t +RANDOMX_FREQ_CBRANCH EQU 25t +RANDOMX_FREQ_CFROUND EQU 1t +RANDOMX_FREQ_ISTORE EQU 16t +RANDOMX_FREQ_NOP EQU 0t +; File end: ..\src\configuration.h diff --git a/miner/src/cpp/asm/program_epilogue_linux.inc b/miner/src/cpp/asm/program_epilogue_linux.inc new file mode 100644 index 0000000..e311c98 --- /dev/null +++ b/miner/src/cpp/asm/program_epilogue_linux.inc @@ -0,0 +1,10 @@ + ;# restore callee-saved registers - System V AMD64 ABI + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + + ;# program finished + ret 0 \ No newline at end of file diff --git a/miner/src/cpp/asm/program_epilogue_store.inc b/miner/src/cpp/asm/program_epilogue_store.inc new file mode 100644 index 0000000..1b5db8e --- /dev/null +++ b/miner/src/cpp/asm/program_epilogue_store.inc @@ -0,0 +1,19 @@ + ;# save VM register values + pop rcx + mov qword ptr [rcx+0], r8 + mov qword ptr [rcx+8], r9 + mov qword ptr [rcx+16], r10 + mov qword ptr [rcx+24], r11 + mov qword ptr [rcx+32], r12 + mov qword ptr [rcx+40], r13 + mov qword ptr [rcx+48], r14 + mov qword ptr [rcx+56], r15 + movdqa xmmword ptr [rcx+64], xmm0 + movdqa xmmword ptr [rcx+80], xmm1 + movdqa xmmword ptr [rcx+96], xmm2 + movdqa xmmword ptr [rcx+112], xmm3 + lea rcx, [rcx+64] + movdqa xmmword ptr [rcx+64], xmm4 + movdqa xmmword ptr [rcx+80], xmm5 + movdqa xmmword ptr [rcx+96], xmm6 + movdqa xmmword ptr [rcx+112], xmm7 \ No newline at end of file diff --git a/miner/src/cpp/asm/program_epilogue_win64.inc b/miner/src/cpp/asm/program_epilogue_win64.inc new file mode 100644 index 0000000..b651b3d --- /dev/null +++ b/miner/src/cpp/asm/program_epilogue_win64.inc @@ -0,0 +1,24 @@ + ;# restore callee-saved registers - Microsoft x64 calling convention + movdqu xmm15, xmmword ptr [rsp] + movdqu xmm14, xmmword ptr [rsp+16] + movdqu xmm13, xmmword ptr [rsp+32] + movdqu xmm12, xmmword ptr [rsp+48] + movdqu xmm11, xmmword ptr [rsp+64] + add rsp, 80 + movdqu xmm10, xmmword ptr [rsp] + movdqu xmm9, xmmword ptr [rsp+16] + movdqu xmm8, xmmword ptr [rsp+32] + movdqu xmm7, xmmword ptr [rsp+48] + movdqu xmm6, xmmword ptr [rsp+64] + add rsp, 80 + pop r15 + pop r14 + pop r13 + pop r12 + pop rsi + pop rdi + pop rbp + pop rbx + + ;# program finished + ret diff --git a/miner/src/cpp/asm/program_loop_load.inc b/miner/src/cpp/asm/program_loop_load.inc new file mode 100644 index 0000000..21ba439 --- /dev/null +++ b/miner/src/cpp/asm/program_loop_load.inc @@ -0,0 +1,28 @@ + lea rcx, [rsi+rax] + push rcx + xor r8, qword ptr [rcx+0] + xor r9, qword ptr [rcx+8] + xor r10, qword ptr [rcx+16] + xor r11, qword ptr [rcx+24] + xor r12, qword ptr [rcx+32] + xor r13, qword ptr [rcx+40] + xor r14, qword ptr [rcx+48] + xor r15, qword ptr [rcx+56] + lea rcx, [rsi+rdx] + push rcx + cvtdq2pd xmm0, qword ptr [rcx+0] + cvtdq2pd xmm1, qword ptr [rcx+8] + cvtdq2pd xmm2, qword ptr [rcx+16] + cvtdq2pd xmm3, qword ptr [rcx+24] + cvtdq2pd xmm4, qword ptr [rcx+32] + cvtdq2pd xmm5, qword ptr [rcx+40] + cvtdq2pd xmm6, qword ptr [rcx+48] + cvtdq2pd xmm7, qword ptr [rcx+56] + andps xmm4, xmm13 + andps xmm5, xmm13 + andps xmm6, xmm13 + andps xmm7, xmm13 + orps xmm4, xmm14 + orps xmm5, xmm14 + orps xmm6, xmm14 + orps xmm7, xmm14 diff --git a/miner/src/cpp/asm/program_loop_store.inc b/miner/src/cpp/asm/program_loop_store.inc new file mode 100644 index 0000000..a3bb957 --- /dev/null +++ b/miner/src/cpp/asm/program_loop_store.inc @@ -0,0 +1,18 @@ + pop rcx + mov qword ptr [rcx+0], r8 + mov qword ptr [rcx+8], r9 + mov qword ptr [rcx+16], r10 + mov qword ptr [rcx+24], r11 + mov qword ptr [rcx+32], r12 + mov qword ptr [rcx+40], r13 + mov qword ptr [rcx+48], r14 + mov qword ptr [rcx+56], r15 + pop rcx + xorpd xmm0, xmm4 + xorpd xmm1, xmm5 + xorpd xmm2, xmm6 + xorpd xmm3, xmm7 + movapd xmmword ptr [rcx+0], xmm0 + movapd xmmword ptr [rcx+16], xmm1 + movapd xmmword ptr [rcx+32], xmm2 + movapd xmmword ptr [rcx+48], xmm3 diff --git a/miner/src/cpp/asm/program_prologue_linux.inc b/miner/src/cpp/asm/program_prologue_linux.inc new file mode 100644 index 0000000..faff324 --- /dev/null +++ b/miner/src/cpp/asm/program_prologue_linux.inc @@ -0,0 +1,34 @@ + ;# callee-saved registers - System V AMD64 ABI + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + + ;# function arguments + mov rbx, rcx ;# loop counter + push rdi ;# RegisterFile& registerFile + mov rcx, rdi + mov rbp, qword ptr [rsi] ;# "mx", "ma" + mov rdi, qword ptr [rsi+8] ;# uint8_t* dataset + mov rsi, rdx ;# uint8_t* scratchpad + + mov rax, rbp + + ;# zero integer registers + xor r8, r8 + xor r9, r9 + xor r10, r10 + xor r11, r11 + xor r12, r12 + xor r13, r13 + xor r14, r14 + xor r15, r15 + + ;# load constant registers + lea rcx, [rcx+120] + movapd xmm8, xmmword ptr [rcx+72] + movapd xmm9, xmmword ptr [rcx+88] + movapd xmm10, xmmword ptr [rcx+104] + movapd xmm11, xmmword ptr [rcx+120] diff --git a/miner/src/cpp/asm/program_prologue_win64.inc b/miner/src/cpp/asm/program_prologue_win64.inc new file mode 100644 index 0000000..5f4f0bf --- /dev/null +++ b/miner/src/cpp/asm/program_prologue_win64.inc @@ -0,0 +1,47 @@ + ;# callee-saved registers - Microsoft x64 calling convention + push rbx + push rbp + push rdi + push rsi + push r12 + push r13 + push r14 + push r15 + sub rsp, 80 + movdqu xmmword ptr [rsp+64], xmm6 + movdqu xmmword ptr [rsp+48], xmm7 + movdqu xmmword ptr [rsp+32], xmm8 + movdqu xmmword ptr [rsp+16], xmm9 + movdqu xmmword ptr [rsp+0], xmm10 + sub rsp, 80 + movdqu xmmword ptr [rsp+64], xmm11 + movdqu xmmword ptr [rsp+48], xmm12 + movdqu xmmword ptr [rsp+32], xmm13 + movdqu xmmword ptr [rsp+16], xmm14 + movdqu xmmword ptr [rsp+0], xmm15 + + ;# function arguments + push rcx ;# RegisterFile& registerFile + mov rbp, qword ptr [rdx] ;# "mx", "ma" + mov rdi, qword ptr [rdx+8] ;# uint8_t* dataset + mov rsi, r8 ;# uint8_t* scratchpad + mov rbx, r9 ;# loop counter + + mov rax, rbp + + ;# zero integer registers + xor r8, r8 + xor r9, r9 + xor r10, r10 + xor r11, r11 + xor r12, r12 + xor r13, r13 + xor r14, r14 + xor r15, r15 + + ;# load constant registers + lea rcx, [rcx+120] + movapd xmm8, xmmword ptr [rcx+72] + movapd xmm9, xmmword ptr [rcx+88] + movapd xmm10, xmmword ptr [rcx+104] + movapd xmm11, xmmword ptr [rcx+120] diff --git a/miner/src/cpp/asm/program_read_dataset.inc b/miner/src/cpp/asm/program_read_dataset.inc new file mode 100644 index 0000000..a7f66dd --- /dev/null +++ b/miner/src/cpp/asm/program_read_dataset.inc @@ -0,0 +1,17 @@ + xor rbp, rax ;# modify "mx" + mov edx, ebp ;# edx = mx + and edx, RANDOMX_DATASET_BASE_MASK + prefetchnta byte ptr [rdi+rdx] + ror rbp, 32 ;# swap "ma" and "mx" + mov edx, ebp ;# edx = ma + and edx, RANDOMX_DATASET_BASE_MASK + lea rcx, [rdi+rdx] ;# dataset cache line + xor r8, qword ptr [rcx+0] + xor r9, qword ptr [rcx+8] + xor r10, qword ptr [rcx+16] + xor r11, qword ptr [rcx+24] + xor r12, qword ptr [rcx+32] + xor r13, qword ptr [rcx+40] + xor r14, qword ptr [rcx+48] + xor r15, qword ptr [rcx+56] + \ No newline at end of file diff --git a/miner/src/cpp/asm/program_read_dataset_sshash_fin.inc b/miner/src/cpp/asm/program_read_dataset_sshash_fin.inc new file mode 100644 index 0000000..b390c8c --- /dev/null +++ b/miner/src/cpp/asm/program_read_dataset_sshash_fin.inc @@ -0,0 +1,10 @@ + mov rbx, qword ptr [rsp+64] + xor r8, qword ptr [rsp+56] + xor r9, qword ptr [rsp+48] + xor r10, qword ptr [rsp+40] + xor r11, qword ptr [rsp+32] + xor r12, qword ptr [rsp+24] + xor r13, qword ptr [rsp+16] + xor r14, qword ptr [rsp+8] + xor r15, qword ptr [rsp+0] + add rsp, 72 \ No newline at end of file diff --git a/miner/src/cpp/asm/program_read_dataset_sshash_init.inc b/miner/src/cpp/asm/program_read_dataset_sshash_init.inc new file mode 100644 index 0000000..6afea74 --- /dev/null +++ b/miner/src/cpp/asm/program_read_dataset_sshash_init.inc @@ -0,0 +1,17 @@ + sub rsp, 72 + mov qword ptr [rsp+64], rbx + mov qword ptr [rsp+56], r8 + mov qword ptr [rsp+48], r9 + mov qword ptr [rsp+40], r10 + mov qword ptr [rsp+32], r11 + mov qword ptr [rsp+24], r12 + mov qword ptr [rsp+16], r13 + mov qword ptr [rsp+8], r14 + mov qword ptr [rsp+0], r15 + xor rbp, rax ;# modify "mx" + ror rbp, 32 ;# swap "ma" and "mx" + mov ebx, ebp ;# ecx = ma + and ebx, RANDOMX_DATASET_BASE_MASK + shr ebx, 6 ;# ebx = Dataset block number + ;# add ebx, datasetOffset / 64 + ;# call 32768 \ No newline at end of file diff --git a/miner/src/cpp/asm/program_sshash_constants.inc b/miner/src/cpp/asm/program_sshash_constants.inc new file mode 100644 index 0000000..6909c97 --- /dev/null +++ b/miner/src/cpp/asm/program_sshash_constants.inc @@ -0,0 +1,24 @@ +r0_mul: + ;#/ 6364136223846793005 + db 45, 127, 149, 76, 45, 244, 81, 88 +r1_add: + ;#/ 9298411001130361340 + db 252, 161, 245, 89, 138, 151, 10, 129 +r2_add: + ;#/ 12065312585734608966 + db 70, 216, 194, 56, 223, 153, 112, 167 +r3_add: + ;#/ 9306329213124626780 + db 92, 73, 34, 191, 28, 185, 38, 129 +r4_add: + ;#/ 5281919268842080866 + db 98, 138, 159, 23, 151, 37, 77, 73 +r5_add: + ;#/ 10536153434571861004 + db 12, 236, 170, 206, 185, 239, 55, 146 +r6_add: + ;#/ 3398623926847679864 + db 120, 45, 230, 108, 116, 86, 42, 47 +r7_add: + ;#/ 9549104520008361294 + db 78, 229, 44, 182, 247, 59, 133, 132 \ No newline at end of file diff --git a/miner/src/cpp/asm/program_sshash_load.inc b/miner/src/cpp/asm/program_sshash_load.inc new file mode 100644 index 0000000..e1486fb --- /dev/null +++ b/miner/src/cpp/asm/program_sshash_load.inc @@ -0,0 +1,8 @@ + xor r8, qword ptr [rbx+0] + xor r9, qword ptr [rbx+8] + xor r10, qword ptr [rbx+16] + xor r11, qword ptr [rbx+24] + xor r12, qword ptr [rbx+32] + xor r13, qword ptr [rbx+40] + xor r14, qword ptr [rbx+48] + xor r15, qword ptr [rbx+56] \ No newline at end of file diff --git a/miner/src/cpp/asm/program_sshash_prefetch.inc b/miner/src/cpp/asm/program_sshash_prefetch.inc new file mode 100644 index 0000000..8caa33e --- /dev/null +++ b/miner/src/cpp/asm/program_sshash_prefetch.inc @@ -0,0 +1,4 @@ + and rbx, RANDOMX_CACHE_MASK + shl rbx, 6 + add rbx, rdi + prefetchnta byte ptr [rbx] \ No newline at end of file diff --git a/miner/src/cpp/asm/program_xmm_constants.inc b/miner/src/cpp/asm/program_xmm_constants.inc new file mode 100644 index 0000000..419a023 --- /dev/null +++ b/miner/src/cpp/asm/program_xmm_constants.inc @@ -0,0 +1,6 @@ +mantissaMask: + db 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 0 +exp240: + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +scaleMask: + db 0, 0, 0, 0, 0, 0, 240, 128, 0, 0, 0, 0, 0, 0, 240, 128 \ No newline at end of file diff --git a/miner/src/cpp/asm/randomx_reciprocal.inc b/miner/src/cpp/asm/randomx_reciprocal.inc new file mode 100644 index 0000000..862afa6 --- /dev/null +++ b/miner/src/cpp/asm/randomx_reciprocal.inc @@ -0,0 +1,7 @@ + mov edx, 1 + mov r8, rcx + xor eax, eax + bsr rcx, rcx + shl rdx, cl + div r8 + ret \ No newline at end of file diff --git a/miner/src/cpp/assembly_generator_x86.cpp b/miner/src/cpp/assembly_generator_x86.cpp new file mode 100644 index 0000000..dcef430 --- /dev/null +++ b/miner/src/cpp/assembly_generator_x86.cpp @@ -0,0 +1,611 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include "assembly_generator_x86.hpp" +#include "common.hpp" +#include "reciprocal.h" +#include "program.hpp" +#include "superscalar.hpp" + +namespace randomx { + + static const char* regR[] = { "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15" }; + static const char* regR32[] = { "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d" }; + static const char* regFE[] = { "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7" }; + static const char* regF[] = { "xmm0", "xmm1", "xmm2", "xmm3" }; + static const char* regE[] = { "xmm4", "xmm5", "xmm6", "xmm7" }; + static const char* regA[] = { "xmm8", "xmm9", "xmm10", "xmm11" }; + + static const char* tempRegx = "xmm12"; + static const char* mantissaMaskReg = "xmm13"; + static const char* exponentMaskReg = "xmm14"; + static const char* scaleMaskReg = "xmm15"; + static const char* regIc = "rbx"; + static const char* regIc32 = "ebx"; + static const char* regIc8 = "bl"; + static const char* regScratchpadAddr = "rsi"; + + void AssemblyGeneratorX86::generateProgram(Program& prog) { + for (unsigned i = 0; i < RegistersCount; ++i) { + registerUsage[i] = -1; + } + asmCode.str(std::string()); //clear + for (unsigned i = 0; i < prog.getSize(); ++i) { + asmCode << "randomx_isn_" << i << ":" << std::endl; + Instruction& instr = prog(i); + instr.src %= RegistersCount; + instr.dst %= RegistersCount; + generateCode(instr, i); + } + } + + void AssemblyGeneratorX86::generateAsm(SuperscalarProgram& prog) { + asmCode.str(std::string()); //clear +#ifdef RANDOMX_ALIGN + asmCode << "ALIGN 16" << std::endl; +#endif + for (unsigned i = 0; i < prog.getSize(); ++i) { + Instruction& instr = prog(i); + switch ((SuperscalarInstructionType)instr.opcode) + { + case SuperscalarInstructionType::ISUB_R: + asmCode << "sub " << regR[instr.dst] << ", " << regR[instr.src] << std::endl; + break; + case SuperscalarInstructionType::IXOR_R: + asmCode << "xor " << regR[instr.dst] << ", " << regR[instr.src] << std::endl; + break; + case SuperscalarInstructionType::IADD_RS: + asmCode << "lea " << regR[instr.dst] << ", [" << regR[instr.dst] << "+" << regR[instr.src] << "*" << (1 << (instr.getModShift())) << "]" << std::endl; + break; + case SuperscalarInstructionType::IMUL_R: + asmCode << "imul " << regR[instr.dst] << ", " << regR[instr.src] << std::endl; + break; + case SuperscalarInstructionType::IROR_C: + asmCode << "ror " << regR[instr.dst] << ", " << instr.getImm32() << std::endl; + break; + case SuperscalarInstructionType::IADD_C7: + asmCode << "add " << regR[instr.dst] << ", " << (int32_t)instr.getImm32() << std::endl; + break; + case SuperscalarInstructionType::IXOR_C7: + asmCode << "xor " << regR[instr.dst] << ", " << (int32_t)instr.getImm32() << std::endl; + break; + case SuperscalarInstructionType::IADD_C8: + asmCode << "add " << regR[instr.dst] << ", " << (int32_t)instr.getImm32() << std::endl; +#ifdef RANDOMX_ALIGN + asmCode << "nop" << std::endl; +#endif + break; + case SuperscalarInstructionType::IXOR_C8: + asmCode << "xor " << regR[instr.dst] << ", " << (int32_t)instr.getImm32() << std::endl; +#ifdef RANDOMX_ALIGN + asmCode << "nop" << std::endl; +#endif + break; + case SuperscalarInstructionType::IADD_C9: + asmCode << "add " << regR[instr.dst] << ", " << (int32_t)instr.getImm32() << std::endl; +#ifdef RANDOMX_ALIGN + asmCode << "xchg ax, ax ;nop" << std::endl; +#endif + break; + case SuperscalarInstructionType::IXOR_C9: + asmCode << "xor " << regR[instr.dst] << ", " << (int32_t)instr.getImm32() << std::endl; +#ifdef RANDOMX_ALIGN + asmCode << "xchg ax, ax ;nop" << std::endl; +#endif + break; + case SuperscalarInstructionType::IMULH_R: + asmCode << "mov rax, " << regR[instr.dst] << std::endl; + asmCode << "mul " << regR[instr.src] << std::endl; + asmCode << "mov " << regR[instr.dst] << ", rdx" << std::endl; + break; + case SuperscalarInstructionType::ISMULH_R: + asmCode << "mov rax, " << regR[instr.dst] << std::endl; + asmCode << "imul " << regR[instr.src] << std::endl; + asmCode << "mov " << regR[instr.dst] << ", rdx" << std::endl; + break; + case SuperscalarInstructionType::IMUL_RCP: + asmCode << "mov rax, " << (int64_t)randomx_reciprocal(instr.getImm32()) << std::endl; + asmCode << "imul " << regR[instr.dst] << ", rax" << std::endl; + break; + default: + UNREACHABLE; + } + } + } + + void AssemblyGeneratorX86::generateC(SuperscalarProgram& prog) { + asmCode.str(std::string()); //clear + asmCode << "#include " << std::endl; + asmCode << "#if defined(__SIZEOF_INT128__)" << std::endl; + asmCode << " static inline uint64_t mulh(uint64_t a, uint64_t b) {" << std::endl; + asmCode << " return ((unsigned __int128)a * b) >> 64;" << std::endl; + asmCode << " }" << std::endl; + asmCode << " static inline int64_t smulh(int64_t a, int64_t b) {" << std::endl; + asmCode << " return ((__int128)a * b) >> 64;" << std::endl; + asmCode << " }" << std::endl; + asmCode << " #define HAVE_MULH" << std::endl; + asmCode << " #define HAVE_SMULH" << std::endl; + asmCode << "#endif" << std::endl; + asmCode << "#if defined(_MSC_VER)" << std::endl; + asmCode << " #define HAS_VALUE(X) X ## 0" << std::endl; + asmCode << " #define EVAL_DEFINE(X) HAS_VALUE(X)" << std::endl; + asmCode << " #include " << std::endl; + asmCode << " #include " << std::endl; + asmCode << " static __inline uint64_t rotr(uint64_t x , int c) {" << std::endl; + asmCode << " return _rotr64(x, c);" << std::endl; + asmCode << " }" << std::endl; + asmCode << " #define HAVE_ROTR" << std::endl; + asmCode << " #if EVAL_DEFINE(__MACHINEARM64_X64(1))" << std::endl; + asmCode << " static __inline uint64_t mulh(uint64_t a, uint64_t b) {" << std::endl; + asmCode << " return __umulh(a, b);" << std::endl; + asmCode << " }" << std::endl; + asmCode << " #define HAVE_MULH" << std::endl; + asmCode << " #endif" << std::endl; + asmCode << " #if EVAL_DEFINE(__MACHINEX64(1))" << std::endl; + asmCode << " static __inline int64_t smulh(int64_t a, int64_t b) {" << std::endl; + asmCode << " int64_t hi;" << std::endl; + asmCode << " _mul128(a, b, &hi);" << std::endl; + asmCode << " return hi;" << std::endl; + asmCode << " }" << std::endl; + asmCode << " #define HAVE_SMULH" << std::endl; + asmCode << " #endif" << std::endl; + asmCode << "#endif" << std::endl; + asmCode << "#ifndef HAVE_ROTR" << std::endl; + asmCode << " static inline uint64_t rotr(uint64_t a, int b) {" << std::endl; + asmCode << " return (a >> b) | (a << (64 - b));" << std::endl; + asmCode << " }" << std::endl; + asmCode << " #define HAVE_ROTR" << std::endl; + asmCode << "#endif" << std::endl; + asmCode << "#if !defined(HAVE_MULH) || !defined(HAVE_SMULH) || !defined(HAVE_ROTR)" << std::endl; + asmCode << " #error \"Required functions are not defined\"" << std::endl; + asmCode << "#endif" << std::endl; + asmCode << "void superScalar(uint64_t r[8]) {" << std::endl; + asmCode << "uint64_t r8 = r[0], r9 = r[1], r10 = r[2], r11 = r[3], r12 = r[4], r13 = r[5], r14 = r[6], r15 = r[7];" << std::endl; + for (unsigned i = 0; i < prog.getSize(); ++i) { + Instruction& instr = prog(i); + switch ((SuperscalarInstructionType)instr.opcode) + { + case SuperscalarInstructionType::ISUB_R: + asmCode << regR[instr.dst] << " -= " << regR[instr.src] << ";" << std::endl; + break; + case SuperscalarInstructionType::IXOR_R: + asmCode << regR[instr.dst] << " ^= " << regR[instr.src] << ";" << std::endl; + break; + case SuperscalarInstructionType::IADD_RS: + asmCode << regR[instr.dst] << " += " << regR[instr.src] << "*" << (1 << (instr.getModShift())) << ";" << std::endl; + break; + case SuperscalarInstructionType::IMUL_R: + asmCode << regR[instr.dst] << " *= " << regR[instr.src] << ";" << std::endl; + break; + case SuperscalarInstructionType::IROR_C: + asmCode << regR[instr.dst] << " = rotr(" << regR[instr.dst] << ", " << instr.getImm32() << ");" << std::endl; + break; + case SuperscalarInstructionType::IADD_C7: + case SuperscalarInstructionType::IADD_C8: + case SuperscalarInstructionType::IADD_C9: + asmCode << regR[instr.dst] << " += " << (int32_t)instr.getImm32() << ";" << std::endl; + break; + case SuperscalarInstructionType::IXOR_C7: + case SuperscalarInstructionType::IXOR_C8: + case SuperscalarInstructionType::IXOR_C9: + asmCode << regR[instr.dst] << " ^= " << (int32_t)instr.getImm32() << ";" << std::endl; + break; + case SuperscalarInstructionType::IMULH_R: + asmCode << regR[instr.dst] << " = mulh(" << regR[instr.dst] << ", " << regR[instr.src] << ");" << std::endl; + break; + case SuperscalarInstructionType::ISMULH_R: + asmCode << regR[instr.dst] << " = smulh(" << regR[instr.dst] << ", " << regR[instr.src] << ");" << std::endl; + break; + case SuperscalarInstructionType::IMUL_RCP: + asmCode << regR[instr.dst] << " *= " << (int64_t)randomx_reciprocal(instr.getImm32()) << ";" << std::endl; + break; + default: + UNREACHABLE; + } + } + asmCode << "r[0] = r8; r[1] = r9; r[2] = r10; r[3] = r11; r[4] = r12; r[5] = r13; r[6] = r14; r[7] = r15;" << std::endl; + asmCode << "}" << std::endl; + } + + void AssemblyGeneratorX86::traceint(Instruction& instr) { + if (trace) { + asmCode << "\tpush " << regR[instr.dst] << std::endl; + } + } + + void AssemblyGeneratorX86::traceflt(Instruction& instr) { + if (trace) { + asmCode << "\tpush 0" << std::endl; + } + } + + void AssemblyGeneratorX86::tracenop(Instruction& instr) { + if (trace) { + asmCode << "\tpush 0" << std::endl; + } + } + + void AssemblyGeneratorX86::generateCode(Instruction& instr, int i) { + asmCode << "\t; " << instr; + auto generator = engine[instr.opcode]; + (this->*generator)(instr, i); + } + + void AssemblyGeneratorX86::genAddressReg(Instruction& instr, const char* reg = "eax") { + asmCode << "\tlea " << reg << ", [" << regR32[instr.src] << std::showpos << (int32_t)instr.getImm32() << std::noshowpos << "]" << std::endl; + asmCode << "\tand " << reg << ", " << ((instr.getModMem()) ? ScratchpadL1Mask : ScratchpadL2Mask) << std::endl; + } + + void AssemblyGeneratorX86::genAddressRegDst(Instruction& instr, int maskAlign = 8) { + asmCode << "\tlea eax, [" << regR32[instr.dst] << std::showpos << (int32_t)instr.getImm32() << std::noshowpos << "]" << std::endl; + int mask; + if (instr.getModCond() < StoreL3Condition) { + mask = instr.getModMem() ? ScratchpadL1Mask : ScratchpadL2Mask; + } + else { + mask = ScratchpadL3Mask; + } + asmCode << "\tand eax" << ", " << (mask & (-maskAlign)) << std::endl; + } + + int32_t AssemblyGeneratorX86::genAddressImm(Instruction& instr) { + return (int32_t)instr.getImm32() & ScratchpadL3Mask; + } + + void AssemblyGeneratorX86::h_IADD_RS(Instruction& instr, int i) { + registerUsage[instr.dst] = i; + if(instr.dst == RegisterNeedsDisplacement) + asmCode << "\tlea " << regR[instr.dst] << ", [" << regR[instr.dst] << "+" << regR[instr.src] << "*" << (1 << (instr.getModShift())) << std::showpos << (int32_t)instr.getImm32() << std::noshowpos << "]" << std::endl; + else + asmCode << "\tlea " << regR[instr.dst] << ", [" << regR[instr.dst] << "+" << regR[instr.src] << "*" << (1 << (instr.getModShift())) << "]" << std::endl; + traceint(instr); + } + + void AssemblyGeneratorX86::h_IADD_M(Instruction& instr, int i) { + registerUsage[instr.dst] = i; + if (instr.src != instr.dst) { + genAddressReg(instr); + asmCode << "\tadd " << regR[instr.dst] << ", qword ptr [" << regScratchpadAddr << "+rax]" << std::endl; + } + else { + asmCode << "\tadd " << regR[instr.dst] << ", qword ptr [" << regScratchpadAddr << "+" << genAddressImm(instr) << "]" << std::endl; + } + traceint(instr); + } + + void AssemblyGeneratorX86::h_ISUB_R(Instruction& instr, int i) { + registerUsage[instr.dst] = i; + if (instr.src != instr.dst) { + asmCode << "\tsub " << regR[instr.dst] << ", " << regR[instr.src] << std::endl; + } + else { + asmCode << "\tsub " << regR[instr.dst] << ", " << (int32_t)instr.getImm32() << std::endl; + } + traceint(instr); + } + + void AssemblyGeneratorX86::h_ISUB_M(Instruction& instr, int i) { + registerUsage[instr.dst] = i; + if (instr.src != instr.dst) { + genAddressReg(instr); + asmCode << "\tsub " << regR[instr.dst] << ", qword ptr [" << regScratchpadAddr << "+rax]" << std::endl; + } + else { + asmCode << "\tsub " << regR[instr.dst] << ", qword ptr [" << regScratchpadAddr << "+" << genAddressImm(instr) << "]" << std::endl; + } + traceint(instr); + } + + void AssemblyGeneratorX86::h_IMUL_R(Instruction& instr, int i) { + registerUsage[instr.dst] = i; + if (instr.src != instr.dst) { + asmCode << "\timul " << regR[instr.dst] << ", " << regR[instr.src] << std::endl; + } + else { + asmCode << "\timul " << regR[instr.dst] << ", " << (int32_t)instr.getImm32() << std::endl; + } + traceint(instr); + } + + void AssemblyGeneratorX86::h_IMUL_M(Instruction& instr, int i) { + registerUsage[instr.dst] = i; + if (instr.src != instr.dst) { + genAddressReg(instr); + asmCode << "\timul " << regR[instr.dst] << ", qword ptr [" << regScratchpadAddr << "+rax]" << std::endl; + } + else { + asmCode << "\timul " << regR[instr.dst] << ", qword ptr [" << regScratchpadAddr << "+" << genAddressImm(instr) << "]" << std::endl; + } + traceint(instr); + } + + void AssemblyGeneratorX86::h_IMULH_R(Instruction& instr, int i) { + registerUsage[instr.dst] = i; + asmCode << "\tmov rax, " << regR[instr.dst] << std::endl; + asmCode << "\tmul " << regR[instr.src] << std::endl; + asmCode << "\tmov " << regR[instr.dst] << ", rdx" << std::endl; + traceint(instr); + } + + void AssemblyGeneratorX86::h_IMULH_M(Instruction& instr, int i) { + registerUsage[instr.dst] = i; + if (instr.src != instr.dst) { + genAddressReg(instr, "ecx"); + asmCode << "\tmov rax, " << regR[instr.dst] << std::endl; + asmCode << "\tmul qword ptr [" << regScratchpadAddr << "+rcx]" << std::endl; + } + else { + asmCode << "\tmov rax, " << regR[instr.dst] << std::endl; + asmCode << "\tmul qword ptr [" << regScratchpadAddr << "+" << genAddressImm(instr) << "]" << std::endl; + } + asmCode << "\tmov " << regR[instr.dst] << ", rdx" << std::endl; + traceint(instr); + } + + void AssemblyGeneratorX86::h_ISMULH_R(Instruction& instr, int i) { + registerUsage[instr.dst] = i; + asmCode << "\tmov rax, " << regR[instr.dst] << std::endl; + asmCode << "\timul " << regR[instr.src] << std::endl; + asmCode << "\tmov " << regR[instr.dst] << ", rdx" << std::endl; + traceint(instr); + } + + void AssemblyGeneratorX86::h_ISMULH_M(Instruction& instr, int i) { + registerUsage[instr.dst] = i; + if (instr.src != instr.dst) { + genAddressReg(instr, "ecx"); + asmCode << "\tmov rax, " << regR[instr.dst] << std::endl; + asmCode << "\timul qword ptr [" << regScratchpadAddr << "+rcx]" << std::endl; + } + else { + asmCode << "\tmov rax, " << regR[instr.dst] << std::endl; + asmCode << "\timul qword ptr [" << regScratchpadAddr << "+" << genAddressImm(instr) << "]" << std::endl; + } + asmCode << "\tmov " << regR[instr.dst] << ", rdx" << std::endl; + traceint(instr); + } + + void AssemblyGeneratorX86::h_INEG_R(Instruction& instr, int i) { + registerUsage[instr.dst] = i; + asmCode << "\tneg " << regR[instr.dst] << std::endl; + traceint(instr); + } + + void AssemblyGeneratorX86::h_IXOR_R(Instruction& instr, int i) { + registerUsage[instr.dst] = i; + if (instr.src != instr.dst) { + asmCode << "\txor " << regR[instr.dst] << ", " << regR[instr.src] << std::endl; + } + else { + asmCode << "\txor " << regR[instr.dst] << ", " << (int32_t)instr.getImm32() << std::endl; + } + traceint(instr); + } + + void AssemblyGeneratorX86::h_IXOR_M(Instruction& instr, int i) { + registerUsage[instr.dst] = i; + if (instr.src != instr.dst) { + genAddressReg(instr); + asmCode << "\txor " << regR[instr.dst] << ", qword ptr [" << regScratchpadAddr << "+rax]" << std::endl; + } + else { + asmCode << "\txor " << regR[instr.dst] << ", qword ptr [" << regScratchpadAddr << "+" << genAddressImm(instr) << "]" << std::endl; + } + traceint(instr); + } + + void AssemblyGeneratorX86::h_IROR_R(Instruction& instr, int i) { + registerUsage[instr.dst] = i; + if (instr.src != instr.dst) { + asmCode << "\tmov ecx, " << regR32[instr.src] << std::endl; + asmCode << "\tror " << regR[instr.dst] << ", cl" << std::endl; + } + else { + asmCode << "\tror " << regR[instr.dst] << ", " << (instr.getImm32() & 63) << std::endl; + } + traceint(instr); + } + + void AssemblyGeneratorX86::h_IROL_R(Instruction& instr, int i) { + registerUsage[instr.dst] = i; + if (instr.src != instr.dst) { + asmCode << "\tmov ecx, " << regR32[instr.src] << std::endl; + asmCode << "\trol " << regR[instr.dst] << ", cl" << std::endl; + } + else { + asmCode << "\trol " << regR[instr.dst] << ", " << (instr.getImm32() & 63) << std::endl; + } + traceint(instr); + } + + void AssemblyGeneratorX86::h_IMUL_RCP(Instruction& instr, int i) { + uint64_t divisor = instr.getImm32(); + if (!isZeroOrPowerOf2(divisor)) { + registerUsage[instr.dst] = i; + asmCode << "\tmov rax, " << randomx_reciprocal(divisor) << std::endl; + asmCode << "\timul " << regR[instr.dst] << ", rax" << std::endl; + traceint(instr); + } + else { + tracenop(instr); + } + } + + void AssemblyGeneratorX86::h_ISWAP_R(Instruction& instr, int i) { + if (instr.src != instr.dst) { + registerUsage[instr.dst] = i; + registerUsage[instr.src] = i; + asmCode << "\txchg " << regR[instr.dst] << ", " << regR[instr.src] << std::endl; + traceint(instr); + } + else { + tracenop(instr); + } + } + + void AssemblyGeneratorX86::h_FSWAP_R(Instruction& instr, int i) { + asmCode << "\tshufpd " << regFE[instr.dst] << ", " << regFE[instr.dst] << ", 1" << std::endl; + traceflt(instr); + } + + void AssemblyGeneratorX86::h_FADD_R(Instruction& instr, int i) { + instr.dst %= RegisterCountFlt; + instr.src %= RegisterCountFlt; + asmCode << "\taddpd " << regF[instr.dst] << ", " << regA[instr.src] << std::endl; + traceflt(instr); + } + + void AssemblyGeneratorX86::h_FADD_M(Instruction& instr, int i) { + instr.dst %= RegisterCountFlt; + genAddressReg(instr); + asmCode << "\tcvtdq2pd " << tempRegx << ", qword ptr [" << regScratchpadAddr << "+rax]" << std::endl; + asmCode << "\taddpd " << regF[instr.dst] << ", " << tempRegx << std::endl; + traceflt(instr); + } + + void AssemblyGeneratorX86::h_FSUB_R(Instruction& instr, int i) { + instr.dst %= RegisterCountFlt; + instr.src %= RegisterCountFlt; + asmCode << "\tsubpd " << regF[instr.dst] << ", " << regA[instr.src] << std::endl; + traceflt(instr); + } + + void AssemblyGeneratorX86::h_FSUB_M(Instruction& instr, int i) { + instr.dst %= RegisterCountFlt; + genAddressReg(instr); + asmCode << "\tcvtdq2pd " << tempRegx << ", qword ptr [" << regScratchpadAddr << "+rax]" << std::endl; + asmCode << "\tsubpd " << regF[instr.dst] << ", " << tempRegx << std::endl; + traceflt(instr); + } + + void AssemblyGeneratorX86::h_FSCAL_R(Instruction& instr, int i) { + instr.dst %= RegisterCountFlt; + asmCode << "\txorps " << regF[instr.dst] << ", " << scaleMaskReg << std::endl; + traceflt(instr); + } + + void AssemblyGeneratorX86::h_FMUL_R(Instruction& instr, int i) { + instr.dst %= RegisterCountFlt; + instr.src %= RegisterCountFlt; + asmCode << "\tmulpd " << regE[instr.dst] << ", " << regA[instr.src] << std::endl; + traceflt(instr); + } + + void AssemblyGeneratorX86::h_FDIV_M(Instruction& instr, int i) { + instr.dst %= RegisterCountFlt; + genAddressReg(instr); + asmCode << "\tcvtdq2pd " << tempRegx << ", qword ptr [" << regScratchpadAddr << "+rax]" << std::endl; + asmCode << "\tandps " << tempRegx << ", " << mantissaMaskReg << std::endl; + asmCode << "\torps " << tempRegx << ", " << exponentMaskReg << std::endl; + asmCode << "\tdivpd " << regE[instr.dst] << ", " << tempRegx << std::endl; + traceflt(instr); + } + + void AssemblyGeneratorX86::h_FSQRT_R(Instruction& instr, int i) { + instr.dst %= RegisterCountFlt; + asmCode << "\tsqrtpd " << regE[instr.dst] << ", " << regE[instr.dst] << std::endl; + traceflt(instr); + } + + void AssemblyGeneratorX86::h_CFROUND(Instruction& instr, int i) { + asmCode << "\tmov rax, " << regR[instr.src] << std::endl; + int rotate = (13 - (instr.getImm32() & 63)) & 63; + if (rotate != 0) + asmCode << "\trol rax, " << rotate << std::endl; + asmCode << "\tand eax, 24576" << std::endl; + asmCode << "\tor eax, 40896" << std::endl; + asmCode << "\tpush rax" << std::endl; + asmCode << "\tldmxcsr dword ptr [rsp]" << std::endl; + asmCode << "\tpop rax" << std::endl; + tracenop(instr); + } + + void AssemblyGeneratorX86::h_CBRANCH(Instruction& instr, int i) { + int reg = instr.dst; + int target = registerUsage[reg] + 1; + int shift = instr.getModCond() + ConditionOffset; + int32_t imm = instr.getImm32() | (1L << shift); + if (ConditionOffset > 0 || shift > 0) + imm &= ~(1L << (shift - 1)); + asmCode << "\tadd " << regR[reg] << ", " << imm << std::endl; + asmCode << "\ttest " << regR[reg] << ", " << (ConditionMask << shift) << std::endl; + asmCode << "\tjz randomx_isn_" << target << std::endl; + //mark all registers as used + for (unsigned j = 0; j < RegistersCount; ++j) { + registerUsage[j] = i; + } + } + + void AssemblyGeneratorX86::h_ISTORE(Instruction& instr, int i) { + genAddressRegDst(instr); + asmCode << "\tmov qword ptr [" << regScratchpadAddr << "+rax], " << regR[instr.src] << std::endl; + tracenop(instr); + } + + void AssemblyGeneratorX86::h_NOP(Instruction& instr, int i) { + asmCode << "\tnop" << std::endl; + tracenop(instr); + } + +#include "instruction_weights.hpp" +#define INST_HANDLE(x) REPN(&AssemblyGeneratorX86::h_##x, WT(x)) + + InstructionGenerator AssemblyGeneratorX86::engine[256] = { + INST_HANDLE(IADD_RS) + INST_HANDLE(IADD_M) + INST_HANDLE(ISUB_R) + INST_HANDLE(ISUB_M) + INST_HANDLE(IMUL_R) + INST_HANDLE(IMUL_M) + INST_HANDLE(IMULH_R) + INST_HANDLE(IMULH_M) + INST_HANDLE(ISMULH_R) + INST_HANDLE(ISMULH_M) + INST_HANDLE(IMUL_RCP) + INST_HANDLE(INEG_R) + INST_HANDLE(IXOR_R) + INST_HANDLE(IXOR_M) + INST_HANDLE(IROR_R) + INST_HANDLE(IROL_R) + INST_HANDLE(ISWAP_R) + INST_HANDLE(FSWAP_R) + INST_HANDLE(FADD_R) + INST_HANDLE(FADD_M) + INST_HANDLE(FSUB_R) + INST_HANDLE(FSUB_M) + INST_HANDLE(FSCAL_R) + INST_HANDLE(FMUL_R) + INST_HANDLE(FDIV_M) + INST_HANDLE(FSQRT_R) + INST_HANDLE(CBRANCH) + INST_HANDLE(CFROUND) + INST_HANDLE(ISTORE) + INST_HANDLE(NOP) + }; +} \ No newline at end of file diff --git a/miner/src/cpp/assembly_generator_x86.hpp b/miner/src/cpp/assembly_generator_x86.hpp new file mode 100644 index 0000000..be7898b --- /dev/null +++ b/miner/src/cpp/assembly_generator_x86.hpp @@ -0,0 +1,94 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include "common.hpp" +#include + +namespace randomx { + + class Program; + class SuperscalarProgram; + class AssemblyGeneratorX86; + class Instruction; + + typedef void(AssemblyGeneratorX86::*InstructionGenerator)(Instruction&, int); + + class AssemblyGeneratorX86 { + public: + void generateProgram(Program& prog); + void generateAsm(SuperscalarProgram& prog); + void generateC(SuperscalarProgram& prog); + void printCode(std::ostream& os) { + os << asmCode.rdbuf(); + } + private: + void genAddressReg(Instruction&, const char*); + void genAddressRegDst(Instruction&, int); + int32_t genAddressImm(Instruction&); + void generateCode(Instruction&, int); + void traceint(Instruction&); + void traceflt(Instruction&); + void tracenop(Instruction&); + void h_IADD_RS(Instruction&, int); + void h_IADD_M(Instruction&, int); + void h_ISUB_R(Instruction&, int); + void h_ISUB_M(Instruction&, int); + void h_IMUL_R(Instruction&, int); + void h_IMUL_M(Instruction&, int); + void h_IMULH_R(Instruction&, int); + void h_IMULH_M(Instruction&, int); + void h_ISMULH_R(Instruction&, int); + void h_ISMULH_M(Instruction&, int); + void h_IMUL_RCP(Instruction&, int); + void h_INEG_R(Instruction&, int); + void h_IXOR_R(Instruction&, int); + void h_IXOR_M(Instruction&, int); + void h_IROR_R(Instruction&, int); + void h_IROL_R(Instruction&, int); + void h_ISWAP_R(Instruction&, int); + void h_FSWAP_R(Instruction&, int); + void h_FADD_R(Instruction&, int); + void h_FADD_M(Instruction&, int); + void h_FSUB_R(Instruction&, int); + void h_FSUB_M(Instruction&, int); + void h_FSCAL_R(Instruction&, int); + void h_FMUL_R(Instruction&, int); + void h_FDIV_M(Instruction&, int); + void h_FSQRT_R(Instruction&, int); + void h_CBRANCH(Instruction&, int); + void h_CFROUND(Instruction&, int); + void h_ISTORE(Instruction&, int); + void h_NOP(Instruction&, int); + + static InstructionGenerator engine[256]; + std::stringstream asmCode; + int registerUsage[RegistersCount]; + }; +} \ No newline at end of file diff --git a/miner/src/cpp/blake2-impl.h b/miner/src/cpp/blake2-impl.h new file mode 100644 index 0000000..6ab0124 --- /dev/null +++ b/miner/src/cpp/blake2-impl.h @@ -0,0 +1,76 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/* Original code from Argon2 reference source code package used under CC0 Licence + * https://github.com/P-H-C/phc-winner-argon2 + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves +*/ + +#ifndef PORTABLE_BLAKE2_IMPL_H +#define PORTABLE_BLAKE2_IMPL_H + +#include + +#include "endian.h" + +static FORCE_INLINE uint64_t load48(const void *src) { + const uint8_t *p = (const uint8_t *)src; + uint64_t w = *p++; + w |= (uint64_t)(*p++) << 8; + w |= (uint64_t)(*p++) << 16; + w |= (uint64_t)(*p++) << 24; + w |= (uint64_t)(*p++) << 32; + w |= (uint64_t)(*p++) << 40; + return w; +} + +static FORCE_INLINE void store48(void *dst, uint64_t w) { + uint8_t *p = (uint8_t *)dst; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; +} + +static FORCE_INLINE uint32_t rotr32(const uint32_t w, const unsigned c) { + return (w >> c) | (w << (32 - c)); +} + +static FORCE_INLINE uint64_t rotr64(const uint64_t w, const unsigned c) { + return (w >> c) | (w << (64 - c)); +} + +#endif diff --git a/miner/src/cpp/blake2.h b/miner/src/cpp/blake2.h new file mode 100644 index 0000000..9372c48 --- /dev/null +++ b/miner/src/cpp/blake2.h @@ -0,0 +1,116 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/* Original code from Argon2 reference source code package used under CC0 Licence + * https://github.com/P-H-C/phc-winner-argon2 + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves +*/ + +#ifndef PORTABLE_BLAKE2_H +#define PORTABLE_BLAKE2_H + +#include +#include + +#if defined(__cplusplus) +extern "C" { +#endif + + enum blake2b_constant { + BLAKE2B_BLOCKBYTES = 128, + BLAKE2B_OUTBYTES = 64, + BLAKE2B_KEYBYTES = 64, + BLAKE2B_SALTBYTES = 16, + BLAKE2B_PERSONALBYTES = 16 + }; + +#pragma pack(push, 1) + typedef struct __blake2b_param { + uint8_t digest_length; /* 1 */ + uint8_t key_length; /* 2 */ + uint8_t fanout; /* 3 */ + uint8_t depth; /* 4 */ + uint32_t leaf_length; /* 8 */ + uint64_t node_offset; /* 16 */ + uint8_t node_depth; /* 17 */ + uint8_t inner_length; /* 18 */ + uint8_t reserved[14]; /* 32 */ + uint8_t salt[BLAKE2B_SALTBYTES]; /* 48 */ + uint8_t personal[BLAKE2B_PERSONALBYTES]; /* 64 */ + } blake2b_param; +#pragma pack(pop) + + typedef struct __blake2b_state { + uint64_t h[8]; + uint64_t t[2]; + uint64_t f[2]; + uint8_t buf[BLAKE2B_BLOCKBYTES]; + unsigned buflen; + unsigned outlen; + uint8_t last_node; + } blake2b_state; + + /* Ensure param structs have not been wrongly padded */ + /* Poor man's static_assert */ + enum { + blake2_size_check_0 = 1 / !!(CHAR_BIT == 8), + blake2_size_check_2 = + 1 / !!(sizeof(blake2b_param) == sizeof(uint64_t) * CHAR_BIT) + }; + + //randomx namespace +#define blake2b_init randomx_blake2b_init +#define blake2b_init_key randomx_blake2b_init_key +#define blake2b_init_param randomx_blake2b_init_param +#define blake2b_update randomx_blake2b_update +#define blake2b_final randomx_blake2b_final +#define blake2b randomx_blake2b +#define blake2b_long randomx_blake2b_long + + /* Streaming API */ + int blake2b_init(blake2b_state *S, size_t outlen); + int blake2b_init_key(blake2b_state *S, size_t outlen, const void *key, + size_t keylen); + int blake2b_init_param(blake2b_state *S, const blake2b_param *P); + int blake2b_update(blake2b_state *S, const void *in, size_t inlen); + int blake2b_final(blake2b_state *S, void *out, size_t outlen); + + /* Simple API */ + int blake2b(void *out, size_t outlen, const void *in, size_t inlen, + const void *key, size_t keylen); + + /* Argon2 Team - Begin Code */ + int blake2b_long(void *out, size_t outlen, const void *in, size_t inlen); + /* Argon2 Team - End Code */ + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/miner/src/cpp/blake2_generator.cpp b/miner/src/cpp/blake2_generator.cpp new file mode 100644 index 0000000..04445a0 --- /dev/null +++ b/miner/src/cpp/blake2_generator.cpp @@ -0,0 +1,62 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include "blake2.h" +#include "endian.h" +#include "blake2_generator.hpp" + +namespace randomx { + + constexpr int maxSeedSize = 60; + + Blake2Generator::Blake2Generator(const void* seed, size_t seedSize, int nonce) : dataIndex(sizeof(data)) { + memset(data, 0, sizeof(data)); + memcpy(data, seed, seedSize > maxSeedSize ? maxSeedSize : seedSize); + store32(&data[maxSeedSize], nonce); + } + + uint8_t Blake2Generator::getByte() { + checkData(1); + return data[dataIndex++]; + } + + uint32_t Blake2Generator::getUInt32() { + checkData(4); + auto ret = load32(&data[dataIndex]); + dataIndex += 4; + return ret; + } + + void Blake2Generator::checkData(const size_t bytesNeeded) { + if (dataIndex + bytesNeeded > sizeof(data)) { + blake2b(data, sizeof(data), data, sizeof(data), nullptr, 0); + dataIndex = 0; + } + } +} \ No newline at end of file diff --git a/miner/src/cpp/blake2_generator.hpp b/miner/src/cpp/blake2_generator.hpp new file mode 100644 index 0000000..7ba3443 --- /dev/null +++ b/miner/src/cpp/blake2_generator.hpp @@ -0,0 +1,46 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include + +namespace randomx { + + class Blake2Generator { + public: + Blake2Generator(const void* seed, size_t seedSize, int nonce = 0); + uint8_t getByte(); + uint32_t getUInt32(); + private: + void checkData(const size_t); + + uint8_t data[64]; + size_t dataIndex; + }; +} \ No newline at end of file diff --git a/miner/src/cpp/blake2b.c b/miner/src/cpp/blake2b.c new file mode 100644 index 0000000..6f3ed99 --- /dev/null +++ b/miner/src/cpp/blake2b.c @@ -0,0 +1,409 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/* Original code from Argon2 reference source code package used under CC0 Licence + * https://github.com/P-H-C/phc-winner-argon2 + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves +*/ + +#include +#include +#include + +#include "blake2.h" +#include "blake2-impl.h" + +static const uint64_t blake2b_IV[8] = { + UINT64_C(0x6a09e667f3bcc908), UINT64_C(0xbb67ae8584caa73b), + UINT64_C(0x3c6ef372fe94f82b), UINT64_C(0xa54ff53a5f1d36f1), + UINT64_C(0x510e527fade682d1), UINT64_C(0x9b05688c2b3e6c1f), + UINT64_C(0x1f83d9abfb41bd6b), UINT64_C(0x5be0cd19137e2179) }; + +static const unsigned int blake2b_sigma[12][16] = { + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, + {14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3}, + {11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4}, + {7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8}, + {9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13}, + {2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9}, + {12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11}, + {13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10}, + {6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5}, + {10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, + {14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3}, +}; + +static FORCE_INLINE void blake2b_set_lastnode(blake2b_state *S) { + S->f[1] = (uint64_t)-1; +} + +static FORCE_INLINE void blake2b_set_lastblock(blake2b_state *S) { + if (S->last_node) { + blake2b_set_lastnode(S); + } + S->f[0] = (uint64_t)-1; +} + +static FORCE_INLINE void blake2b_increment_counter(blake2b_state *S, + uint64_t inc) { + S->t[0] += inc; + S->t[1] += (S->t[0] < inc); +} + +static FORCE_INLINE void blake2b_invalidate_state(blake2b_state *S) { + //clear_internal_memory(S, sizeof(*S)); /* wipe */ + blake2b_set_lastblock(S); /* invalidate for further use */ +} + +static FORCE_INLINE void blake2b_init0(blake2b_state *S) { + memset(S, 0, sizeof(*S)); + memcpy(S->h, blake2b_IV, sizeof(S->h)); +} + +int blake2b_init_param(blake2b_state *S, const blake2b_param *P) { + const unsigned char *p = (const unsigned char *)P; + unsigned int i; + + if (NULL == P || NULL == S) { + return -1; + } + + blake2b_init0(S); + /* IV XOR Parameter Block */ + for (i = 0; i < 8; ++i) { + S->h[i] ^= load64(&p[i * sizeof(S->h[i])]); + } + S->outlen = P->digest_length; + return 0; +} + +/* Sequential blake2b initialization */ +int blake2b_init(blake2b_state *S, size_t outlen) { + blake2b_param P; + + if (S == NULL) { + return -1; + } + + if ((outlen == 0) || (outlen > BLAKE2B_OUTBYTES)) { + blake2b_invalidate_state(S); + return -1; + } + + /* Setup Parameter Block for unkeyed BLAKE2 */ + P.digest_length = (uint8_t)outlen; + P.key_length = 0; + P.fanout = 1; + P.depth = 1; + P.leaf_length = 0; + P.node_offset = 0; + P.node_depth = 0; + P.inner_length = 0; + memset(P.reserved, 0, sizeof(P.reserved)); + memset(P.salt, 0, sizeof(P.salt)); + memset(P.personal, 0, sizeof(P.personal)); + + return blake2b_init_param(S, &P); +} + +int blake2b_init_key(blake2b_state *S, size_t outlen, const void *key, size_t keylen) { + blake2b_param P; + + if (S == NULL) { + return -1; + } + + if ((outlen == 0) || (outlen > BLAKE2B_OUTBYTES)) { + blake2b_invalidate_state(S); + return -1; + } + + if ((key == 0) || (keylen == 0) || (keylen > BLAKE2B_KEYBYTES)) { + blake2b_invalidate_state(S); + return -1; + } + + /* Setup Parameter Block for keyed BLAKE2 */ + P.digest_length = (uint8_t)outlen; + P.key_length = (uint8_t)keylen; + P.fanout = 1; + P.depth = 1; + P.leaf_length = 0; + P.node_offset = 0; + P.node_depth = 0; + P.inner_length = 0; + memset(P.reserved, 0, sizeof(P.reserved)); + memset(P.salt, 0, sizeof(P.salt)); + memset(P.personal, 0, sizeof(P.personal)); + + if (blake2b_init_param(S, &P) < 0) { + blake2b_invalidate_state(S); + return -1; + } + + { + uint8_t block[BLAKE2B_BLOCKBYTES]; + memset(block, 0, BLAKE2B_BLOCKBYTES); + memcpy(block, key, keylen); + blake2b_update(S, block, BLAKE2B_BLOCKBYTES); + /* Burn the key from stack */ + //clear_internal_memory(block, BLAKE2B_BLOCKBYTES); + } + return 0; +} + +static void blake2b_compress(blake2b_state *S, const uint8_t *block) { + uint64_t m[16]; + uint64_t v[16]; + unsigned int i, r; + + for (i = 0; i < 16; ++i) { + m[i] = load64(block + i * sizeof(m[i])); + } + + for (i = 0; i < 8; ++i) { + v[i] = S->h[i]; + } + + v[8] = blake2b_IV[0]; + v[9] = blake2b_IV[1]; + v[10] = blake2b_IV[2]; + v[11] = blake2b_IV[3]; + v[12] = blake2b_IV[4] ^ S->t[0]; + v[13] = blake2b_IV[5] ^ S->t[1]; + v[14] = blake2b_IV[6] ^ S->f[0]; + v[15] = blake2b_IV[7] ^ S->f[1]; + +#define G(r, i, a, b, c, d) \ + do { \ + a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \ + d = rotr64(d ^ a, 32); \ + c = c + d; \ + b = rotr64(b ^ c, 24); \ + a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \ + d = rotr64(d ^ a, 16); \ + c = c + d; \ + b = rotr64(b ^ c, 63); \ + } while ((void)0, 0) + +#define ROUND(r) \ + do { \ + G(r, 0, v[0], v[4], v[8], v[12]); \ + G(r, 1, v[1], v[5], v[9], v[13]); \ + G(r, 2, v[2], v[6], v[10], v[14]); \ + G(r, 3, v[3], v[7], v[11], v[15]); \ + G(r, 4, v[0], v[5], v[10], v[15]); \ + G(r, 5, v[1], v[6], v[11], v[12]); \ + G(r, 6, v[2], v[7], v[8], v[13]); \ + G(r, 7, v[3], v[4], v[9], v[14]); \ + } while ((void)0, 0) + + for (r = 0; r < 12; ++r) { + ROUND(r); + } + + for (i = 0; i < 8; ++i) { + S->h[i] = S->h[i] ^ v[i] ^ v[i + 8]; + } + +#undef G +#undef ROUND +} + +int blake2b_update(blake2b_state *S, const void *in, size_t inlen) { + const uint8_t *pin = (const uint8_t *)in; + + if (inlen == 0) { + return 0; + } + + /* Sanity check */ + if (S == NULL || in == NULL) { + return -1; + } + + /* Is this a reused state? */ + if (S->f[0] != 0) { + return -1; + } + + if (S->buflen + inlen > BLAKE2B_BLOCKBYTES) { + /* Complete current block */ + size_t left = S->buflen; + size_t fill = BLAKE2B_BLOCKBYTES - left; + memcpy(&S->buf[left], pin, fill); + blake2b_increment_counter(S, BLAKE2B_BLOCKBYTES); + blake2b_compress(S, S->buf); + S->buflen = 0; + inlen -= fill; + pin += fill; + /* Avoid buffer copies when possible */ + while (inlen > BLAKE2B_BLOCKBYTES) { + blake2b_increment_counter(S, BLAKE2B_BLOCKBYTES); + blake2b_compress(S, pin); + inlen -= BLAKE2B_BLOCKBYTES; + pin += BLAKE2B_BLOCKBYTES; + } + } + memcpy(&S->buf[S->buflen], pin, inlen); + S->buflen += (unsigned int)inlen; + return 0; +} + +int blake2b_final(blake2b_state *S, void *out, size_t outlen) { + uint8_t buffer[BLAKE2B_OUTBYTES] = { 0 }; + unsigned int i; + + /* Sanity checks */ + if (S == NULL || out == NULL || outlen < S->outlen) { + return -1; + } + + /* Is this a reused state? */ + if (S->f[0] != 0) { + return -1; + } + + blake2b_increment_counter(S, S->buflen); + blake2b_set_lastblock(S); + memset(&S->buf[S->buflen], 0, BLAKE2B_BLOCKBYTES - S->buflen); /* Padding */ + blake2b_compress(S, S->buf); + + for (i = 0; i < 8; ++i) { /* Output full hash to temp buffer */ + store64(buffer + sizeof(S->h[i]) * i, S->h[i]); + } + + memcpy(out, buffer, S->outlen); + //clear_internal_memory(buffer, sizeof(buffer)); + //clear_internal_memory(S->buf, sizeof(S->buf)); + //clear_internal_memory(S->h, sizeof(S->h)); + return 0; +} + +int blake2b(void *out, size_t outlen, const void *in, size_t inlen, + const void *key, size_t keylen) { + blake2b_state S; + int ret = -1; + + /* Verify parameters */ + if (NULL == in && inlen > 0) { + goto fail; + } + + if (NULL == out || outlen == 0 || outlen > BLAKE2B_OUTBYTES) { + goto fail; + } + + if ((NULL == key && keylen > 0) || keylen > BLAKE2B_KEYBYTES) { + goto fail; + } + + if (keylen > 0) { + if (blake2b_init_key(&S, outlen, key, keylen) < 0) { + goto fail; + } + } + else { + if (blake2b_init(&S, outlen) < 0) { + goto fail; + } + } + + if (blake2b_update(&S, in, inlen) < 0) { + goto fail; + } + ret = blake2b_final(&S, out, outlen); + +fail: + //clear_internal_memory(&S, sizeof(S)); + return ret; +} + +/* Argon2 Team - Begin Code */ +int blake2b_long(void *pout, size_t outlen, const void *in, size_t inlen) { + uint8_t *out = (uint8_t *)pout; + blake2b_state blake_state; + uint8_t outlen_bytes[sizeof(uint32_t)] = { 0 }; + int ret = -1; + + if (outlen > UINT32_MAX) { + goto fail; + } + + /* Ensure little-endian byte order! */ + store32(outlen_bytes, (uint32_t)outlen); + +#define TRY(statement) \ + do { \ + ret = statement; \ + if (ret < 0) { \ + goto fail; \ + } \ + } while ((void)0, 0) + + if (outlen <= BLAKE2B_OUTBYTES) { + TRY(blake2b_init(&blake_state, outlen)); + TRY(blake2b_update(&blake_state, outlen_bytes, sizeof(outlen_bytes))); + TRY(blake2b_update(&blake_state, in, inlen)); + TRY(blake2b_final(&blake_state, out, outlen)); + } + else { + uint32_t toproduce; + uint8_t out_buffer[BLAKE2B_OUTBYTES]; + uint8_t in_buffer[BLAKE2B_OUTBYTES]; + TRY(blake2b_init(&blake_state, BLAKE2B_OUTBYTES)); + TRY(blake2b_update(&blake_state, outlen_bytes, sizeof(outlen_bytes))); + TRY(blake2b_update(&blake_state, in, inlen)); + TRY(blake2b_final(&blake_state, out_buffer, BLAKE2B_OUTBYTES)); + memcpy(out, out_buffer, BLAKE2B_OUTBYTES / 2); + out += BLAKE2B_OUTBYTES / 2; + toproduce = (uint32_t)outlen - BLAKE2B_OUTBYTES / 2; + + while (toproduce > BLAKE2B_OUTBYTES) { + memcpy(in_buffer, out_buffer, BLAKE2B_OUTBYTES); + TRY(blake2b(out_buffer, BLAKE2B_OUTBYTES, in_buffer, + BLAKE2B_OUTBYTES, NULL, 0)); + memcpy(out, out_buffer, BLAKE2B_OUTBYTES / 2); + out += BLAKE2B_OUTBYTES / 2; + toproduce -= BLAKE2B_OUTBYTES / 2; + } + + memcpy(in_buffer, out_buffer, BLAKE2B_OUTBYTES); + TRY(blake2b(out_buffer, toproduce, in_buffer, BLAKE2B_OUTBYTES, NULL, + 0)); + memcpy(out, out_buffer, toproduce); + } +fail: + //clear_internal_memory(&blake_state, sizeof(blake_state)); + return ret; +#undef TRY +} +/* Argon2 Team - End Code */ + diff --git a/miner/src/cpp/blamka-round-simd.h b/miner/src/cpp/blamka-round-simd.h new file mode 100644 index 0000000..ad2c247 --- /dev/null +++ b/miner/src/cpp/blamka-round-simd.h @@ -0,0 +1,105 @@ +#ifndef BLAKE_ROUND_MKA_OPT_H +#define BLAKE_ROUND_MKA_OPT_H + +#include "blake2-impl.h" +#include "intrin_wasm_simd.hpp" + +#define rotr32(x) \ + wasm_i32x4_shuffle_imm(x, _WASM_SHUFFLE(2, 3, 0, 1)) +#define rotr24(x) \ + wasm_v128_xor(wasm_u64x2_shr(x, 24), wasm_i64x2_shl(x, 40)) +#define rotr16(x) \ + wasm_v128_xor(wasm_u64x2_shr(x, 16), wasm_i64x2_shl(x, 48)) +#define rotr63(x) \ + wasm_v128_xor(wasm_u64x2_shr(x, 63), wasm_i64x2_add(x, x)) + +static inline v128_t fBlaMka(v128_t x, v128_t y) { + const v128_t z = wasm_u64x2_mulu(x, y); + return wasm_i64x2_add(wasm_i64x2_add(x, y), wasm_i64x2_add(z, z)); +} + +#define G1(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + A0 = fBlaMka(A0, B0); \ + A1 = fBlaMka(A1, B1); \ + \ + D0 = wasm_v128_xor(D0, A0); \ + D1 = wasm_v128_xor(D1, A1); \ + \ + D0 = rotr32(D0); \ + D1 = rotr32(D1); \ + \ + C0 = fBlaMka(C0, D0); \ + C1 = fBlaMka(C1, D1); \ + \ + B0 = wasm_v128_xor(B0, C0); \ + B1 = wasm_v128_xor(B1, C1); \ + \ + B0 = rotr24(B0); \ + B1 = rotr24(B1); \ + } while ((void)0, 0) + +#define G2(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + A0 = fBlaMka(A0, B0); \ + A1 = fBlaMka(A1, B1); \ + \ + D0 = wasm_v128_xor(D0, A0); \ + D1 = wasm_v128_xor(D1, A1); \ + \ + D0 = rotr16(D0); \ + D1 = rotr16(D1); \ + \ + C0 = fBlaMka(C0, D0); \ + C1 = fBlaMka(C1, D1); \ + \ + B0 = wasm_v128_xor(B0, C0); \ + B1 = wasm_v128_xor(B1, C1); \ + \ + B0 = rotr63(B0); \ + B1 = rotr63(B1); \ + } while ((void)0, 0) + +#define DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + v128_t t0 = D0; \ + v128_t t1 = B0; \ + \ + D0 = C0; \ + C0 = C1; \ + C1 = D0; \ + \ + D0 = wasm_unpackhi_i64x2(D1, wasm_unpacklo_i64x2(t0, t0)); \ + D1 = wasm_unpackhi_i64x2(t0, wasm_unpacklo_i64x2(D1, D1)); \ + B0 = wasm_unpackhi_i64x2(B0, wasm_unpacklo_i64x2(B1, B1)); \ + B1 = wasm_unpackhi_i64x2(B1, wasm_unpacklo_i64x2(t1, t1)); \ + } while ((void)0, 0) + +#define UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \ + do { \ + v128_t t0 = C0; \ + C0 = C1; \ + C1 = t0; \ + t0 = B0; \ + v128_t t1 = D0; \ + \ + B0 = wasm_unpackhi_i64x2(B1, wasm_unpacklo_i64x2(B0, B0)); \ + B1 = wasm_unpackhi_i64x2(t0, wasm_unpacklo_i64x2(B1, B1)); \ + D0 = wasm_unpackhi_i64x2(D0, wasm_unpacklo_i64x2(D1, D1)); \ + D1 = wasm_unpackhi_i64x2(D1, wasm_unpacklo_i64x2(t1, t1)); \ + } while ((void)0, 0) + +#define BLAKE2_ROUND(A0, A1, B0, B1, C0, C1, D0, D1) \ + do { \ + G1(A0, B0, C0, D0, A1, B1, C1, D1); \ + G2(A0, B0, C0, D0, A1, B1, C1, D1); \ + \ + DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \ + \ + G1(A0, B0, C0, D0, A1, B1, C1, D1); \ + G2(A0, B0, C0, D0, A1, B1, C1, D1); \ + \ + UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \ + } while ((void)0, 0) + +#endif /* BLAKE_ROUND_MKA_OPT_H */ \ No newline at end of file diff --git a/miner/src/cpp/bytecode_machine.cpp b/miner/src/cpp/bytecode_machine.cpp new file mode 100644 index 0000000..79439ba --- /dev/null +++ b/miner/src/cpp/bytecode_machine.cpp @@ -0,0 +1,482 @@ +/* +Copyright (c) 2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "bytecode_machine.hpp" +#include "reciprocal.h" + +namespace randomx { + + const int_reg_t BytecodeMachine::zero = 0; + +#define INSTR_CASE(x) case InstructionType::x: \ + exe_ ## x(ibc, pc, scratchpad, config); \ + break; + + void BytecodeMachine::executeInstruction(RANDOMX_EXE_ARGS) { + switch (ibc.type) + { + INSTR_CASE(IADD_RS) + INSTR_CASE(IADD_M) + INSTR_CASE(ISUB_R) + INSTR_CASE(ISUB_M) + INSTR_CASE(IMUL_R) + INSTR_CASE(IMUL_M) + INSTR_CASE(IMULH_R) + INSTR_CASE(IMULH_M) + INSTR_CASE(ISMULH_R) + INSTR_CASE(ISMULH_M) + INSTR_CASE(INEG_R) + INSTR_CASE(IXOR_R) + INSTR_CASE(IXOR_M) + INSTR_CASE(IROR_R) + INSTR_CASE(IROL_R) + INSTR_CASE(ISWAP_R) + INSTR_CASE(FSWAP_R) + INSTR_CASE(FADD_R) + INSTR_CASE(FADD_M) + INSTR_CASE(FSUB_R) + INSTR_CASE(FSUB_M) + INSTR_CASE(FSCAL_R) + INSTR_CASE(FMUL_R) + INSTR_CASE(FDIV_M) + INSTR_CASE(FSQRT_R) + INSTR_CASE(CBRANCH) + INSTR_CASE(CFROUND) + INSTR_CASE(ISTORE) + + case InstructionType::NOP: + break; + + case InstructionType::IMUL_RCP: //executed as IMUL_R + default: + UNREACHABLE; + } + } + + void BytecodeMachine::compileInstruction(RANDOMX_GEN_ARGS) { + int opcode = instr.opcode; + + if (opcode < ceil_IADD_RS) { + auto dst = instr.dst % RegistersCount; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::IADD_RS; + ibc.idst = &nreg->r[dst]; + if (dst != RegisterNeedsDisplacement) { + ibc.isrc = &nreg->r[src]; + ibc.shift = instr.getModShift(); + ibc.imm = 0; + } + else { + ibc.isrc = &nreg->r[src]; + ibc.shift = instr.getModShift(); + ibc.imm = signExtend2sCompl(instr.getImm32()); + } + registerUsage[dst] = i; + return; + } + + if (opcode < ceil_IADD_M) { + auto dst = instr.dst % RegistersCount; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::IADD_M; + ibc.idst = &nreg->r[dst]; + ibc.imm = signExtend2sCompl(instr.getImm32()); + if (src != dst) { + ibc.isrc = &nreg->r[src]; + ibc.memMask = (instr.getModMem() ? ScratchpadL1Mask : ScratchpadL2Mask); + } + else { + ibc.isrc = &zero; + ibc.memMask = ScratchpadL3Mask; + } + registerUsage[dst] = i; + return; + } + + if (opcode < ceil_ISUB_R) { + auto dst = instr.dst % RegistersCount; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::ISUB_R; + ibc.idst = &nreg->r[dst]; + if (src != dst) { + ibc.isrc = &nreg->r[src]; + } + else { + ibc.imm = signExtend2sCompl(instr.getImm32()); + ibc.isrc = &ibc.imm; + } + registerUsage[dst] = i; + return; + } + + if (opcode < ceil_ISUB_M) { + auto dst = instr.dst % RegistersCount; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::ISUB_M; + ibc.idst = &nreg->r[dst]; + ibc.imm = signExtend2sCompl(instr.getImm32()); + if (src != dst) { + ibc.isrc = &nreg->r[src]; + ibc.memMask = (instr.getModMem() ? ScratchpadL1Mask : ScratchpadL2Mask); + } + else { + ibc.isrc = &zero; + ibc.memMask = ScratchpadL3Mask; + } + registerUsage[dst] = i; + return; + } + + if (opcode < ceil_IMUL_R) { + auto dst = instr.dst % RegistersCount; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::IMUL_R; + ibc.idst = &nreg->r[dst]; + if (src != dst) { + ibc.isrc = &nreg->r[src]; + } + else { + ibc.imm = signExtend2sCompl(instr.getImm32()); + ibc.isrc = &ibc.imm; + } + registerUsage[dst] = i; + return; + } + + if (opcode < ceil_IMUL_M) { + auto dst = instr.dst % RegistersCount; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::IMUL_M; + ibc.idst = &nreg->r[dst]; + ibc.imm = signExtend2sCompl(instr.getImm32()); + if (src != dst) { + ibc.isrc = &nreg->r[src]; + ibc.memMask = (instr.getModMem() ? ScratchpadL1Mask : ScratchpadL2Mask); + } + else { + ibc.isrc = &zero; + ibc.memMask = ScratchpadL3Mask; + } + registerUsage[dst] = i; + return; + } + + if (opcode < ceil_IMULH_R) { + auto dst = instr.dst % RegistersCount; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::IMULH_R; + ibc.idst = &nreg->r[dst]; + ibc.isrc = &nreg->r[src]; + registerUsage[dst] = i; + return; + } + + if (opcode < ceil_IMULH_M) { + auto dst = instr.dst % RegistersCount; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::IMULH_M; + ibc.idst = &nreg->r[dst]; + ibc.imm = signExtend2sCompl(instr.getImm32()); + if (src != dst) { + ibc.isrc = &nreg->r[src]; + ibc.memMask = (instr.getModMem() ? ScratchpadL1Mask : ScratchpadL2Mask); + } + else { + ibc.isrc = &zero; + ibc.memMask = ScratchpadL3Mask; + } + registerUsage[dst] = i; + return; + } + + if (opcode < ceil_ISMULH_R) { + auto dst = instr.dst % RegistersCount; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::ISMULH_R; + ibc.idst = &nreg->r[dst]; + ibc.isrc = &nreg->r[src]; + registerUsage[dst] = i; + return; + } + + if (opcode < ceil_ISMULH_M) { + auto dst = instr.dst % RegistersCount; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::ISMULH_M; + ibc.idst = &nreg->r[dst]; + ibc.imm = signExtend2sCompl(instr.getImm32()); + if (src != dst) { + ibc.isrc = &nreg->r[src]; + ibc.memMask = (instr.getModMem() ? ScratchpadL1Mask : ScratchpadL2Mask); + } + else { + ibc.isrc = &zero; + ibc.memMask = ScratchpadL3Mask; + } + registerUsage[dst] = i; + return; + } + + if (opcode < ceil_IMUL_RCP) { + uint64_t divisor = instr.getImm32(); + if (!isZeroOrPowerOf2(divisor)) { + auto dst = instr.dst % RegistersCount; + ibc.type = InstructionType::IMUL_R; + ibc.idst = &nreg->r[dst]; + ibc.imm = randomx_reciprocal(divisor); + ibc.isrc = &ibc.imm; + registerUsage[dst] = i; + } + else { + ibc.type = InstructionType::NOP; + } + return; + } + + if (opcode < ceil_INEG_R) { + auto dst = instr.dst % RegistersCount; + ibc.type = InstructionType::INEG_R; + ibc.idst = &nreg->r[dst]; + registerUsage[dst] = i; + return; + } + + if (opcode < ceil_IXOR_R) { + auto dst = instr.dst % RegistersCount; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::IXOR_R; + ibc.idst = &nreg->r[dst]; + if (src != dst) { + ibc.isrc = &nreg->r[src]; + } + else { + ibc.imm = signExtend2sCompl(instr.getImm32()); + ibc.isrc = &ibc.imm; + } + registerUsage[dst] = i; + return; + } + + if (opcode < ceil_IXOR_M) { + auto dst = instr.dst % RegistersCount; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::IXOR_M; + ibc.idst = &nreg->r[dst]; + ibc.imm = signExtend2sCompl(instr.getImm32()); + if (src != dst) { + ibc.isrc = &nreg->r[src]; + ibc.memMask = (instr.getModMem() ? ScratchpadL1Mask : ScratchpadL2Mask); + } + else { + ibc.isrc = &zero; + ibc.memMask = ScratchpadL3Mask; + } + registerUsage[dst] = i; + return; + } + + if (opcode < ceil_IROR_R) { + auto dst = instr.dst % RegistersCount; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::IROR_R; + ibc.idst = &nreg->r[dst]; + if (src != dst) { + ibc.isrc = &nreg->r[src]; + } + else { + ibc.imm = instr.getImm32(); + ibc.isrc = &ibc.imm; + } + registerUsage[dst] = i; + return; + } + + if (opcode < ceil_IROL_R) { + auto dst = instr.dst % RegistersCount; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::IROL_R; + ibc.idst = &nreg->r[dst]; + if (src != dst) { + ibc.isrc = &nreg->r[src]; + } + else { + ibc.imm = instr.getImm32(); + ibc.isrc = &ibc.imm; + } + registerUsage[dst] = i; + return; + } + + if (opcode < ceil_ISWAP_R) { + auto dst = instr.dst % RegistersCount; + auto src = instr.src % RegistersCount; + if (src != dst) { + ibc.idst = &nreg->r[dst]; + ibc.isrc = &nreg->r[src]; + ibc.type = InstructionType::ISWAP_R; + registerUsage[dst] = i; + registerUsage[src] = i; + } + else { + ibc.type = InstructionType::NOP; + } + return; + } + + if (opcode < ceil_FSWAP_R) { + auto dst = instr.dst % RegistersCount; + ibc.type = InstructionType::FSWAP_R; + if (dst < RegisterCountFlt) + ibc.fdst = &nreg->f[dst]; + else + ibc.fdst = &nreg->e[dst - RegisterCountFlt]; + return; + } + + if (opcode < ceil_FADD_R) { + auto dst = instr.dst % RegisterCountFlt; + auto src = instr.src % RegisterCountFlt; + ibc.type = InstructionType::FADD_R; + ibc.fdst = &nreg->f[dst]; + ibc.fsrc = &nreg->a[src]; + return; + } + + if (opcode < ceil_FADD_M) { + auto dst = instr.dst % RegisterCountFlt; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::FADD_M; + ibc.fdst = &nreg->f[dst]; + ibc.isrc = &nreg->r[src]; + ibc.memMask = (instr.getModMem() ? ScratchpadL1Mask : ScratchpadL2Mask); + ibc.imm = signExtend2sCompl(instr.getImm32()); + return; + } + + if (opcode < ceil_FSUB_R) { + auto dst = instr.dst % RegisterCountFlt; + auto src = instr.src % RegisterCountFlt; + ibc.type = InstructionType::FSUB_R; + ibc.fdst = &nreg->f[dst]; + ibc.fsrc = &nreg->a[src]; + return; + } + + if (opcode < ceil_FSUB_M) { + auto dst = instr.dst % RegisterCountFlt; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::FSUB_M; + ibc.fdst = &nreg->f[dst]; + ibc.isrc = &nreg->r[src]; + ibc.memMask = (instr.getModMem() ? ScratchpadL1Mask : ScratchpadL2Mask); + ibc.imm = signExtend2sCompl(instr.getImm32()); + return; + } + + if (opcode < ceil_FSCAL_R) { + auto dst = instr.dst % RegisterCountFlt; + ibc.fdst = &nreg->f[dst]; + ibc.type = InstructionType::FSCAL_R; + return; + } + + if (opcode < ceil_FMUL_R) { + auto dst = instr.dst % RegisterCountFlt; + auto src = instr.src % RegisterCountFlt; + ibc.type = InstructionType::FMUL_R; + ibc.fdst = &nreg->e[dst]; + ibc.fsrc = &nreg->a[src]; + return; + } + + if (opcode < ceil_FDIV_M) { + auto dst = instr.dst % RegisterCountFlt; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::FDIV_M; + ibc.fdst = &nreg->e[dst]; + ibc.isrc = &nreg->r[src]; + ibc.memMask = (instr.getModMem() ? ScratchpadL1Mask : ScratchpadL2Mask); + ibc.imm = signExtend2sCompl(instr.getImm32()); + return; + } + + if (opcode < ceil_FSQRT_R) { + auto dst = instr.dst % RegisterCountFlt; + ibc.type = InstructionType::FSQRT_R; + ibc.fdst = &nreg->e[dst]; + return; + } + + if (opcode < ceil_CBRANCH) { + ibc.type = InstructionType::CBRANCH; + //jump condition + int creg = instr.dst % RegistersCount; + ibc.idst = &nreg->r[creg]; + ibc.target = registerUsage[creg]; + int shift = instr.getModCond() + ConditionOffset; + ibc.imm = signExtend2sCompl(instr.getImm32()) | (1ULL << shift); + if (ConditionOffset > 0 || shift > 0) //clear the bit below the condition mask - this limits the number of successive jumps to 2 + ibc.imm &= ~(1ULL << (shift - 1)); + ibc.memMask = ConditionMask << shift; + //mark all registers as used + for (unsigned j = 0; j < RegistersCount; ++j) { + registerUsage[j] = i; + } + return; + } + + if (opcode < ceil_CFROUND) { + auto src = instr.src % RegistersCount; + ibc.isrc = &nreg->r[src]; + ibc.type = InstructionType::CFROUND; + ibc.imm = instr.getImm32() & 63; + return; + } + + if (opcode < ceil_ISTORE) { + auto dst = instr.dst % RegistersCount; + auto src = instr.src % RegistersCount; + ibc.type = InstructionType::ISTORE; + ibc.idst = &nreg->r[dst]; + ibc.isrc = &nreg->r[src]; + ibc.imm = signExtend2sCompl(instr.getImm32()); + if (instr.getModCond() < StoreL3Condition) + ibc.memMask = (instr.getModMem() ? ScratchpadL1Mask : ScratchpadL2Mask); + else + ibc.memMask = ScratchpadL3Mask; + return; + } + + if (opcode < ceil_NOP) { + ibc.type = InstructionType::NOP; + return; + } + + UNREACHABLE; + } +} diff --git a/miner/src/cpp/bytecode_machine.hpp b/miner/src/cpp/bytecode_machine.hpp new file mode 100644 index 0000000..14d1de7 --- /dev/null +++ b/miner/src/cpp/bytecode_machine.hpp @@ -0,0 +1,322 @@ +/* +Copyright (c) 2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include "common.hpp" +#include "intrin_wasm.h" +#include "instruction.hpp" +#include "program.hpp" + +namespace randomx { + + //register file in machine byte order + struct NativeRegisterFile { + int_reg_t r[RegistersCount] = { 0 }; + rx_vec_f128 f[RegisterCountFlt]; + rx_vec_f128 e[RegisterCountFlt]; + rx_vec_f128 a[RegisterCountFlt]; + }; + + struct InstructionByteCode { + union { + int_reg_t* idst; + rx_vec_f128* fdst; + }; + union { + const int_reg_t* isrc; + const rx_vec_f128* fsrc; + }; + union { + uint64_t imm; + int64_t simm; + }; + InstructionType type; + union { + int16_t target; + uint16_t shift; + }; + uint32_t memMask; + }; + +#define OPCODE_CEIL_DECLARE(curr, prev) constexpr int ceil_ ## curr = ceil_ ## prev + RANDOMX_FREQ_ ## curr; + constexpr int ceil_NULL = 0; + OPCODE_CEIL_DECLARE(IADD_RS, NULL); + OPCODE_CEIL_DECLARE(IADD_M, IADD_RS); + OPCODE_CEIL_DECLARE(ISUB_R, IADD_M); + OPCODE_CEIL_DECLARE(ISUB_M, ISUB_R); + OPCODE_CEIL_DECLARE(IMUL_R, ISUB_M); + OPCODE_CEIL_DECLARE(IMUL_M, IMUL_R); + OPCODE_CEIL_DECLARE(IMULH_R, IMUL_M); + OPCODE_CEIL_DECLARE(IMULH_M, IMULH_R); + OPCODE_CEIL_DECLARE(ISMULH_R, IMULH_M); + OPCODE_CEIL_DECLARE(ISMULH_M, ISMULH_R); + OPCODE_CEIL_DECLARE(IMUL_RCP, ISMULH_M); + OPCODE_CEIL_DECLARE(INEG_R, IMUL_RCP); + OPCODE_CEIL_DECLARE(IXOR_R, INEG_R); + OPCODE_CEIL_DECLARE(IXOR_M, IXOR_R); + OPCODE_CEIL_DECLARE(IROR_R, IXOR_M); + OPCODE_CEIL_DECLARE(IROL_R, IROR_R); + OPCODE_CEIL_DECLARE(ISWAP_R, IROL_R); + OPCODE_CEIL_DECLARE(FSWAP_R, ISWAP_R); + OPCODE_CEIL_DECLARE(FADD_R, FSWAP_R); + OPCODE_CEIL_DECLARE(FADD_M, FADD_R); + OPCODE_CEIL_DECLARE(FSUB_R, FADD_M); + OPCODE_CEIL_DECLARE(FSUB_M, FSUB_R); + OPCODE_CEIL_DECLARE(FSCAL_R, FSUB_M); + OPCODE_CEIL_DECLARE(FMUL_R, FSCAL_R); + OPCODE_CEIL_DECLARE(FDIV_M, FMUL_R); + OPCODE_CEIL_DECLARE(FSQRT_R, FDIV_M); + OPCODE_CEIL_DECLARE(CBRANCH, FSQRT_R); + OPCODE_CEIL_DECLARE(CFROUND, CBRANCH); + OPCODE_CEIL_DECLARE(ISTORE, CFROUND); + OPCODE_CEIL_DECLARE(NOP, ISTORE); +#undef OPCODE_CEIL_DECLARE + +#define RANDOMX_EXE_ARGS InstructionByteCode& ibc, int& pc, uint8_t* scratchpad, ProgramConfiguration& config +#define RANDOMX_GEN_ARGS Instruction& instr, int i, InstructionByteCode& ibc + + class BytecodeMachine; + + typedef void(BytecodeMachine::*InstructionGenBytecode)(RANDOMX_GEN_ARGS); + + class BytecodeMachine { + public: + void beginCompilation(NativeRegisterFile& regFile) { + for (unsigned i = 0; i < RegistersCount; ++i) { + registerUsage[i] = -1; + } + nreg = ®File; + } + + void compileProgram(Program& program, InstructionByteCode bytecode[RANDOMX_PROGRAM_SIZE], NativeRegisterFile& regFile) { + beginCompilation(regFile); + for (unsigned i = 0; i < RANDOMX_PROGRAM_SIZE; ++i) { + auto& instr = program(i); + auto& ibc = bytecode[i]; + compileInstruction(instr, i, ibc); + } + } + + static void executeBytecode(InstructionByteCode bytecode[RANDOMX_PROGRAM_SIZE], uint8_t* scratchpad, ProgramConfiguration& config) { + for (int pc = 0; pc < RANDOMX_PROGRAM_SIZE; ++pc) { + auto& ibc = bytecode[pc]; + executeInstruction(ibc, pc, scratchpad, config); + } + } + + void compileInstruction(RANDOMX_GEN_ARGS) +#ifdef RANDOMX_GEN_TABLE + { + auto generator = genTable[instr.opcode]; + (this->*generator)(instr, i, ibc); + } +#else + ; +#endif + + static void executeInstruction(RANDOMX_EXE_ARGS); + + static void exe_IADD_RS(RANDOMX_EXE_ARGS) { + *ibc.idst += (*ibc.isrc << ibc.shift) + ibc.imm; + } + + static void exe_IADD_M(RANDOMX_EXE_ARGS) { + *ibc.idst += load64(getScratchpadAddress(ibc, scratchpad)); + } + + static void exe_ISUB_R(RANDOMX_EXE_ARGS) { + *ibc.idst -= *ibc.isrc; + } + + static void exe_ISUB_M(RANDOMX_EXE_ARGS) { + *ibc.idst -= load64(getScratchpadAddress(ibc, scratchpad)); + } + + static void exe_IMUL_R(RANDOMX_EXE_ARGS) { + *ibc.idst *= *ibc.isrc; + } + + static void exe_IMUL_M(RANDOMX_EXE_ARGS) { + *ibc.idst *= load64(getScratchpadAddress(ibc, scratchpad)); + } + + static void exe_IMULH_R(RANDOMX_EXE_ARGS) { + *ibc.idst = mulh(*ibc.idst, *ibc.isrc); + } + + static void exe_IMULH_M(RANDOMX_EXE_ARGS) { + *ibc.idst = mulh(*ibc.idst, load64(getScratchpadAddress(ibc, scratchpad))); + } + + static void exe_ISMULH_R(RANDOMX_EXE_ARGS) { + *ibc.idst = smulh(unsigned64ToSigned2sCompl(*ibc.idst), unsigned64ToSigned2sCompl(*ibc.isrc)); + } + + static void exe_ISMULH_M(RANDOMX_EXE_ARGS) { + *ibc.idst = smulh(unsigned64ToSigned2sCompl(*ibc.idst), unsigned64ToSigned2sCompl(load64(getScratchpadAddress(ibc, scratchpad)))); + } + + static void exe_INEG_R(RANDOMX_EXE_ARGS) { + *ibc.idst = ~(*ibc.idst) + 1; //two's complement negative + } + + static void exe_IXOR_R(RANDOMX_EXE_ARGS) { + *ibc.idst ^= *ibc.isrc; + } + + static void exe_IXOR_M(RANDOMX_EXE_ARGS) { + *ibc.idst ^= load64(getScratchpadAddress(ibc, scratchpad)); + } + + static void exe_IROR_R(RANDOMX_EXE_ARGS) { + *ibc.idst = rotr(*ibc.idst, *ibc.isrc & 63); + } + + static void exe_IROL_R(RANDOMX_EXE_ARGS) { + *ibc.idst = rotl(*ibc.idst, *ibc.isrc & 63); + } + + static void exe_ISWAP_R(RANDOMX_EXE_ARGS) { + int_reg_t temp = *ibc.isrc; + *(int_reg_t*)ibc.isrc = *ibc.idst; + *ibc.idst = temp; + } + + static void exe_FSWAP_R(RANDOMX_EXE_ARGS) { + *ibc.fdst = rx_swap_vec_f128(*ibc.fdst); + } + + static void exe_FADD_R(RANDOMX_EXE_ARGS) { + *ibc.fdst = rx_add_vec_f128(*ibc.fdst, *ibc.fsrc); + } + + static void exe_FADD_M(RANDOMX_EXE_ARGS) { + rx_vec_f128 fsrc = rx_cvt_packed_int_vec_f128(getScratchpadAddress(ibc, scratchpad)); + *ibc.fdst = rx_add_vec_f128(*ibc.fdst, fsrc); + } + + static void exe_FSUB_R(RANDOMX_EXE_ARGS) { + *ibc.fdst = rx_sub_vec_f128(*ibc.fdst, *ibc.fsrc); + } + + static void exe_FSUB_M(RANDOMX_EXE_ARGS) { + rx_vec_f128 fsrc = rx_cvt_packed_int_vec_f128(getScratchpadAddress(ibc, scratchpad)); + *ibc.fdst = rx_sub_vec_f128(*ibc.fdst, fsrc); + } + + static void exe_FSCAL_R(RANDOMX_EXE_ARGS) { + const rx_vec_f128 mask = rx_set1_vec_f128(0x80F0000000000000); + *ibc.fdst = rx_xor_vec_f128(*ibc.fdst, mask); + } + + static void exe_FMUL_R(RANDOMX_EXE_ARGS) { + *ibc.fdst = rx_mul_vec_f128(*ibc.fdst, *ibc.fsrc); + } + + static void exe_FDIV_M(RANDOMX_EXE_ARGS) { + rx_vec_f128 fsrc = maskRegisterExponentMantissa( + config, + rx_cvt_packed_int_vec_f128(getScratchpadAddress(ibc, scratchpad)) + ); + *ibc.fdst = rx_div_vec_f128(*ibc.fdst, fsrc); + } + + static void exe_FSQRT_R(RANDOMX_EXE_ARGS) { + *ibc.fdst = rx_sqrt_vec_f128(*ibc.fdst); + } + + static void exe_CBRANCH(RANDOMX_EXE_ARGS) { + *ibc.idst += ibc.imm; + if ((*ibc.idst & ibc.memMask) == 0) { + pc = ibc.target; + } + } + + static void exe_CFROUND(RANDOMX_EXE_ARGS) { + rx_set_rounding_mode(rotr(*ibc.isrc, ibc.imm) % 4); + } + + static void exe_ISTORE(RANDOMX_EXE_ARGS) { + store64(scratchpad + ((*ibc.idst + ibc.imm) & ibc.memMask), *ibc.isrc); + } + protected: + static rx_vec_f128 maskRegisterExponentMantissa(ProgramConfiguration& config, rx_vec_f128 x) { + const rx_vec_f128 xmantissaMask = rx_set_vec_f128(dynamicMantissaMask, dynamicMantissaMask); + const rx_vec_f128 xexponentMask = rx_load_vec_f128((const double*)&config.eMask); + x = rx_and_vec_f128(x, xmantissaMask); + x = rx_or_vec_f128(x, xexponentMask); + return x; + } + + private: + static const int_reg_t zero; + int registerUsage[RegistersCount]; + NativeRegisterFile* nreg; + + static void* getScratchpadAddress(InstructionByteCode& ibc, uint8_t* scratchpad) { + uint32_t addr = (*ibc.isrc + ibc.imm) & ibc.memMask; + return scratchpad + addr; + } + +#ifdef RANDOMX_GEN_TABLE + static InstructionGenBytecode genTable[256]; + + void gen_IADD_RS(RANDOMX_GEN_ARGS); + void gen_IADD_M(RANDOMX_GEN_ARGS); + void gen_ISUB_R(RANDOMX_GEN_ARGS); + void gen_ISUB_M(RANDOMX_GEN_ARGS); + void gen_IMUL_R(RANDOMX_GEN_ARGS); + void gen_IMUL_M(RANDOMX_GEN_ARGS); + void gen_IMULH_R(RANDOMX_GEN_ARGS); + void gen_IMULH_M(RANDOMX_GEN_ARGS); + void gen_ISMULH_R(RANDOMX_GEN_ARGS); + void gen_ISMULH_M(RANDOMX_GEN_ARGS); + void gen_IMUL_RCP(RANDOMX_GEN_ARGS); + void gen_INEG_R(RANDOMX_GEN_ARGS); + void gen_IXOR_R(RANDOMX_GEN_ARGS); + void gen_IXOR_M(RANDOMX_GEN_ARGS); + void gen_IROR_R(RANDOMX_GEN_ARGS); + void gen_IROL_R(RANDOMX_GEN_ARGS); + void gen_ISWAP_R(RANDOMX_GEN_ARGS); + void gen_FSWAP_R(RANDOMX_GEN_ARGS); + void gen_FADD_R(RANDOMX_GEN_ARGS); + void gen_FADD_M(RANDOMX_GEN_ARGS); + void gen_FSUB_R(RANDOMX_GEN_ARGS); + void gen_FSUB_M(RANDOMX_GEN_ARGS); + void gen_FSCAL_R(RANDOMX_GEN_ARGS); + void gen_FMUL_R(RANDOMX_GEN_ARGS); + void gen_FDIV_M(RANDOMX_GEN_ARGS); + void gen_FSQRT_R(RANDOMX_GEN_ARGS); + void gen_CBRANCH(RANDOMX_GEN_ARGS); + void gen_CFROUND(RANDOMX_GEN_ARGS); + void gen_ISTORE(RANDOMX_GEN_ARGS); + void gen_NOP(RANDOMX_GEN_ARGS); +#endif + }; +} diff --git a/miner/src/cpp/common.hpp b/miner/src/cpp/common.hpp new file mode 100644 index 0000000..a06cf00 --- /dev/null +++ b/miner/src/cpp/common.hpp @@ -0,0 +1,173 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include +#include +#include +#include "endian.h" +#include "configuration.h" +#include "randomx.h" + +namespace randomx { + + static_assert(RANDOMX_ARGON_MEMORY >= 8, "RANDOMX_ARGON_MEMORY must be at least 8."); + static_assert(RANDOMX_ARGON_MEMORY <= 2097152, "RANDOMX_ARGON_MEMORY must not exceed 2097152."); + static_assert((RANDOMX_ARGON_MEMORY & (RANDOMX_ARGON_MEMORY - 1)) == 0, "RANDOMX_ARGON_MEMORY must be a power of 2."); + static_assert(RANDOMX_ARGON_ITERATIONS > 0 && RANDOMX_ARGON_ITERATIONS < UINT32_MAX, "RANDOMX_ARGON_ITERATIONS must be a positive 32-bit integer."); + static_assert(RANDOMX_ARGON_LANES > 0 && RANDOMX_ARGON_LANES <= 16777215, "RANDOMX_ARGON_LANES out of range"); + static_assert(RANDOMX_DATASET_BASE_SIZE >= 64, "RANDOMX_DATASET_BASE_SIZE must be at least 64."); + static_assert((RANDOMX_DATASET_BASE_SIZE & (RANDOMX_DATASET_BASE_SIZE - 1)) == 0, "RANDOMX_DATASET_BASE_SIZE must be a power of 2."); + static_assert(RANDOMX_DATASET_BASE_SIZE <= 4294967296ULL, "RANDOMX_DATASET_BASE_SIZE must not exceed 4294967296."); + static_assert(RANDOMX_DATASET_EXTRA_SIZE % 64 == 0, "RANDOMX_DATASET_EXTRA_SIZE must be divisible by 64."); + static_assert((uint64_t)RANDOMX_DATASET_BASE_SIZE + RANDOMX_DATASET_EXTRA_SIZE <= 17179869184, "Dataset size must not exceed 16 GiB."); + static_assert(RANDOMX_PROGRAM_SIZE > 0, "RANDOMX_PROGRAM_SIZE must be greater than 0"); + static_assert(RANDOMX_PROGRAM_SIZE <= 32768, "RANDOMX_PROGRAM_SIZE must not exceed 32768"); + static_assert(RANDOMX_PROGRAM_ITERATIONS > 0, "RANDOMX_PROGRAM_ITERATIONS must be greater than 0"); + static_assert(RANDOMX_PROGRAM_COUNT > 0, "RANDOMX_PROGRAM_COUNT must be greater than 0"); + static_assert((RANDOMX_SCRATCHPAD_L3 & (RANDOMX_SCRATCHPAD_L3 - 1)) == 0, "RANDOMX_SCRATCHPAD_L3 must be a power of 2."); + static_assert(RANDOMX_SCRATCHPAD_L3 >= RANDOMX_SCRATCHPAD_L2, "RANDOMX_SCRATCHPAD_L3 must be greater than or equal to RANDOMX_SCRATCHPAD_L2."); + static_assert((RANDOMX_SCRATCHPAD_L2 & (RANDOMX_SCRATCHPAD_L2 - 1)) == 0, "RANDOMX_SCRATCHPAD_L2 must be a power of 2."); + static_assert(RANDOMX_SCRATCHPAD_L2 >= RANDOMX_SCRATCHPAD_L1, "RANDOMX_SCRATCHPAD_L2 must be greater than or equal to RANDOMX_SCRATCHPAD_L1."); + static_assert(RANDOMX_SCRATCHPAD_L1 >= 64, "RANDOMX_SCRATCHPAD_L1 must be at least 64."); + static_assert((RANDOMX_SCRATCHPAD_L1 & (RANDOMX_SCRATCHPAD_L1 - 1)) == 0, "RANDOMX_SCRATCHPAD_L1 must be a power of 2."); + static_assert(RANDOMX_CACHE_ACCESSES > 1, "RANDOMX_CACHE_ACCESSES must be greater than 1"); + static_assert(RANDOMX_SUPERSCALAR_LATENCY > 0, "RANDOMX_SUPERSCALAR_LATENCY must be greater than 0"); + static_assert(RANDOMX_SUPERSCALAR_LATENCY <= 10000, "RANDOMX_SUPERSCALAR_LATENCY must not exceed 10000"); + static_assert(RANDOMX_JUMP_BITS > 0, "RANDOMX_JUMP_BITS must be greater than 0."); + static_assert(RANDOMX_JUMP_OFFSET >= 0, "RANDOMX_JUMP_OFFSET must be greater than or equal to 0."); + static_assert(RANDOMX_JUMP_BITS + RANDOMX_JUMP_OFFSET <= 16, "RANDOMX_JUMP_BITS + RANDOMX_JUMP_OFFSET must not exceed 16."); + + constexpr int wtSum = RANDOMX_FREQ_IADD_RS + RANDOMX_FREQ_IADD_M + RANDOMX_FREQ_ISUB_R + \ + RANDOMX_FREQ_ISUB_M + RANDOMX_FREQ_IMUL_R + RANDOMX_FREQ_IMUL_M + RANDOMX_FREQ_IMULH_R + \ + RANDOMX_FREQ_IMULH_M + RANDOMX_FREQ_ISMULH_R + RANDOMX_FREQ_ISMULH_M + RANDOMX_FREQ_IMUL_RCP + \ + RANDOMX_FREQ_INEG_R + RANDOMX_FREQ_IXOR_R + RANDOMX_FREQ_IXOR_M + RANDOMX_FREQ_IROR_R + RANDOMX_FREQ_IROL_R + RANDOMX_FREQ_ISWAP_R + \ + RANDOMX_FREQ_FSWAP_R + RANDOMX_FREQ_FADD_R + RANDOMX_FREQ_FADD_M + RANDOMX_FREQ_FSUB_R + RANDOMX_FREQ_FSUB_M + \ + RANDOMX_FREQ_FSCAL_R + RANDOMX_FREQ_FMUL_R + RANDOMX_FREQ_FDIV_M + RANDOMX_FREQ_FSQRT_R + RANDOMX_FREQ_CBRANCH + \ + RANDOMX_FREQ_CFROUND + RANDOMX_FREQ_ISTORE + RANDOMX_FREQ_NOP; + + static_assert(wtSum == 256, "Sum of instruction frequencies must be 256."); + + + constexpr uint32_t ArgonBlockSize = 1024; + constexpr int ArgonSaltSize = sizeof("" RANDOMX_ARGON_SALT) - 1; + static_assert(ArgonSaltSize >= 8, "RANDOMX_ARGON_SALT must be at least 8 characters long"); + constexpr int SuperscalarMaxSize = 3 * RANDOMX_SUPERSCALAR_LATENCY + 2; + constexpr size_t CacheLineSize = RANDOMX_DATASET_ITEM_SIZE; + constexpr int ScratchpadSize = RANDOMX_SCRATCHPAD_L3; + constexpr uint32_t CacheLineAlignMask = (RANDOMX_DATASET_BASE_SIZE - 1) & ~(CacheLineSize - 1); + constexpr uint32_t CacheSize = RANDOMX_ARGON_MEMORY * ArgonBlockSize; + constexpr uint64_t DatasetSize = RANDOMX_DATASET_BASE_SIZE + RANDOMX_DATASET_EXTRA_SIZE; + constexpr uint32_t DatasetExtraItems = RANDOMX_DATASET_EXTRA_SIZE / RANDOMX_DATASET_ITEM_SIZE; + constexpr uint32_t ConditionMask = ((1 << RANDOMX_JUMP_BITS) - 1); + constexpr int ConditionOffset = RANDOMX_JUMP_OFFSET; + constexpr int StoreL3Condition = 14; + + //Prevent some unsafe configurations. +#ifndef RANDOMX_UNSAFE + static_assert((uint64_t)ArgonBlockSize * RANDOMX_CACHE_ACCESSES * RANDOMX_ARGON_MEMORY + 33554432 >= (uint64_t)RANDOMX_DATASET_BASE_SIZE + RANDOMX_DATASET_EXTRA_SIZE, "Unsafe configuration: Memory-time tradeoffs"); + static_assert((128 + RANDOMX_PROGRAM_SIZE * RANDOMX_FREQ_ISTORE / 256) * (RANDOMX_PROGRAM_COUNT * RANDOMX_PROGRAM_ITERATIONS) >= RANDOMX_SCRATCHPAD_L3, "Unsafe configuration: Insufficient Scratchpad writes"); + static_assert(RANDOMX_PROGRAM_COUNT > 1, "Unsafe configuration: Program filtering strategies"); + static_assert(RANDOMX_PROGRAM_SIZE >= 64, "Unsafe configuration: Low program entropy"); + static_assert(RANDOMX_PROGRAM_ITERATIONS >= 400, "Unsafe configuration: High compilation overhead"); +#endif + +#ifdef TRACE + constexpr bool trace = true; +#else + constexpr bool trace = false; +#endif + +#ifndef UNREACHABLE +#ifdef __GNUC__ +#define UNREACHABLE __builtin_unreachable() +#elif _MSC_VER +#define UNREACHABLE __assume(false) +#else +#define UNREACHABLE +#endif +#endif + + using addr_t = uint32_t; + + using int_reg_t = uint64_t; + + struct fpu_reg_t { + double lo; + double hi; + }; + + constexpr uint32_t ScratchpadL1 = RANDOMX_SCRATCHPAD_L1 / sizeof(int_reg_t); + constexpr uint32_t ScratchpadL2 = RANDOMX_SCRATCHPAD_L2 / sizeof(int_reg_t); + constexpr uint32_t ScratchpadL3 = RANDOMX_SCRATCHPAD_L3 / sizeof(int_reg_t); + constexpr int ScratchpadL1Mask = (ScratchpadL1 - 1) * 8; + constexpr int ScratchpadL2Mask = (ScratchpadL2 - 1) * 8; + constexpr int ScratchpadL1Mask16 = (ScratchpadL1 / 2 - 1) * 16; + constexpr int ScratchpadL2Mask16 = (ScratchpadL2 / 2 - 1) * 16; + constexpr int ScratchpadL3Mask = (ScratchpadL3 - 1) * 8; + constexpr int ScratchpadL3Mask64 = (ScratchpadL3 / 8 - 1) * 64; + constexpr int RegistersCount = 8; + constexpr int RegisterCountFlt = RegistersCount / 2; + constexpr int RegisterNeedsDisplacement = 5; //x86 r13 register + constexpr int RegisterNeedsSib = 4; //x86 r12 register + + inline bool isZeroOrPowerOf2(uint64_t x) { + return (x & (x - 1)) == 0; + } + + constexpr int mantissaSize = 52; + constexpr int exponentSize = 11; + constexpr uint64_t mantissaMask = (1ULL << mantissaSize) - 1; + constexpr uint64_t exponentMask = (1ULL << exponentSize) - 1; + constexpr int exponentBias = 1023; + constexpr int dynamicExponentBits = 4; + constexpr int staticExponentBits = 4; + constexpr uint64_t constExponentBits = 0x300; + constexpr uint64_t dynamicMantissaMask = (1ULL << (mantissaSize + dynamicExponentBits)) - 1; + + struct MemoryRegisters { + addr_t mx, ma; + uint8_t* memory = nullptr; + }; + + //register file in little-endian byte order + struct RegisterFile { + int_reg_t r[RegistersCount]; + fpu_reg_t f[RegisterCountFlt]; + fpu_reg_t e[RegisterCountFlt]; + fpu_reg_t a[RegisterCountFlt]; + }; + + typedef void(ProgramFunc)(RegisterFile&, MemoryRegisters&, uint8_t* /* scratchpad */, uint64_t); + typedef void(DatasetInitFunc)(randomx_cache* cache, uint8_t* dataset, uint32_t startBlock, uint32_t endBlock); + + typedef void(DatasetDeallocFunc)(randomx_dataset*); + typedef void(CacheDeallocFunc)(randomx_cache*); + typedef void(CacheInitializeFunc)(randomx_cache*, const void*, size_t); +} diff --git a/miner/src/cpp/configuration.h b/miner/src/cpp/configuration.h new file mode 100644 index 0000000..8509469 --- /dev/null +++ b/miner/src/cpp/configuration.h @@ -0,0 +1,125 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +//Cache size in KiB. Must be a power of 2. +#define RANDOMX_ARGON_MEMORY 262144 + +//Number of Argon2d iterations for Cache initialization. +#define RANDOMX_ARGON_ITERATIONS 3 + +//Number of parallel lanes for Cache initialization. +#define RANDOMX_ARGON_LANES 1 + +//Argon2d salt +#define RANDOMX_ARGON_SALT "RandomX\x03" + +//Number of random Cache accesses per Dataset item. Minimum is 2. +#define RANDOMX_CACHE_ACCESSES 8 + +//Target latency for SuperscalarHash (in cycles of the reference CPU). +#define RANDOMX_SUPERSCALAR_LATENCY 170 + +//Dataset base size in bytes. Must be a power of 2. +#define RANDOMX_DATASET_BASE_SIZE 2147483648 + +//Dataset extra size. Must be divisible by 64. +#define RANDOMX_DATASET_EXTRA_SIZE 33554368 + +//Number of instructions in a RandomX program. Must be divisible by 8. +#define RANDOMX_PROGRAM_SIZE 256 + +//Number of iterations during VM execution. +#define RANDOMX_PROGRAM_ITERATIONS 2048 + +//Number of chained VM executions per hash. +#define RANDOMX_PROGRAM_COUNT 8 + +//Scratchpad L3 size in bytes. Must be a power of 2. +#define RANDOMX_SCRATCHPAD_L3 2097152 + +//Scratchpad L2 size in bytes. Must be a power of two and less than or equal to RANDOMX_SCRATCHPAD_L3. +#define RANDOMX_SCRATCHPAD_L2 262144 + +//Scratchpad L1 size in bytes. Must be a power of two (minimum 64) and less than or equal to RANDOMX_SCRATCHPAD_L2. +#define RANDOMX_SCRATCHPAD_L1 16384 + +//Jump condition mask size in bits. +#define RANDOMX_JUMP_BITS 8 + +//Jump condition mask offset in bits. The sum of RANDOMX_JUMP_BITS and RANDOMX_JUMP_OFFSET must not exceed 16. +#define RANDOMX_JUMP_OFFSET 8 + +/* +Instruction frequencies (per 256 opcodes) +Total sum of frequencies must be 256 +*/ + +//Integer instructions +#define RANDOMX_FREQ_IADD_RS 16 +#define RANDOMX_FREQ_IADD_M 7 +#define RANDOMX_FREQ_ISUB_R 16 +#define RANDOMX_FREQ_ISUB_M 7 +#define RANDOMX_FREQ_IMUL_R 16 +#define RANDOMX_FREQ_IMUL_M 4 +#define RANDOMX_FREQ_IMULH_R 4 +#define RANDOMX_FREQ_IMULH_M 1 +#define RANDOMX_FREQ_ISMULH_R 4 +#define RANDOMX_FREQ_ISMULH_M 1 +#define RANDOMX_FREQ_IMUL_RCP 8 +#define RANDOMX_FREQ_INEG_R 2 +#define RANDOMX_FREQ_IXOR_R 15 +#define RANDOMX_FREQ_IXOR_M 5 +#define RANDOMX_FREQ_IROR_R 8 +#define RANDOMX_FREQ_IROL_R 2 +#define RANDOMX_FREQ_ISWAP_R 4 + +//Floating point instructions +#define RANDOMX_FREQ_FSWAP_R 4 +#define RANDOMX_FREQ_FADD_R 16 +#define RANDOMX_FREQ_FADD_M 5 +#define RANDOMX_FREQ_FSUB_R 16 +#define RANDOMX_FREQ_FSUB_M 5 +#define RANDOMX_FREQ_FSCAL_R 6 +#define RANDOMX_FREQ_FMUL_R 32 +#define RANDOMX_FREQ_FDIV_M 4 +#define RANDOMX_FREQ_FSQRT_R 6 + +//Control instructions +#define RANDOMX_FREQ_CBRANCH 25 +#define RANDOMX_FREQ_CFROUND 1 + +//Store instruction +#define RANDOMX_FREQ_ISTORE 16 + +//No-op instruction +#define RANDOMX_FREQ_NOP 0 +/* ------ + 256 +*/ diff --git a/miner/src/cpp/dataset.cpp b/miner/src/cpp/dataset.cpp new file mode 100644 index 0000000..3023738 --- /dev/null +++ b/miner/src/cpp/dataset.cpp @@ -0,0 +1,185 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/* Original code from Argon2 reference source code package used under CC0 Licence + * https://github.com/P-H-C/phc-winner-argon2 + * Copyright 2015 + * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves +*/ + +#include +#include +#include +#include +#include +#include +#include + +#include "common.hpp" +#include "dataset.hpp" +#include "virtual_memory.hpp" +#include "superscalar.hpp" +#include "blake2_generator.hpp" +#include "reciprocal.h" +#include "endian.h" +#include "argon2.h" +#include "argon2_core.h" +#include "intrin_wasm.h" + +static_assert(RANDOMX_ARGON_MEMORY % (RANDOMX_ARGON_LANES * ARGON2_SYNC_POINTS) == 0, "RANDOMX_ARGON_MEMORY - invalid value"); +static_assert(ARGON2_BLOCK_SIZE == randomx::ArgonBlockSize, "Unpexpected value of ARGON2_BLOCK_SIZE"); + +namespace randomx { + + template + void deallocCache(randomx_cache* cache) { + if (cache->memory != nullptr) + Allocator::freeMemory(cache->memory, CacheSize); + } + + template void deallocCache(randomx_cache* cache); + template void deallocCache(randomx_cache* cache); + + void initCache(randomx_cache* cache, const void* key, size_t keySize) { + uint32_t memory_blocks, segment_length; + argon2_instance_t instance; + argon2_context context; + + context.out = nullptr; + context.outlen = 0; + context.pwd = CONST_CAST(uint8_t *)key; + context.pwdlen = (uint32_t)keySize; + context.salt = CONST_CAST(uint8_t *)RANDOMX_ARGON_SALT; + context.saltlen = (uint32_t)randomx::ArgonSaltSize; + context.secret = NULL; + context.secretlen = 0; + context.ad = NULL; + context.adlen = 0; + context.t_cost = RANDOMX_ARGON_ITERATIONS; + context.m_cost = RANDOMX_ARGON_MEMORY; + context.lanes = RANDOMX_ARGON_LANES; + context.threads = 1; + context.allocate_cbk = NULL; + context.free_cbk = NULL; + context.flags = ARGON2_DEFAULT_FLAGS; + context.version = ARGON2_VERSION_NUMBER; + + int inputsValid = randomx_argon2_validate_inputs(&context); + assert(inputsValid == ARGON2_OK); + + /* 2. Align memory size */ + /* Minimum memory_blocks = 8L blocks, where L is the number of lanes */ + memory_blocks = context.m_cost; + + segment_length = memory_blocks / (context.lanes * ARGON2_SYNC_POINTS); + + instance.version = context.version; + instance.memory = NULL; + instance.passes = context.t_cost; + instance.memory_blocks = memory_blocks; + instance.segment_length = segment_length; + instance.lane_length = segment_length * ARGON2_SYNC_POINTS; + instance.lanes = context.lanes; + instance.threads = context.threads; + instance.type = Argon2_d; + instance.memory = (block*)cache->memory; + instance.impl = randomx_argon2_impl_simd(); + + if (instance.threads > instance.lanes) { + instance.threads = instance.lanes; + } + + /* 3. Initialization: Hashing inputs, allocating memory, filling first + * blocks + */ + randomx_argon2_initialize(&instance, &context); + + randomx_argon2_fill_memory_blocks(&instance); + + cache->reciprocalCache.clear(); + randomx::Blake2Generator gen(key, keySize); + for (int i = 0; i < RANDOMX_CACHE_ACCESSES; ++i) { + randomx::generateSuperscalar(cache->programs[i], gen); + for (unsigned j = 0; j < cache->programs[i].getSize(); ++j) { + auto& instr = cache->programs[i](j); + if ((SuperscalarInstructionType)instr.opcode == SuperscalarInstructionType::IMUL_RCP) { + auto rcp = randomx_reciprocal(instr.getImm32()); + instr.setImm32(cache->reciprocalCache.size()); + cache->reciprocalCache.push_back(rcp); + } + } + } + } + + constexpr uint64_t superscalarMul0 = 6364136223846793005ULL; + constexpr uint64_t superscalarAdd1 = 9298411001130361340ULL; + constexpr uint64_t superscalarAdd2 = 12065312585734608966ULL; + constexpr uint64_t superscalarAdd3 = 9306329213124626780ULL; + constexpr uint64_t superscalarAdd4 = 5281919268842080866ULL; + constexpr uint64_t superscalarAdd5 = 10536153434571861004ULL; + constexpr uint64_t superscalarAdd6 = 3398623926847679864ULL; + constexpr uint64_t superscalarAdd7 = 9549104520008361294ULL; + + static inline uint8_t* getMixBlock(uint64_t registerValue, uint8_t *memory) { + constexpr uint32_t mask = CacheSize / CacheLineSize - 1; + return memory + (registerValue & mask) * CacheLineSize; + } + + void initDatasetItem(randomx_cache* cache, uint8_t* out, uint64_t itemNumber) { + int_reg_t rl[8]; + uint8_t* mixBlock; + uint64_t registerValue = itemNumber; + rl[0] = (itemNumber + 1) * superscalarMul0; + rl[1] = rl[0] ^ superscalarAdd1; + rl[2] = rl[0] ^ superscalarAdd2; + rl[3] = rl[0] ^ superscalarAdd3; + rl[4] = rl[0] ^ superscalarAdd4; + rl[5] = rl[0] ^ superscalarAdd5; + rl[6] = rl[0] ^ superscalarAdd6; + rl[7] = rl[0] ^ superscalarAdd7; + for (unsigned i = 0; i < RANDOMX_CACHE_ACCESSES; ++i) { + mixBlock = getMixBlock(registerValue, cache->memory); + rx_prefetch_nta(mixBlock); + SuperscalarProgram& prog = cache->programs[i]; + + executeSuperscalar(rl, prog, &cache->reciprocalCache); + + for (unsigned q = 0; q < 8; ++q) + rl[q] ^= load64_native(mixBlock + 8 * q); + + registerValue = rl[prog.getAddressRegister()]; + } + + memcpy(out, &rl, CacheLineSize); + } + + void initDataset(randomx_cache* cache, uint8_t* dataset, uint32_t startItem, uint32_t endItem) { + for (uint32_t itemNumber = startItem; itemNumber < endItem; ++itemNumber, dataset += CacheLineSize) + initDatasetItem(cache, dataset, itemNumber); + } +} diff --git a/miner/src/cpp/dataset.hpp b/miner/src/cpp/dataset.hpp new file mode 100644 index 0000000..be6386a --- /dev/null +++ b/miner/src/cpp/dataset.hpp @@ -0,0 +1,91 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include +#include +#include +#include "common.hpp" +#include "superscalar_program.hpp" +#include "allocator.hpp" +#include "argon2.h" + +/* Global scope for C binding */ +struct randomx_dataset { + uint8_t* memory = nullptr; + randomx::DatasetDeallocFunc* dealloc; +}; + +/* Global scope for C binding */ +struct randomx_cache { + uint8_t* memory = nullptr; + randomx::CacheDeallocFunc* dealloc; + randomx::CacheInitializeFunc* initialize; + randomx::DatasetInitFunc* datasetInit; + randomx::SuperscalarProgram programs[RANDOMX_CACHE_ACCESSES]; + std::vector reciprocalCache; + std::string cacheKey; + + bool isInitialized() { + return programs[0].getSize() != 0; + } +}; + +//A pointer to a standard-layout struct object points to its initial member +static_assert(std::is_standard_layout(), "randomx_dataset must be a standard-layout struct"); + + +#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && defined(_DEBUG) +#define TO_STR(x) #x +#define STR(x) TO_STR(x) +#pragma message ( __FILE__ "(" STR(__LINE__) ") warning: check std::is_standard_layout() is disabled for Debug configuration." ) +#undef STRW +#undef TO_STR +#else +static_assert(std::is_standard_layout(), "randomx_cache must be a standard-layout struct"); +#endif + +namespace randomx { + + using DefaultAllocator = AlignedAllocator; + + template + void deallocDataset(randomx_dataset* dataset) { + if (dataset->memory != nullptr) + Allocator::freeMemory(dataset->memory, DatasetSize); + } + + template + void deallocCache(randomx_cache* cache); + + void initCache(randomx_cache*, const void*, size_t); + void initCacheCompile(randomx_cache*, const void*, size_t); + void initDatasetItem(randomx_cache* cache, uint8_t* out, uint64_t blockNumber); + void initDataset(randomx_cache* cache, uint8_t* dataset, uint32_t startBlock, uint32_t endBlock); +} diff --git a/miner/src/cpp/endian.h b/miner/src/cpp/endian.h new file mode 100644 index 0000000..530fc5e --- /dev/null +++ b/miner/src/cpp/endian.h @@ -0,0 +1,107 @@ +#pragma once +#include +#include + +#if defined(_MSC_VER) +#define FORCE_INLINE __inline +#elif defined(__GNUC__) || defined(__clang__) +#define FORCE_INLINE __inline__ +#else +#define FORCE_INLINE +#endif + + /* Argon2 Team - Begin Code */ + /* + Not an exhaustive list, but should cover the majority of modern platforms + Additionally, the code will always be correct---this is only a performance + tweak. + */ +#if (defined(__BYTE_ORDER__) && \ + (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)) || \ + defined(__LITTLE_ENDIAN__) || defined(__ARMEL__) || defined(__MIPSEL__) || \ + defined(__AARCH64EL__) || defined(__amd64__) || defined(__i386__) || \ + defined(_M_IX86) || defined(_M_X64) || defined(_M_AMD64) || \ + defined(_M_ARM) +#define NATIVE_LITTLE_ENDIAN +#endif + /* Argon2 Team - End Code */ + +static FORCE_INLINE uint32_t load32(const void *src) { +#if defined(NATIVE_LITTLE_ENDIAN) + uint32_t w; + memcpy(&w, src, sizeof w); + return w; +#else + const uint8_t *p = (const uint8_t *)src; + uint32_t w = *p++; + w |= (uint32_t)(*p++) << 8; + w |= (uint32_t)(*p++) << 16; + w |= (uint32_t)(*p++) << 24; + return w; +#endif +} + +static FORCE_INLINE uint64_t load64_native(const void *src) { + uint64_t w; + memcpy(&w, src, sizeof w); + return w; +} + +static FORCE_INLINE uint64_t load64(const void *src) { +#if defined(NATIVE_LITTLE_ENDIAN) + return load64_native(src); +#else + const uint8_t *p = (const uint8_t *)src; + uint64_t w = *p++; + w |= (uint64_t)(*p++) << 8; + w |= (uint64_t)(*p++) << 16; + w |= (uint64_t)(*p++) << 24; + w |= (uint64_t)(*p++) << 32; + w |= (uint64_t)(*p++) << 40; + w |= (uint64_t)(*p++) << 48; + w |= (uint64_t)(*p++) << 56; + return w; +#endif +} + +static FORCE_INLINE void store32(void *dst, uint32_t w) { +#if defined(NATIVE_LITTLE_ENDIAN) + memcpy(dst, &w, sizeof w); +#else + uint8_t *p = (uint8_t *)dst; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; +#endif +} + +static FORCE_INLINE void store64_native(void *dst, uint64_t w) { + memcpy(dst, &w, sizeof w); +} + +static FORCE_INLINE void store64(void *dst, uint64_t w) { +#if defined(NATIVE_LITTLE_ENDIAN) + store64_native(dst, w); +#else + uint8_t *p = (uint8_t *)dst; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; + w >>= 8; + *p++ = (uint8_t)w; +#endif +} diff --git a/miner/src/cpp/instruction.cpp b/miner/src/cpp/instruction.cpp new file mode 100644 index 0000000..440b5a0 --- /dev/null +++ b/miner/src/cpp/instruction.cpp @@ -0,0 +1,390 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "instruction.hpp" +#include "common.hpp" + +namespace randomx { + + void Instruction::print(std::ostream& os) const { + os << names[opcode] << " "; + auto handler = engine[opcode]; + (this->*handler)(os); + } + + void Instruction::genAddressReg(std::ostream& os, int srcIndex) const { + os << (getModMem() ? "L1" : "L2") << "[r" << srcIndex << std::showpos << (int32_t)getImm32() << std::noshowpos << "]"; + } + + void Instruction::genAddressRegDst(std::ostream& os, int dstIndex) const { + if (getModCond() < StoreL3Condition) + os << (getModMem() ? "L1" : "L2"); + else + os << "L3"; + os << "[r" << dstIndex << std::showpos << (int32_t)getImm32() << std::noshowpos << "]"; + } + + void Instruction::genAddressImm(std::ostream& os) const { + os << "L3" << "[" << (getImm32() & ScratchpadL3Mask) << "]"; + } + + void Instruction::h_IADD_RS(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + auto srcIndex = src % RegistersCount; + os << "r" << dstIndex << ", r" << srcIndex; + if(dstIndex == RegisterNeedsDisplacement) { + os << ", " << (int32_t)getImm32(); + } + os << ", SHFT " << getModShift() << std::endl; + } + + void Instruction::h_IADD_M(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + auto srcIndex = src % RegistersCount; + if (dstIndex != srcIndex) { + os << "r" << dstIndex << ", "; + genAddressReg(os, srcIndex); + os << std::endl; + } + else { + os << "r" << dstIndex << ", "; + genAddressImm(os); + os << std::endl; + } + } + + void Instruction::h_ISUB_R(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + auto srcIndex = src % RegistersCount; + if (dstIndex != srcIndex) { + os << "r" << dstIndex << ", r" << srcIndex << std::endl; + } + else { + os << "r" << dstIndex << ", " << (int32_t)getImm32() << std::endl; + } + } + + void Instruction::h_ISUB_M(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + auto srcIndex = src % RegistersCount; + if (dstIndex != srcIndex) { + os << "r" << dstIndex << ", "; + genAddressReg(os, srcIndex); + os << std::endl; + } + else { + os << "r" << dstIndex << ", "; + genAddressImm(os); + os << std::endl; + } + } + + void Instruction::h_IMUL_R(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + auto srcIndex = src % RegistersCount; + if (dstIndex != srcIndex) { + os << "r" << dstIndex << ", r" << srcIndex << std::endl; + } + else { + os << "r" << dstIndex << ", " << (int32_t)getImm32() << std::endl; + } + } + + void Instruction::h_IMUL_M(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + auto srcIndex = src % RegistersCount; + if (dstIndex != srcIndex) { + os << "r" << dstIndex << ", "; + genAddressReg(os, srcIndex); + os << std::endl; + } + else { + os << "r" << dstIndex << ", "; + genAddressImm(os); + os << std::endl; + } + } + + void Instruction::h_IMULH_R(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + auto srcIndex = src % RegistersCount; + os << "r" << dstIndex << ", r" << srcIndex << std::endl; + } + + void Instruction::h_IMULH_M(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + auto srcIndex = src % RegistersCount; + if (dstIndex != srcIndex) { + os << "r" << dstIndex << ", "; + genAddressReg(os, srcIndex); + os << std::endl; + } + else { + os << "r" << dstIndex << ", "; + genAddressImm(os); + os << std::endl; + } + } + + void Instruction::h_ISMULH_R(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + auto srcIndex = src % RegistersCount; + os << "r" << dstIndex << ", r" << srcIndex << std::endl; + } + + void Instruction::h_ISMULH_M(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + auto srcIndex = src % RegistersCount; + if (dstIndex != srcIndex) { + os << "r" << dstIndex << ", "; + genAddressReg(os, srcIndex); + os << std::endl; + } + else { + os << "r" << dstIndex << ", "; + genAddressImm(os); + os << std::endl; + } + } + + void Instruction::h_INEG_R(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + os << "r" << dstIndex << std::endl; + } + + void Instruction::h_IXOR_R(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + auto srcIndex = src % RegistersCount; + if (dstIndex != srcIndex) { + os << "r" << dstIndex << ", r" << srcIndex << std::endl; + } + else { + os << "r" << dstIndex << ", " << (int32_t)getImm32() << std::endl; + } + } + + void Instruction::h_IXOR_M(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + auto srcIndex = src % RegistersCount; + if (dstIndex != srcIndex) { + os << "r" << dstIndex << ", "; + genAddressReg(os, srcIndex); + os << std::endl; + } + else { + os << "r" << dstIndex << ", "; + genAddressImm(os); + os << std::endl; + } + } + + void Instruction::h_IROR_R(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + auto srcIndex = src % RegistersCount; + if (dstIndex != srcIndex) { + os << "r" << dstIndex << ", r" << srcIndex << std::endl; + } + else { + os << "r" << dstIndex << ", " << (getImm32() & 63) << std::endl; + } + } + + void Instruction::h_IROL_R(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + auto srcIndex = src % RegistersCount; + if (dstIndex != srcIndex) { + os << "r" << dstIndex << ", r" << srcIndex << std::endl; + } + else { + os << "r" << dstIndex << ", " << (getImm32() & 63) << std::endl; + } + } + + void Instruction::h_IMUL_RCP(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + os << "r" << dstIndex << ", " << getImm32() << std::endl; + } + + void Instruction::h_ISWAP_R(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + auto srcIndex = src % RegistersCount; + os << "r" << dstIndex << ", r" << srcIndex << std::endl; + } + + void Instruction::h_FSWAP_R(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + const char reg = (dstIndex >= RegisterCountFlt) ? 'e' : 'f'; + dstIndex %= RegisterCountFlt; + os << reg << dstIndex << std::endl; + } + + void Instruction::h_FADD_R(std::ostream& os) const { + auto dstIndex = dst % RegisterCountFlt; + auto srcIndex = src % RegisterCountFlt; + os << "f" << dstIndex << ", a" << srcIndex << std::endl; + } + + void Instruction::h_FADD_M(std::ostream& os) const { + auto dstIndex = dst % RegisterCountFlt; + auto srcIndex = src % RegistersCount; + os << "f" << dstIndex << ", "; + genAddressReg(os, srcIndex); + os << std::endl; + } + + void Instruction::h_FSUB_R(std::ostream& os) const { + auto dstIndex = dst % RegisterCountFlt; + auto srcIndex = src % RegisterCountFlt; + os << "f" << dstIndex << ", a" << srcIndex << std::endl; + } + + void Instruction::h_FSUB_M(std::ostream& os) const { + auto dstIndex = dst % RegisterCountFlt; + auto srcIndex = src % RegistersCount; + os << "f" << dstIndex << ", "; + genAddressReg(os, srcIndex); + os << std::endl; + } + + void Instruction::h_FSCAL_R(std::ostream& os) const { + auto dstIndex = dst % RegisterCountFlt; + os << "f" << dstIndex << std::endl; + } + + void Instruction::h_FMUL_R(std::ostream& os) const { + auto dstIndex = dst % RegisterCountFlt; + auto srcIndex = src % RegisterCountFlt; + os << "e" << dstIndex << ", a" << srcIndex << std::endl; + } + + void Instruction::h_FDIV_M(std::ostream& os) const { + auto dstIndex = dst % RegisterCountFlt; + auto srcIndex = src % RegistersCount; + os << "e" << dstIndex << ", "; + genAddressReg(os, srcIndex); + os << std::endl; + } + + void Instruction::h_FSQRT_R(std::ostream& os) const { + auto dstIndex = dst % RegisterCountFlt; + os << "e" << dstIndex << std::endl; + } + + void Instruction::h_CFROUND(std::ostream& os) const { + auto srcIndex = src % RegistersCount; + os << "r" << srcIndex << ", " << (getImm32() & 63) << std::endl; + } + + void Instruction::h_CBRANCH(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + auto srcIndex = src % RegistersCount; + os << "r" << dstIndex << ", " << (int32_t)getImm32() << ", COND " << (int)(getModCond()) << std::endl; + } + + void Instruction::h_ISTORE(std::ostream& os) const { + auto dstIndex = dst % RegistersCount; + auto srcIndex = src % RegistersCount; + genAddressRegDst(os, dstIndex); + os << ", r" << srcIndex << std::endl; + } + + void Instruction::h_NOP(std::ostream& os) const { + os << std::endl; + } + +#include "instruction_weights.hpp" +#define INST_NAME(x) REPN(#x, WT(x)) +#define INST_HANDLE(x) REPN(&Instruction::h_##x, WT(x)) + + const char* Instruction::names[256] = { + INST_NAME(IADD_RS) + INST_NAME(IADD_M) + INST_NAME(ISUB_R) + INST_NAME(ISUB_M) + INST_NAME(IMUL_R) + INST_NAME(IMUL_M) + INST_NAME(IMULH_R) + INST_NAME(IMULH_M) + INST_NAME(ISMULH_R) + INST_NAME(ISMULH_M) + INST_NAME(IMUL_RCP) + INST_NAME(INEG_R) + INST_NAME(IXOR_R) + INST_NAME(IXOR_M) + INST_NAME(IROR_R) + INST_NAME(IROL_R) + INST_NAME(ISWAP_R) + INST_NAME(FSWAP_R) + INST_NAME(FADD_R) + INST_NAME(FADD_M) + INST_NAME(FSUB_R) + INST_NAME(FSUB_M) + INST_NAME(FSCAL_R) + INST_NAME(FMUL_R) + INST_NAME(FDIV_M) + INST_NAME(FSQRT_R) + INST_NAME(CBRANCH) + INST_NAME(CFROUND) + INST_NAME(ISTORE) + INST_NAME(NOP) + }; + + InstructionFormatter Instruction::engine[256] = { + INST_HANDLE(IADD_RS) + INST_HANDLE(IADD_M) + INST_HANDLE(ISUB_R) + INST_HANDLE(ISUB_M) + INST_HANDLE(IMUL_R) + INST_HANDLE(IMUL_M) + INST_HANDLE(IMULH_R) + INST_HANDLE(IMULH_M) + INST_HANDLE(ISMULH_R) + INST_HANDLE(ISMULH_M) + INST_HANDLE(IMUL_RCP) + INST_HANDLE(INEG_R) + INST_HANDLE(IXOR_R) + INST_HANDLE(IXOR_M) + INST_HANDLE(IROR_R) + INST_HANDLE(IROL_R) + INST_HANDLE(ISWAP_R) + INST_HANDLE(FSWAP_R) + INST_HANDLE(FADD_R) + INST_HANDLE(FADD_M) + INST_HANDLE(FSUB_R) + INST_HANDLE(FSUB_M) + INST_HANDLE(FSCAL_R) + INST_HANDLE(FMUL_R) + INST_HANDLE(FDIV_M) + INST_HANDLE(FSQRT_R) + INST_HANDLE(CBRANCH) + INST_HANDLE(CFROUND) + INST_HANDLE(ISTORE) + INST_HANDLE(NOP) + }; + +} \ No newline at end of file diff --git a/miner/src/cpp/instruction.hpp b/miner/src/cpp/instruction.hpp new file mode 100644 index 0000000..0265817 --- /dev/null +++ b/miner/src/cpp/instruction.hpp @@ -0,0 +1,149 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include +#include +#include +#include "endian.h" + +namespace randomx { + + class Instruction; + + typedef void(Instruction::*InstructionFormatter)(std::ostream&) const; + + enum class InstructionType : uint16_t { + IADD_RS = 0, + IADD_M = 1, + ISUB_R = 2, + ISUB_M = 3, + IMUL_R = 4, + IMUL_M = 5, + IMULH_R = 6, + IMULH_M = 7, + ISMULH_R = 8, + ISMULH_M = 9, + IMUL_RCP = 10, + INEG_R = 11, + IXOR_R = 12, + IXOR_M = 13, + IROR_R = 14, + IROL_R = 15, + ISWAP_R = 16, + FSWAP_R = 17, + FADD_R = 18, + FADD_M = 19, + FSUB_R = 20, + FSUB_M = 21, + FSCAL_R = 22, + FMUL_R = 23, + FDIV_M = 24, + FSQRT_R = 25, + CBRANCH = 26, + CFROUND = 27, + ISTORE = 28, + NOP = 29, + }; + + class Instruction { + public: + uint32_t getImm32() const { + return load32(&imm32); + } + void setImm32(uint32_t val) { + return store32(&imm32, val); + } + const char* getName() const { + return names[opcode]; + } + friend std::ostream& operator<<(std::ostream& os, const Instruction& i) { + i.print(os); + return os; + } + int getModMem() const { + return mod % 4; //bits 0-1 + } + int getModShift() const { + return (mod >> 2) % 4; //bits 2-3 + } + int getModCond() const { + return mod >> 4; //bits 4-7 + } + void setMod(uint8_t val) { + mod = val; + } + + uint8_t opcode; + uint8_t dst; + uint8_t src; + uint8_t mod; + uint32_t imm32; + private: + void print(std::ostream&) const; + static const char* names[256]; + static InstructionFormatter engine[256]; + void genAddressReg(std::ostream& os, int) const; + void genAddressImm(std::ostream& os) const; + void genAddressRegDst(std::ostream&, int) const; + void h_IADD_RS(std::ostream&) const; + void h_IADD_M(std::ostream&) const; + void h_ISUB_R(std::ostream&) const; + void h_ISUB_M(std::ostream&) const; + void h_IMUL_R(std::ostream&) const; + void h_IMUL_M(std::ostream&) const; + void h_IMULH_R(std::ostream&) const; + void h_IMULH_M(std::ostream&) const; + void h_ISMULH_R(std::ostream&) const; + void h_ISMULH_M(std::ostream&) const; + void h_IMUL_RCP(std::ostream&) const; + void h_INEG_R(std::ostream&) const; + void h_IXOR_R(std::ostream&) const; + void h_IXOR_M(std::ostream&) const; + void h_IROR_R(std::ostream&) const; + void h_IROL_R(std::ostream&) const; + void h_ISWAP_R(std::ostream&) const; + void h_FSWAP_R(std::ostream&) const; + void h_FADD_R(std::ostream&) const; + void h_FADD_M(std::ostream&) const; + void h_FSUB_R(std::ostream&) const; + void h_FSUB_M(std::ostream&) const; + void h_FSCAL_R(std::ostream&) const; + void h_FMUL_R(std::ostream&) const; + void h_FDIV_M(std::ostream&) const; + void h_FSQRT_R(std::ostream&) const; + void h_CBRANCH(std::ostream&) const; + void h_CFROUND(std::ostream&) const; + void h_ISTORE(std::ostream&) const; + void h_NOP(std::ostream&) const; + }; + + static_assert(sizeof(Instruction) == 8, "Invalid size of struct randomx::Instruction"); + static_assert(std::is_standard_layout(), "randomx::Instruction must be a standard-layout struct"); +} \ No newline at end of file diff --git a/miner/src/cpp/instruction_weights.hpp b/miner/src/cpp/instruction_weights.hpp new file mode 100644 index 0000000..b356b9b --- /dev/null +++ b/miner/src/cpp/instruction_weights.hpp @@ -0,0 +1,73 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#define REP0(x) +#define REP1(x) x, +#define REP2(x) REP1(x) x, +#define REP3(x) REP2(x) x, +#define REP4(x) REP3(x) x, +#define REP5(x) REP4(x) x, +#define REP6(x) REP5(x) x, +#define REP7(x) REP6(x) x, +#define REP8(x) REP7(x) x, +#define REP9(x) REP8(x) x, +#define REP10(x) REP9(x) x, +#define REP11(x) REP10(x) x, +#define REP12(x) REP11(x) x, +#define REP13(x) REP12(x) x, +#define REP14(x) REP13(x) x, +#define REP15(x) REP14(x) x, +#define REP16(x) REP15(x) x, +#define REP17(x) REP16(x) x, +#define REP18(x) REP17(x) x, +#define REP19(x) REP18(x) x, +#define REP20(x) REP19(x) x, +#define REP21(x) REP20(x) x, +#define REP22(x) REP21(x) x, +#define REP23(x) REP22(x) x, +#define REP24(x) REP23(x) x, +#define REP25(x) REP24(x) x, +#define REP26(x) REP25(x) x, +#define REP27(x) REP26(x) x, +#define REP28(x) REP27(x) x, +#define REP29(x) REP28(x) x, +#define REP30(x) REP29(x) x, +#define REP31(x) REP30(x) x, +#define REP32(x) REP31(x) x, +#define REP33(x) REP32(x) x, +#define REP40(x) REP32(x) REP8(x) +#define REP64(x) REP32(x) REP32(x) +#define REP128(x) REP32(x) REP32(x) REP32(x) REP32(x) +#define REP232(x) REP128(x) REP40(x) REP40(x) REP24(x) +#define REP256(x) REP128(x) REP128(x) +#define REPNX(x,N) REP##N(x) +#define REPN(x,N) REPNX(x,N) +#define NUM(x) x +#define WT(x) NUM(RANDOMX_FREQ_##x) diff --git a/miner/src/cpp/intrin_wasm.cpp b/miner/src/cpp/intrin_wasm.cpp new file mode 100644 index 0000000..ac520d0 --- /dev/null +++ b/miner/src/cpp/intrin_wasm.cpp @@ -0,0 +1,94 @@ +#include "intrin_wasm.h" + +#include +#include + +#include "common.hpp" +#include "softfloat.hpp" + +#if defined(__SIZEOF_INT128__) +typedef unsigned __int128 uint128_t; +typedef __int128 int128_t; +uint64_t mulh(uint64_t a, uint64_t b) { return ((uint128_t)a * b) >> 64; } +int64_t smulh(int64_t a, int64_t b) { return ((int128_t)a * b) >> 64; } +#define HAVE_MULH +#define HAVE_SMULH +#endif + +#ifndef HAVE_SETROUNDMODE_IMPL +static void setRoundMode_(uint_fast8_t mode) { + globalRoundingMode = mode; + // fesetround(mode); +} +#endif + +#ifndef HAVE_ROTR +uint64_t rotr(uint64_t a, unsigned int b) { + return (a >> b) | (a << (-b & 63)); +} +#define HAVE_ROTR +#endif + +#ifndef HAVE_ROTL +uint64_t rotl(uint64_t a, unsigned int b) { + return (a << b) | (a >> (-b & 63)); +} +#define HAVE_ROTL +#endif + +#ifndef HAVE_MULH +#define LO(x) ((x)&0xffffffff) +#define HI(x) ((x) >> 32) +uint64_t mulh(uint64_t a, uint64_t b) { + uint64_t ah = HI(a), al = LO(a); + uint64_t bh = HI(b), bl = LO(b); + uint64_t x00 = al * bl; + uint64_t x01 = al * bh; + uint64_t x10 = ah * bl; + uint64_t x11 = ah * bh; + uint64_t m1 = LO(x10) + LO(x01) + HI(x00); + uint64_t m2 = HI(x10) + HI(x01) + LO(x11) + HI(m1); + uint64_t m3 = HI(x11) + HI(m2); + + return (m3 << 32) + LO(m2); +} +#define HAVE_MULH +#endif + +#ifndef HAVE_SMULH +int64_t smulh(int64_t a, int64_t b) { + int64_t hi = mulh(a, b); + if (a < 0LL) hi -= b; + if (b < 0LL) hi -= a; + return hi; +} +#define HAVE_SMULH +#endif + +#ifdef RANDOMX_DEFAULT_FENV + +void rx_reset_float_state() { + setRoundMode_(FE_TONEAREST); + // rx_set_double_precision(); +} + +void rx_set_rounding_mode(uint32_t mode) { + switch (mode & 3) { + case RoundDown: + setRoundMode_(round_min); + break; + case RoundUp: + setRoundMode_(round_max); + break; + case RoundToZero: + setRoundMode_(round_minMag); + break; + case RoundToNearest: + setRoundMode_(round_near_even); + break; + default: + UNREACHABLE; + } +} + +#endif diff --git a/miner/src/cpp/intrin_wasm.h b/miner/src/cpp/intrin_wasm.h new file mode 100644 index 0000000..a777af3 --- /dev/null +++ b/miner/src/cpp/intrin_wasm.h @@ -0,0 +1,152 @@ +#pragma once + +#include +#include +#include +#include +#include + +#include "endian.h" +#include "softfloat.hpp" + +constexpr int32_t unsigned32ToSigned2sCompl(uint32_t x) { + return (-1 == ~0) + ? (int32_t)x + : (x > INT32_MAX ? (-(int32_t)(UINT32_MAX - x) - 1) : (int32_t)x); +} + +constexpr int64_t unsigned64ToSigned2sCompl(uint64_t x) { + return (-1 == ~0) + ? (int64_t)x + : (x > INT64_MAX ? (-(int64_t)(UINT64_MAX - x) - 1) : (int64_t)x); +} + +constexpr uint64_t signExtend2sCompl(uint32_t x) { + return (-1 == ~0) + ? (int64_t)(int32_t)(x) + : (x > INT32_MAX ? (x | 0xffffffff00000000ULL) : (uint64_t)x); +} + +constexpr int RoundToNearest = 0; +constexpr int RoundDown = 1; +constexpr int RoundUp = 2; +constexpr int RoundToZero = 3; + +#define rx_sqrt sqrt + +typedef v128_t rx_vec_i128; +typedef v128_t rx_vec_f128; + +#define rx_aligned_alloc(a, b) aligned_alloc(b, a) +#define rx_aligned_free(a) free(a) +#define rx_prefetch_nta(x) +#define rx_prefetch_t0(x) + +#define rx_load_vec_f128 wasm_v128_load +#define rx_store_vec_f128 wasm_v128_store + +FORCE_INLINE rx_vec_f128 rx_set_vec_f128(uint64_t x1, uint64_t x0) { + return wasm_i64x2_make(x0, x1); +} + +FORCE_INLINE rx_vec_f128 rx_set1_vec_f128(uint64_t x) { + return wasm_i64x2_make(x, x); +} + +FORCE_INLINE rx_vec_f128 rx_swap_vec_f128(rx_vec_f128 a) { + return wasm_i8x16_shuffle(a, a, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7); +} + +FORCE_INLINE double rx_vec_f128_lo(rx_vec_f128 a) { + return wasm_f64x2_extract_lane(a, 0); +} + +FORCE_INLINE double rx_vec_f128_hi(rx_vec_f128 a) { + rx_vec_f128 tmp = wasm_i8x16_shuffle(a, a, 8, 9, 10, 11, 12, 13, 14, 15, 8, 9, 10, 11, 12, 13, 14, 15); + return wasm_f64x2_extract_lane(tmp, 0); +} + +FORCE_INLINE rx_vec_f128 rx_add_vec_f128(rx_vec_f128 a, rx_vec_f128 b) { + if (globalRoundingMode == round_near_even) return wasm_f64x2_add(a, b); + softdouble rlo = softdouble(rx_vec_f128_lo(a)) + softdouble(rx_vec_f128_lo(b)); + softdouble rhi = softdouble(rx_vec_f128_hi(a)) + softdouble(rx_vec_f128_hi(b)); + return wasm_f64x2_make(double(rlo), double(rhi)); +} + +FORCE_INLINE rx_vec_f128 rx_sub_vec_f128(rx_vec_f128 a, rx_vec_f128 b) { + if (globalRoundingMode == round_near_even) return wasm_f64x2_sub(a, b); + softdouble rlo = softdouble(rx_vec_f128_lo(a)) - softdouble(rx_vec_f128_lo(b)); + softdouble rhi = softdouble(rx_vec_f128_hi(a)) - softdouble(rx_vec_f128_hi(b)); + return wasm_f64x2_make(double(rlo), double(rhi)); +} + +FORCE_INLINE rx_vec_f128 rx_mul_vec_f128(rx_vec_f128 a, rx_vec_f128 b) { + if (globalRoundingMode == round_near_even) return wasm_f64x2_mul(a, b); + softdouble rlo = softdouble(rx_vec_f128_lo(a)) * softdouble(rx_vec_f128_lo(b)); + softdouble rhi = softdouble(rx_vec_f128_hi(a)) * softdouble(rx_vec_f128_hi(b)); + return wasm_f64x2_make(double(rlo), double(rhi)); +} + +FORCE_INLINE rx_vec_f128 rx_div_vec_f128(rx_vec_f128 a, rx_vec_f128 b) { + if (globalRoundingMode == round_near_even) return wasm_f64x2_div(a, b); + softdouble rlo = softdouble(rx_vec_f128_lo(a)) / softdouble(rx_vec_f128_lo(b)); + softdouble rhi = softdouble(rx_vec_f128_hi(a)) / softdouble(rx_vec_f128_hi(b)); + return wasm_f64x2_make(double(rlo), double(rhi)); +} + +FORCE_INLINE rx_vec_f128 rx_sqrt_vec_f128(rx_vec_f128 a) { + if (globalRoundingMode == round_near_even) return wasm_f64x2_sqrt(a); + softdouble rlo = sqrt(softdouble(rx_vec_f128_lo(a))); + softdouble rhi = sqrt(softdouble(rx_vec_f128_hi(a))); + return wasm_f64x2_make(double(rlo), double(rhi)); +} + +#define rx_xor_vec_f128 wasm_v128_xor +#define rx_and_vec_f128 wasm_v128_and +#define rx_or_vec_f128 wasm_v128_or + +FORCE_INLINE int rx_vec_i128_x(rx_vec_i128 a) { + return wasm_i32x4_extract_lane(a, 0); +} + +FORCE_INLINE int rx_vec_i128_y(rx_vec_i128 a) { + rx_vec_i128 tmp = wasm_i8x16_shuffle(a, a, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7); + return wasm_i32x4_extract_lane(tmp, 0); +} + +FORCE_INLINE int rx_vec_i128_z(rx_vec_i128 a) { + rx_vec_i128 tmp = wasm_i8x16_shuffle(a, a, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11, 8, 9, 10, 11); + return wasm_i32x4_extract_lane(tmp, 0); +} + +FORCE_INLINE int rx_vec_i128_w(rx_vec_i128 a) { + rx_vec_i128 tmp = wasm_i8x16_shuffle(a, a, 12, 13, 14, 15, 12, 13, 14, 15, 12, 13, 14, 15, 12, 13, 14, 15); + return wasm_i32x4_extract_lane(tmp, 0); +} + +FORCE_INLINE rx_vec_i128 rx_set_int_vec_i128(int _I3, int _I2, int _I1, int _I0) { + int v[] = {_I0, _I1, _I2, _I3}; + return wasm_v128_load(v); +} + +#define rx_xor_vec_i128 wasm_v128_xor +#define rx_load_vec_i128 wasm_v128_load +#define rx_store_vec_i128 wasm_v128_store + +FORCE_INLINE rx_vec_f128 rx_cvt_packed_int_vec_f128(const void* addr) { + double lo = (double)unsigned32ToSigned2sCompl(load32((uint8_t*)addr + 0)); + double hi = unsigned32ToSigned2sCompl(load32((uint8_t*)addr + 4)); + return wasm_f64x2_make(lo, hi); +} + +#define RANDOMX_DEFAULT_FENV + +#ifdef RANDOMX_DEFAULT_FENV +void rx_reset_float_state(); +void rx_set_rounding_mode(uint32_t mode); +#endif + +uint64_t mulh(uint64_t, uint64_t); +int64_t smulh(int64_t, int64_t); +uint64_t rotl(uint64_t, unsigned int); +uint64_t rotr(uint64_t, unsigned int); diff --git a/miner/src/cpp/intrin_wasm_simd.hpp b/miner/src/cpp/intrin_wasm_simd.hpp new file mode 100644 index 0000000..6ad3adb --- /dev/null +++ b/miner/src/cpp/intrin_wasm_simd.hpp @@ -0,0 +1,128 @@ +#pragma once + +#include + +// shuffle + +#define _WASM_SHUFFLE(fp3, fp2, fp1, fp0) (((fp3) << 6) | ((fp2) << 4) | \ + ((fp1) << 2) | ((fp0))) + +#define wasm_i32x4_shuffle_imm(__a, __imm) __extension__ ({ \ + wasm_i32x4_shuffle((__a), \ + wasm_i32x4_splat(0), \ + ((__imm) & 0x3), (((__imm) & 0xc) >> 2), \ + (((__imm) & 0x30) >> 4), (((__imm) & 0xc0) >> 6)); }) + +// unpack +static inline v128_t wasm_unpacklo_i8x16(v128_t a, v128_t b) { + return wasm_i8x16_shuffle(a, b, 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, + 22, 7, 23); +} + +static inline v128_t wasm_unpacklo_i16x8(v128_t a, v128_t b) { + return wasm_i8x16_shuffle(a, b, 0, 1, 16, 17, 2, 3, 18, 19, 4, 5, 20, 21, 6, + 7, 22, 23); +} + +static inline v128_t wasm_unpacklo_i32x4(v128_t a, v128_t b) { + return wasm_i8x16_shuffle(a, b, 0, 1, 2, 3, 16, 17, 18, 19, 4, 5, 6, 7, 20, + 21, 22, 23); +} + +static inline v128_t wasm_unpacklo_i64x2(v128_t a, v128_t b) { + return wasm_i8x16_shuffle(a, b, 0, 1, 2, 3, 4, 5, 6, 7, 16, 17, 18, 19, 20, + 21, 22, 23); +} + +static inline v128_t wasm_unpackhi_i8x16(v128_t a, v128_t b) { + return wasm_i8x16_shuffle(a, b, 8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, + 14, 30, 15, 31); +} + +static inline v128_t wasm_unpackhi_i16x8(v128_t a, v128_t b) { + return wasm_i8x16_shuffle(a, b, 8, 9, 24, 25, 10, 11, 26, 27, 12, 13, 28, 29, + 14, 15, 30, 31); +} + +static inline v128_t wasm_unpackhi_i32x4(v128_t a, v128_t b) { + return wasm_i8x16_shuffle(a, b, 8, 9, 10, 11, 24, 25, 26, 27, 12, 13, 14, 15, + 28, 29, 30, 31); +} + +static inline v128_t wasm_unpackhi_i64x2(v128_t a, v128_t b) { + return wasm_i8x16_shuffle(a, b, 8, 9, 10, 11, 12, 13, 14, 15, 24, 25, 26, 27, + 28, 29, 30, 31); +} + +// convert +// inline v128_t v128_cvtu8x16_i16x8(const v128_t a) { +// const v128_t z = wasm_i8x16_splat(0); +// return wasm_unpacklo_i8x16(a, z); +// } + +// inline v128_t v128_cvti8x16_i16x8(const v128_t a) { +// return wasm_i16x8_shr(wasm_unpacklo_i8x16(a, a), 8); +// } + +// inline v128_t v128_cvtu8x16_i32x4(const v128_t a) { +// const v128_t z = wasm_i8x16_splat(0); +// return wasm_unpacklo_i16x8(wasm_unpacklo_i8x16(a, z), z); +// } + +// inline v128_t v128_cvti8x16_i32x4(const v128_t a) { +// v128_t r = wasm_unpacklo_i8x16(a, a); +// r = wasm_unpacklo_i8x16(r, r); +// return wasm_i32x4_shr(r, 24); +// } + +// inline v128_t v128_cvtu16x8_i32x4(const v128_t a) { +// const v128_t z = wasm_i8x16_splat(0); +// return wasm_unpacklo_i16x8(a, z); +// } + +// inline v128_t v128_cvti16x8_i32x4(const v128_t a) { +// return wasm_i32x4_shr(wasm_unpacklo_i16x8(a, a), 16); +// } + +// inline v128_t v128_cvtu32x4_i64x2(const v128_t a) { +// const v128_t z = wasm_i8x16_splat(0); +// return wasm_unpacklo_i32x4(a, z); +// } + +// inline v128_t v128_cvti32x4_i64x2(const v128_t a) { +// return wasm_unpacklo_i32x4(a, wasm_i32x4_shr(a, 31)); +// } + +// inline v128_t v128_cvtu8x16_i16x8_high(const v128_t a) { +// const v128_t z = wasm_i8x16_splat(0); +// return wasm_unpackhi_i8x16(a, z); +// } + +// inline v128_t v128_cvti8x16_i16x8_high(const v128_t a) { +// return wasm_i16x8_shr(wasm_unpackhi_i8x16(a, a), 8); +// } + +// inline v128_t v128_cvtu16x8_i32x4_high(const v128_t a) { +// const v128_t z = wasm_i8x16_splat(0); +// return wasm_unpackhi_i16x8(a, z); +// } + +// inline v128_t v128_cvti16x8_i32x4_high(const v128_t a) { +// return wasm_i32x4_shr(wasm_unpackhi_i16x8(a, a), 16); +// } + +// inline v128_t v128_cvtu32x4_i64x2_high(const v128_t a) { +// const v128_t z = wasm_i8x16_splat(0); +// return wasm_unpackhi_i32x4(a, z); +// } + +// inline v128_t v128_cvti32x4_i64x2_high(const v128_t a) { +// return wasm_unpackhi_i32x4(a, wasm_i32x4_shr(a, 31)); +// } + +// arithmetic +static inline v128_t wasm_u64x2_mulu(const v128_t a, const v128_t b) { + return wasm_u64x2_extmul_low_u32x4( + wasm_v32x4_shuffle(a, a, 0, 2, 0, 2), + wasm_v32x4_shuffle(b, b, 0, 2, 0, 2)); +} \ No newline at end of file diff --git a/miner/src/cpp/program.hpp b/miner/src/cpp/program.hpp new file mode 100644 index 0000000..220508d --- /dev/null +++ b/miner/src/cpp/program.hpp @@ -0,0 +1,71 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include +#include +#include "common.hpp" +#include "instruction.hpp" +#include "endian.h" + +namespace randomx { + + struct ProgramConfiguration { + uint64_t eMask[2]; + uint32_t readReg0, readReg1, readReg2, readReg3; + }; + + class Program { + public: + Instruction& operator()(int pc) { + return programBuffer[pc]; + } + friend std::ostream& operator<<(std::ostream& os, const Program& p) { + p.print(os); + return os; + } + uint64_t getEntropy(int i) { + return load64(&entropyBuffer[i]); + } + uint32_t getSize() { + return RANDOMX_PROGRAM_SIZE; + } + private: + void print(std::ostream& os) const { + for (int i = 0; i < RANDOMX_PROGRAM_SIZE; ++i) { + auto instr = programBuffer[i]; + os << instr; + } + } + uint64_t entropyBuffer[16]; + Instruction programBuffer[RANDOMX_PROGRAM_SIZE]; + }; + + static_assert(sizeof(Program) % 64 == 0, "Invalid size of class randomx::Program"); +} diff --git a/miner/src/cpp/randomx.cpp b/miner/src/cpp/randomx.cpp new file mode 100644 index 0000000..fa8c4bb --- /dev/null +++ b/miner/src/cpp/randomx.cpp @@ -0,0 +1,265 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "randomx.h" +#include "dataset.hpp" +#include "vm_interpreted.hpp" +#include "vm_interpreted_light.hpp" +#include "vm_compiled.hpp" +#include "vm_compiled_light.hpp" +#include "blake2.h" +#include +#include + +extern "C" { + + randomx_flags randomx_get_flags() { + return RANDOMX_FLAG_DEFAULT; + } + + randomx_cache *randomx_alloc_cache(randomx_flags flags) { + randomx_cache *cache = nullptr; + try { + cache = new randomx_cache(); + switch ((int)(flags & RANDOMX_FLAG_LARGE_PAGES)) { + case RANDOMX_FLAG_DEFAULT: + cache->dealloc = &randomx::deallocCache; + cache->initialize = &randomx::initCache; + cache->datasetInit = &randomx::initDataset; + cache->memory = (uint8_t*)randomx::DefaultAllocator::allocMemory(randomx::CacheSize); + break; + + case RANDOMX_FLAG_LARGE_PAGES: + cache->dealloc = &randomx::deallocCache; + cache->initialize = &randomx::initCache; + cache->datasetInit = &randomx::initDataset; + cache->memory = (uint8_t*)randomx::LargePageAllocator::allocMemory(randomx::CacheSize); + break; + + default: + UNREACHABLE; + } + } + catch (std::exception &ex) { + if (cache != nullptr) { + randomx_release_cache(cache); + cache = nullptr; + } + } + + return cache; + } + + void randomx_init_cache(randomx_cache *cache, const void *key, size_t keySize) { + assert(cache != nullptr); + assert(keySize == 0 || key != nullptr); + std::string cacheKey; + cacheKey.assign((const char *)key, keySize); + if (cache->cacheKey != cacheKey || !cache->isInitialized()) { + cache->initialize(cache, key, keySize); + cache->cacheKey = cacheKey; + } + } + + void randomx_release_cache(randomx_cache* cache) { + assert(cache != nullptr); + if (cache->memory != nullptr) { + cache->dealloc(cache); + } + delete cache; + } + + randomx_dataset *randomx_alloc_dataset(randomx_flags flags) { + + //fail on 32-bit systems if DatasetSize is >= 4 GiB + if (randomx::DatasetSize > std::numeric_limits::max()) { + return nullptr; + } + + randomx_dataset *dataset = nullptr; + + try { + dataset = new randomx_dataset(); + if (flags & RANDOMX_FLAG_LARGE_PAGES) { + dataset->dealloc = &randomx::deallocDataset; + dataset->memory = (uint8_t*)randomx::LargePageAllocator::allocMemory(randomx::DatasetSize); + } + else { + dataset->dealloc = &randomx::deallocDataset; + dataset->memory = (uint8_t*)randomx::DefaultAllocator::allocMemory(randomx::DatasetSize); + } + } + catch (std::exception &ex) { + if (dataset != nullptr) { + randomx_release_dataset(dataset); + dataset = nullptr; + } + } + + return dataset; + } + + constexpr unsigned long DatasetItemCount = randomx::DatasetSize / RANDOMX_DATASET_ITEM_SIZE; + + unsigned long randomx_dataset_item_count() { + return DatasetItemCount; + } + + void randomx_init_dataset(randomx_dataset *dataset, randomx_cache *cache, unsigned long startItem, unsigned long itemCount) { + assert(dataset != nullptr); + assert(cache != nullptr); + assert(startItem < DatasetItemCount && itemCount <= DatasetItemCount); + assert(startItem + itemCount <= DatasetItemCount); + cache->datasetInit(cache, dataset->memory + startItem * randomx::CacheLineSize, startItem, startItem + itemCount); + } + + void *randomx_get_dataset_memory(randomx_dataset *dataset) { + assert(dataset != nullptr); + return dataset->memory; + } + + void randomx_release_dataset(randomx_dataset *dataset) { + assert(dataset != nullptr); + dataset->dealloc(dataset); + delete dataset; + } + + randomx_vm *randomx_create_vm(randomx_flags flags, randomx_cache *cache, randomx_dataset *dataset) { + assert(cache != nullptr || (flags & RANDOMX_FLAG_FULL_MEM)); + assert(cache == nullptr || cache->isInitialized()); + assert(dataset != nullptr || !(flags & RANDOMX_FLAG_FULL_MEM)); + + randomx_vm *vm = nullptr; + + try { + switch ((int)(flags & (RANDOMX_FLAG_FULL_MEM | RANDOMX_FLAG_LARGE_PAGES))) { + case RANDOMX_FLAG_DEFAULT: + vm = new randomx::InterpretedLightVmDefault(); + break; + + case RANDOMX_FLAG_FULL_MEM: + vm = new randomx::InterpretedVmDefault(); + break; + + case RANDOMX_FLAG_LARGE_PAGES: + vm = new randomx::InterpretedLightVmLargePage(); + break; + + case RANDOMX_FLAG_FULL_MEM | RANDOMX_FLAG_LARGE_PAGES: + vm = new randomx::InterpretedVmLargePage(); + break; + + default: + UNREACHABLE; + } + + if(cache != nullptr) { + vm->setCache(cache); + vm->cacheKey = cache->cacheKey; + } + + if(dataset != nullptr) + vm->setDataset(dataset); + + vm->allocate(); + } + catch (std::exception &ex) { + delete vm; + vm = nullptr; + } + + return vm; + } + + void randomx_vm_set_cache(randomx_vm *machine, randomx_cache* cache) { + assert(machine != nullptr); + assert(cache != nullptr && cache->isInitialized()); + if (machine->cacheKey != cache->cacheKey) { + machine->setCache(cache); + machine->cacheKey = cache->cacheKey; + } + } + + void randomx_vm_set_dataset(randomx_vm *machine, randomx_dataset *dataset) { + assert(machine != nullptr); + assert(dataset != nullptr); + machine->setDataset(dataset); + } + + void randomx_destroy_vm(randomx_vm *machine) { + assert(machine != nullptr); + delete machine; + } + + int randomx_calculate_hash(randomx_vm *machine, const void *nonce, size_t inputSize, void *output) { + assert(machine != nullptr); + assert(inputSize == 0 || nonce != nullptr); + assert(output != nullptr); + alignas(16) uint64_t tempHash[8]; + int blakeResult = blake2b(tempHash, sizeof(tempHash), nonce, inputSize, nullptr, 0); + assert(blakeResult == 0); + machine->initScratchpad(&tempHash); + machine->resetRoundingMode(); + for (int chain = 0; chain < RANDOMX_PROGRAM_COUNT - 1; ++chain) { + machine->run(&tempHash); + blakeResult = blake2b(tempHash, sizeof(tempHash), machine->getRegisterFile(), sizeof(randomx::RegisterFile), nullptr, 0); + assert(blakeResult == 0); + } + machine->run(&tempHash); + machine->getFinalResult(output, RANDOMX_HASH_SIZE); + return RANDOMX_PROGRAM_COUNT; + } + + void randomx_calculate_hash_first(randomx_vm* machine, const void* nonce, size_t inputSize) { + blake2b(machine->tempHash, sizeof(machine->tempHash), nonce, inputSize, nullptr, 0); + machine->initScratchpad(machine->tempHash); + } + + void randomx_calculate_hash_next(randomx_vm* machine, const void* nextInput, size_t nextInputSize, void* output) { + machine->resetRoundingMode(); + for (uint32_t chain = 0; chain < RANDOMX_PROGRAM_COUNT - 1; ++chain) { + machine->run(machine->tempHash); + blake2b(machine->tempHash, sizeof(machine->tempHash), machine->getRegisterFile(), sizeof(randomx::RegisterFile), nullptr, 0); + } + machine->run(machine->tempHash); + + // Finish current hash and fill the scratchpad for the next hash at the same time + blake2b(machine->tempHash, sizeof(machine->tempHash), nextInput, nextInputSize, nullptr, 0); + machine->hashAndFill(output, RANDOMX_HASH_SIZE, machine->tempHash); + } + + void randomx_calculate_hash_last(randomx_vm* machine, void* output) { + machine->resetRoundingMode(); + for (int chain = 0; chain < RANDOMX_PROGRAM_COUNT - 1; ++chain) { + machine->run(machine->tempHash); + blake2b(machine->tempHash, sizeof(machine->tempHash), machine->getRegisterFile(), sizeof(randomx::RegisterFile), nullptr, 0); + } + machine->run(machine->tempHash); + machine->getFinalResult(output, RANDOMX_HASH_SIZE); + } +} diff --git a/miner/src/cpp/randomx.h b/miner/src/cpp/randomx.h new file mode 100644 index 0000000..732b4b2 --- /dev/null +++ b/miner/src/cpp/randomx.h @@ -0,0 +1,247 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef RANDOMX_H +#define RANDOMX_H + +#include +#include + +#define RANDOMX_HASH_SIZE 32 +#define RANDOMX_DATASET_ITEM_SIZE 64 + +#ifndef RANDOMX_EXPORT +#define RANDOMX_EXPORT +#endif + +typedef enum { + RANDOMX_FLAG_DEFAULT = 0, + RANDOMX_FLAG_LARGE_PAGES = 1, + RANDOMX_FLAG_FULL_MEM = 2, + RANDOMX_FLAG_ARGON2 = 4 +} randomx_flags; + +typedef struct randomx_dataset randomx_dataset; +typedef struct randomx_cache randomx_cache; +typedef struct randomx_vm randomx_vm; + + +#if defined(__cplusplus) + +#ifdef __cpp_constexpr +#define CONSTEXPR constexpr +#else +#define CONSTEXPR +#endif + +inline CONSTEXPR randomx_flags operator |(randomx_flags a, randomx_flags b) { + return static_cast(static_cast(a) | static_cast(b)); +} +inline CONSTEXPR randomx_flags operator &(randomx_flags a, randomx_flags b) { + return static_cast(static_cast(a) & static_cast(b)); +} +inline randomx_flags& operator |=(randomx_flags& a, randomx_flags b) { + return a = a | b; +} + +extern "C" { +#endif + +/** + * @return The recommended flags to be used on the current machine. + * Does not include: + * RANDOMX_FLAG_LARGE_PAGES + * RANDOMX_FLAG_FULL_MEM + * These flags must be added manually if desired. + */ +RANDOMX_EXPORT randomx_flags randomx_get_flags(void); + +/** + * Creates a randomx_cache structure and allocates memory for RandomX Cache. + * + * @param flags is any combination of these 2 flags (each flag can be set or not set): + * RANDOMX_FLAG_LARGE_PAGES - allocate memory in large pages + * Optionally, one of these two flags may be selected: + * + * @return Pointer to an allocated randomx_cache structure. + * Returns NULL if: + * (1) memory allocation fails + * (2) an invalid or unsupported RANDOMX_FLAG_ARGON2 value is set + */ +RANDOMX_EXPORT randomx_cache *randomx_alloc_cache(randomx_flags flags); + +/** + * Initializes the cache memory and SuperscalarHash using the provided key value. + * Does nothing if called again with the same key value. + * + * @param cache is a pointer to a previously allocated randomx_cache structure. Must not be NULL. + * @param key is a pointer to memory which contains the key value. Must not be NULL. + * @param keySize is the number of bytes of the key. +*/ +RANDOMX_EXPORT void randomx_init_cache(randomx_cache *cache, const void *key, size_t keySize); + +/** + * Releases all memory occupied by the randomx_cache structure. + * + * @param cache is a pointer to a previously allocated randomx_cache structure. +*/ +RANDOMX_EXPORT void randomx_release_cache(randomx_cache* cache); + +/** + * Creates a randomx_dataset structure and allocates memory for RandomX Dataset. + * + * @param flags is the initialization flags. Only one flag is supported (can be set or not set): + * RANDOMX_FLAG_LARGE_PAGES - allocate memory in large pages + * + * @return Pointer to an allocated randomx_dataset structure. + * NULL is returned if memory allocation fails. + */ +RANDOMX_EXPORT randomx_dataset *randomx_alloc_dataset(randomx_flags flags); + +/** + * Gets the number of items contained in the dataset. + * + * @return the number of items contained in the dataset. +*/ +RANDOMX_EXPORT unsigned long randomx_dataset_item_count(void); + +/** + * Initializes dataset items. + * + * Note: In order to use the Dataset, all items from 0 to (randomx_dataset_item_count() - 1) must be initialized. + * This may be done by several calls to this function using non-overlapping item sequences. + * + * @param dataset is a pointer to a previously allocated randomx_dataset structure. Must not be NULL. + * @param cache is a pointer to a previously allocated and initialized randomx_cache structure. Must not be NULL. + * @param startItem is the item number where intialization should start. + * @param itemCount is the number of items that should be initialized. +*/ +RANDOMX_EXPORT void randomx_init_dataset(randomx_dataset *dataset, randomx_cache *cache, unsigned long startItem, unsigned long itemCount); + +/** + * Returns a pointer to the internal memory buffer of the dataset structure. The size + * of the internal memory buffer is randomx_dataset_item_count() * RANDOMX_DATASET_ITEM_SIZE. + * + * @param dataset is a pointer to a previously allocated randomx_dataset structure. Must not be NULL. + * + * @return Pointer to the internal memory buffer of the dataset structure. +*/ +RANDOMX_EXPORT void *randomx_get_dataset_memory(randomx_dataset *dataset); + +/** + * Releases all memory occupied by the randomx_dataset structure. + * + * @param dataset is a pointer to a previously allocated randomx_dataset structure. +*/ +RANDOMX_EXPORT void randomx_release_dataset(randomx_dataset *dataset); + +/** + * Creates and initializes a RandomX virtual machine. + * + * @param flags is any combination of these 5 flags (each flag can be set or not set): + * RANDOMX_FLAG_LARGE_PAGES - allocate scratchpad memory in large pages + * RANDOMX_FLAG_FULL_MEM - virtual machine will use the full dataset + * The numeric values of the first 4 flags are ordered so that a higher value will provide + * faster hash calculation and a lower numeric value will provide higher portability. + * Using RANDOMX_FLAG_DEFAULT (all flags not set) works on all platforms, but is the slowest. + * @param cache is a pointer to an initialized randomx_cache structure. Can be + * NULL if RANDOMX_FLAG_FULL_MEM is set. + * @param dataset is a pointer to a randomx_dataset structure. Can be NULL + * if RANDOMX_FLAG_FULL_MEM is not set. + * + * @return Pointer to an initialized randomx_vm structure. + * Returns NULL if: + * (1) Scratchpad memory allocation fails. + * (2) The requested initialization flags are not supported on the current platform. + * (3) cache parameter is NULL and RANDOMX_FLAG_FULL_MEM is not set + * (4) dataset parameter is NULL and RANDOMX_FLAG_FULL_MEM is set +*/ +RANDOMX_EXPORT randomx_vm *randomx_create_vm(randomx_flags flags, randomx_cache *cache, randomx_dataset *dataset); + +/** + * Reinitializes a virtual machine with a new Cache. This function should be called anytime + * the Cache is reinitialized with a new key. Does nothing if called with a Cache containing + * the same key value as already set. + * + * @param machine is a pointer to a randomx_vm structure that was initialized + * without RANDOMX_FLAG_FULL_MEM. Must not be NULL. + * @param cache is a pointer to an initialized randomx_cache structure. Must not be NULL. +*/ +RANDOMX_EXPORT void randomx_vm_set_cache(randomx_vm *machine, randomx_cache* cache); + +/** + * Reinitializes a virtual machine with a new Dataset. + * + * @param machine is a pointer to a randomx_vm structure that was initialized + * with RANDOMX_FLAG_FULL_MEM. Must not be NULL. + * @param dataset is a pointer to an initialized randomx_dataset structure. Must not be NULL. +*/ +RANDOMX_EXPORT void randomx_vm_set_dataset(randomx_vm *machine, randomx_dataset *dataset); + +/** + * Releases all memory occupied by the randomx_vm structure. + * + * @param machine is a pointer to a previously created randomx_vm structure. +*/ +RANDOMX_EXPORT void randomx_destroy_vm(randomx_vm *machine); + +/** + * Calculates a RandomX hash value. + * + * @param machine is a pointer to a randomx_vm structure. Must not be NULL. + * @param input is a pointer to memory to be hashed. Must not be NULL. + * @param inputSize is the number of bytes to be hashed. + * @param output is a pointer to memory where the hash will be stored. Must not + * be NULL and at least RANDOMX_HASH_SIZE bytes must be available for writing. +*/ +RANDOMX_EXPORT int randomx_calculate_hash(randomx_vm *machine, const void *input, size_t inputSize, void *output); + +/** + * Set of functions used to calculate multiple RandomX hashes more efficiently. + * randomx_calculate_hash_first will begin a hash calculation. + * randomx_calculate_hash_next will output the hash value of the previous input + * and begin the calculation of the next hash. + * randomx_calculate_hash_last will output the hash value of the previous input. + * + * @param machine is a pointer to a randomx_vm structure. Must not be NULL. + * @param input is a pointer to memory to be hashed. Must not be NULL. + * @param inputSize is the number of bytes to be hashed. + * @param nextInput is a pointer to memory to be hashed for the next hash. Must not be NULL. + * @param nextInputSize is the number of bytes to be hashed for the next hash. + * @param output is a pointer to memory where the hash will be stored. Must not + * be NULL and at least RANDOMX_HASH_SIZE bytes must be available for writing. +*/ +RANDOMX_EXPORT void randomx_calculate_hash_first(randomx_vm* machine, const void* input, size_t inputSize); +RANDOMX_EXPORT void randomx_calculate_hash_next(randomx_vm* machine, const void* nextInput, size_t nextInputSize, void* output); +RANDOMX_EXPORT void randomx_calculate_hash_last(randomx_vm* machine, void* output); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/miner/src/cpp/reciprocal.c b/miner/src/cpp/reciprocal.c new file mode 100644 index 0000000..867cc03 --- /dev/null +++ b/miner/src/cpp/reciprocal.c @@ -0,0 +1,80 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include "reciprocal.h" + +/* + Calculates rcp = 2**x / divisor for highest integer x such that rcp < 2**64. + divisor must not be 0 or a power of 2 + + Equivalent x86 assembly (divisor in rcx): + + mov edx, 1 + mov r8, rcx + xor eax, eax + bsr rcx, rcx + shl rdx, cl + div r8 + ret + +*/ +uint64_t randomx_reciprocal(uint64_t divisor) { + + assert(divisor != 0); + + const uint64_t p2exp63 = 1ULL << 63; + + uint64_t quotient = p2exp63 / divisor, remainder = p2exp63 % divisor; + + unsigned bsr = 0; //highest set bit in divisor + + for (uint64_t bit = divisor; bit > 0; bit >>= 1) + bsr++; + + for (unsigned shift = 0; shift < bsr; shift++) { + if (remainder >= divisor - remainder) { + quotient = quotient * 2 + 1; + remainder = remainder * 2 - divisor; + } + else { + quotient = quotient * 2; + remainder = remainder * 2; + } + } + + return quotient; +} + +#if !RANDOMX_HAVE_FAST_RECIPROCAL + +uint64_t randomx_reciprocal_fast(uint64_t divisor) { + return randomx_reciprocal(divisor); +} + +#endif diff --git a/miner/src/cpp/reciprocal.h b/miner/src/cpp/reciprocal.h new file mode 100644 index 0000000..cb27d9f --- /dev/null +++ b/miner/src/cpp/reciprocal.h @@ -0,0 +1,48 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include + +#if defined(_M_X64) || defined(__x86_64__) +#define RANDOMX_HAVE_FAST_RECIPROCAL 1 +#else +#define RANDOMX_HAVE_FAST_RECIPROCAL 0 +#endif + +#if defined(__cplusplus) +extern "C" { +#endif + +uint64_t randomx_reciprocal(uint64_t); +uint64_t randomx_reciprocal_fast(uint64_t); + +#if defined(__cplusplus) +} +#endif diff --git a/miner/src/cpp/soft_aes.hpp b/miner/src/cpp/soft_aes.hpp new file mode 100644 index 0000000..97d1584 --- /dev/null +++ b/miner/src/cpp/soft_aes.hpp @@ -0,0 +1,367 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include +#include "intrin_wasm.h" + +alignas(16) const uint8_t sbox[256] = { + 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, + 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, + 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, + 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, + 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, + 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, + 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, + 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, + 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, + 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, + 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, + 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, + 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, + 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, + 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, + 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16, +}; + +alignas(16) const uint32_t lutEnc0[256] = { + 0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6, 0x0df2f2ff, 0xbd6b6bd6, 0xb16f6fde, 0x54c5c591, + 0x50303060, 0x03010102, 0xa96767ce, 0x7d2b2b56, 0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec, + 0x45caca8f, 0x9d82821f, 0x40c9c989, 0x877d7dfa, 0x15fafaef, 0xeb5959b2, 0xc947478e, 0x0bf0f0fb, + 0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45, 0xbf9c9c23, 0xf7a4a453, 0x967272e4, 0x5bc0c09b, + 0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c, 0x5a36366c, 0x413f3f7e, 0x02f7f7f5, 0x4fcccc83, + 0x5c343468, 0xf4a5a551, 0x34e5e5d1, 0x08f1f1f9, 0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a, + 0x0c040408, 0x52c7c795, 0x65232346, 0x5ec3c39d, 0x28181830, 0xa1969637, 0x0f05050a, 0xb59a9a2f, + 0x0907070e, 0x36121224, 0x9b80801b, 0x3de2e2df, 0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea, + 0x1b090912, 0x9e83831d, 0x742c2c58, 0x2e1a1a34, 0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b, + 0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d, 0x7b292952, 0x3ee3e3dd, 0x712f2f5e, 0x97848413, + 0xf55353a6, 0x68d1d1b9, 0x00000000, 0x2cededc1, 0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6, + 0xbe6a6ad4, 0x46cbcb8d, 0xd9bebe67, 0x4b393972, 0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85, + 0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed, 0xc5434386, 0xd74d4d9a, 0x55333366, 0x94858511, + 0xcf45458a, 0x10f9f9e9, 0x06020204, 0x817f7ffe, 0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b, + 0xf35151a2, 0xfea3a35d, 0xc0404080, 0x8a8f8f05, 0xad92923f, 0xbc9d9d21, 0x48383870, 0x04f5f5f1, + 0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142, 0x30101020, 0x1affffe5, 0x0ef3f3fd, 0x6dd2d2bf, + 0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3, 0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e, + 0x57c4c493, 0xf2a7a755, 0x827e7efc, 0x473d3d7a, 0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6, + 0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3, 0x66222244, 0x7e2a2a54, 0xab90903b, 0x8388880b, + 0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428, 0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad, + 0x3be0e0db, 0x56323264, 0x4e3a3a74, 0x1e0a0a14, 0xdb494992, 0x0a06060c, 0x6c242448, 0xe45c5cb8, + 0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4, 0xa8919139, 0xa4959531, 0x37e4e4d3, 0x8b7979f2, + 0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda, 0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949, + 0xb46c6cd8, 0xfa5656ac, 0x07f4f4f3, 0x25eaeacf, 0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810, + 0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c, 0x241c1c38, 0xf1a6a657, 0xc7b4b473, 0x51c6c697, + 0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e, 0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f, + 0x907070e0, 0x423e3e7c, 0xc4b5b571, 0xaa6666cc, 0xd8484890, 0x05030306, 0x01f6f6f7, 0x120e0e1c, + 0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969, 0x91868617, 0x58c1c199, 0x271d1d3a, 0xb99e9e27, + 0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122, 0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433, + 0xb69b9b2d, 0x221e1e3c, 0x92878715, 0x20e9e9c9, 0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5, + 0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a, 0xdabfbf65, 0x31e6e6d7, 0xc6424284, 0xb86868d0, + 0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e, 0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c, +}; + +alignas(16) const uint32_t lutEnc1[256] = { + 0x6363c6a5, 0x7c7cf884, 0x7777ee99, 0x7b7bf68d, 0xf2f2ff0d, 0x6b6bd6bd, 0x6f6fdeb1, 0xc5c59154, + 0x30306050, 0x01010203, 0x6767cea9, 0x2b2b567d, 0xfefee719, 0xd7d7b562, 0xabab4de6, 0x7676ec9a, + 0xcaca8f45, 0x82821f9d, 0xc9c98940, 0x7d7dfa87, 0xfafaef15, 0x5959b2eb, 0x47478ec9, 0xf0f0fb0b, + 0xadad41ec, 0xd4d4b367, 0xa2a25ffd, 0xafaf45ea, 0x9c9c23bf, 0xa4a453f7, 0x7272e496, 0xc0c09b5b, + 0xb7b775c2, 0xfdfde11c, 0x93933dae, 0x26264c6a, 0x36366c5a, 0x3f3f7e41, 0xf7f7f502, 0xcccc834f, + 0x3434685c, 0xa5a551f4, 0xe5e5d134, 0xf1f1f908, 0x7171e293, 0xd8d8ab73, 0x31316253, 0x15152a3f, + 0x0404080c, 0xc7c79552, 0x23234665, 0xc3c39d5e, 0x18183028, 0x969637a1, 0x05050a0f, 0x9a9a2fb5, + 0x07070e09, 0x12122436, 0x80801b9b, 0xe2e2df3d, 0xebebcd26, 0x27274e69, 0xb2b27fcd, 0x7575ea9f, + 0x0909121b, 0x83831d9e, 0x2c2c5874, 0x1a1a342e, 0x1b1b362d, 0x6e6edcb2, 0x5a5ab4ee, 0xa0a05bfb, + 0x5252a4f6, 0x3b3b764d, 0xd6d6b761, 0xb3b37dce, 0x2929527b, 0xe3e3dd3e, 0x2f2f5e71, 0x84841397, + 0x5353a6f5, 0xd1d1b968, 0x00000000, 0xededc12c, 0x20204060, 0xfcfce31f, 0xb1b179c8, 0x5b5bb6ed, + 0x6a6ad4be, 0xcbcb8d46, 0xbebe67d9, 0x3939724b, 0x4a4a94de, 0x4c4c98d4, 0x5858b0e8, 0xcfcf854a, + 0xd0d0bb6b, 0xefefc52a, 0xaaaa4fe5, 0xfbfbed16, 0x434386c5, 0x4d4d9ad7, 0x33336655, 0x85851194, + 0x45458acf, 0xf9f9e910, 0x02020406, 0x7f7ffe81, 0x5050a0f0, 0x3c3c7844, 0x9f9f25ba, 0xa8a84be3, + 0x5151a2f3, 0xa3a35dfe, 0x404080c0, 0x8f8f058a, 0x92923fad, 0x9d9d21bc, 0x38387048, 0xf5f5f104, + 0xbcbc63df, 0xb6b677c1, 0xdadaaf75, 0x21214263, 0x10102030, 0xffffe51a, 0xf3f3fd0e, 0xd2d2bf6d, + 0xcdcd814c, 0x0c0c1814, 0x13132635, 0xececc32f, 0x5f5fbee1, 0x979735a2, 0x444488cc, 0x17172e39, + 0xc4c49357, 0xa7a755f2, 0x7e7efc82, 0x3d3d7a47, 0x6464c8ac, 0x5d5dbae7, 0x1919322b, 0x7373e695, + 0x6060c0a0, 0x81811998, 0x4f4f9ed1, 0xdcdca37f, 0x22224466, 0x2a2a547e, 0x90903bab, 0x88880b83, + 0x46468cca, 0xeeeec729, 0xb8b86bd3, 0x1414283c, 0xdedea779, 0x5e5ebce2, 0x0b0b161d, 0xdbdbad76, + 0xe0e0db3b, 0x32326456, 0x3a3a744e, 0x0a0a141e, 0x494992db, 0x06060c0a, 0x2424486c, 0x5c5cb8e4, + 0xc2c29f5d, 0xd3d3bd6e, 0xacac43ef, 0x6262c4a6, 0x919139a8, 0x959531a4, 0xe4e4d337, 0x7979f28b, + 0xe7e7d532, 0xc8c88b43, 0x37376e59, 0x6d6ddab7, 0x8d8d018c, 0xd5d5b164, 0x4e4e9cd2, 0xa9a949e0, + 0x6c6cd8b4, 0x5656acfa, 0xf4f4f307, 0xeaeacf25, 0x6565caaf, 0x7a7af48e, 0xaeae47e9, 0x08081018, + 0xbaba6fd5, 0x7878f088, 0x25254a6f, 0x2e2e5c72, 0x1c1c3824, 0xa6a657f1, 0xb4b473c7, 0xc6c69751, + 0xe8e8cb23, 0xdddda17c, 0x7474e89c, 0x1f1f3e21, 0x4b4b96dd, 0xbdbd61dc, 0x8b8b0d86, 0x8a8a0f85, + 0x7070e090, 0x3e3e7c42, 0xb5b571c4, 0x6666ccaa, 0x484890d8, 0x03030605, 0xf6f6f701, 0x0e0e1c12, + 0x6161c2a3, 0x35356a5f, 0x5757aef9, 0xb9b969d0, 0x86861791, 0xc1c19958, 0x1d1d3a27, 0x9e9e27b9, + 0xe1e1d938, 0xf8f8eb13, 0x98982bb3, 0x11112233, 0x6969d2bb, 0xd9d9a970, 0x8e8e0789, 0x949433a7, + 0x9b9b2db6, 0x1e1e3c22, 0x87871592, 0xe9e9c920, 0xcece8749, 0x5555aaff, 0x28285078, 0xdfdfa57a, + 0x8c8c038f, 0xa1a159f8, 0x89890980, 0x0d0d1a17, 0xbfbf65da, 0xe6e6d731, 0x424284c6, 0x6868d0b8, + 0x414182c3, 0x999929b0, 0x2d2d5a77, 0x0f0f1e11, 0xb0b07bcb, 0x5454a8fc, 0xbbbb6dd6, 0x16162c3a, +}; + +alignas(16) const uint32_t lutEnc2[256] = { + 0x63c6a563, 0x7cf8847c, 0x77ee9977, 0x7bf68d7b, 0xf2ff0df2, 0x6bd6bd6b, 0x6fdeb16f, 0xc59154c5, + 0x30605030, 0x01020301, 0x67cea967, 0x2b567d2b, 0xfee719fe, 0xd7b562d7, 0xab4de6ab, 0x76ec9a76, + 0xca8f45ca, 0x821f9d82, 0xc98940c9, 0x7dfa877d, 0xfaef15fa, 0x59b2eb59, 0x478ec947, 0xf0fb0bf0, + 0xad41ecad, 0xd4b367d4, 0xa25ffda2, 0xaf45eaaf, 0x9c23bf9c, 0xa453f7a4, 0x72e49672, 0xc09b5bc0, + 0xb775c2b7, 0xfde11cfd, 0x933dae93, 0x264c6a26, 0x366c5a36, 0x3f7e413f, 0xf7f502f7, 0xcc834fcc, + 0x34685c34, 0xa551f4a5, 0xe5d134e5, 0xf1f908f1, 0x71e29371, 0xd8ab73d8, 0x31625331, 0x152a3f15, + 0x04080c04, 0xc79552c7, 0x23466523, 0xc39d5ec3, 0x18302818, 0x9637a196, 0x050a0f05, 0x9a2fb59a, + 0x070e0907, 0x12243612, 0x801b9b80, 0xe2df3de2, 0xebcd26eb, 0x274e6927, 0xb27fcdb2, 0x75ea9f75, + 0x09121b09, 0x831d9e83, 0x2c58742c, 0x1a342e1a, 0x1b362d1b, 0x6edcb26e, 0x5ab4ee5a, 0xa05bfba0, + 0x52a4f652, 0x3b764d3b, 0xd6b761d6, 0xb37dceb3, 0x29527b29, 0xe3dd3ee3, 0x2f5e712f, 0x84139784, + 0x53a6f553, 0xd1b968d1, 0x00000000, 0xedc12ced, 0x20406020, 0xfce31ffc, 0xb179c8b1, 0x5bb6ed5b, + 0x6ad4be6a, 0xcb8d46cb, 0xbe67d9be, 0x39724b39, 0x4a94de4a, 0x4c98d44c, 0x58b0e858, 0xcf854acf, + 0xd0bb6bd0, 0xefc52aef, 0xaa4fe5aa, 0xfbed16fb, 0x4386c543, 0x4d9ad74d, 0x33665533, 0x85119485, + 0x458acf45, 0xf9e910f9, 0x02040602, 0x7ffe817f, 0x50a0f050, 0x3c78443c, 0x9f25ba9f, 0xa84be3a8, + 0x51a2f351, 0xa35dfea3, 0x4080c040, 0x8f058a8f, 0x923fad92, 0x9d21bc9d, 0x38704838, 0xf5f104f5, + 0xbc63dfbc, 0xb677c1b6, 0xdaaf75da, 0x21426321, 0x10203010, 0xffe51aff, 0xf3fd0ef3, 0xd2bf6dd2, + 0xcd814ccd, 0x0c18140c, 0x13263513, 0xecc32fec, 0x5fbee15f, 0x9735a297, 0x4488cc44, 0x172e3917, + 0xc49357c4, 0xa755f2a7, 0x7efc827e, 0x3d7a473d, 0x64c8ac64, 0x5dbae75d, 0x19322b19, 0x73e69573, + 0x60c0a060, 0x81199881, 0x4f9ed14f, 0xdca37fdc, 0x22446622, 0x2a547e2a, 0x903bab90, 0x880b8388, + 0x468cca46, 0xeec729ee, 0xb86bd3b8, 0x14283c14, 0xdea779de, 0x5ebce25e, 0x0b161d0b, 0xdbad76db, + 0xe0db3be0, 0x32645632, 0x3a744e3a, 0x0a141e0a, 0x4992db49, 0x060c0a06, 0x24486c24, 0x5cb8e45c, + 0xc29f5dc2, 0xd3bd6ed3, 0xac43efac, 0x62c4a662, 0x9139a891, 0x9531a495, 0xe4d337e4, 0x79f28b79, + 0xe7d532e7, 0xc88b43c8, 0x376e5937, 0x6ddab76d, 0x8d018c8d, 0xd5b164d5, 0x4e9cd24e, 0xa949e0a9, + 0x6cd8b46c, 0x56acfa56, 0xf4f307f4, 0xeacf25ea, 0x65caaf65, 0x7af48e7a, 0xae47e9ae, 0x08101808, + 0xba6fd5ba, 0x78f08878, 0x254a6f25, 0x2e5c722e, 0x1c38241c, 0xa657f1a6, 0xb473c7b4, 0xc69751c6, + 0xe8cb23e8, 0xdda17cdd, 0x74e89c74, 0x1f3e211f, 0x4b96dd4b, 0xbd61dcbd, 0x8b0d868b, 0x8a0f858a, + 0x70e09070, 0x3e7c423e, 0xb571c4b5, 0x66ccaa66, 0x4890d848, 0x03060503, 0xf6f701f6, 0x0e1c120e, + 0x61c2a361, 0x356a5f35, 0x57aef957, 0xb969d0b9, 0x86179186, 0xc19958c1, 0x1d3a271d, 0x9e27b99e, + 0xe1d938e1, 0xf8eb13f8, 0x982bb398, 0x11223311, 0x69d2bb69, 0xd9a970d9, 0x8e07898e, 0x9433a794, + 0x9b2db69b, 0x1e3c221e, 0x87159287, 0xe9c920e9, 0xce8749ce, 0x55aaff55, 0x28507828, 0xdfa57adf, + 0x8c038f8c, 0xa159f8a1, 0x89098089, 0x0d1a170d, 0xbf65dabf, 0xe6d731e6, 0x4284c642, 0x68d0b868, + 0x4182c341, 0x9929b099, 0x2d5a772d, 0x0f1e110f, 0xb07bcbb0, 0x54a8fc54, 0xbb6dd6bb, 0x162c3a16, +}; + +alignas(16) const uint32_t lutEnc3[256] = { + 0xc6a56363, 0xf8847c7c, 0xee997777, 0xf68d7b7b, 0xff0df2f2, 0xd6bd6b6b, 0xdeb16f6f, 0x9154c5c5, + 0x60503030, 0x02030101, 0xcea96767, 0x567d2b2b, 0xe719fefe, 0xb562d7d7, 0x4de6abab, 0xec9a7676, + 0x8f45caca, 0x1f9d8282, 0x8940c9c9, 0xfa877d7d, 0xef15fafa, 0xb2eb5959, 0x8ec94747, 0xfb0bf0f0, + 0x41ecadad, 0xb367d4d4, 0x5ffda2a2, 0x45eaafaf, 0x23bf9c9c, 0x53f7a4a4, 0xe4967272, 0x9b5bc0c0, + 0x75c2b7b7, 0xe11cfdfd, 0x3dae9393, 0x4c6a2626, 0x6c5a3636, 0x7e413f3f, 0xf502f7f7, 0x834fcccc, + 0x685c3434, 0x51f4a5a5, 0xd134e5e5, 0xf908f1f1, 0xe2937171, 0xab73d8d8, 0x62533131, 0x2a3f1515, + 0x080c0404, 0x9552c7c7, 0x46652323, 0x9d5ec3c3, 0x30281818, 0x37a19696, 0x0a0f0505, 0x2fb59a9a, + 0x0e090707, 0x24361212, 0x1b9b8080, 0xdf3de2e2, 0xcd26ebeb, 0x4e692727, 0x7fcdb2b2, 0xea9f7575, + 0x121b0909, 0x1d9e8383, 0x58742c2c, 0x342e1a1a, 0x362d1b1b, 0xdcb26e6e, 0xb4ee5a5a, 0x5bfba0a0, + 0xa4f65252, 0x764d3b3b, 0xb761d6d6, 0x7dceb3b3, 0x527b2929, 0xdd3ee3e3, 0x5e712f2f, 0x13978484, + 0xa6f55353, 0xb968d1d1, 0x00000000, 0xc12ceded, 0x40602020, 0xe31ffcfc, 0x79c8b1b1, 0xb6ed5b5b, + 0xd4be6a6a, 0x8d46cbcb, 0x67d9bebe, 0x724b3939, 0x94de4a4a, 0x98d44c4c, 0xb0e85858, 0x854acfcf, + 0xbb6bd0d0, 0xc52aefef, 0x4fe5aaaa, 0xed16fbfb, 0x86c54343, 0x9ad74d4d, 0x66553333, 0x11948585, + 0x8acf4545, 0xe910f9f9, 0x04060202, 0xfe817f7f, 0xa0f05050, 0x78443c3c, 0x25ba9f9f, 0x4be3a8a8, + 0xa2f35151, 0x5dfea3a3, 0x80c04040, 0x058a8f8f, 0x3fad9292, 0x21bc9d9d, 0x70483838, 0xf104f5f5, + 0x63dfbcbc, 0x77c1b6b6, 0xaf75dada, 0x42632121, 0x20301010, 0xe51affff, 0xfd0ef3f3, 0xbf6dd2d2, + 0x814ccdcd, 0x18140c0c, 0x26351313, 0xc32fecec, 0xbee15f5f, 0x35a29797, 0x88cc4444, 0x2e391717, + 0x9357c4c4, 0x55f2a7a7, 0xfc827e7e, 0x7a473d3d, 0xc8ac6464, 0xbae75d5d, 0x322b1919, 0xe6957373, + 0xc0a06060, 0x19988181, 0x9ed14f4f, 0xa37fdcdc, 0x44662222, 0x547e2a2a, 0x3bab9090, 0x0b838888, + 0x8cca4646, 0xc729eeee, 0x6bd3b8b8, 0x283c1414, 0xa779dede, 0xbce25e5e, 0x161d0b0b, 0xad76dbdb, + 0xdb3be0e0, 0x64563232, 0x744e3a3a, 0x141e0a0a, 0x92db4949, 0x0c0a0606, 0x486c2424, 0xb8e45c5c, + 0x9f5dc2c2, 0xbd6ed3d3, 0x43efacac, 0xc4a66262, 0x39a89191, 0x31a49595, 0xd337e4e4, 0xf28b7979, + 0xd532e7e7, 0x8b43c8c8, 0x6e593737, 0xdab76d6d, 0x018c8d8d, 0xb164d5d5, 0x9cd24e4e, 0x49e0a9a9, + 0xd8b46c6c, 0xacfa5656, 0xf307f4f4, 0xcf25eaea, 0xcaaf6565, 0xf48e7a7a, 0x47e9aeae, 0x10180808, + 0x6fd5baba, 0xf0887878, 0x4a6f2525, 0x5c722e2e, 0x38241c1c, 0x57f1a6a6, 0x73c7b4b4, 0x9751c6c6, + 0xcb23e8e8, 0xa17cdddd, 0xe89c7474, 0x3e211f1f, 0x96dd4b4b, 0x61dcbdbd, 0x0d868b8b, 0x0f858a8a, + 0xe0907070, 0x7c423e3e, 0x71c4b5b5, 0xccaa6666, 0x90d84848, 0x06050303, 0xf701f6f6, 0x1c120e0e, + 0xc2a36161, 0x6a5f3535, 0xaef95757, 0x69d0b9b9, 0x17918686, 0x9958c1c1, 0x3a271d1d, 0x27b99e9e, + 0xd938e1e1, 0xeb13f8f8, 0x2bb39898, 0x22331111, 0xd2bb6969, 0xa970d9d9, 0x07898e8e, 0x33a79494, + 0x2db69b9b, 0x3c221e1e, 0x15928787, 0xc920e9e9, 0x8749cece, 0xaaff5555, 0x50782828, 0xa57adfdf, + 0x038f8c8c, 0x59f8a1a1, 0x09808989, 0x1a170d0d, 0x65dabfbf, 0xd731e6e6, 0x84c64242, 0xd0b86868, + 0x82c34141, 0x29b09999, 0x5a772d2d, 0x1e110f0f, 0x7bcbb0b0, 0xa8fc5454, 0x6dd6bbbb, 0x2c3a1616, +}; + +alignas(16) const uint32_t lutDec0[256] = { + 0x50a7f451, 0x5365417e, 0xc3a4171a, 0x965e273a, 0xcb6bab3b, 0xf1459d1f, 0xab58faac, 0x9303e34b, + 0x55fa3020, 0xf66d76ad, 0x9176cc88, 0x254c02f5, 0xfcd7e54f, 0xd7cb2ac5, 0x80443526, 0x8fa362b5, + 0x495ab1de, 0x671bba25, 0x980eea45, 0xe1c0fe5d, 0x02752fc3, 0x12f04c81, 0xa397468d, 0xc6f9d36b, + 0xe75f8f03, 0x959c9215, 0xeb7a6dbf, 0xda595295, 0x2d83bed4, 0xd3217458, 0x2969e049, 0x44c8c98e, + 0x6a89c275, 0x78798ef4, 0x6b3e5899, 0xdd71b927, 0xb64fe1be, 0x17ad88f0, 0x66ac20c9, 0xb43ace7d, + 0x184adf63, 0x82311ae5, 0x60335197, 0x457f5362, 0xe07764b1, 0x84ae6bbb, 0x1ca081fe, 0x942b08f9, + 0x58684870, 0x19fd458f, 0x876cde94, 0xb7f87b52, 0x23d373ab, 0xe2024b72, 0x578f1fe3, 0x2aab5566, + 0x0728ebb2, 0x03c2b52f, 0x9a7bc586, 0xa50837d3, 0xf2872830, 0xb2a5bf23, 0xba6a0302, 0x5c8216ed, + 0x2b1ccf8a, 0x92b479a7, 0xf0f207f3, 0xa1e2694e, 0xcdf4da65, 0xd5be0506, 0x1f6234d1, 0x8afea6c4, + 0x9d532e34, 0xa055f3a2, 0x32e18a05, 0x75ebf6a4, 0x39ec830b, 0xaaef6040, 0x069f715e, 0x51106ebd, + 0xf98a213e, 0x3d06dd96, 0xae053edd, 0x46bde64d, 0xb58d5491, 0x055dc471, 0x6fd40604, 0xff155060, + 0x24fb9819, 0x97e9bdd6, 0xcc434089, 0x779ed967, 0xbd42e8b0, 0x888b8907, 0x385b19e7, 0xdbeec879, + 0x470a7ca1, 0xe90f427c, 0xc91e84f8, 0x00000000, 0x83868009, 0x48ed2b32, 0xac70111e, 0x4e725a6c, + 0xfbff0efd, 0x5638850f, 0x1ed5ae3d, 0x27392d36, 0x64d90f0a, 0x21a65c68, 0xd1545b9b, 0x3a2e3624, + 0xb1670a0c, 0x0fe75793, 0xd296eeb4, 0x9e919b1b, 0x4fc5c080, 0xa220dc61, 0x694b775a, 0x161a121c, + 0x0aba93e2, 0xe52aa0c0, 0x43e0223c, 0x1d171b12, 0x0b0d090e, 0xadc78bf2, 0xb9a8b62d, 0xc8a91e14, + 0x8519f157, 0x4c0775af, 0xbbdd99ee, 0xfd607fa3, 0x9f2601f7, 0xbcf5725c, 0xc53b6644, 0x347efb5b, + 0x7629438b, 0xdcc623cb, 0x68fcedb6, 0x63f1e4b8, 0xcadc31d7, 0x10856342, 0x40229713, 0x2011c684, + 0x7d244a85, 0xf83dbbd2, 0x1132f9ae, 0x6da129c7, 0x4b2f9e1d, 0xf330b2dc, 0xec52860d, 0xd0e3c177, + 0x6c16b32b, 0x99b970a9, 0xfa489411, 0x2264e947, 0xc48cfca8, 0x1a3ff0a0, 0xd82c7d56, 0xef903322, + 0xc74e4987, 0xc1d138d9, 0xfea2ca8c, 0x360bd498, 0xcf81f5a6, 0x28de7aa5, 0x268eb7da, 0xa4bfad3f, + 0xe49d3a2c, 0x0d927850, 0x9bcc5f6a, 0x62467e54, 0xc2138df6, 0xe8b8d890, 0x5ef7392e, 0xf5afc382, + 0xbe805d9f, 0x7c93d069, 0xa92dd56f, 0xb31225cf, 0x3b99acc8, 0xa77d1810, 0x6e639ce8, 0x7bbb3bdb, + 0x097826cd, 0xf418596e, 0x01b79aec, 0xa89a4f83, 0x656e95e6, 0x7ee6ffaa, 0x08cfbc21, 0xe6e815ef, + 0xd99be7ba, 0xce366f4a, 0xd4099fea, 0xd67cb029, 0xafb2a431, 0x31233f2a, 0x3094a5c6, 0xc066a235, + 0x37bc4e74, 0xa6ca82fc, 0xb0d090e0, 0x15d8a733, 0x4a9804f1, 0xf7daec41, 0x0e50cd7f, 0x2ff69117, + 0x8dd64d76, 0x4db0ef43, 0x544daacc, 0xdf0496e4, 0xe3b5d19e, 0x1b886a4c, 0xb81f2cc1, 0x7f516546, + 0x04ea5e9d, 0x5d358c01, 0x737487fa, 0x2e410bfb, 0x5a1d67b3, 0x52d2db92, 0x335610e9, 0x1347d66d, + 0x8c61d79a, 0x7a0ca137, 0x8e14f859, 0x893c13eb, 0xee27a9ce, 0x35c961b7, 0xede51ce1, 0x3cb1477a, + 0x59dfd29c, 0x3f73f255, 0x79ce1418, 0xbf37c773, 0xeacdf753, 0x5baafd5f, 0x146f3ddf, 0x86db4478, + 0x81f3afca, 0x3ec468b9, 0x2c342438, 0x5f40a3c2, 0x72c31d16, 0x0c25e2bc, 0x8b493c28, 0x41950dff, + 0x7101a839, 0xdeb30c08, 0x9ce4b4d8, 0x90c15664, 0x6184cb7b, 0x70b632d5, 0x745c6c48, 0x4257b8d0, +}; + +alignas(16) const uint32_t lutDec1[256] = { + 0xa7f45150, 0x65417e53, 0xa4171ac3, 0x5e273a96, 0x6bab3bcb, 0x459d1ff1, 0x58faacab, 0x03e34b93, + 0xfa302055, 0x6d76adf6, 0x76cc8891, 0x4c02f525, 0xd7e54ffc, 0xcb2ac5d7, 0x44352680, 0xa362b58f, + 0x5ab1de49, 0x1bba2567, 0x0eea4598, 0xc0fe5de1, 0x752fc302, 0xf04c8112, 0x97468da3, 0xf9d36bc6, + 0x5f8f03e7, 0x9c921595, 0x7a6dbfeb, 0x595295da, 0x83bed42d, 0x217458d3, 0x69e04929, 0xc8c98e44, + 0x89c2756a, 0x798ef478, 0x3e58996b, 0x71b927dd, 0x4fe1beb6, 0xad88f017, 0xac20c966, 0x3ace7db4, + 0x4adf6318, 0x311ae582, 0x33519760, 0x7f536245, 0x7764b1e0, 0xae6bbb84, 0xa081fe1c, 0x2b08f994, + 0x68487058, 0xfd458f19, 0x6cde9487, 0xf87b52b7, 0xd373ab23, 0x024b72e2, 0x8f1fe357, 0xab55662a, + 0x28ebb207, 0xc2b52f03, 0x7bc5869a, 0x0837d3a5, 0x872830f2, 0xa5bf23b2, 0x6a0302ba, 0x8216ed5c, + 0x1ccf8a2b, 0xb479a792, 0xf207f3f0, 0xe2694ea1, 0xf4da65cd, 0xbe0506d5, 0x6234d11f, 0xfea6c48a, + 0x532e349d, 0x55f3a2a0, 0xe18a0532, 0xebf6a475, 0xec830b39, 0xef6040aa, 0x9f715e06, 0x106ebd51, + 0x8a213ef9, 0x06dd963d, 0x053eddae, 0xbde64d46, 0x8d5491b5, 0x5dc47105, 0xd406046f, 0x155060ff, + 0xfb981924, 0xe9bdd697, 0x434089cc, 0x9ed96777, 0x42e8b0bd, 0x8b890788, 0x5b19e738, 0xeec879db, + 0x0a7ca147, 0x0f427ce9, 0x1e84f8c9, 0x00000000, 0x86800983, 0xed2b3248, 0x70111eac, 0x725a6c4e, + 0xff0efdfb, 0x38850f56, 0xd5ae3d1e, 0x392d3627, 0xd90f0a64, 0xa65c6821, 0x545b9bd1, 0x2e36243a, + 0x670a0cb1, 0xe757930f, 0x96eeb4d2, 0x919b1b9e, 0xc5c0804f, 0x20dc61a2, 0x4b775a69, 0x1a121c16, + 0xba93e20a, 0x2aa0c0e5, 0xe0223c43, 0x171b121d, 0x0d090e0b, 0xc78bf2ad, 0xa8b62db9, 0xa91e14c8, + 0x19f15785, 0x0775af4c, 0xdd99eebb, 0x607fa3fd, 0x2601f79f, 0xf5725cbc, 0x3b6644c5, 0x7efb5b34, + 0x29438b76, 0xc623cbdc, 0xfcedb668, 0xf1e4b863, 0xdc31d7ca, 0x85634210, 0x22971340, 0x11c68420, + 0x244a857d, 0x3dbbd2f8, 0x32f9ae11, 0xa129c76d, 0x2f9e1d4b, 0x30b2dcf3, 0x52860dec, 0xe3c177d0, + 0x16b32b6c, 0xb970a999, 0x489411fa, 0x64e94722, 0x8cfca8c4, 0x3ff0a01a, 0x2c7d56d8, 0x903322ef, + 0x4e4987c7, 0xd138d9c1, 0xa2ca8cfe, 0x0bd49836, 0x81f5a6cf, 0xde7aa528, 0x8eb7da26, 0xbfad3fa4, + 0x9d3a2ce4, 0x9278500d, 0xcc5f6a9b, 0x467e5462, 0x138df6c2, 0xb8d890e8, 0xf7392e5e, 0xafc382f5, + 0x805d9fbe, 0x93d0697c, 0x2dd56fa9, 0x1225cfb3, 0x99acc83b, 0x7d1810a7, 0x639ce86e, 0xbb3bdb7b, + 0x7826cd09, 0x18596ef4, 0xb79aec01, 0x9a4f83a8, 0x6e95e665, 0xe6ffaa7e, 0xcfbc2108, 0xe815efe6, + 0x9be7bad9, 0x366f4ace, 0x099fead4, 0x7cb029d6, 0xb2a431af, 0x233f2a31, 0x94a5c630, 0x66a235c0, + 0xbc4e7437, 0xca82fca6, 0xd090e0b0, 0xd8a73315, 0x9804f14a, 0xdaec41f7, 0x50cd7f0e, 0xf691172f, + 0xd64d768d, 0xb0ef434d, 0x4daacc54, 0x0496e4df, 0xb5d19ee3, 0x886a4c1b, 0x1f2cc1b8, 0x5165467f, + 0xea5e9d04, 0x358c015d, 0x7487fa73, 0x410bfb2e, 0x1d67b35a, 0xd2db9252, 0x5610e933, 0x47d66d13, + 0x61d79a8c, 0x0ca1377a, 0x14f8598e, 0x3c13eb89, 0x27a9ceee, 0xc961b735, 0xe51ce1ed, 0xb1477a3c, + 0xdfd29c59, 0x73f2553f, 0xce141879, 0x37c773bf, 0xcdf753ea, 0xaafd5f5b, 0x6f3ddf14, 0xdb447886, + 0xf3afca81, 0xc468b93e, 0x3424382c, 0x40a3c25f, 0xc31d1672, 0x25e2bc0c, 0x493c288b, 0x950dff41, + 0x01a83971, 0xb30c08de, 0xe4b4d89c, 0xc1566490, 0x84cb7b61, 0xb632d570, 0x5c6c4874, 0x57b8d042, +}; + +alignas(16) const uint32_t lutDec2[256] = { + 0xf45150a7, 0x417e5365, 0x171ac3a4, 0x273a965e, 0xab3bcb6b, 0x9d1ff145, 0xfaacab58, 0xe34b9303, + 0x302055fa, 0x76adf66d, 0xcc889176, 0x02f5254c, 0xe54ffcd7, 0x2ac5d7cb, 0x35268044, 0x62b58fa3, + 0xb1de495a, 0xba25671b, 0xea45980e, 0xfe5de1c0, 0x2fc30275, 0x4c8112f0, 0x468da397, 0xd36bc6f9, + 0x8f03e75f, 0x9215959c, 0x6dbfeb7a, 0x5295da59, 0xbed42d83, 0x7458d321, 0xe0492969, 0xc98e44c8, + 0xc2756a89, 0x8ef47879, 0x58996b3e, 0xb927dd71, 0xe1beb64f, 0x88f017ad, 0x20c966ac, 0xce7db43a, + 0xdf63184a, 0x1ae58231, 0x51976033, 0x5362457f, 0x64b1e077, 0x6bbb84ae, 0x81fe1ca0, 0x08f9942b, + 0x48705868, 0x458f19fd, 0xde94876c, 0x7b52b7f8, 0x73ab23d3, 0x4b72e202, 0x1fe3578f, 0x55662aab, + 0xebb20728, 0xb52f03c2, 0xc5869a7b, 0x37d3a508, 0x2830f287, 0xbf23b2a5, 0x0302ba6a, 0x16ed5c82, + 0xcf8a2b1c, 0x79a792b4, 0x07f3f0f2, 0x694ea1e2, 0xda65cdf4, 0x0506d5be, 0x34d11f62, 0xa6c48afe, + 0x2e349d53, 0xf3a2a055, 0x8a0532e1, 0xf6a475eb, 0x830b39ec, 0x6040aaef, 0x715e069f, 0x6ebd5110, + 0x213ef98a, 0xdd963d06, 0x3eddae05, 0xe64d46bd, 0x5491b58d, 0xc471055d, 0x06046fd4, 0x5060ff15, + 0x981924fb, 0xbdd697e9, 0x4089cc43, 0xd967779e, 0xe8b0bd42, 0x8907888b, 0x19e7385b, 0xc879dbee, + 0x7ca1470a, 0x427ce90f, 0x84f8c91e, 0x00000000, 0x80098386, 0x2b3248ed, 0x111eac70, 0x5a6c4e72, + 0x0efdfbff, 0x850f5638, 0xae3d1ed5, 0x2d362739, 0x0f0a64d9, 0x5c6821a6, 0x5b9bd154, 0x36243a2e, + 0x0a0cb167, 0x57930fe7, 0xeeb4d296, 0x9b1b9e91, 0xc0804fc5, 0xdc61a220, 0x775a694b, 0x121c161a, + 0x93e20aba, 0xa0c0e52a, 0x223c43e0, 0x1b121d17, 0x090e0b0d, 0x8bf2adc7, 0xb62db9a8, 0x1e14c8a9, + 0xf1578519, 0x75af4c07, 0x99eebbdd, 0x7fa3fd60, 0x01f79f26, 0x725cbcf5, 0x6644c53b, 0xfb5b347e, + 0x438b7629, 0x23cbdcc6, 0xedb668fc, 0xe4b863f1, 0x31d7cadc, 0x63421085, 0x97134022, 0xc6842011, + 0x4a857d24, 0xbbd2f83d, 0xf9ae1132, 0x29c76da1, 0x9e1d4b2f, 0xb2dcf330, 0x860dec52, 0xc177d0e3, + 0xb32b6c16, 0x70a999b9, 0x9411fa48, 0xe9472264, 0xfca8c48c, 0xf0a01a3f, 0x7d56d82c, 0x3322ef90, + 0x4987c74e, 0x38d9c1d1, 0xca8cfea2, 0xd498360b, 0xf5a6cf81, 0x7aa528de, 0xb7da268e, 0xad3fa4bf, + 0x3a2ce49d, 0x78500d92, 0x5f6a9bcc, 0x7e546246, 0x8df6c213, 0xd890e8b8, 0x392e5ef7, 0xc382f5af, + 0x5d9fbe80, 0xd0697c93, 0xd56fa92d, 0x25cfb312, 0xacc83b99, 0x1810a77d, 0x9ce86e63, 0x3bdb7bbb, + 0x26cd0978, 0x596ef418, 0x9aec01b7, 0x4f83a89a, 0x95e6656e, 0xffaa7ee6, 0xbc2108cf, 0x15efe6e8, + 0xe7bad99b, 0x6f4ace36, 0x9fead409, 0xb029d67c, 0xa431afb2, 0x3f2a3123, 0xa5c63094, 0xa235c066, + 0x4e7437bc, 0x82fca6ca, 0x90e0b0d0, 0xa73315d8, 0x04f14a98, 0xec41f7da, 0xcd7f0e50, 0x91172ff6, + 0x4d768dd6, 0xef434db0, 0xaacc544d, 0x96e4df04, 0xd19ee3b5, 0x6a4c1b88, 0x2cc1b81f, 0x65467f51, + 0x5e9d04ea, 0x8c015d35, 0x87fa7374, 0x0bfb2e41, 0x67b35a1d, 0xdb9252d2, 0x10e93356, 0xd66d1347, + 0xd79a8c61, 0xa1377a0c, 0xf8598e14, 0x13eb893c, 0xa9ceee27, 0x61b735c9, 0x1ce1ede5, 0x477a3cb1, + 0xd29c59df, 0xf2553f73, 0x141879ce, 0xc773bf37, 0xf753eacd, 0xfd5f5baa, 0x3ddf146f, 0x447886db, + 0xafca81f3, 0x68b93ec4, 0x24382c34, 0xa3c25f40, 0x1d1672c3, 0xe2bc0c25, 0x3c288b49, 0x0dff4195, + 0xa8397101, 0x0c08deb3, 0xb4d89ce4, 0x566490c1, 0xcb7b6184, 0x32d570b6, 0x6c48745c, 0xb8d04257, +}; + +alignas(16) const uint32_t lutDec3[256] = { + 0x5150a7f4, 0x7e536541, 0x1ac3a417, 0x3a965e27, 0x3bcb6bab, 0x1ff1459d, 0xacab58fa, 0x4b9303e3, + 0x2055fa30, 0xadf66d76, 0x889176cc, 0xf5254c02, 0x4ffcd7e5, 0xc5d7cb2a, 0x26804435, 0xb58fa362, + 0xde495ab1, 0x25671bba, 0x45980eea, 0x5de1c0fe, 0xc302752f, 0x8112f04c, 0x8da39746, 0x6bc6f9d3, + 0x03e75f8f, 0x15959c92, 0xbfeb7a6d, 0x95da5952, 0xd42d83be, 0x58d32174, 0x492969e0, 0x8e44c8c9, + 0x756a89c2, 0xf478798e, 0x996b3e58, 0x27dd71b9, 0xbeb64fe1, 0xf017ad88, 0xc966ac20, 0x7db43ace, + 0x63184adf, 0xe582311a, 0x97603351, 0x62457f53, 0xb1e07764, 0xbb84ae6b, 0xfe1ca081, 0xf9942b08, + 0x70586848, 0x8f19fd45, 0x94876cde, 0x52b7f87b, 0xab23d373, 0x72e2024b, 0xe3578f1f, 0x662aab55, + 0xb20728eb, 0x2f03c2b5, 0x869a7bc5, 0xd3a50837, 0x30f28728, 0x23b2a5bf, 0x02ba6a03, 0xed5c8216, + 0x8a2b1ccf, 0xa792b479, 0xf3f0f207, 0x4ea1e269, 0x65cdf4da, 0x06d5be05, 0xd11f6234, 0xc48afea6, + 0x349d532e, 0xa2a055f3, 0x0532e18a, 0xa475ebf6, 0x0b39ec83, 0x40aaef60, 0x5e069f71, 0xbd51106e, + 0x3ef98a21, 0x963d06dd, 0xddae053e, 0x4d46bde6, 0x91b58d54, 0x71055dc4, 0x046fd406, 0x60ff1550, + 0x1924fb98, 0xd697e9bd, 0x89cc4340, 0x67779ed9, 0xb0bd42e8, 0x07888b89, 0xe7385b19, 0x79dbeec8, + 0xa1470a7c, 0x7ce90f42, 0xf8c91e84, 0x00000000, 0x09838680, 0x3248ed2b, 0x1eac7011, 0x6c4e725a, + 0xfdfbff0e, 0x0f563885, 0x3d1ed5ae, 0x3627392d, 0x0a64d90f, 0x6821a65c, 0x9bd1545b, 0x243a2e36, + 0x0cb1670a, 0x930fe757, 0xb4d296ee, 0x1b9e919b, 0x804fc5c0, 0x61a220dc, 0x5a694b77, 0x1c161a12, + 0xe20aba93, 0xc0e52aa0, 0x3c43e022, 0x121d171b, 0x0e0b0d09, 0xf2adc78b, 0x2db9a8b6, 0x14c8a91e, + 0x578519f1, 0xaf4c0775, 0xeebbdd99, 0xa3fd607f, 0xf79f2601, 0x5cbcf572, 0x44c53b66, 0x5b347efb, + 0x8b762943, 0xcbdcc623, 0xb668fced, 0xb863f1e4, 0xd7cadc31, 0x42108563, 0x13402297, 0x842011c6, + 0x857d244a, 0xd2f83dbb, 0xae1132f9, 0xc76da129, 0x1d4b2f9e, 0xdcf330b2, 0x0dec5286, 0x77d0e3c1, + 0x2b6c16b3, 0xa999b970, 0x11fa4894, 0x472264e9, 0xa8c48cfc, 0xa01a3ff0, 0x56d82c7d, 0x22ef9033, + 0x87c74e49, 0xd9c1d138, 0x8cfea2ca, 0x98360bd4, 0xa6cf81f5, 0xa528de7a, 0xda268eb7, 0x3fa4bfad, + 0x2ce49d3a, 0x500d9278, 0x6a9bcc5f, 0x5462467e, 0xf6c2138d, 0x90e8b8d8, 0x2e5ef739, 0x82f5afc3, + 0x9fbe805d, 0x697c93d0, 0x6fa92dd5, 0xcfb31225, 0xc83b99ac, 0x10a77d18, 0xe86e639c, 0xdb7bbb3b, + 0xcd097826, 0x6ef41859, 0xec01b79a, 0x83a89a4f, 0xe6656e95, 0xaa7ee6ff, 0x2108cfbc, 0xefe6e815, + 0xbad99be7, 0x4ace366f, 0xead4099f, 0x29d67cb0, 0x31afb2a4, 0x2a31233f, 0xc63094a5, 0x35c066a2, + 0x7437bc4e, 0xfca6ca82, 0xe0b0d090, 0x3315d8a7, 0xf14a9804, 0x41f7daec, 0x7f0e50cd, 0x172ff691, + 0x768dd64d, 0x434db0ef, 0xcc544daa, 0xe4df0496, 0x9ee3b5d1, 0x4c1b886a, 0xc1b81f2c, 0x467f5165, + 0x9d04ea5e, 0x015d358c, 0xfa737487, 0xfb2e410b, 0xb35a1d67, 0x9252d2db, 0xe9335610, 0x6d1347d6, + 0x9a8c61d7, 0x377a0ca1, 0x598e14f8, 0xeb893c13, 0xceee27a9, 0xb735c961, 0xe1ede51c, 0x7a3cb147, + 0x9c59dfd2, 0x553f73f2, 0x1879ce14, 0x73bf37c7, 0x53eacdf7, 0x5f5baafd, 0xdf146f3d, 0x7886db44, + 0xca81f3af, 0xb93ec468, 0x382c3424, 0xc25f40a3, 0x1672c31d, 0xbc0c25e2, 0x288b493c, 0xff41950d, + 0x397101a8, 0x08deb30c, 0xd89ce4b4, 0x6490c156, 0x7b6184cb, 0xd570b632, 0x48745c6c, 0xd04257b8, +}; + +rx_vec_i128 aesenc(rx_vec_i128 in, rx_vec_i128 key) { + uint32_t s0, s1, s2, s3; + + s0 = rx_vec_i128_w(in); + s1 = rx_vec_i128_z(in); + s2 = rx_vec_i128_y(in); + s3 = rx_vec_i128_x(in); + + rx_vec_i128 out = rx_set_int_vec_i128( + (lutEnc0[s0 & 0xff] ^ lutEnc1[(s3 >> 8) & 0xff] ^ lutEnc2[(s2 >> 16) & 0xff] ^ lutEnc3[s1 >> 24]), + (lutEnc0[s1 & 0xff] ^ lutEnc1[(s0 >> 8) & 0xff] ^ lutEnc2[(s3 >> 16) & 0xff] ^ lutEnc3[s2 >> 24]), + (lutEnc0[s2 & 0xff] ^ lutEnc1[(s1 >> 8) & 0xff] ^ lutEnc2[(s0 >> 16) & 0xff] ^ lutEnc3[s3 >> 24]), + (lutEnc0[s3 & 0xff] ^ lutEnc1[(s2 >> 8) & 0xff] ^ lutEnc2[(s1 >> 16) & 0xff] ^ lutEnc3[s0 >> 24]) + ); + + return rx_xor_vec_i128(out, key); +} + +rx_vec_i128 aesdec(rx_vec_i128 in, rx_vec_i128 key) { + uint32_t s0, s1, s2, s3; + + s0 = rx_vec_i128_w(in); + s1 = rx_vec_i128_z(in); + s2 = rx_vec_i128_y(in); + s3 = rx_vec_i128_x(in); + + rx_vec_i128 out = rx_set_int_vec_i128( + (lutDec0[s0 & 0xff] ^ lutDec1[(s1 >> 8) & 0xff] ^ lutDec2[(s2 >> 16) & 0xff] ^ lutDec3[s3 >> 24]), + (lutDec0[s1 & 0xff] ^ lutDec1[(s2 >> 8) & 0xff] ^ lutDec2[(s3 >> 16) & 0xff] ^ lutDec3[s0 >> 24]), + (lutDec0[s2 & 0xff] ^ lutDec1[(s3 >> 8) & 0xff] ^ lutDec2[(s0 >> 16) & 0xff] ^ lutDec3[s1 >> 24]), + (lutDec0[s3 & 0xff] ^ lutDec1[(s0 >> 8) & 0xff] ^ lutDec2[(s1 >> 16) & 0xff] ^ lutDec3[s2 >> 24]) + ); + + return rx_xor_vec_i128(out, key); +} diff --git a/miner/src/cpp/softfloat.cpp b/miner/src/cpp/softfloat.cpp new file mode 100644 index 0000000..9970e58 --- /dev/null +++ b/miner/src/cpp/softfloat.cpp @@ -0,0 +1,1432 @@ +// This file is based on files from package softfloat +// issued with the following license: + +/*============================================================================ + +This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic +Package, Release 3c, by John R. Hauser. + +Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the +University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions, and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions, and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. Neither the name of the University nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE +DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +=============================================================================*/ + +#include "softfloat.hpp" + +uint_fast8_t globalDetectTininess = tininess_afterRounding; + +uint_fast8_t globalRoundingMode = round_min; + +enum { + flag_inexact = 1, + flag_underflow = 2, + flag_overflow = 4, + flag_infinite = 8, + flag_invalid = 16 +}; + +// Disabled to make softfloat code stateless +// May be changed in the future for better error handling +static inline void raiseFlags(uint_fast8_t /* flags */) { + // exceptionFlags |= flags; +} + +/*---------------------------------------------------------------------------- + *----------------------------------------------------------------------------*/ +#define signF64UI(a) (((uint64_t)(a) >> 63) != 0) +#define expF64UI(a) ((int_fast16_t)((a) >> 52) & 0x7FF) +#define fracF64UI(a) ((a)&UINT64_C(0x000FFFFFFFFFFFFF)) +#define packToF64UI(sign, exp, sig) \ + ((uint64_t)(((uint_fast64_t)(sign) << 63) + ((uint_fast64_t)(exp) << 52) + \ + (sig))) +#define isNaNF64UI(a) \ + (((~(a)&UINT64_C(0x7FF0000000000000)) == 0) && \ + ((a)&UINT64_C(0x000FFFFFFFFFFFFF))) + +// Type used to pass 64-bit floating-point arguments and results +// to/from functions +typedef softdouble float64_t; + +// Integer-to-floating-point conversion routines +static float64_t ui32_to_f64(uint32_t); +static float64_t ui64_to_f64(uint64_t); +static float64_t i32_to_f64(int32_t); +static float64_t i64_to_f64(int64_t); + +// Floating-point operations +static int_fast32_t f64_to_i32(float64_t, uint_fast8_t, bool); +static int_fast64_t f64_to_i64(float64_t, uint_fast8_t, bool); +static int_fast32_t f64_to_i32_r_minMag(float64_t, bool); +static float64_t f64_roundToInt(float64_t, uint_fast8_t, bool); +static float64_t f64_add(float64_t, float64_t); +static float64_t f64_sub(float64_t, float64_t); +static float64_t f64_mul(float64_t, float64_t); +static float64_t f64_div(float64_t, float64_t); +static float64_t f64_rem(float64_t, float64_t); +static float64_t f64_sqrt(float64_t); +static bool f64_eq(float64_t, float64_t); +static bool f64_le(float64_t, float64_t); +static bool f64_lt(float64_t, float64_t); + +// Softdouble methods and members +softdouble::softdouble(const uint32_t a) { *this = ui32_to_f64(a); } +softdouble::softdouble(const uint64_t a) { *this = ui64_to_f64(a); } +softdouble::softdouble(const int32_t a) { *this = i32_to_f64(a); } +softdouble::softdouble(const int64_t a) { *this = i64_to_f64(a); } + +softdouble softdouble::operator+(const softdouble& a) const { + return f64_add(*this, a); +} +softdouble softdouble::operator-(const softdouble& a) const { + return f64_sub(*this, a); +} +softdouble softdouble::operator*(const softdouble& a) const { + return f64_mul(*this, a); +} +softdouble softdouble::operator/(const softdouble& a) const { + return f64_div(*this, a); +} +softdouble softdouble::operator%(const softdouble& a) const { + return f64_rem(*this, a); +} + +bool softdouble::operator==(const softdouble& a) const { + return f64_eq(*this, a); +} +bool softdouble::operator!=(const softdouble& a) const { + return !f64_eq(*this, a); +} +bool softdouble::operator>(const softdouble& a) const { + return f64_lt(a, *this); +} +bool softdouble::operator>=(const softdouble& a) const { + return f64_le(a, *this); +} +bool softdouble::operator<(const softdouble& a) const { + return f64_lt(*this, a); +} +bool softdouble::operator<=(const softdouble& a) const { + return f64_le(*this, a); +} + +// Overloads for math function(s) +softdouble sqrt(const softdouble& a) { return f64_sqrt(a); } + +/*---------------------------------------------------------------------------- + *----------------------------------------------------------------------------*/ +#define i32_fromPosOverflow 0x7FFFFFFF +#define i32_fromNegOverflow (-0x7FFFFFFF - 1) +#define i32_fromNaN 0x7FFFFFFF + +#define i64_fromPosOverflow UINT64_C(0x7FFFFFFFFFFFFFFF) +// fixed unsigned unary minus: -x == ~x + 1 +#define i64_fromNegOverflow (~UINT64_C(0x7FFFFFFFFFFFFFFF) + 1 - 1) +#define i64_fromNaN UINT64_C(0x7FFFFFFFFFFFFFFF) + +/*---------------------------------------------------------------------------- + *----------------------------------------------------------------------------*/ +#define defaultNaNF64UI UINT64_C(0xFFF8000000000000) +#define softfloat_isSigNaNF64UI(uiA) \ + ((((uiA)&UINT64_C(0x7FF8000000000000)) == UINT64_C(0x7FF0000000000000)) && \ + ((uiA)&UINT64_C(0x0007FFFFFFFFFFFF))) +static uint_fast64_t softfloat_propagateNaNF64UI(uint_fast64_t uiA, + uint_fast64_t uiB); + +/*---------------------------------------------------------------------------- + *----------------------------------------------------------------------------*/ +// Little endian +struct uint128 { + uint64_t v0, v64; +}; +struct uint64_extra { + uint64_t extra, v; +}; +struct uint128_extra { + uint64_t extra; + struct uint128 v; +}; + +/*---------------------------------------------------------------------------- + *----------------------------------------------------------------------------*/ +static int_fast32_t softfloat_roundToI32(bool, uint_fast64_t, uint_fast8_t, + bool); +static int_fast64_t softfloat_roundToI64(bool, uint_fast64_t, uint_fast64_t, + uint_fast8_t, bool); + +struct exp16_sig64 { + int_fast16_t exp; + uint_fast64_t sig; +}; +static struct exp16_sig64 softfloat_normSubnormalF64Sig(uint_fast64_t); + +static float64_t softfloat_roundPackToF64(bool, int_fast16_t, uint_fast64_t); +static float64_t softfloat_normRoundPackToF64(bool, int_fast16_t, + uint_fast64_t); + +static float64_t softfloat_addMagsF64(uint_fast64_t, uint_fast64_t, bool); +static float64_t softfloat_subMagsF64(uint_fast64_t, uint_fast64_t, bool); + +/*---------------------------------------------------------------------------- + *----------------------------------------------------------------------------*/ +static uint32_t softfloat_approxRecipSqrt32_1(unsigned int oddExpA, uint32_t a); + +static const uint16_t softfloat_approxRecipSqrt_1k0s[16] = { + 0xB4C9, 0xFFAB, 0xAA7D, 0xF11C, 0xA1C5, 0xE4C7, 0x9A43, 0xDA29, + 0x93B5, 0xD0E5, 0x8DED, 0xC8B7, 0x88C6, 0xC16D, 0x8424, 0xBAE1}; +static const uint16_t softfloat_approxRecipSqrt_1k1s[16] = { + 0xA5A5, 0xEA42, 0x8C21, 0xC62D, 0x788F, 0xAA7F, 0x6928, 0x94B6, + 0x5CC7, 0x8335, 0x52A6, 0x74E2, 0x4A3E, 0x68FE, 0x432B, 0x5EFD}; + +/*---------------------------------------------------------------------------- + *----------------------------------------------------------------------------*/ +static inline uint64_t softfloat_shortShiftRightJam64(uint64_t a, + uint_fast8_t dist) { + return a >> dist | ((a & (((uint_fast64_t)1 << dist) - 1)) != 0); +} + +static inline uint64_t softfloat_shiftRightJam64(uint64_t a, + uint_fast32_t dist) { + // fixed unsigned unary minus: -x == ~x + 1 + return (dist < 63) ? a >> dist | ((uint64_t)(a << ((~dist + 1) & 63)) != 0) + : (a != 0); +} + +/*---------------------------------------------------------------------------- + *----------------------------------------------------------------------------*/ +static const uint_least8_t softfloat_countLeadingZeros8[256] = { + 8, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static inline uint_fast8_t softfloat_countLeadingZeros32(uint32_t a) { + uint_fast8_t count = 0; + if (a < 0x10000) { + count = 16; + a <<= 16; + } + if (a < 0x1000000) { + count += 8; + a <<= 8; + } + count += softfloat_countLeadingZeros8[a >> 24]; + return count; +} + +static uint_fast8_t softfloat_countLeadingZeros64(uint64_t a); + +/*---------------------------------------------------------------------------- + *----------------------------------------------------------------------------*/ +#define softfloat_approxRecip32_1(a) \ + ((uint32_t)(UINT64_C(0x7FFFFFFFFFFFFFFF) / (uint32_t)(a))) + +/*---------------------------------------------------------------------------- + *----------------------------------------------------------------------------*/ +static struct uint128 softfloat_mul64To128(uint64_t a, uint64_t b); + +/*---------------------------------------------------------------------------- + *----------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + *----------------------------------------------------------------------------*/ +static float64_t ui32_to_f64(uint32_t a) { + uint_fast64_t uiZ; + int_fast8_t shiftDist; + + if (!a) { + uiZ = 0; + } else { + shiftDist = softfloat_countLeadingZeros32(a) + 21; + uiZ = packToF64UI(0, 0x432 - shiftDist, (uint_fast64_t)a << shiftDist); + } + return float64_t::fromRaw(uiZ); +} + +static float64_t ui64_to_f64(uint64_t a) { + if (!a) { + return float64_t::fromRaw(0); + } + if (a & UINT64_C(0x8000000000000000)) { + return softfloat_roundPackToF64(0, 0x43D, + softfloat_shortShiftRightJam64(a, 1)); + } else { + return softfloat_normRoundPackToF64(0, 0x43C, a); + } +} + +static float64_t i32_to_f64(int32_t a) { + uint_fast64_t uiZ; + bool sign; + uint_fast32_t absA; + int_fast8_t shiftDist; + + if (!a) { + uiZ = 0; + } else { + sign = (a < 0); + // fixed unsigned unary minus: -x == ~x + 1 + absA = sign ? (~(uint_fast32_t)a + 1) : (uint_fast32_t)a; + shiftDist = softfloat_countLeadingZeros32(absA) + 21; + uiZ = + packToF64UI(sign, 0x432 - shiftDist, (uint_fast64_t)absA << shiftDist); + } + return float64_t::fromRaw(uiZ); +} + +static float64_t i64_to_f64(int64_t a) { + bool sign; + uint_fast64_t absA; + + sign = (a < 0); + if (!(a & UINT64_C(0x7FFFFFFFFFFFFFFF))) { + return float64_t::fromRaw(sign ? packToF64UI(1, 0x43E, 0) : 0); + } + // fixed unsigned unary minus: -x == ~x + 1 + absA = sign ? (~(uint_fast64_t)a + 1) : (uint_fast64_t)a; + return softfloat_normRoundPackToF64(sign, 0x43C, absA); +} + +static int_fast32_t f64_to_i32(float64_t a, uint_fast8_t roundingMode, + bool exact) { + uint_fast64_t uiA; + bool sign; + int_fast16_t exp; + uint_fast64_t sig; + int_fast16_t shiftDist; + + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + uiA = a.v; + sign = signF64UI(uiA); + exp = expF64UI(uiA); + sig = fracF64UI(uiA); + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ +#if (i32_fromNaN != i32_fromPosOverflow) || (i32_fromNaN != i32_fromNegOverflow) + if ((exp == 0x7FF) && sig) { +#if (i32_fromNaN == i32_fromPosOverflow) + sign = 0; +#elif (i32_fromNaN == i32_fromNegOverflow) + sign = 1; +#else + raiseFlags(flag_invalid); + return i32_fromNaN; +#endif + } +#endif + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + if (exp) sig |= UINT64_C(0x0010000000000000); + shiftDist = 0x427 - exp; + if (0 < shiftDist) sig = softfloat_shiftRightJam64(sig, shiftDist); + return softfloat_roundToI32(sign, sig, roundingMode, exact); +} + +static int_fast64_t f64_to_i64(float64_t a, uint_fast8_t roundingMode, + bool exact) { + uint_fast64_t uiA; + bool sign; + int_fast16_t exp; + uint_fast64_t sig; + int_fast16_t shiftDist; + + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + uiA = a.v; + sign = signF64UI(uiA); + exp = expF64UI(uiA); + sig = fracF64UI(uiA); + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ +#if (i64_fromNaN != i64_fromPosOverflow) || (i64_fromNaN != i64_fromNegOverflow) + if ((exp == 0x7FF) && sig) { +#if (i64_fromNaN == i64_fromPosOverflow) + sign = 0; +#elif (i64_fromNaN == i64_fromNegOverflow) + sign = 1; +#else + raiseFlags(flag_invalid); + return i64_fromNaN; +#endif + } +#endif + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + if (exp) sig |= UINT64_C(0x0010000000000000); + shiftDist = 0x433 - exp; + if (shiftDist <= 0) { + uint_fast64_t z = sig << -shiftDist; + if ((shiftDist < -11) || (z & UINT64_C(0x8000000000000000))) { + raiseFlags(flag_invalid); + return sign ? i64_fromNegOverflow : i64_fromPosOverflow; + } + return sign ? -(int_fast64_t)z : (int_fast64_t)z; + } else { + if (shiftDist < 64) + return softfloat_roundToI64(sign, sig >> shiftDist, + sig << (-shiftDist & 63), roundingMode, + exact); + else + return softfloat_roundToI64(sign, 0, (shiftDist == 64) ? sig : (sig != 0), + roundingMode, exact); + } +} + +static int_fast32_t f64_to_i32_r_minMag(float64_t a, bool exact) { + uint_fast64_t uiA; + int_fast16_t exp; + uint_fast64_t sig; + int_fast16_t shiftDist; + bool sign; + int_fast32_t absZ; + + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + uiA = a.v; + exp = expF64UI(uiA); + sig = fracF64UI(uiA); + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + shiftDist = 0x433 - exp; + if (53 <= shiftDist) { + if (exact && (exp | sig)) { + raiseFlags(flag_inexact); + } + return 0; + } + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + sign = signF64UI(uiA); + if (shiftDist < 22) { + if (sign && (exp == 0x41E) && (sig < UINT64_C(0x0000000000200000))) { + if (exact && sig) { + raiseFlags(flag_inexact); + } + return -0x7FFFFFFF - 1; + } + raiseFlags(flag_invalid); + return (exp == 0x7FF) && sig + ? i32_fromNaN + : sign ? i32_fromNegOverflow : i32_fromPosOverflow; + } + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + sig |= UINT64_C(0x0010000000000000); + absZ = (int_fast32_t)(sig >> shiftDist); // fixed warning on type cast + if (exact && ((uint_fast64_t)(uint_fast32_t)absZ << shiftDist != sig)) { + raiseFlags(flag_inexact); + } + return sign ? -absZ : absZ; +} + +static float64_t f64_roundToInt(float64_t a, uint_fast8_t roundingMode, + bool exact) { + uint_fast64_t uiA; + int_fast16_t exp; + uint_fast64_t uiZ, lastBitMask, roundBitsMask; + + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + uiA = a.v; + exp = expF64UI(uiA); + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + if (exp <= 0x3FE) { + if (!(uiA & UINT64_C(0x7FFFFFFFFFFFFFFF))) return a; + if (exact) raiseFlags(flag_inexact); + uiZ = uiA & packToF64UI(1, 0, 0); + switch (roundingMode) { + case round_near_even: + if (!fracF64UI(uiA)) break; + /* fallthrough */ + case round_near_maxMag: + if (exp == 0x3FE) uiZ |= packToF64UI(0, 0x3FF, 0); + break; + case round_min: + if (uiZ) uiZ = packToF64UI(1, 0x3FF, 0); + break; + case round_max: + if (!uiZ) uiZ = packToF64UI(0, 0x3FF, 0); + break; + } + goto uiZ; + } + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + if (0x433 <= exp) { + if ((exp == 0x7FF) && fracF64UI(uiA)) { + uiZ = softfloat_propagateNaNF64UI(uiA, 0); + goto uiZ; + } + return a; + } + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + uiZ = uiA; + lastBitMask = (uint_fast64_t)1 << (0x433 - exp); + roundBitsMask = lastBitMask - 1; + if (roundingMode == round_near_maxMag) { + uiZ += lastBitMask >> 1; + } else if (roundingMode == round_near_even) { + uiZ += lastBitMask >> 1; + if (!(uiZ & roundBitsMask)) uiZ &= ~lastBitMask; + } else if (roundingMode == (signF64UI(uiZ) ? round_min : round_max)) { + uiZ += roundBitsMask; + } + uiZ &= ~roundBitsMask; + if (exact && (uiZ != uiA)) { + raiseFlags(flag_inexact); + } +uiZ: + return float64_t::fromRaw(uiZ); +} + +static float64_t f64_add(float64_t a, float64_t b) { + uint_fast64_t uiA; + bool signA; + uint_fast64_t uiB; + bool signB; + + uiA = a.v; + signA = signF64UI(uiA); + uiB = b.v; + signB = signF64UI(uiB); + if (signA == signB) { + return softfloat_addMagsF64(uiA, uiB, signA); + } else { + return softfloat_subMagsF64(uiA, uiB, signA); + } +} + +static float64_t f64_sub(float64_t a, float64_t b) { + uint_fast64_t uiA; + bool signA; + uint_fast64_t uiB; + bool signB; + + uiA = a.v; + signA = signF64UI(uiA); + uiB = b.v; + signB = signF64UI(uiB); + + if (signA == signB) { + return softfloat_subMagsF64(uiA, uiB, signA); + } else { + return softfloat_addMagsF64(uiA, uiB, signA); + } +} + +static float64_t f64_mul(float64_t a, float64_t b) { + uint_fast64_t uiA; + bool signA; + int_fast16_t expA; + uint_fast64_t sigA; + uint_fast64_t uiB; + bool signB; + int_fast16_t expB; + uint_fast64_t sigB; + bool signZ; + uint_fast64_t magBits; + struct exp16_sig64 normExpSig; + int_fast16_t expZ; + struct uint128 sig128Z; + uint_fast64_t sigZ, uiZ; + + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + uiA = a.v; + signA = signF64UI(uiA); + expA = expF64UI(uiA); + sigA = fracF64UI(uiA); + uiB = b.v; + signB = signF64UI(uiB); + expB = expF64UI(uiB); + sigB = fracF64UI(uiB); + signZ = signA ^ signB; + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + if (expA == 0x7FF) { + if (sigA || ((expB == 0x7FF) && sigB)) goto propagateNaN; + magBits = expB | sigB; + goto infArg; + } + if (expB == 0x7FF) { + if (sigB) goto propagateNaN; + magBits = expA | sigA; + goto infArg; + } + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + if (!expA) { + if (!sigA) goto zero; + normExpSig = softfloat_normSubnormalF64Sig(sigA); + expA = normExpSig.exp; + sigA = normExpSig.sig; + } + if (!expB) { + if (!sigB) goto zero; + normExpSig = softfloat_normSubnormalF64Sig(sigB); + expB = normExpSig.exp; + sigB = normExpSig.sig; + } + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + expZ = expA + expB - 0x3FF; + sigA = (sigA | UINT64_C(0x0010000000000000)) << 10; + sigB = (sigB | UINT64_C(0x0010000000000000)) << 11; + sig128Z = softfloat_mul64To128(sigA, sigB); + sigZ = sig128Z.v64 | (sig128Z.v0 != 0); + + if (sigZ < UINT64_C(0x4000000000000000)) { + --expZ; + sigZ <<= 1; + } + return softfloat_roundPackToF64(signZ, expZ, sigZ); + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ +propagateNaN: + uiZ = softfloat_propagateNaNF64UI(uiA, uiB); + goto uiZ; + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ +infArg: + if (!magBits) { + raiseFlags(flag_invalid); + uiZ = defaultNaNF64UI; + } else { + uiZ = packToF64UI(signZ, 0x7FF, 0); + } + goto uiZ; + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ +zero: + uiZ = packToF64UI(signZ, 0, 0); +uiZ: + return float64_t::fromRaw(uiZ); +} + +static float64_t f64_div(float64_t a, float64_t b) { + uint_fast64_t uiA; + bool signA; + int_fast16_t expA; + uint_fast64_t sigA; + uint_fast64_t uiB; + bool signB; + int_fast16_t expB; + uint_fast64_t sigB; + bool signZ; + struct exp16_sig64 normExpSig; + int_fast16_t expZ; + uint32_t recip32, sig32Z, doubleTerm; + uint_fast64_t rem; + uint32_t q; + uint_fast64_t sigZ; + uint_fast64_t uiZ; + + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + uiA = a.v; + signA = signF64UI(uiA); + expA = expF64UI(uiA); + sigA = fracF64UI(uiA); + uiB = b.v; + signB = signF64UI(uiB); + expB = expF64UI(uiB); + sigB = fracF64UI(uiB); + signZ = signA ^ signB; + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + if (expA == 0x7FF) { + if (sigA) goto propagateNaN; + if (expB == 0x7FF) { + if (sigB) goto propagateNaN; + goto invalid; + } + goto infinity; + } + if (expB == 0x7FF) { + if (sigB) goto propagateNaN; + goto zero; + } + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + if (!expB) { + if (!sigB) { + if (!(expA | sigA)) goto invalid; + raiseFlags(flag_infinite); + goto infinity; + } + normExpSig = softfloat_normSubnormalF64Sig(sigB); + expB = normExpSig.exp; + sigB = normExpSig.sig; + } + if (!expA) { + if (!sigA) goto zero; + normExpSig = softfloat_normSubnormalF64Sig(sigA); + expA = normExpSig.exp; + sigA = normExpSig.sig; + } + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + expZ = expA - expB + 0x3FE; + sigA |= UINT64_C(0x0010000000000000); + sigB |= UINT64_C(0x0010000000000000); + if (sigA < sigB) { + --expZ; + sigA <<= 11; + } else { + sigA <<= 10; + } + sigB <<= 11; + recip32 = softfloat_approxRecip32_1(sigB >> 32) - 2; + sig32Z = ((uint32_t)(sigA >> 32) * (uint_fast64_t)recip32) >> 32; + doubleTerm = sig32Z << 1; + rem = ((sigA - (uint_fast64_t)doubleTerm * (uint32_t)(sigB >> 32)) << 28) - + (uint_fast64_t)doubleTerm * ((uint32_t)sigB >> 4); + q = (((uint32_t)(rem >> 32) * (uint_fast64_t)recip32) >> 32) + 4; + sigZ = ((uint_fast64_t)sig32Z << 32) + ((uint_fast64_t)q << 4); + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + if ((sigZ & 0x1FF) < 4 << 4) { + q &= ~7; + sigZ &= ~(uint_fast64_t)0x7F; + doubleTerm = q << 1; + rem = ((rem - (uint_fast64_t)doubleTerm * (uint32_t)(sigB >> 32)) << 28) - + (uint_fast64_t)doubleTerm * ((uint32_t)sigB >> 4); + if (rem & UINT64_C(0x8000000000000000)) { + sigZ -= 1 << 7; + } else { + if (rem) sigZ |= 1; + } + } + return softfloat_roundPackToF64(signZ, expZ, sigZ); + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ +propagateNaN: + uiZ = softfloat_propagateNaNF64UI(uiA, uiB); + goto uiZ; + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ +invalid: + raiseFlags(flag_invalid); + uiZ = defaultNaNF64UI; + goto uiZ; + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ +infinity: + uiZ = packToF64UI(signZ, 0x7FF, 0); + goto uiZ; + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ +zero: + uiZ = packToF64UI(signZ, 0, 0); +uiZ: + return float64_t::fromRaw(uiZ); +} + +static float64_t f64_rem(float64_t a, float64_t b) { + uint_fast64_t uiA; + bool signA; + int_fast16_t expA; + uint_fast64_t sigA; + uint_fast64_t uiB; + int_fast16_t expB; + uint_fast64_t sigB; + struct exp16_sig64 normExpSig; + uint64_t rem; + int_fast16_t expDiff; + uint32_t q, recip32; + uint_fast64_t q64; + uint64_t altRem, meanRem; + bool signRem; + uint_fast64_t uiZ; + + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + uiA = a.v; + signA = signF64UI(uiA); + expA = expF64UI(uiA); + sigA = fracF64UI(uiA); + uiB = b.v; + expB = expF64UI(uiB); + sigB = fracF64UI(uiB); + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + if (expA == 0x7FF) { + if (sigA || ((expB == 0x7FF) && sigB)) goto propagateNaN; + goto invalid; + } + if (expB == 0x7FF) { + if (sigB) goto propagateNaN; + return a; + } + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + if (expA < expB - 1) return a; + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + if (!expB) { + if (!sigB) goto invalid; + normExpSig = softfloat_normSubnormalF64Sig(sigB); + expB = normExpSig.exp; + sigB = normExpSig.sig; + } + if (!expA) { + if (!sigA) return a; + normExpSig = softfloat_normSubnormalF64Sig(sigA); + expA = normExpSig.exp; + sigA = normExpSig.sig; + } + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + rem = sigA | UINT64_C(0x0010000000000000); + sigB |= UINT64_C(0x0010000000000000); + expDiff = expA - expB; + if (expDiff < 1) { + if (expDiff < -1) return a; + sigB <<= 9; + if (expDiff) { + rem <<= 8; + q = 0; + } else { + rem <<= 9; + q = (sigB <= rem); + if (q) rem -= sigB; + } + } else { + recip32 = softfloat_approxRecip32_1(sigB >> 21); + rem <<= 9; + expDiff -= 30; + // The scale of `sigB' affects how many bits are obtained during eachcycle + // of the loop Currently this is 29 bits per loop iteration, the maximum + // possible + sigB <<= 9; + for (;;) { + q64 = (uint32_t)(rem >> 32) * (uint_fast64_t)recip32; + if (expDiff < 0) break; + q = (q64 + 0x80000000) >> 32; + rem <<= 29; + rem -= q * (uint64_t)sigB; + if (rem & UINT64_C(0x8000000000000000)) rem += sigB; + expDiff -= 29; + } + // `expDiff` cannot be less than -29 here + q = (uint32_t)(q64 >> 32) >> (~expDiff & 31); + rem = (rem << (expDiff + 30)) - q * (uint64_t)sigB; + if (rem & UINT64_C(0x8000000000000000)) { + altRem = rem + sigB; + goto selectRem; + } + } + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + do { + altRem = rem; + ++q; + rem -= sigB; + } while (!(rem & UINT64_C(0x8000000000000000))); +selectRem: + meanRem = rem + altRem; + if ((meanRem & UINT64_C(0x8000000000000000)) || (!meanRem && (q & 1))) { + rem = altRem; + } + signRem = signA; + if (rem & UINT64_C(0x8000000000000000)) { + signRem = !signRem; + // fixed unsigned unary minus: -x == ~x + 1 + rem = ~rem + 1; + } + return softfloat_normRoundPackToF64(signRem, expB, rem); + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ +propagateNaN: + uiZ = softfloat_propagateNaNF64UI(uiA, uiB); + goto uiZ; +invalid: + raiseFlags(flag_invalid); + uiZ = defaultNaNF64UI; +uiZ: + return float64_t::fromRaw(uiZ); +} + +static float64_t f64_sqrt(float64_t a) { + uint_fast64_t uiA; + bool signA; + int_fast16_t expA; + uint_fast64_t sigA, uiZ; + struct exp16_sig64 normExpSig; + int_fast16_t expZ; + uint32_t sig32A, recipSqrt32, sig32Z; + uint_fast64_t rem; + uint32_t q; + uint_fast64_t sigZ, shiftedSigZ; + + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + uiA = a.v; + signA = signF64UI(uiA); + expA = expF64UI(uiA); + sigA = fracF64UI(uiA); + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + if (expA == 0x7FF) { + if (sigA) { + uiZ = softfloat_propagateNaNF64UI(uiA, 0); + goto uiZ; + } + if (!signA) return a; + goto invalid; + } + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + if (signA) { + if (!(expA | sigA)) return a; + goto invalid; + } + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + if (!expA) { + if (!sigA) return a; + normExpSig = softfloat_normSubnormalF64Sig(sigA); + expA = normExpSig.exp; + sigA = normExpSig.sig; + } + // `sig32Z` is guaranteed to be a lower bound on the square root of `sig32A` + // which makes `sig32Z' also a lower bound on the square root of `sigA` + expZ = ((expA - 0x3FF) >> 1) + 0x3FE; + expA &= 1; + sigA |= UINT64_C(0x0010000000000000); + sig32A = (uint32_t)(sigA >> 21); // fixed warning on type cast + recipSqrt32 = softfloat_approxRecipSqrt32_1(expA, sig32A); + sig32Z = ((uint_fast64_t)sig32A * recipSqrt32) >> 32; + if (expA) { + sigA <<= 8; + sig32Z >>= 1; + } else { + sigA <<= 9; + } + rem = sigA - (uint_fast64_t)sig32Z * sig32Z; + q = ((uint32_t)(rem >> 2) * (uint_fast64_t)recipSqrt32) >> 32; + sigZ = ((uint_fast64_t)sig32Z << 32 | 1 << 5) + ((uint_fast64_t)q << 3); + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + if ((sigZ & 0x1FF) < 0x22) { + sigZ &= ~(uint_fast64_t)0x3F; + shiftedSigZ = sigZ >> 6; + rem = (sigA << 52) - shiftedSigZ * shiftedSigZ; + if (rem & UINT64_C(0x8000000000000000)) { + --sigZ; + } else { + if (rem) sigZ |= 1; + } + } + return softfloat_roundPackToF64(0, expZ, sigZ); + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ +invalid: + raiseFlags(flag_invalid); + uiZ = defaultNaNF64UI; +uiZ: + return float64_t::fromRaw(uiZ); +} + +static bool f64_eq(float64_t a, float64_t b) { + uint_fast64_t uiA; + uint_fast64_t uiB; + + uiA = a.v; + uiB = b.v; + if (isNaNF64UI(uiA) || isNaNF64UI(uiB)) { + if (softfloat_isSigNaNF64UI(uiA) || softfloat_isSigNaNF64UI(uiB)) + raiseFlags(flag_invalid); + return false; + } + return (uiA == uiB) || !((uiA | uiB) & UINT64_C(0x7FFFFFFFFFFFFFFF)); +} + +static bool f64_le(float64_t a, float64_t b) { + uint_fast64_t uiA; + uint_fast64_t uiB; + bool signA, signB; + + uiA = a.v; + uiB = b.v; + if (isNaNF64UI(uiA) || isNaNF64UI(uiB)) { + raiseFlags(flag_invalid); + return false; + } + signA = signF64UI(uiA); + signB = signF64UI(uiB); + return (signA != signB) + ? signA || !((uiA | uiB) & UINT64_C(0x7FFFFFFFFFFFFFFF)) + : (uiA == uiB) || (signA ^ (uiA < uiB)); +} + +static bool f64_lt(float64_t a, float64_t b) { + uint_fast64_t uiA; + uint_fast64_t uiB; + bool signA, signB; + + uiA = a.v; + uiB = b.v; + if (isNaNF64UI(uiA) || isNaNF64UI(uiB)) { + raiseFlags(flag_invalid); + return false; + } + signA = signF64UI(uiA); + signB = signF64UI(uiB); + return (signA != signB) + ? signA && ((uiA | uiB) & UINT64_C(0x7FFFFFFFFFFFFFFF)) + : (uiA != uiB) && (signA ^ (uiA < uiB)); +} + +static uint_fast64_t softfloat_propagateNaNF64UI(uint_fast64_t uiA, + uint_fast64_t uiB) { + bool isSigNaNA; + + isSigNaNA = softfloat_isSigNaNF64UI(uiA); + if (isSigNaNA || softfloat_isSigNaNF64UI(uiB)) { + raiseFlags(flag_invalid); + if (isSigNaNA) return uiA | UINT64_C(0x0008000000000000); + } + return (isNaNF64UI(uiA) ? uiA : uiB) | UINT64_C(0x0008000000000000); +} + +static float64_t softfloat_roundPackToF64(bool sign, int_fast16_t exp, + uint_fast64_t sig) { + uint_fast8_t roundingMode; + bool roundNearEven; + uint_fast16_t roundIncrement, roundBits; + bool isTiny; + uint_fast64_t uiZ; + + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + roundingMode = globalRoundingMode; + roundNearEven = (roundingMode == round_near_even); + roundIncrement = 0x200; + if (!roundNearEven && (roundingMode != round_near_maxMag)) { + roundIncrement = + (roundingMode == (sign ? round_min : round_max)) ? 0x3FF : 0; + } + roundBits = sig & 0x3FF; + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + if (0x7FD <= (uint16_t)exp) { + if (exp < 0) { + /*---------------------------------------------------------------- + *----------------------------------------------------------------*/ + isTiny = (globalDetectTininess == tininess_beforeRounding) || + (exp < -1) || + (sig + roundIncrement < UINT64_C(0x8000000000000000)); + sig = softfloat_shiftRightJam64(sig, -exp); + exp = 0; + roundBits = sig & 0x3FF; + if (isTiny && roundBits) { + raiseFlags(flag_underflow); + } + } else if ((0x7FD < exp) || + (UINT64_C(0x8000000000000000) <= sig + roundIncrement)) { + /*---------------------------------------------------------------- + *----------------------------------------------------------------*/ + raiseFlags(flag_overflow | flag_inexact); + uiZ = packToF64UI(sign, 0x7FF, 0) - !roundIncrement; + goto uiZ; + } + } + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + sig = (sig + roundIncrement) >> 10; + if (roundBits) { + raiseFlags(flag_inexact); + if (roundingMode == round_odd) { + sig |= 1; + goto packReturn; + } + } + sig &= ~(uint_fast64_t)(!(roundBits ^ 0x200) & roundNearEven); + if (!sig) exp = 0; + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ +packReturn: + uiZ = packToF64UI(sign, exp, sig); +uiZ: + return float64_t::fromRaw(uiZ); +} + +static int_fast32_t softfloat_roundToI32(bool sign, uint_fast64_t sig, + uint_fast8_t roundingMode, + bool exact) { + bool roundNearEven; + uint_fast16_t roundIncrement, roundBits; + uint_fast32_t sig32; + union { + uint32_t ui; + int32_t i; + } uZ; + int_fast32_t z; + + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + roundNearEven = (roundingMode == round_near_even); + roundIncrement = 0x800; + if (!roundNearEven && (roundingMode != round_near_maxMag)) { + roundIncrement = + (roundingMode == (sign ? round_min : round_max)) ? 0xFFF : 0; + } + roundBits = sig & 0xFFF; + sig += roundIncrement; + if (sig & UINT64_C(0xFFFFF00000000000)) goto invalid; + sig32 = (uint_fast32_t)(sig >> 12); // fixed warning on type cast + sig32 &= ~(uint_fast32_t)(!(roundBits ^ 0x800) & roundNearEven); + // fixed unsigned unary minus: -x == ~x + 1 + uZ.ui = sign ? (~sig32 + 1) : sig32; + z = uZ.i; + if (z && ((z < 0) ^ sign)) goto invalid; + if (exact && roundBits) { + raiseFlags(flag_inexact); + } + return z; + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ +invalid: + raiseFlags(flag_invalid); + return sign ? i32_fromNegOverflow : i32_fromPosOverflow; +} + +static int_fast64_t softfloat_roundToI64(bool sign, uint_fast64_t sig, + uint_fast64_t sigExtra, + uint_fast8_t roundingMode, + bool exact) { + bool roundNearEven, doIncrement; + union { + uint64_t ui; + int64_t i; + } uZ; + int_fast64_t z; + + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + roundNearEven = (roundingMode == round_near_even); + doIncrement = (UINT64_C(0x8000000000000000) <= sigExtra); + if (!roundNearEven && (roundingMode != round_near_maxMag)) { + doIncrement = (roundingMode == (sign ? round_min : round_max)) && sigExtra; + } + if (doIncrement) { + ++sig; + if (!sig) goto invalid; + sig &= ~(uint_fast64_t)(!(sigExtra & UINT64_C(0x7FFFFFFFFFFFFFFF)) & + roundNearEven); + } + uZ.ui = sign ? (~sig + 1) : sig; + z = uZ.i; + if (z && ((z < 0) ^ sign)) goto invalid; + if (exact && sigExtra) { + raiseFlags(flag_inexact); + } + return z; + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ +invalid: + raiseFlags(flag_invalid); + return sign ? i64_fromNegOverflow : i64_fromPosOverflow; +} + +static struct exp16_sig64 softfloat_normSubnormalF64Sig(uint_fast64_t sig) { + int_fast8_t shiftDist; + struct exp16_sig64 z; + + shiftDist = softfloat_countLeadingZeros64(sig) - 11; + z.exp = 1 - shiftDist; + z.sig = sig << shiftDist; + return z; +} + +static float64_t softfloat_normRoundPackToF64(bool sign, int_fast16_t exp, + uint_fast64_t sig) { + int_fast8_t shiftDist; + + shiftDist = softfloat_countLeadingZeros64(sig) - 1; + exp -= shiftDist; + if ((10 <= shiftDist) && ((unsigned int)exp < 0x7FD)) { + return float64_t::fromRaw( + packToF64UI(sign, sig ? exp : 0, sig << (shiftDist - 10))); + } else { + return softfloat_roundPackToF64(sign, exp, sig << shiftDist); + } +} + +static float64_t softfloat_addMagsF64(uint_fast64_t uiA, uint_fast64_t uiB, + bool signZ) { + int_fast16_t expA; + uint_fast64_t sigA; + int_fast16_t expB; + uint_fast64_t sigB; + int_fast16_t expDiff; + uint_fast64_t uiZ; + int_fast16_t expZ; + uint_fast64_t sigZ; + + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + expA = expF64UI(uiA); + sigA = fracF64UI(uiA); + expB = expF64UI(uiB); + sigB = fracF64UI(uiB); + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + expDiff = expA - expB; + if (!expDiff) { + /*-------------------------------------------------------------------- + *--------------------------------------------------------------------*/ + if (!expA) { + uiZ = uiA + sigB; + goto uiZ; + } + if (expA == 0x7FF) { + if (sigA | sigB) goto propagateNaN; + uiZ = uiA; + goto uiZ; + } + expZ = expA; + sigZ = UINT64_C(0x0020000000000000) + sigA + sigB; + sigZ <<= 9; + } else { + /*-------------------------------------------------------------------- + *--------------------------------------------------------------------*/ + sigA <<= 9; + sigB <<= 9; + if (expDiff < 0) { + if (expB == 0x7FF) { + if (sigB) goto propagateNaN; + uiZ = packToF64UI(signZ, 0x7FF, 0); + goto uiZ; + } + expZ = expB; + if (expA) { + sigA += UINT64_C(0x2000000000000000); + } else { + sigA <<= 1; + } + sigA = softfloat_shiftRightJam64(sigA, -expDiff); + } else { + if (expA == 0x7FF) { + if (sigA) goto propagateNaN; + uiZ = uiA; + goto uiZ; + } + expZ = expA; + if (expB) { + sigB += UINT64_C(0x2000000000000000); + } else { + sigB <<= 1; + } + sigB = softfloat_shiftRightJam64(sigB, expDiff); + } + sigZ = UINT64_C(0x2000000000000000) + sigA + sigB; + if (sigZ < UINT64_C(0x4000000000000000)) { + --expZ; + sigZ <<= 1; + } + } + return softfloat_roundPackToF64(signZ, expZ, sigZ); + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ +propagateNaN: + uiZ = softfloat_propagateNaNF64UI(uiA, uiB); +uiZ: + return float64_t::fromRaw(uiZ); +} + +static float64_t softfloat_subMagsF64(uint_fast64_t uiA, uint_fast64_t uiB, + bool signZ) { + int_fast16_t expA; + uint_fast64_t sigA; + int_fast16_t expB; + uint_fast64_t sigB; + int_fast16_t expDiff; + uint_fast64_t uiZ; + int_fast64_t sigDiff; + int_fast8_t shiftDist; + int_fast16_t expZ; + uint_fast64_t sigZ; + + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + expA = expF64UI(uiA); + sigA = fracF64UI(uiA); + expB = expF64UI(uiB); + sigB = fracF64UI(uiB); + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ + expDiff = expA - expB; + if (!expDiff) { + /*-------------------------------------------------------------------- + *--------------------------------------------------------------------*/ + if (expA == 0x7FF) { + if (sigA | sigB) goto propagateNaN; + raiseFlags(flag_invalid); + uiZ = defaultNaNF64UI; + goto uiZ; + } + sigDiff = sigA - sigB; + if (!sigDiff) { + uiZ = packToF64UI((globalRoundingMode == round_min), 0, 0); + goto uiZ; + } + if (expA) --expA; + if (sigDiff < 0) { + signZ = !signZ; + sigDiff = -sigDiff; + } + shiftDist = softfloat_countLeadingZeros64(sigDiff) - 11; + expZ = expA - shiftDist; + if (expZ < 0) { + shiftDist = (int_fast8_t)expA; // fixed type cast + expZ = 0; + } + uiZ = packToF64UI(signZ, expZ, sigDiff << shiftDist); + goto uiZ; + } else { + /*-------------------------------------------------------------------- + *--------------------------------------------------------------------*/ + sigA <<= 10; + sigB <<= 10; + if (expDiff < 0) { + /*---------------------------------------------------------------- + *----------------------------------------------------------------*/ + signZ = !signZ; + if (expB == 0x7FF) { + if (sigB) goto propagateNaN; + uiZ = packToF64UI(signZ, 0x7FF, 0); + goto uiZ; + } + sigA += expA ? UINT64_C(0x4000000000000000) : sigA; + sigA = softfloat_shiftRightJam64(sigA, -expDiff); + sigB |= UINT64_C(0x4000000000000000); + expZ = expB; + sigZ = sigB - sigA; + } else { + /*---------------------------------------------------------------- + *----------------------------------------------------------------*/ + if (expA == 0x7FF) { + if (sigA) goto propagateNaN; + uiZ = uiA; + goto uiZ; + } + sigB += expB ? UINT64_C(0x4000000000000000) : sigB; + sigB = softfloat_shiftRightJam64(sigB, expDiff); + sigA |= UINT64_C(0x4000000000000000); + expZ = expA; + sigZ = sigA - sigB; + } + return softfloat_normRoundPackToF64(signZ, expZ - 1, sigZ); + } + /*------------------------------------------------------------------------ + *------------------------------------------------------------------------*/ +propagateNaN: + uiZ = softfloat_propagateNaNF64UI(uiA, uiB); +uiZ: + return float64_t::fromRaw(uiZ); +} + +static uint32_t softfloat_approxRecipSqrt32_1(unsigned int oddExpA, + uint32_t a) { + int index; + uint16_t eps, r0; + uint_fast32_t ESqrR0; + uint32_t sigma0; + uint_fast32_t r; + uint32_t sqrSigma0; + + index = (a >> 27 & 0xE) + oddExpA; + eps = (uint16_t)(a >> 12); + r0 = softfloat_approxRecipSqrt_1k0s[index] - + ((softfloat_approxRecipSqrt_1k1s[index] * (uint_fast32_t)eps) >> 20); + ESqrR0 = (uint_fast32_t)r0 * r0; + if (!oddExpA) ESqrR0 <<= 1; + sigma0 = ~(uint_fast32_t)(((uint32_t)ESqrR0 * (uint_fast64_t)a) >> 23); + r = (uint_fast32_t)( + ((uint_fast32_t)r0 << 16) + + ((r0 * (uint_fast64_t)sigma0) >> 25)); // fixed warning on type cast + sqrSigma0 = ((uint_fast64_t)sigma0 * sigma0) >> 32; + r += ((uint32_t)((r >> 1) + (r >> 3) - ((uint_fast32_t)r0 << 14)) * + (uint_fast64_t)sqrSigma0) >> + 48; + if (!(r & 0x80000000)) r = 0x80000000; + return r; +} + +static uint_fast8_t softfloat_countLeadingZeros64(uint64_t a) { + uint_fast8_t count; + uint32_t a32; + + count = 0; + a32 = a >> 32; + if (!a32) { + count = 32; + a32 = (uint32_t)a; // fixed warning on type cast + } + // From here, result is current count + count leading zeros of `a32'. + if (a32 < 0x10000) { + count += 16; + a32 <<= 16; + } + if (a32 < 0x1000000) { + count += 8; + a32 <<= 8; + } + count += softfloat_countLeadingZeros8[a32 >> 24]; + return count; +} + +static struct uint128 softfloat_mul64To128(uint64_t a, uint64_t b) { + uint32_t a32, a0, b32, b0; + struct uint128 z; + uint64_t mid1, mid; + + a32 = a >> 32; + a0 = (uint32_t)a; // fixed warning on type cast + b32 = b >> 32; + b0 = (uint32_t)b; // fixed warning on type cast + z.v0 = (uint_fast64_t)a0 * b0; + mid1 = (uint_fast64_t)a32 * b0; + mid = mid1 + (uint_fast64_t)a0 * b32; + z.v64 = (uint_fast64_t)a32 * b32; + z.v64 += (uint_fast64_t)(mid < mid1) << 32 | mid >> 32; + mid <<= 32; + z.v0 += mid; + z.v64 += (z.v0 < mid); + return z; +} diff --git a/miner/src/cpp/softfloat.hpp b/miner/src/cpp/softfloat.hpp new file mode 100644 index 0000000..35f969c --- /dev/null +++ b/miner/src/cpp/softfloat.hpp @@ -0,0 +1,222 @@ +// This file is based on files from package softfloat +// issued with the following license: + +/*============================================================================ + +This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic +Package, Release 3c, by John R. Hauser. + +Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the +University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions, and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions, and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. Neither the name of the University nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE +DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +=============================================================================*/ + +#pragma once + +#include + +enum { + tininess_beforeRounding = 0, + tininess_afterRounding = 1 +}; +extern uint_fast8_t globalDetectTininess; + +enum { + round_near_even = 0, // round to nearest, with ties to even + round_minMag = 1, // round to minimum magnitude (toward zero) + round_min = 2, // round to minimum (down) + round_max = 3, // round to maximum (up) + round_near_maxMag = + 4, // round to nearest, with ties to maximum magnitude (away from zero) + round_odd = 5 // round to odd (jamming) +}; +extern uint_fast8_t globalRoundingMode; + +// For faster memory accessing +typedef union suf64 { + int64_t i; + uint64_t u; + double f; +} suf64; + +struct softdouble { + public: + // constructors + softdouble() { v = 0; } + softdouble(const softdouble& s) { v = s.v; } + softdouble& operator=(const softdouble& s) { + if (&s != this) v = s.v; + return *this; + } + + // Construct from raw binary representation + static const softdouble fromRaw(const uint64_t a) { + softdouble x; + x.v = a; + return x; + } + + // Construct from integer + explicit softdouble(const uint32_t); + explicit softdouble(const uint64_t); + explicit softdouble(const int32_t); + explicit softdouble(const int64_t); + + // Construct from double + explicit softdouble(const double a) { + suf64 s; + s.f = a; + v = s.u; + } + + // Type cast + operator double() const { + suf64 s; + s.u = v; + return s.f; + } + + // Basic arithmetics + softdouble operator+(const softdouble&) const; + softdouble operator-(const softdouble&) const; + softdouble operator*(const softdouble&) const; + softdouble operator/(const softdouble&) const; + softdouble operator%(const softdouble&) const; + softdouble operator-() const { + softdouble x; + x.v = v ^ (1ULL << 63); + return x; + } + + softdouble& operator+=(const softdouble& a) { + *this = *this + a; + return *this; + } + softdouble& operator-=(const softdouble& a) { + *this = *this - a; + return *this; + } + softdouble& operator*=(const softdouble& a) { + *this = *this * a; + return *this; + } + softdouble& operator/=(const softdouble& a) { + *this = *this / a; + return *this; + } + softdouble& operator%=(const softdouble& a) { + *this = *this % a; + return *this; + } + + // Comparison operations + // Any operation with NaN produces false. The only exception is when x is NaN: + // x != y for any y. Positive and negative zeros are equal. + bool operator==(const softdouble&) const; + bool operator!=(const softdouble&) const; + bool operator>(const softdouble&) const; + bool operator>=(const softdouble&) const; + bool operator<(const softdouble&) const; + bool operator<=(const softdouble&) const; + + // Indicators + inline bool isNaN() const { + return (v & 0x7fffffffffffffff) > 0x7ff0000000000000; + } + inline bool isInf() const { + return (v & 0x7fffffffffffffff) == 0x7ff0000000000000; + } + inline bool isSubnormal() const { return ((v >> 52) & 0x7FF) == 0; } + + // Sign bit + inline bool getSign() const { return (v >> 63) != 0; } + inline softdouble setSign(bool sign) const { + softdouble x; + x.v = (v & ((1ULL << 63) - 1)) | ((uint_fast64_t)(sign) << 63); + return x; + } + + // 0-based exponent + inline int getExp() const { return ((v >> 52) & 0x7FF) - 1023; } + inline softdouble setExp(int e) const { + softdouble x; + x.v = + (v & 0x800FFFFFFFFFFFFF) | ((uint_fast64_t)((e + 1023) & 0x7FF) << 52); + return x; + } + + // Fraction part + inline softdouble getFrac() const { + uint_fast64_t vv = (v & 0x000FFFFFFFFFFFFF) | ((uint_fast64_t)(1023) << 52); + return softdouble::fromRaw(vv); + } + inline softdouble setFrac(const softdouble& s) const { + softdouble x; + x.v = (v & 0xFFF0000000000000) | (s.v & 0x000FFFFFFFFFFFFF); + return x; + } + + // Default constants + static softdouble zero() { return softdouble::fromRaw(0); } + static softdouble inf() { + return softdouble::fromRaw((uint_fast64_t)(0x7FF) << 52); + } + static softdouble nan() { + return softdouble::fromRaw((uint_fast64_t)(0x7FFFFFFFFFFFFFFF)); + } + static softdouble one() { + return softdouble::fromRaw((uint_fast64_t)(1023) << 52); + } + static softdouble min() { + return softdouble::fromRaw((uint_fast64_t)(0x01) << 52); + } + static softdouble max() { + return softdouble::fromRaw(((uint_fast64_t)(0x7FF) << 52) - 1); + } + static softdouble eps() { + return softdouble::fromRaw((uint_fast64_t)(1023 - 52) << 52); + } + + uint64_t v; +}; + +// Arithmetics +softdouble sqrt(const softdouble& a); + +// Other functions +inline softdouble min(const softdouble& a, const softdouble& b) { + return (a > b) ? b : a; +} +inline softdouble max(const softdouble& a, const softdouble& b) { + return (a > b) ? a : b; +} +inline softdouble abs(softdouble a) { + softdouble x; + x.v = a.v & ((1ULL << 63) - 1); + return x; +} diff --git a/miner/src/cpp/superscalar.cpp b/miner/src/cpp/superscalar.cpp new file mode 100644 index 0000000..b67a5bf --- /dev/null +++ b/miner/src/cpp/superscalar.cpp @@ -0,0 +1,903 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "configuration.h" +#include "program.hpp" +#include "endian.h" +#include +#include +#include +#include +#include +#include "superscalar.hpp" +#include "intrin_wasm.h" +#include "reciprocal.h" +#include "common.hpp" + +namespace randomx { + + static bool isMultiplication(SuperscalarInstructionType type) { + return type == SuperscalarInstructionType::IMUL_R || type == SuperscalarInstructionType::IMULH_R || type == SuperscalarInstructionType::ISMULH_R || type == SuperscalarInstructionType::IMUL_RCP; + } + + //uOPs (micro-ops) are represented only by the execution port they can go to + namespace ExecutionPort { + using type = int; + constexpr type Null = 0; + constexpr type P0 = 1; + constexpr type P1 = 2; + constexpr type P5 = 4; + constexpr type P01 = P0 | P1; + constexpr type P05 = P0 | P5; + constexpr type P015 = P0 | P1 | P5; + } + + //Macro-operation as output of the x86 decoder + //Usually one macro-op = one x86 instruction, but 2 instructions are sometimes fused into 1 macro-op + //Macro-op can consist of 1 or 2 uOPs. + class MacroOp { + public: + MacroOp(const char* name, int size) + : name_(name), size_(size), latency_(0), uop1_(ExecutionPort::Null), uop2_(ExecutionPort::Null) {} + MacroOp(const char* name, int size, int latency, ExecutionPort::type uop) + : name_(name), size_(size), latency_(latency), uop1_(uop), uop2_(ExecutionPort::Null) {} + MacroOp(const char* name, int size, int latency, ExecutionPort::type uop1, ExecutionPort::type uop2) + : name_(name), size_(size), latency_(latency), uop1_(uop1), uop2_(uop2) {} + MacroOp(const MacroOp& parent, bool dependent) + : name_(parent.name_), size_(parent.size_), latency_(parent.latency_), uop1_(parent.uop1_), uop2_(parent.uop2_), dependent_(dependent) {} + const char* getName() const { + return name_; + } + int getSize() const { + return size_; + } + int getLatency() const { + return latency_; + } + ExecutionPort::type getUop1() const { + return uop1_; + } + ExecutionPort::type getUop2() const { + return uop2_; + } + bool isSimple() const { + return uop2_ == ExecutionPort::Null; + } + bool isEliminated() const { + return uop1_ == ExecutionPort::Null; + } + bool isDependent() const { + return dependent_; + } + static const MacroOp Add_rr; + static const MacroOp Add_ri; + static const MacroOp Lea_sib; + static const MacroOp Sub_rr; + static const MacroOp Imul_rr; + static const MacroOp Imul_r; + static const MacroOp Mul_r; + static const MacroOp Mov_rr; + static const MacroOp Mov_ri64; + static const MacroOp Xor_rr; + static const MacroOp Xor_ri; + static const MacroOp Ror_rcl; + static const MacroOp Ror_ri; + static const MacroOp TestJz_fused; + static const MacroOp Xor_self; + static const MacroOp Cmp_ri; + static const MacroOp Setcc_r; + private: + const char* name_; + int size_; + int latency_; + ExecutionPort::type uop1_; + ExecutionPort::type uop2_; + bool dependent_ = false; + }; + + //Size: 3 bytes + const MacroOp MacroOp::Add_rr = MacroOp("add r,r", 3, 1, ExecutionPort::P015); + const MacroOp MacroOp::Sub_rr = MacroOp("sub r,r", 3, 1, ExecutionPort::P015); + const MacroOp MacroOp::Xor_rr = MacroOp("xor r,r", 3, 1, ExecutionPort::P015); + const MacroOp MacroOp::Imul_r = MacroOp("imul r", 3, 4, ExecutionPort::P1, ExecutionPort::P5); + const MacroOp MacroOp::Mul_r = MacroOp("mul r", 3, 4, ExecutionPort::P1, ExecutionPort::P5); + const MacroOp MacroOp::Mov_rr = MacroOp("mov r,r", 3); + + //Size: 4 bytes + const MacroOp MacroOp::Lea_sib = MacroOp("lea r,r+r*s", 4, 1, ExecutionPort::P01); + const MacroOp MacroOp::Imul_rr = MacroOp("imul r,r", 4, 3, ExecutionPort::P1); + const MacroOp MacroOp::Ror_ri = MacroOp("ror r,i", 4, 1, ExecutionPort::P05); + + //Size: 7 bytes (can be optionally padded with nop to 8 or 9 bytes) + const MacroOp MacroOp::Add_ri = MacroOp("add r,i", 7, 1, ExecutionPort::P015); + const MacroOp MacroOp::Xor_ri = MacroOp("xor r,i", 7, 1, ExecutionPort::P015); + + //Size: 10 bytes + const MacroOp MacroOp::Mov_ri64 = MacroOp("mov rax,i64", 10, 1, ExecutionPort::P015); + + //Unused: + const MacroOp MacroOp::Ror_rcl = MacroOp("ror r,cl", 3, 1, ExecutionPort::P0, ExecutionPort::P5); + const MacroOp MacroOp::Xor_self = MacroOp("xor rcx,rcx", 3); + const MacroOp MacroOp::Cmp_ri = MacroOp("cmp r,i", 7, 1, ExecutionPort::P015); + const MacroOp MacroOp::Setcc_r = MacroOp("setcc cl", 3, 1, ExecutionPort::P05); + const MacroOp MacroOp::TestJz_fused = MacroOp("testjz r,i", 13, 0, ExecutionPort::P5); + + const MacroOp IMULH_R_ops_array[] = { MacroOp::Mov_rr, MacroOp::Mul_r, MacroOp::Mov_rr }; + const MacroOp ISMULH_R_ops_array[] = { MacroOp::Mov_rr, MacroOp::Imul_r, MacroOp::Mov_rr }; + const MacroOp IMUL_RCP_ops_array[] = { MacroOp::Mov_ri64, MacroOp(MacroOp::Imul_rr, true) }; + + class SuperscalarInstructionInfo { + public: + const char* getName() const { + return name_; + } + int getSize() const { + return ops_.size(); + } + bool isSimple() const { + return getSize() == 1; + } + int getLatency() const { + return latency_; + } + const MacroOp& getOp(int index) const { + return ops_[index]; + } + SuperscalarInstructionType getType() const { + return type_; + } + int getResultOp() const { + return resultOp_; + } + int getDstOp() const { + return dstOp_; + } + int getSrcOp() const { + return srcOp_; + } + static const SuperscalarInstructionInfo ISUB_R; + static const SuperscalarInstructionInfo IXOR_R; + static const SuperscalarInstructionInfo IADD_RS; + static const SuperscalarInstructionInfo IMUL_R; + static const SuperscalarInstructionInfo IROR_C; + static const SuperscalarInstructionInfo IADD_C7; + static const SuperscalarInstructionInfo IXOR_C7; + static const SuperscalarInstructionInfo IADD_C8; + static const SuperscalarInstructionInfo IXOR_C8; + static const SuperscalarInstructionInfo IADD_C9; + static const SuperscalarInstructionInfo IXOR_C9; + static const SuperscalarInstructionInfo IMULH_R; + static const SuperscalarInstructionInfo ISMULH_R; + static const SuperscalarInstructionInfo IMUL_RCP; + static const SuperscalarInstructionInfo NOP; + private: + const char* name_; + SuperscalarInstructionType type_; + std::vector ops_; + int latency_; + int resultOp_ = 0; + int dstOp_ = 0; + int srcOp_; + + SuperscalarInstructionInfo(const char* name) + : name_(name), type_(SuperscalarInstructionType::INVALID), latency_(0) {} + SuperscalarInstructionInfo(const char* name, SuperscalarInstructionType type, const MacroOp& op, int srcOp) + : name_(name), type_(type), latency_(op.getLatency()), srcOp_(srcOp) { + ops_.push_back(MacroOp(op)); + } + template + SuperscalarInstructionInfo(const char* name, SuperscalarInstructionType type, const MacroOp(&arr)[N], int resultOp, int dstOp, int srcOp) + : name_(name), type_(type), latency_(0), resultOp_(resultOp), dstOp_(dstOp), srcOp_(srcOp) { + for (unsigned i = 0; i < N; ++i) { + ops_.push_back(MacroOp(arr[i])); + latency_ += ops_.back().getLatency(); + } + static_assert(N > 1, "Invalid array size"); + } + }; + + const SuperscalarInstructionInfo SuperscalarInstructionInfo::ISUB_R = SuperscalarInstructionInfo("ISUB_R", SuperscalarInstructionType::ISUB_R, MacroOp::Sub_rr, 0); + const SuperscalarInstructionInfo SuperscalarInstructionInfo::IXOR_R = SuperscalarInstructionInfo("IXOR_R", SuperscalarInstructionType::IXOR_R, MacroOp::Xor_rr, 0); + const SuperscalarInstructionInfo SuperscalarInstructionInfo::IADD_RS = SuperscalarInstructionInfo("IADD_RS", SuperscalarInstructionType::IADD_RS, MacroOp::Lea_sib, 0); + const SuperscalarInstructionInfo SuperscalarInstructionInfo::IMUL_R = SuperscalarInstructionInfo("IMUL_R", SuperscalarInstructionType::IMUL_R, MacroOp::Imul_rr, 0); + const SuperscalarInstructionInfo SuperscalarInstructionInfo::IROR_C = SuperscalarInstructionInfo("IROR_C", SuperscalarInstructionType::IROR_C, MacroOp::Ror_ri, -1); + + const SuperscalarInstructionInfo SuperscalarInstructionInfo::IADD_C7 = SuperscalarInstructionInfo("IADD_C7", SuperscalarInstructionType::IADD_C7, MacroOp::Add_ri, -1); + const SuperscalarInstructionInfo SuperscalarInstructionInfo::IXOR_C7 = SuperscalarInstructionInfo("IXOR_C7", SuperscalarInstructionType::IXOR_C7, MacroOp::Xor_ri, -1); + const SuperscalarInstructionInfo SuperscalarInstructionInfo::IADD_C8 = SuperscalarInstructionInfo("IADD_C8", SuperscalarInstructionType::IADD_C8, MacroOp::Add_ri, -1); + const SuperscalarInstructionInfo SuperscalarInstructionInfo::IXOR_C8 = SuperscalarInstructionInfo("IXOR_C8", SuperscalarInstructionType::IXOR_C8, MacroOp::Xor_ri, -1); + const SuperscalarInstructionInfo SuperscalarInstructionInfo::IADD_C9 = SuperscalarInstructionInfo("IADD_C9", SuperscalarInstructionType::IADD_C9, MacroOp::Add_ri, -1); + const SuperscalarInstructionInfo SuperscalarInstructionInfo::IXOR_C9 = SuperscalarInstructionInfo("IXOR_C9", SuperscalarInstructionType::IXOR_C9, MacroOp::Xor_ri, -1); + + const SuperscalarInstructionInfo SuperscalarInstructionInfo::IMULH_R = SuperscalarInstructionInfo("IMULH_R", SuperscalarInstructionType::IMULH_R, IMULH_R_ops_array, 1, 0, 1); + const SuperscalarInstructionInfo SuperscalarInstructionInfo::ISMULH_R = SuperscalarInstructionInfo("ISMULH_R", SuperscalarInstructionType::ISMULH_R, ISMULH_R_ops_array, 1, 0, 1); + const SuperscalarInstructionInfo SuperscalarInstructionInfo::IMUL_RCP = SuperscalarInstructionInfo("IMUL_RCP", SuperscalarInstructionType::IMUL_RCP, IMUL_RCP_ops_array, 1, 1, -1); + + const SuperscalarInstructionInfo SuperscalarInstructionInfo::NOP = SuperscalarInstructionInfo("NOP"); + + //these are some of the options how to split a 16-byte window into 3 or 4 x86 instructions. + //RandomX uses instructions with a native size of 3 (sub, xor, mul, mov), 4 (lea, mul), 7 (xor, add immediate) or 10 bytes (mov 64-bit immediate). + //Slots with sizes of 8 or 9 bytes need to be padded with a nop instruction. + const int buffer0[] = { 4, 8, 4 }; + const int buffer1[] = { 7, 3, 3, 3 }; + const int buffer2[] = { 3, 7, 3, 3 }; + const int buffer3[] = { 4, 9, 3 }; + const int buffer4[] = { 4, 4, 4, 4 }; + const int buffer5[] = { 3, 3, 10 }; + + class DecoderBuffer { + public: + static const DecoderBuffer Default; + template + DecoderBuffer(const char* name, int index, const int(&arr)[N]) + : name_(name), index_(index), counts_(arr), opsCount_(N) {} + const int* getCounts() const { + return counts_; + } + int getSize() const { + return opsCount_; + } + int getIndex() const { + return index_; + } + const char* getName() const { + return name_; + } + const DecoderBuffer* fetchNext(SuperscalarInstructionType instrType, int cycle, int mulCount, Blake2Generator& gen) const { + //If the current RandomX instruction is "IMULH", the next fetch configuration must be 3-3-10 + //because the full 128-bit multiplication instruction is 3 bytes long and decodes to 2 uOPs on Intel CPUs. + //Intel CPUs can decode at most 4 uOPs per cycle, so this requires a 2-1-1 configuration for a total of 3 macro ops. + if (instrType == SuperscalarInstructionType::IMULH_R || instrType == SuperscalarInstructionType::ISMULH_R) + return &decodeBuffer3310; + + //To make sure that the multiplication port is saturated, a 4-4-4-4 configuration is generated if the number of multiplications + //is lower than the number of cycles. + if (mulCount < cycle + 1) + return &decodeBuffer4444; + + //If the current RandomX instruction is "IMUL_RCP", the next buffer must begin with a 4-byte slot for multiplication. + if(instrType == SuperscalarInstructionType::IMUL_RCP) + return (gen.getByte() & 1) ? &decodeBuffer484 : &decodeBuffer493; + + //Default: select a random fetch configuration. + return fetchNextDefault(gen); + } + private: + const char* name_; + int index_; + const int* counts_; + int opsCount_; + DecoderBuffer() : index_(-1) {} + static const DecoderBuffer decodeBuffer484; + static const DecoderBuffer decodeBuffer7333; + static const DecoderBuffer decodeBuffer3733; + static const DecoderBuffer decodeBuffer493; + static const DecoderBuffer decodeBuffer4444; + static const DecoderBuffer decodeBuffer3310; + static const DecoderBuffer* decodeBuffers[4]; + const DecoderBuffer* fetchNextDefault(Blake2Generator& gen) const { + return decodeBuffers[gen.getByte() & 3]; + } + }; + + const DecoderBuffer DecoderBuffer::decodeBuffer484 = DecoderBuffer("4,8,4", 0, buffer0); + const DecoderBuffer DecoderBuffer::decodeBuffer7333 = DecoderBuffer("7,3,3,3", 1, buffer1); + const DecoderBuffer DecoderBuffer::decodeBuffer3733 = DecoderBuffer("3,7,3,3", 2, buffer2); + const DecoderBuffer DecoderBuffer::decodeBuffer493 = DecoderBuffer("4,9,3", 3, buffer3); + const DecoderBuffer DecoderBuffer::decodeBuffer4444 = DecoderBuffer("4,4,4,4", 4, buffer4); + const DecoderBuffer DecoderBuffer::decodeBuffer3310 = DecoderBuffer("3,3,10", 5, buffer5); + + const DecoderBuffer* DecoderBuffer::decodeBuffers[4] = { + &DecoderBuffer::decodeBuffer484, + &DecoderBuffer::decodeBuffer7333, + &DecoderBuffer::decodeBuffer3733, + &DecoderBuffer::decodeBuffer493, + }; + + const DecoderBuffer DecoderBuffer::Default = DecoderBuffer(); + + const SuperscalarInstructionInfo* slot_3[] = { &SuperscalarInstructionInfo::ISUB_R, &SuperscalarInstructionInfo::IXOR_R }; + const SuperscalarInstructionInfo* slot_3L[] = { &SuperscalarInstructionInfo::ISUB_R, &SuperscalarInstructionInfo::IXOR_R, &SuperscalarInstructionInfo::IMULH_R, &SuperscalarInstructionInfo::ISMULH_R }; + const SuperscalarInstructionInfo* slot_4[] = { &SuperscalarInstructionInfo::IROR_C, &SuperscalarInstructionInfo::IADD_RS }; + const SuperscalarInstructionInfo* slot_7[] = { &SuperscalarInstructionInfo::IXOR_C7, &SuperscalarInstructionInfo::IADD_C7 }; + const SuperscalarInstructionInfo* slot_8[] = { &SuperscalarInstructionInfo::IXOR_C8, &SuperscalarInstructionInfo::IADD_C8 }; + const SuperscalarInstructionInfo* slot_9[] = { &SuperscalarInstructionInfo::IXOR_C9, &SuperscalarInstructionInfo::IADD_C9 }; + const SuperscalarInstructionInfo* slot_10 = &SuperscalarInstructionInfo::IMUL_RCP; + + static bool selectRegister(std::vector& availableRegisters, Blake2Generator& gen, int& reg) { + int index; + if (availableRegisters.size() == 0) + return false; + + if (availableRegisters.size() > 1) { + index = gen.getUInt32() % availableRegisters.size(); + } + else { + index = 0; + } + reg = availableRegisters[index]; + return true; + } + + class RegisterInfo { + public: + RegisterInfo() : latency(0), lastOpGroup(SuperscalarInstructionType::INVALID), lastOpPar(-1), value(0) {} + int latency; + SuperscalarInstructionType lastOpGroup; + int lastOpPar; + int value; + }; + + //"SuperscalarInstruction" consists of one or more macro-ops + class SuperscalarInstruction { + public: + void toInstr(Instruction& instr) { //translate to a RandomX instruction format + instr.opcode = (int)getType(); + instr.dst = dst_; + instr.src = src_ >= 0 ? src_ : dst_; + instr.setMod(mod_); + instr.setImm32(imm32_); + } + + void createForSlot(Blake2Generator& gen, int slotSize, int fetchType, bool isLast, bool isFirst) { + switch (slotSize) + { + case 3: + //if this is the last slot, we can also select "IMULH" instructions + if (isLast) { + create(slot_3L[gen.getByte() & 3], gen); + } + else { + create(slot_3[gen.getByte() & 1], gen); + } + break; + case 4: + //if this is the 4-4-4-4 buffer, issue multiplications as the first 3 instructions + if (fetchType == 4 && !isLast) { + create(&SuperscalarInstructionInfo::IMUL_R, gen); + } + else { + create(slot_4[gen.getByte() & 1], gen); + } + break; + case 7: + create(slot_7[gen.getByte() & 1], gen); + break; + case 8: + create(slot_8[gen.getByte() & 1], gen); + break; + case 9: + create(slot_9[gen.getByte() & 1], gen); + break; + case 10: + create(slot_10, gen); + break; + default: + UNREACHABLE; + } + } + + void create(const SuperscalarInstructionInfo* info, Blake2Generator& gen) { + info_ = info; + reset(); + switch (info->getType()) + { + case SuperscalarInstructionType::ISUB_R: { + mod_ = 0; + imm32_ = 0; + opGroup_ = SuperscalarInstructionType::IADD_RS; + groupParIsSource_ = true; + } break; + + case SuperscalarInstructionType::IXOR_R: { + mod_ = 0; + imm32_ = 0; + opGroup_ = SuperscalarInstructionType::IXOR_R; + groupParIsSource_ = true; + } break; + + case SuperscalarInstructionType::IADD_RS: { + mod_ = gen.getByte(); + imm32_ = 0; + opGroup_ = SuperscalarInstructionType::IADD_RS; + groupParIsSource_ = true; + } break; + + case SuperscalarInstructionType::IMUL_R: { + mod_ = 0; + imm32_ = 0; + opGroup_ = SuperscalarInstructionType::IMUL_R; + groupParIsSource_ = true; + } break; + + case SuperscalarInstructionType::IROR_C: { + mod_ = 0; + do { + imm32_ = gen.getByte() & 63; + } while (imm32_ == 0); + opGroup_ = SuperscalarInstructionType::IROR_C; + opGroupPar_ = -1; + } break; + + case SuperscalarInstructionType::IADD_C7: + case SuperscalarInstructionType::IADD_C8: + case SuperscalarInstructionType::IADD_C9: { + mod_ = 0; + imm32_ = gen.getUInt32(); + opGroup_ = SuperscalarInstructionType::IADD_C7; + opGroupPar_ = -1; + } break; + + case SuperscalarInstructionType::IXOR_C7: + case SuperscalarInstructionType::IXOR_C8: + case SuperscalarInstructionType::IXOR_C9: { + mod_ = 0; + imm32_ = gen.getUInt32(); + opGroup_ = SuperscalarInstructionType::IXOR_C7; + opGroupPar_ = -1; + } break; + + case SuperscalarInstructionType::IMULH_R: { + canReuse_ = true; + mod_ = 0; + imm32_ = 0; + opGroup_ = SuperscalarInstructionType::IMULH_R; + opGroupPar_ = gen.getUInt32(); + } break; + + case SuperscalarInstructionType::ISMULH_R: { + canReuse_ = true; + mod_ = 0; + imm32_ = 0; + opGroup_ = SuperscalarInstructionType::ISMULH_R; + opGroupPar_ = gen.getUInt32(); + } break; + + case SuperscalarInstructionType::IMUL_RCP: { + mod_ = 0; + do { + imm32_ = gen.getUInt32(); + } while (isZeroOrPowerOf2(imm32_)); + opGroup_ = SuperscalarInstructionType::IMUL_RCP; + opGroupPar_ = -1; + } break; + + default: + break; + } + } + + bool selectDestination(int cycle, bool allowChainedMul, RegisterInfo (®isters)[8], Blake2Generator& gen) { + /*if (allowChainedMultiplication && opGroup_ == SuperscalarInstructionType::IMUL_R) + std::cout << "Selecting destination with chained MUL enabled" << std::endl;*/ + std::vector availableRegisters; + //Conditions for the destination register: + // * value must be ready at the required cycle + // * cannot be the same as the source register unless the instruction allows it + // - this avoids optimizable instructions such as "xor r, r" or "sub r, r" + // * register cannot be multiplied twice in a row unless allowChainedMul is true + // - this avoids accumulation of trailing zeroes in registers due to excessive multiplication + // - allowChainedMul is set to true if an attempt to find source/destination registers failed (this is quite rare, but prevents a catastrophic failure of the generator) + // * either the last instruction applied to the register or its source must be different than this instruction + // - this avoids optimizable instruction sequences such as "xor r1, r2; xor r1, r2" or "ror r, C1; ror r, C2" or "add r, C1; add r, C2" + // * register r5 cannot be the destination of the IADD_RS instruction (limitation of the x86 lea instruction) + for (unsigned i = 0; i < 8; ++i) { + if (registers[i].latency <= cycle && (canReuse_ || i != src_) && (allowChainedMul || opGroup_ != SuperscalarInstructionType::IMUL_R || registers[i].lastOpGroup != SuperscalarInstructionType::IMUL_R) && (registers[i].lastOpGroup != opGroup_ || registers[i].lastOpPar != opGroupPar_) && (info_->getType() != SuperscalarInstructionType::IADD_RS || i != RegisterNeedsDisplacement)) + availableRegisters.push_back(i); + } + return selectRegister(availableRegisters, gen, dst_); + } + + bool selectSource(int cycle, RegisterInfo(®isters)[8], Blake2Generator& gen) { + std::vector availableRegisters; + //all registers that are ready at the cycle + for (unsigned i = 0; i < 8; ++i) { + if (registers[i].latency <= cycle) + availableRegisters.push_back(i); + } + //if there are only 2 available registers for IADD_RS and one of them is r5, select it as the source because it cannot be the destination + if (availableRegisters.size() == 2 && info_->getType() == SuperscalarInstructionType::IADD_RS) { + if (availableRegisters[0] == RegisterNeedsDisplacement || availableRegisters[1] == RegisterNeedsDisplacement) { + opGroupPar_ = src_ = RegisterNeedsDisplacement; + return true; + } + } + if (selectRegister(availableRegisters, gen, src_)) { + if (groupParIsSource_) + opGroupPar_ = src_; + return true; + } + return false; + } + + SuperscalarInstructionType getType() { + return info_->getType(); + } + int getSource() { + return src_; + } + int getDestination() { + return dst_; + } + SuperscalarInstructionType getGroup() { + return opGroup_; + } + int getGroupPar() { + return opGroupPar_; + } + + const SuperscalarInstructionInfo& getInfo() const { + return *info_; + } + + static const SuperscalarInstruction Null; + + private: + const SuperscalarInstructionInfo* info_; + int src_ = -1; + int dst_ = -1; + int mod_; + uint32_t imm32_; + SuperscalarInstructionType opGroup_; + int opGroupPar_; + bool canReuse_ = false; + bool groupParIsSource_ = false; + + void reset() { + src_ = dst_ = -1; + canReuse_ = groupParIsSource_ = false; + } + + SuperscalarInstruction(const SuperscalarInstructionInfo* info) : info_(info) { + } + }; + + const SuperscalarInstruction SuperscalarInstruction::Null = SuperscalarInstruction(&SuperscalarInstructionInfo::NOP); + + constexpr int CYCLE_MAP_SIZE = RANDOMX_SUPERSCALAR_LATENCY + 4; + constexpr int LOOK_FORWARD_CYCLES = 4; + constexpr int MAX_THROWAWAY_COUNT = 256; + + template + static int scheduleUop(ExecutionPort::type uop, ExecutionPort::type(&portBusy)[CYCLE_MAP_SIZE][3], int cycle) { + //The scheduling here is done optimistically by checking port availability in order P5 -> P0 -> P1 to not overload + //port P1 (multiplication) by instructions that can go to any port. + for (; cycle < CYCLE_MAP_SIZE; ++cycle) { + if ((uop & ExecutionPort::P5) != 0 && !portBusy[cycle][2]) { + if (commit) { + if (trace) std::cout << "; P5 at cycle " << cycle << std::endl; + portBusy[cycle][2] = uop; + } + return cycle; + } + if ((uop & ExecutionPort::P0) != 0 && !portBusy[cycle][0]) { + if (commit) { + if (trace) std::cout << "; P0 at cycle " << cycle << std::endl; + portBusy[cycle][0] = uop; + } + return cycle; + } + if ((uop & ExecutionPort::P1) != 0 && !portBusy[cycle][1]) { + if (commit) { + if (trace) std::cout << "; P1 at cycle " << cycle << std::endl; + portBusy[cycle][1] = uop; + } + return cycle; + } + } + return -1; + } + + template + static int scheduleMop(const MacroOp& mop, ExecutionPort::type(&portBusy)[CYCLE_MAP_SIZE][3], int cycle, int depCycle) { + //if this macro-op depends on the previous one, increase the starting cycle if needed + //this handles an explicit dependency chain in IMUL_RCP + if (mop.isDependent()) { + cycle = std::max(cycle, depCycle); + } + //move instructions are eliminated and don't need an execution unit + if (mop.isEliminated()) { + if (commit) + if (trace) std::cout << "; (eliminated)" << std::endl; + return cycle; + } + else if (mop.isSimple()) { + //this macro-op has only one uOP + return scheduleUop(mop.getUop1(), portBusy, cycle); + } + else { + //macro-ops with 2 uOPs are scheduled conservatively by requiring both uOPs to execute in the same cycle + for (; cycle < CYCLE_MAP_SIZE; ++cycle) { + + int cycle1 = scheduleUop(mop.getUop1(), portBusy, cycle); + int cycle2 = scheduleUop(mop.getUop2(), portBusy, cycle); + + if (cycle1 >= 0 && cycle1 == cycle2) { + if (commit) { + scheduleUop(mop.getUop1(), portBusy, cycle1); + scheduleUop(mop.getUop2(), portBusy, cycle2); + } + return cycle1; + } + } + } + + return -1; + } + + void generateSuperscalar(SuperscalarProgram& prog, Blake2Generator& gen) { + + ExecutionPort::type portBusy[CYCLE_MAP_SIZE][3]; + memset(portBusy, 0, sizeof(portBusy)); + RegisterInfo registers[8]; + + const DecoderBuffer* decodeBuffer = &DecoderBuffer::Default; + SuperscalarInstruction currentInstruction = SuperscalarInstruction::Null; + int macroOpIndex = 0; + int codeSize = 0; + int macroOpCount = 0; + int cycle = 0; + int depCycle = 0; + int retireCycle = 0; + bool portsSaturated = false; + int programSize = 0; + int mulCount = 0; + int decodeCycle; + int throwAwayCount = 0; + + //decode instructions for RANDOMX_SUPERSCALAR_LATENCY cycles or until an execution port is saturated. + //Each decode cycle decodes 16 bytes of x86 code. + //Since a decode cycle produces on average 3.45 macro-ops and there are only 3 ALU ports, execution ports are always + //saturated first. The cycle limit is present only to guarantee loop termination. + //Program size is limited to SuperscalarMaxSize instructions. + for (decodeCycle = 0; decodeCycle < RANDOMX_SUPERSCALAR_LATENCY && !portsSaturated && programSize < SuperscalarMaxSize; ++decodeCycle) { + + //select a decode configuration + decodeBuffer = decodeBuffer->fetchNext(currentInstruction.getType(), decodeCycle, mulCount, gen); + if (trace) std::cout << "; ------------- fetch cycle " << cycle << " (" << decodeBuffer->getName() << ")" << std::endl; + + int bufferIndex = 0; + + //fill all instruction slots in the current decode buffer + while (bufferIndex < decodeBuffer->getSize()) { + int topCycle = cycle; + + //if we have issued all macro-ops for the current RandomX instruction, create a new instruction + if (macroOpIndex >= currentInstruction.getInfo().getSize()) { + if (portsSaturated || programSize >= SuperscalarMaxSize) + break; + //select an instruction so that the first macro-op fits into the current slot + currentInstruction.createForSlot(gen, decodeBuffer->getCounts()[bufferIndex], decodeBuffer->getIndex(), decodeBuffer->getSize() == bufferIndex + 1, bufferIndex == 0); + macroOpIndex = 0; + if (trace) std::cout << "; " << currentInstruction.getInfo().getName() << std::endl; + } + const MacroOp& mop = currentInstruction.getInfo().getOp(macroOpIndex); + if (trace) std::cout << mop.getName() << " "; + + //calculate the earliest cycle when this macro-op (all of its uOPs) can be scheduled for execution + int scheduleCycle = scheduleMop(mop, portBusy, cycle, depCycle); + if (scheduleCycle < 0) { + if (trace) std::cout << "Unable to map operation '" << mop.getName() << "' to execution port (cycle " << cycle << ")" << std::endl; + //__debugbreak(); + portsSaturated = true; + break; + } + + //find a source register (if applicable) that will be ready when this instruction executes + if (macroOpIndex == currentInstruction.getInfo().getSrcOp()) { + int forward; + //if no suitable operand is ready, look up to LOOK_FORWARD_CYCLES forward + for (forward = 0; forward < LOOK_FORWARD_CYCLES && !currentInstruction.selectSource(scheduleCycle, registers, gen); ++forward) { + if (trace) std::cout << "; src STALL at cycle " << cycle << std::endl; + ++scheduleCycle; + ++cycle; + } + //if no register was found, throw the instruction away and try another one + if (forward == LOOK_FORWARD_CYCLES) { + if (throwAwayCount < MAX_THROWAWAY_COUNT) { + throwAwayCount++; + macroOpIndex = currentInstruction.getInfo().getSize(); + if (trace) std::cout << "; THROW away " << currentInstruction.getInfo().getName() << std::endl; + //cycle = topCycle; + continue; + } + //abort this decode buffer + if (trace) std::cout << "Aborting at cycle " << cycle << " with decode buffer " << decodeBuffer->getName() << " - source registers not available for operation " << currentInstruction.getInfo().getName() << std::endl; + currentInstruction = SuperscalarInstruction::Null; + break; + } + if (trace) std::cout << "; src = r" << currentInstruction.getSource() << std::endl; + } + //find a destination register that will be ready when this instruction executes + if (macroOpIndex == currentInstruction.getInfo().getDstOp()) { + int forward; + for (forward = 0; forward < LOOK_FORWARD_CYCLES && !currentInstruction.selectDestination(scheduleCycle, throwAwayCount > 0, registers, gen); ++forward) { + if (trace) std::cout << "; dst STALL at cycle " << cycle << std::endl; + ++scheduleCycle; + ++cycle; + } + if (forward == LOOK_FORWARD_CYCLES) { //throw instruction away + if (throwAwayCount < MAX_THROWAWAY_COUNT) { + throwAwayCount++; + macroOpIndex = currentInstruction.getInfo().getSize(); + if (trace) std::cout << "; THROW away " << currentInstruction.getInfo().getName() << std::endl; + //cycle = topCycle; + continue; + } + //abort this decode buffer + if (trace) std::cout << "Aborting at cycle " << cycle << " with decode buffer " << decodeBuffer->getName() << " - destination registers not available" << std::endl; + currentInstruction = SuperscalarInstruction::Null; + break; + } + if (trace) std::cout << "; dst = r" << currentInstruction.getDestination() << std::endl; + } + throwAwayCount = 0; + + //recalculate when the instruction can be scheduled for execution based on operand availability + scheduleCycle = scheduleMop(mop, portBusy, scheduleCycle, scheduleCycle); + + if (scheduleCycle < 0) { + if (trace) std::cout << "Unable to map operation '" << mop.getName() << "' to execution port (cycle " << scheduleCycle << ")" << std::endl; + portsSaturated = true; + break; + } + + //calculate when the result will be ready + depCycle = scheduleCycle + mop.getLatency(); + + //if this instruction writes the result, modify register information + // RegisterInfo.latency - which cycle the register will be ready + // RegisterInfo.lastOpGroup - the last operation that was applied to the register + // RegisterInfo.lastOpPar - the last operation source value (-1 = constant, 0-7 = register) + if (macroOpIndex == currentInstruction.getInfo().getResultOp()) { + int dst = currentInstruction.getDestination(); + RegisterInfo& ri = registers[dst]; + retireCycle = depCycle; + ri.latency = retireCycle; + ri.lastOpGroup = currentInstruction.getGroup(); + ri.lastOpPar = currentInstruction.getGroupPar(); + if (trace) std::cout << "; RETIRED at cycle " << retireCycle << std::endl; + } + codeSize += mop.getSize(); + bufferIndex++; + macroOpIndex++; + macroOpCount++; + + //terminating condition + if (scheduleCycle >= RANDOMX_SUPERSCALAR_LATENCY) { + portsSaturated = true; + } + cycle = topCycle; + + //when all macro-ops of the current instruction have been issued, add the instruction into the program + if (macroOpIndex >= currentInstruction.getInfo().getSize()) { + currentInstruction.toInstr(prog(programSize++)); + mulCount += isMultiplication(currentInstruction.getType()); + } + } + ++cycle; + } + + double ipc = (macroOpCount / (double)retireCycle); + + memset(prog.asicLatencies, 0, sizeof(prog.asicLatencies)); + + //Calculate ASIC latency: + //Assumes 1 cycle latency for all operations and unlimited parallelization. + for (int i = 0; i < programSize; ++i) { + Instruction& instr = prog(i); + int latDst = prog.asicLatencies[instr.dst] + 1; + int latSrc = instr.dst != instr.src ? prog.asicLatencies[instr.src] + 1 : 0; + prog.asicLatencies[instr.dst] = std::max(latDst, latSrc); + } + + //address register is the register with the highest ASIC latency + int asicLatencyMax = 0; + int addressReg = 0; + for (int i = 0; i < 8; ++i) { + if (prog.asicLatencies[i] > asicLatencyMax) { + asicLatencyMax = prog.asicLatencies[i]; + addressReg = i; + } + prog.cpuLatencies[i] = registers[i].latency; + } + + prog.setSize(programSize); + prog.setAddressRegister(addressReg); + + prog.cpuLatency = retireCycle; + prog.asicLatency = asicLatencyMax; + prog.codeSize = codeSize; + prog.macroOps = macroOpCount; + prog.decodeCycles = decodeCycle; + prog.ipc = ipc; + prog.mulCount = mulCount; + + + /*if(INFO) std::cout << "; ALU port utilization:" << std::endl; + if (INFO) std::cout << "; (* = in use, _ = idle)" << std::endl; + + int portCycles = 0; + for (int i = 0; i < CYCLE_MAP_SIZE; ++i) { + std::cout << "; " << std::setw(3) << i << " "; + for (int j = 0; j < 3; ++j) { + std::cout << (portBusy[i][j] ? '*' : '_'); + portCycles += !!portBusy[i][j]; + } + std::cout << std::endl; + }*/ + } + + void executeSuperscalar(int_reg_t(&r)[8], SuperscalarProgram& prog, std::vector *reciprocals) { + for (unsigned j = 0; j < prog.getSize(); ++j) { + Instruction& instr = prog(j); + switch ((SuperscalarInstructionType)instr.opcode) + { + case SuperscalarInstructionType::ISUB_R: + r[instr.dst] -= r[instr.src]; + break; + case SuperscalarInstructionType::IXOR_R: + r[instr.dst] ^= r[instr.src]; + break; + case SuperscalarInstructionType::IADD_RS: + r[instr.dst] += r[instr.src] << instr.getModShift(); + break; + case SuperscalarInstructionType::IMUL_R: + r[instr.dst] *= r[instr.src]; + break; + case SuperscalarInstructionType::IROR_C: + r[instr.dst] = rotr(r[instr.dst], instr.getImm32()); + break; + case SuperscalarInstructionType::IADD_C7: + case SuperscalarInstructionType::IADD_C8: + case SuperscalarInstructionType::IADD_C9: + r[instr.dst] += signExtend2sCompl(instr.getImm32()); + break; + case SuperscalarInstructionType::IXOR_C7: + case SuperscalarInstructionType::IXOR_C8: + case SuperscalarInstructionType::IXOR_C9: + r[instr.dst] ^= signExtend2sCompl(instr.getImm32()); + break; + case SuperscalarInstructionType::IMULH_R: + r[instr.dst] = mulh(r[instr.dst], r[instr.src]); + break; + case SuperscalarInstructionType::ISMULH_R: + r[instr.dst] = smulh(r[instr.dst], r[instr.src]); + break; + case SuperscalarInstructionType::IMUL_RCP: + if (reciprocals != nullptr) + r[instr.dst] *= (*reciprocals)[instr.getImm32()]; + else + r[instr.dst] *= randomx_reciprocal(instr.getImm32()); + break; + default: + UNREACHABLE; + } + } + } +} diff --git a/miner/src/cpp/superscalar.hpp b/miner/src/cpp/superscalar.hpp new file mode 100644 index 0000000..2d1a468 --- /dev/null +++ b/miner/src/cpp/superscalar.hpp @@ -0,0 +1,60 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include +#include +#include "superscalar_program.hpp" +#include "blake2_generator.hpp" + +namespace randomx { + // Intel Ivy Bridge reference + enum class SuperscalarInstructionType { //uOPs (decode) execution ports latency code size + ISUB_R = 0, //1 p015 1 3 (sub) + IXOR_R = 1, //1 p015 1 3 (xor) + IADD_RS = 2, //1 p01 1 4 (lea) + IMUL_R = 3, //1 p1 3 4 (imul) + IROR_C = 4, //1 p05 1 4 (ror) + IADD_C7 = 5, //1 p015 1 7 (add) + IXOR_C7 = 6, //1 p015 1 7 (xor) + IADD_C8 = 7, //1+0 p015 1 7+1 (add+nop) + IXOR_C8 = 8, //1+0 p015 1 7+1 (xor+nop) + IADD_C9 = 9, //1+0 p015 1 7+2 (add+nop) + IXOR_C9 = 10, //1+0 p015 1 7+2 (xor+nop) + IMULH_R = 11, //1+2+1 0+(p1,p5)+0 3 3+3+3 (mov+mul+mov) + ISMULH_R = 12, //1+2+1 0+(p1,p5)+0 3 3+3+3 (mov+imul+mov) + IMUL_RCP = 13, //1+1 p015+p1 4 10+4 (mov+imul) + + COUNT = 14, + INVALID = -1 + }; + + void generateSuperscalar(SuperscalarProgram& prog, Blake2Generator& gen); + void executeSuperscalar(uint64_t(&r)[8], SuperscalarProgram& prog, std::vector *reciprocals = nullptr); +} \ No newline at end of file diff --git a/miner/src/cpp/superscalar_program.hpp b/miner/src/cpp/superscalar_program.hpp new file mode 100644 index 0000000..73649fb --- /dev/null +++ b/miner/src/cpp/superscalar_program.hpp @@ -0,0 +1,84 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include +#include "instruction.hpp" +#include "common.hpp" + +namespace randomx { + + class SuperscalarProgram { + public: + Instruction& operator()(int pc) { + return programBuffer[pc]; + } + friend std::ostream& operator<<(std::ostream& os, const SuperscalarProgram& p) { + p.print(os); + return os; + } + uint32_t getSize() { + return size; + } + void setSize(uint32_t val) { + size = val; + } + int getAddressRegister() { + return addrReg; + } + void setAddressRegister(int val) { + addrReg = val; + } + + Instruction programBuffer[SuperscalarMaxSize]; + uint32_t size +#ifndef NDEBUG + = 0 +#endif + ; + int addrReg; + double ipc; + int codeSize; + int macroOps; + int decodeCycles; + int cpuLatency; + int asicLatency; + int mulCount; + int cpuLatencies[8]; + int asicLatencies[8]; + private: + void print(std::ostream& os) const { + for (unsigned i = 0; i < size; ++i) { + auto instr = programBuffer[i]; + os << instr; + } + } + }; + +} \ No newline at end of file diff --git a/miner/src/cpp/tests/benchmark.cpp b/miner/src/cpp/tests/benchmark.cpp new file mode 100644 index 0000000..ea3e88f --- /dev/null +++ b/miner/src/cpp/tests/benchmark.cpp @@ -0,0 +1,291 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "stopwatch.hpp" +#include "utility.hpp" +#include "../randomx.h" +#include "../dataset.hpp" +#include "../endian.h" +#include "../common.hpp" +#ifdef _WIN32 +#include +#include +#endif + +const uint8_t blockTemplate_[] = { + 0x07, 0x07, 0xf7, 0xa4, 0xf0, 0xd6, 0x05, 0xb3, 0x03, 0x26, 0x08, 0x16, 0xba, 0x3f, 0x10, 0x90, 0x2e, 0x1a, 0x14, + 0x5a, 0xc5, 0xfa, 0xd3, 0xaa, 0x3a, 0xf6, 0xea, 0x44, 0xc1, 0x18, 0x69, 0xdc, 0x4f, 0x85, 0x3f, 0x00, 0x2b, 0x2e, + 0xea, 0x00, 0x00, 0x00, 0x00, 0x77, 0xb2, 0x06, 0xa0, 0x2c, 0xa5, 0xb1, 0xd4, 0xce, 0x6b, 0xbf, 0xdf, 0x0a, 0xca, + 0xc3, 0x8b, 0xde, 0xd3, 0x4d, 0x2d, 0xcd, 0xee, 0xf9, 0x5c, 0xd2, 0x0c, 0xef, 0xc1, 0x2f, 0x61, 0xd5, 0x61, 0x09 +}; + +class AtomicHash { +public: + AtomicHash() { + for (int i = 0; i < 4; ++i) + hash[i].store(0); + } + void xorWith(uint64_t update[4]) { + for (int i = 0; i < 4; ++i) + hash[i].fetch_xor(update[i]); + } + void print(std::ostream& os) { + for (int i = 0; i < 4; ++i) + print(hash[i], os); + os << std::endl; + } +private: + static void print(std::atomic& hash, std::ostream& os) { + auto h = hash.load(); + outputHex(std::cout, (char*)&h, sizeof(h)); + } + std::atomic hash[4]; +}; + +void printUsage(const char* executable) { + std::cout << "Usage: " << executable << " [OPTIONS]" << std::endl; + std::cout << "Supported options:" << std::endl; + std::cout << " --help shows this message" << std::endl; + std::cout << " --largeMemory mining mode: 2080 MiB (default: 256MiB)" << std::endl; + std::cout << " --largePages use large pages (default: small pages)" << std::endl; + std::cout << " --threads T use T threads (default: 1)" << std::endl; + std::cout << " --init Q initialize dataset with Q threads (default: 1)" << std::endl; + std::cout << " --nonces N run N nonces (default: 1000)" << std::endl; + std::cout << " --seed S seed for cache initialization (default: 0)" << std::endl; + std::cout << " --auto select the best options for the current CPU" << std::endl; +} + +struct MemoryException : public std::exception { +}; +struct CacheAllocException : public MemoryException { + const char * what() const throw () { + return "Cache allocation failed"; + } +}; +struct DatasetAllocException : public MemoryException { + const char * what() const throw () { + return "Dataset allocation failed"; + } +}; + +void mine(randomx_vm* vm, std::atomic& atomicNonce, AtomicHash& result, uint32_t noncesCount, int thread, int cpuid=-1) { + uint64_t hash[RANDOMX_HASH_SIZE / sizeof(uint64_t)]; + uint8_t blockTemplate[sizeof(blockTemplate_)]; + memcpy(blockTemplate, blockTemplate_, sizeof(blockTemplate)); + void* noncePtr = blockTemplate + 39; + auto nonce = atomicNonce.fetch_add(1); + + store32(noncePtr, nonce); + randomx_calculate_hash_first(vm, blockTemplate, sizeof(blockTemplate)); + + while (nonce < noncesCount) { + nonce = atomicNonce.fetch_add(1); + store32(noncePtr, nonce); + randomx_calculate_hash_next(vm, blockTemplate, sizeof(blockTemplate), &hash); + result.xorWith(hash); + } +} + +int main(int argc, char** argv) { + bool largeMemory, help, largePages, autoFlags; + int noncesCount, threadCount, initThreadCount; + int32_t seedValue; + char seed[4]; + + readIntOption("--threads", argc, argv, threadCount, 1); + readIntOption("--nonces", argc, argv, noncesCount, 10); + readIntOption("--init", argc, argv, initThreadCount, 1); + readIntOption("--seed", argc, argv, seedValue, 0); + readOption("--largeMemory", argc, argv, largeMemory); + if (!largeMemory) { + readOption("--largememory", argc, argv, largeMemory); + } + readOption("--largePages", argc, argv, largePages); + if (!largePages) { + readOption("--largepages", argc, argv, largePages); + } + readOption("--help", argc, argv, help); + readOption("--auto", argc, argv, autoFlags); + + store32(&seed, seedValue); + + std::cout << "WebRandomX Benchmark" << std::endl; + + if (help) { + printUsage(argv[0]); + return 0; + } + + std::atomic atomicNonce(0); + AtomicHash result; + std::vector vms; + std::vector threads; + randomx_dataset* dataset; + randomx_cache* cache; + randomx_flags flags; + + if (autoFlags) { + initThreadCount = std::thread::hardware_concurrency(); + flags = randomx_get_flags(); + } + else { + flags = RANDOMX_FLAG_DEFAULT; + } + + if (largePages) { + flags |= RANDOMX_FLAG_LARGE_PAGES; + } + if (largeMemory) { + flags |= RANDOMX_FLAG_FULL_MEM; + } + + if (flags & RANDOMX_FLAG_FULL_MEM) { + std::cout << " - full memory mode (2080 MiB)" << std::endl; + } + else { + std::cout << " - light memory mode (256 MiB)" << std::endl; + } + + if (flags & RANDOMX_FLAG_LARGE_PAGES) { + std::cout << " - large pages mode" << std::endl; + } + else { + std::cout << " - small pages mode" << std::endl; + } + + std::cout << "Initializing"; + if (largeMemory) + std::cout << " (" << initThreadCount << " thread" << (initThreadCount > 1 ? "s)" : ")"); + std::cout << " ..." << std::endl; + + try { + Stopwatch sw(true); + cache = randomx_alloc_cache(flags); + if (cache == nullptr) { + throw CacheAllocException(); + } + randomx_init_cache(cache, &seed, sizeof(seed)); + if (largeMemory) { + dataset = randomx_alloc_dataset(flags); + if (dataset == nullptr) { + throw DatasetAllocException(); + } + uint32_t datasetItemCount = randomx_dataset_item_count(); + if (initThreadCount > 1) { + auto perThread = datasetItemCount / initThreadCount; + auto remainder = datasetItemCount % initThreadCount; + uint32_t startItem = 0; + for (int i = 0; i < initThreadCount; ++i) { + auto count = perThread + (i == initThreadCount - 1 ? remainder : 0); + threads.push_back(std::thread(&randomx_init_dataset, dataset, cache, startItem, count)); + startItem += count; + } + for (unsigned i = 0; i < threads.size(); ++i) { + threads[i].join(); + } + } + else { + randomx_init_dataset(dataset, cache, 0, datasetItemCount); + } + randomx_release_cache(cache); + cache = nullptr; + threads.clear(); + } + std::cout << "Memory initialized in " << sw.getElapsed() << " s" << std::endl; + std::cout << "Initializing " << threadCount << " virtual machine(s) ..." << std::endl; + for (int i = 0; i < threadCount; ++i) { + randomx_vm *vm = randomx_create_vm(flags, cache, dataset); + if (vm == nullptr) { + if (largePages) { + throw std::runtime_error("Cannot create VM with the selected options. Try without --largePages"); + } + throw std::runtime_error("Cannot create VM"); + } + vms.push_back(vm); + } + std::cout << "Running benchmark (" << noncesCount << " nonces) ..." << std::endl; + sw.restart(); + if (threadCount > 1) { + for (unsigned i = 0; i < vms.size(); ++i) { + int cpuid = -1; + threads.push_back(std::thread(&mine, vms[i], std::ref(atomicNonce), std::ref(result), noncesCount, i, cpuid)); + } + for (unsigned i = 0; i < threads.size(); ++i) { + threads[i].join(); + } + } + else { + mine(vms[0], std::ref(atomicNonce), std::ref(result), noncesCount, 0); + } + + double elapsed = sw.getElapsed(); + for (unsigned i = 0; i < vms.size(); ++i) + randomx_destroy_vm(vms[i]); + if (largeMemory) + randomx_release_dataset(dataset); + else + randomx_release_cache(cache); + std::cout << "Calculated result: "; + result.print(std::cout); + if (noncesCount == 1000 && seedValue == 0) + std::cout << "Reference result: 10b649a3f15c7c7f88277812f2e74b337a0f20ce909af09199cccb960771cfa1" << std::endl; + if (!largeMemory) { + std::cout << "Performance: " << 1000 * elapsed / noncesCount << " ms per hash" << std::endl; + } + else { + std::cout << "Performance: " << noncesCount / elapsed << " hashes per second" << std::endl; + } + } + catch (MemoryException& e) { + std::cout << "ERROR: " << e.what() << std::endl; + if (largePages) { +#ifdef _WIN32 + std::cout << "To use large pages, please enable the \"Lock Pages in Memory\" policy and reboot." << std::endl; + if (!IsWindows8OrGreater()) { + std::cout << "Additionally, you have to run the benchmark from elevated command prompt." << std::endl; + } +#else + std::cout << "To use large pages, please run: sudo sysctl -w vm.nr_hugepages=1250" << std::endl; +#endif + } + return 1; + } + catch (std::exception& e) { + std::cout << "ERROR: " << e.what() << std::endl; + return 1; + } + return 0; +} diff --git a/miner/src/cpp/tests/code-generator.cpp b/miner/src/cpp/tests/code-generator.cpp new file mode 100644 index 0000000..5656c77 --- /dev/null +++ b/miner/src/cpp/tests/code-generator.cpp @@ -0,0 +1,114 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "utility.hpp" +#include "../common.hpp" +#include "../assembly_generator_x86.hpp" +#include "../superscalar.hpp" +#include "../aes_hash.hpp" +#include "../blake2.h" +#include "../program.hpp" + +const uint8_t seed[32] = { 191, 182, 222, 175, 249, 89, 134, 104, 241, 68, 191, 62, 162, 166, 61, 64, 123, 191, 227, 193, 118, 60, 188, 53, 223, 133, 175, 24, 123, 230, 55, 74 }; + +const uint8_t blockTemplate_[] = { + 0x07, 0x07, 0xf7, 0xa4, 0xf0, 0xd6, 0x05, 0xb3, 0x03, 0x26, 0x08, 0x16, 0xba, 0x3f, 0x10, 0x90, 0x2e, 0x1a, 0x14, + 0x5a, 0xc5, 0xfa, 0xd3, 0xaa, 0x3a, 0xf6, 0xea, 0x44, 0xc1, 0x18, 0x69, 0xdc, 0x4f, 0x85, 0x3f, 0x00, 0x2b, 0x2e, + 0xea, 0x00, 0x00, 0x00, 0x00, 0x77, 0xb2, 0x06, 0xa0, 0x2c, 0xa5, 0xb1, 0xd4, 0xce, 0x6b, 0xbf, 0xdf, 0x0a, 0xca, + 0xc3, 0x8b, 0xde, 0xd3, 0x4d, 0x2d, 0xcd, 0xee, 0xf9, 0x5c, 0xd2, 0x0c, 0xef, 0xc1, 0x2f, 0x61, 0xd5, 0x61, 0x09 +}; + +void generateAsm(uint32_t nonce) { + alignas(16) uint64_t hash[8]; + uint8_t blockTemplate[sizeof(blockTemplate_)]; + memcpy(blockTemplate, blockTemplate_, sizeof(blockTemplate)); + store32(blockTemplate + 39, nonce); + blake2b(hash, sizeof(hash), blockTemplate, sizeof(blockTemplate), nullptr, 0); + uint8_t scratchpad[randomx::ScratchpadSize]; + fillAes1Rx4((void*)hash, randomx::ScratchpadSize, scratchpad); + randomx::AssemblyGeneratorX86 asmX86; + randomx::Program p; + fillAes4Rx4(hash, sizeof(p), &p); + asmX86.generateProgram(p); + asmX86.printCode(std::cout); +} + +void generateNative(uint32_t nonce) { + alignas(16) uint64_t hash[8]; + uint8_t blockTemplate[sizeof(blockTemplate_)]; + memcpy(blockTemplate, blockTemplate_, sizeof(blockTemplate)); + store32(blockTemplate + 39, nonce); + blake2b(hash, sizeof(hash), blockTemplate, sizeof(blockTemplate), nullptr, 0); + uint8_t scratchpad[randomx::ScratchpadSize]; + fillAes1Rx4((void*)hash, randomx::ScratchpadSize, scratchpad); + alignas(16) randomx::Program prog; + fillAes1Rx4((void*)hash, sizeof(prog), &prog); + std::cout << prog << std::endl; +} + +void printUsage(const char* executable) { + std::cout << "Usage: " << executable << " [OPTIONS]" << std::endl; + std::cout << "Supported options:" << std::endl; + std::cout << " --nonce N seed nonce (default: 1000)" << std::endl; + std::cout << " --genAsm generate x86-64 asm code for nonce N" << std::endl; + std::cout << " --genNative generate RandomX code for nonce N" << std::endl; + std::cout << " --genSuperscalar generate superscalar program for nonce N" << std::endl; +} + +int main(int argc, char** argv) { + bool genAsm, genNative, genSuperscalar; + int nonce; + + readOption("--genAsm", argc, argv, genAsm); + readIntOption("--nonce", argc, argv, nonce, 1000); + readOption("--genNative", argc, argv, genNative); + readOption("--genSuperscalar", argc, argv, genSuperscalar); + + if (genSuperscalar) { + randomx::SuperscalarProgram p; + randomx::Blake2Generator gen(seed, nonce); + randomx::generateSuperscalar(p, gen); + randomx::AssemblyGeneratorX86 asmX86; + asmX86.generateAsm(p); + asmX86.printCode(std::cout); + return 0; + } + + if (genAsm) { + generateAsm(nonce); + return 0; + } + + if (genNative) { + generateNative(nonce); + return 0; + } + + printUsage(argv[0]); + return 0; +} \ No newline at end of file diff --git a/miner/src/cpp/tests/perf-simulation.cpp b/miner/src/cpp/tests/perf-simulation.cpp new file mode 100644 index 0000000..09a431c --- /dev/null +++ b/miner/src/cpp/tests/perf-simulation.cpp @@ -0,0 +1,661 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "utility.hpp" +#include "../common.hpp" +#include "../aes_hash.hpp" +#include "../program.hpp" +#include "../blake2.h" +#include +#include + +int analyze(randomx::Program& p); +int executeInOrder(randomx::Program& p, randomx::Program& original, bool print, int executionPorts, int memoryPorts, bool speculate, int pipeline); +int executeOutOfOrder(randomx::Program& p, randomx::Program& original, bool print, int executionPorts, int memoryPorts, bool speculate, int pipeline); + +constexpr uint32_t DST_NOP = 0; +constexpr uint32_t DST_INT = 1; +constexpr uint32_t DST_FLT = 2; +constexpr uint32_t DST_MEM = 3; +constexpr uint32_t MASK_DST = 3; + +constexpr uint32_t SRC_NOP = 0; +constexpr uint32_t SRC_INT = 4; +constexpr uint32_t SRC_FLT = 8; +constexpr uint32_t SRC_MEM = 12; +constexpr uint32_t MASK_SRC = 12; + +constexpr uint32_t OP_CFROUND = 16; +constexpr uint32_t OP_SWAP = 32; +constexpr uint32_t OP_BRANCH = 48; +constexpr uint32_t MASK_EXT = 48; + +constexpr uint32_t OP_FLOAT = 64; +constexpr uint32_t BRANCH_TARGET = 128; + +void generate(randomx::Program& p, uint32_t nonce) { + alignas(16) uint64_t hash[8]; + blake2b(hash, sizeof(hash), &nonce, sizeof(nonce), nullptr, 0); + fillAes1Rx4((void*)hash, sizeof(p), &p); +} + +bool has(randomx::Instruction& instr, uint32_t mask, uint32_t prop) { + return (instr.opcode & mask) == prop; +} + +bool has(randomx::Instruction& instr, uint32_t prop) { + return (instr.opcode & prop) != 0; +} + +int main(int argc, char** argv) { + int nonces, seed, executionPorts, memoryPorts, pipeline; + bool print, reorder, speculate; + readOption("--print", argc, argv, print); + readOption("--reorder", argc, argv, reorder); + readOption("--speculate", argc, argv, speculate); + readIntOption("--nonces", argc, argv, nonces, 1); + readIntOption("--seed", argc, argv, seed, 0); + readIntOption("--executionPorts", argc, argv, executionPorts, 4); + readIntOption("--memoryPorts", argc, argv, memoryPorts, 2); + readIntOption("--pipeline", argc, argv, pipeline, 3); + randomx::Program p, original; + double totalCycles = 0.0; + double jumpCount = 0; + for (int i = 0; i < nonces; ++i) { + generate(original, i ^ seed); + memcpy(&p, &original, sizeof(p)); + jumpCount += analyze(p); + totalCycles += + reorder + ? + executeOutOfOrder(p, original, print, executionPorts, memoryPorts, speculate, pipeline) + : + executeInOrder(p, original, print, executionPorts, memoryPorts, speculate, pipeline); + } + totalCycles /= nonces; + jumpCount /= nonces; + std::cout << "Execution took " << totalCycles << " cycles per program" << std::endl; + //std::cout << "Jump count: " << jumpCount << std::endl; + return 0; +} + +int executeInOrder(randomx::Program& p, randomx::Program& original, bool print, int executionPorts, int memoryPorts, bool speculate, int pipeline) { + int cycle = pipeline - 1; + int index = 0; + int branchCount = 0; + int int_reg_ready[randomx::RegistersCount] = { 0 }; + int flt_reg_ready[randomx::RegistersCount] = { 0 }; + //each workgroup takes 1 or 2 cycles (2 cycles if any instruction has a memory operand) + while (index < RANDOMX_PROGRAM_SIZE) { + int memoryAccesses = 0; + bool hasRound = false; + int workers = 0; + //std::cout << "-----------" << std::endl; + for (; workers < executionPorts && memoryAccesses < memoryPorts && index < RANDOMX_PROGRAM_SIZE; ++workers) { + auto& instr = p(index); + auto& origi = original(index); + origi.dst %= randomx::RegistersCount; + origi.src %= randomx::RegistersCount; + + //check dependencies + if (has(instr, MASK_SRC, SRC_INT) && int_reg_ready[instr.src] > cycle) + break; + + if (has(instr, MASK_SRC, SRC_MEM) && int_reg_ready[instr.src] > cycle - 1) + break; + + if (has(instr, MASK_DST, DST_MEM) && int_reg_ready[instr.dst] > cycle - 1) + break; + + if (has(instr, MASK_DST, DST_FLT) && flt_reg_ready[instr.dst] > cycle) + break; + + if (has(instr, MASK_DST, DST_INT) && int_reg_ready[instr.dst] > cycle) + break; + + if (hasRound && has(instr, OP_FLOAT)) + break; + + //execute + index++; + + if (has(instr, MASK_EXT, OP_BRANCH)) { + branchCount++; + } + + if (has(instr, MASK_DST, DST_FLT)) + flt_reg_ready[instr.dst] = cycle + 1; + + if (has(instr, MASK_DST, DST_INT)) + int_reg_ready[instr.dst] = cycle + 1; + + if (has(instr, MASK_EXT, OP_SWAP)) { + int_reg_ready[instr.src] = cycle + 1; + } + + if (has(instr, MASK_EXT, OP_CFROUND)) + hasRound = true; + + if (has(instr, MASK_SRC, SRC_MEM) || has(instr, MASK_DST, DST_MEM)) { + memoryAccesses++; + } + + if (print) + std::cout << std::setw(2) << (cycle + 1) << ": " << origi; + + //non-speculative execution must stall after branch + if (!speculate && has(instr, MASK_EXT, OP_BRANCH)) { + cycle += pipeline - 1; + break; + } + } + //std::cout << " workers: " << workers << std::endl; + cycle++; + } + if (speculate) { + //account for mispredicted branches + int i = 0; + while (branchCount--) { + auto entropy = p.getEntropy(i / 8); + entropy >> (i % 8) * 8; + if ((entropy & 0xff) == 0) // 1/256 chance to flush the pipeline + cycle += pipeline - 1; + } + } + return cycle; +} + +int executeOutOfOrder(randomx::Program& p, randomx::Program& original, bool print, int executionPorts, int memoryPorts, bool speculate, int pipeline) { + int index = 0; + int busyExecutionPorts[2 * RANDOMX_PROGRAM_SIZE] = { 0 }; + int busyMemoryPorts[2 * RANDOMX_PROGRAM_SIZE] = { 0 }; + int int_reg_ready[randomx::RegistersCount] = { 0 }; + int flt_reg_ready[randomx::RegistersCount] = { 0 }; + int fprcReady = 0; + int lastBranch = 0; + int branchCount = 0; + for (; index < RANDOMX_PROGRAM_SIZE; ++index) { + auto& instr = p(index); + int retireCycle = pipeline - 1; + + //non-speculative execution cannot reorder across branches + if (!speculate && !has(instr, MASK_EXT, OP_BRANCH)) + retireCycle = std::max(lastBranch + pipeline - 1, retireCycle); + + //check dependencies + if (has(instr, MASK_SRC, SRC_INT)) { + retireCycle = std::max(retireCycle, int_reg_ready[instr.src]); + int_reg_ready[instr.src] = retireCycle; + } + + if (has(instr, MASK_SRC, SRC_MEM)) { + retireCycle = std::max(retireCycle, int_reg_ready[instr.src] + 1); + //find free memory port + while (busyMemoryPorts[retireCycle - 1] >= memoryPorts) { + retireCycle++; + } + busyMemoryPorts[retireCycle - 1]++; + } + + if (has(instr, MASK_DST, DST_FLT)) { + retireCycle = std::max(retireCycle, flt_reg_ready[instr.dst]); + } + + if (has(instr, MASK_DST, DST_INT)) { + retireCycle = std::max(retireCycle, int_reg_ready[instr.dst]); + } + + //floating point operations depend on the fprc register + if (has(instr, OP_FLOAT)) + retireCycle = std::max(retireCycle, fprcReady); + + //execute + if (has(instr, MASK_DST, DST_MEM)) { + retireCycle = std::max(retireCycle, int_reg_ready[instr.dst] + 1); + //find free memory port + while (busyMemoryPorts[retireCycle - 1] >= memoryPorts) { + retireCycle++; + } + busyMemoryPorts[retireCycle - 1]++; + retireCycle++; + } + + if (has(instr, MASK_DST, DST_FLT)) { + //find free execution port + do { + retireCycle++; + } while (busyExecutionPorts[retireCycle - 1] >= executionPorts); + busyExecutionPorts[retireCycle - 1]++; + flt_reg_ready[instr.dst] = retireCycle; + } + + if (has(instr, MASK_DST, DST_INT)) { + //find free execution port + do { + retireCycle++; + } while (busyExecutionPorts[retireCycle - 1] >= executionPorts); + busyExecutionPorts[retireCycle - 1]++; + int_reg_ready[instr.dst] = retireCycle; + } + + if (has(instr, MASK_EXT, OP_SWAP)) { + int_reg_ready[instr.src] = retireCycle; + } + + if (has(instr, MASK_EXT, OP_CFROUND)) { + do { + retireCycle++; + } while (busyExecutionPorts[retireCycle - 1] >= executionPorts); + busyExecutionPorts[retireCycle - 1]++; + fprcReady = retireCycle; + } + + if (has(instr, MASK_EXT, OP_BRANCH)) { + /*if (!speculate && instr.mod == 1) { //simulated predication + do { + retireCycle++; + } while (busyExecutionPorts[retireCycle - 1] >= executionPorts); + busyExecutionPorts[retireCycle - 1]++; + int_reg_ready[instr.dst] = retireCycle; + }*/ + //else { + lastBranch = std::max(lastBranch, retireCycle); + branchCount++; + //} + } + + //print + auto& origi = original(index); + origi.dst %= randomx::RegistersCount; + origi.src %= randomx::RegistersCount; + if (print) { + std::cout << std::setw(2) << retireCycle << ": " << origi; + if (has(instr, MASK_EXT, OP_BRANCH)) { + std::cout << " jump: " << (int)instr.mod << std::endl; + } + } + } + int cycle = 0; + for (int i = 0; i < randomx::RegistersCount; ++i) { + cycle = std::max(cycle, int_reg_ready[i]); + } + for (int i = 0; i < randomx::RegistersCount; ++i) { + cycle = std::max(cycle, flt_reg_ready[i]); + } + if (speculate) { + //account for mispredicted branches + int i = 0; + while (branchCount--) { + auto entropy = p.getEntropy(i / 8); + entropy >> (i % 8) * 8; + if ((entropy & 0xff) == 0) // 1/256 chance to flush the pipeline + cycle += pipeline - 1; + } + } + return cycle; +} + +#include "../bytecode_machine.hpp" + +//old register selection +struct RegisterUsage { + int32_t lastUsed; + int32_t count; +}; + +inline int getConditionRegister(RegisterUsage(®isterUsage)[randomx::RegistersCount]) { + int min = INT_MAX; + int minCount = 0; + int minIndex; + //prefer registers that have been used as a condition register fewer times + for (unsigned i = 0; i < randomx::RegistersCount; ++i) { + if (registerUsage[i].lastUsed < min || (registerUsage[i].lastUsed == min && registerUsage[i].count < minCount)) { + min = registerUsage[i].lastUsed; + minCount = registerUsage[i].count; + minIndex = i; + } + } + return minIndex; +} + +int analyze(randomx::Program& p) { + int jumpCount = 0; + RegisterUsage registerUsage[randomx::RegistersCount]; + for (unsigned i = 0; i < randomx::RegistersCount; ++i) { + registerUsage[i].lastUsed = -1; + registerUsage[i].count = 0; + } + for (unsigned i = 0; i < RANDOMX_PROGRAM_SIZE; ++i) { + auto& instr = p(i); + int opcode = instr.opcode; + instr.opcode = 0; + + if (opcode < randomx::ceil_IADD_RS) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= SRC_INT; + instr.opcode |= DST_INT; + registerUsage[instr.dst].lastUsed = i; + continue; + } + + if (opcode < randomx::ceil_IADD_M) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= SRC_MEM; + instr.opcode |= DST_INT; + if (instr.src != instr.dst) { + instr.imm32 = (instr.getModMem() ? randomx::ScratchpadL1Mask : randomx::ScratchpadL2Mask); + } + else { + instr.imm32 &= randomx::ScratchpadL3Mask; + } + registerUsage[instr.dst].lastUsed = i; + continue; + } + + if (opcode < randomx::ceil_ISUB_R) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= DST_INT; + instr.opcode |= SRC_INT; + registerUsage[instr.dst].lastUsed = i; + continue; + } + + if (opcode < randomx::ceil_ISUB_M) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= SRC_MEM; + instr.opcode |= DST_INT; + if (instr.src != instr.dst) { + instr.imm32 = (instr.getModMem() ? randomx::ScratchpadL1Mask : randomx::ScratchpadL2Mask); + } + else { + instr.imm32 &= randomx::ScratchpadL3Mask; + } + registerUsage[instr.dst].lastUsed = i; + continue; + } + + if (opcode < randomx::ceil_IMUL_R) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= DST_INT; + instr.opcode |= SRC_INT; + registerUsage[instr.dst].lastUsed = i; + continue; + } + + if (opcode < randomx::ceil_IMUL_M) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= SRC_MEM; + instr.opcode |= DST_INT; + if (instr.src != instr.dst) { + instr.imm32 = (instr.getModMem() ? randomx::ScratchpadL1Mask : randomx::ScratchpadL2Mask); + } + else { + instr.imm32 &= randomx::ScratchpadL3Mask; + } + registerUsage[instr.dst].lastUsed = i; + continue; + } + + if (opcode < randomx::ceil_IMULH_R) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= DST_INT; + instr.opcode |= SRC_INT; + registerUsage[instr.dst].lastUsed = i; + continue; + } + + if (opcode < randomx::ceil_IMULH_M) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= SRC_MEM; + instr.opcode |= DST_INT; + if (instr.src != instr.dst) { + instr.imm32 = (instr.getModMem() ? randomx::ScratchpadL1Mask : randomx::ScratchpadL2Mask); + } + else { + instr.imm32 &= randomx::ScratchpadL3Mask; + } + registerUsage[instr.dst].lastUsed = i; + continue; + } + + if (opcode < randomx::ceil_ISMULH_R) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= DST_INT; + instr.opcode |= SRC_INT; + registerUsage[instr.dst].lastUsed = i; + continue; + } + + if (opcode < randomx::ceil_ISMULH_M) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= SRC_MEM; + instr.opcode |= DST_INT; + if (instr.src != instr.dst) { + instr.imm32 = (instr.getModMem() ? randomx::ScratchpadL1Mask : randomx::ScratchpadL2Mask); + } + else { + instr.imm32 &= randomx::ScratchpadL3Mask; + } + registerUsage[instr.dst].lastUsed = i; + continue; + } + + if (opcode < randomx::ceil_IMUL_RCP) { + uint64_t divisor = instr.getImm32(); + if (!randomx::isZeroOrPowerOf2(divisor)) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.opcode |= DST_INT; + registerUsage[instr.dst].lastUsed = i; + } + continue; + } + + if (opcode < randomx::ceil_INEG_R) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.opcode |= DST_INT; + registerUsage[instr.dst].lastUsed = i; + continue; + } + + if (opcode < randomx::ceil_IXOR_R) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= DST_INT; + instr.opcode |= SRC_INT; + registerUsage[instr.dst].lastUsed = i; + continue; + } + + if (opcode < randomx::ceil_IXOR_M) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= SRC_MEM; + instr.opcode |= DST_INT; + if (instr.src != instr.dst) { + instr.imm32 = (instr.getModMem() ? randomx::ScratchpadL1Mask : randomx::ScratchpadL2Mask); + } + else { + instr.imm32 &= randomx::ScratchpadL3Mask; + } + registerUsage[instr.dst].lastUsed = i; + continue; + } + + if (opcode < randomx::ceil_IROR_R) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= DST_INT; + instr.opcode |= SRC_INT; + registerUsage[instr.dst].lastUsed = i; + continue; + } + + if (opcode < randomx::ceil_IROL_R) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= DST_INT; + instr.opcode |= SRC_INT; + registerUsage[instr.dst].lastUsed = i; + continue; + } + + if (opcode < randomx::ceil_ISWAP_R) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.src = instr.src % randomx::RegistersCount; + if (instr.src != instr.dst) { + instr.opcode |= DST_INT; + instr.opcode |= SRC_INT; + instr.opcode |= OP_SWAP; + registerUsage[instr.dst].lastUsed = i; + registerUsage[instr.src].lastUsed = i; + } + continue; + } + + if (opcode < randomx::ceil_FSWAP_R) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.opcode |= DST_FLT; + continue; + } + + if (opcode < randomx::ceil_FADD_R) { + instr.dst = instr.dst % randomx::RegisterCountFlt; + instr.opcode |= DST_FLT; + instr.opcode |= OP_FLOAT; + continue; + } + + if (opcode < randomx::ceil_FADD_M) { + instr.dst = instr.dst % randomx::RegisterCountFlt; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= DST_FLT; + instr.opcode |= SRC_MEM; + instr.opcode |= OP_FLOAT; + instr.imm32 = (instr.getModMem() ? randomx::ScratchpadL1Mask : randomx::ScratchpadL2Mask); + continue; + } + + if (opcode < randomx::ceil_FSUB_R) { + instr.dst = instr.dst % randomx::RegisterCountFlt; + instr.opcode |= DST_FLT; + instr.opcode |= OP_FLOAT; + continue; + } + + if (opcode < randomx::ceil_FSUB_M) { + instr.dst = instr.dst % randomx::RegisterCountFlt; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= DST_FLT; + instr.opcode |= SRC_MEM; + instr.opcode |= OP_FLOAT; + instr.imm32 = (instr.getModMem() ? randomx::ScratchpadL1Mask : randomx::ScratchpadL2Mask); + continue; + } + + if (opcode < randomx::ceil_FSCAL_R) { + instr.dst = instr.dst % randomx::RegisterCountFlt; + instr.opcode |= DST_FLT; + continue; + } + + if (opcode < randomx::ceil_FMUL_R) { + instr.dst = 4 + instr.dst % randomx::RegisterCountFlt; + instr.opcode |= DST_FLT; + instr.opcode |= OP_FLOAT; + continue; + } + + if (opcode < randomx::ceil_FDIV_M) { + instr.dst = 4 + instr.dst % randomx::RegisterCountFlt; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= DST_FLT; + instr.opcode |= SRC_MEM; + instr.opcode |= OP_FLOAT; + instr.imm32 = (instr.getModMem() ? randomx::ScratchpadL1Mask : randomx::ScratchpadL2Mask); + continue; + } + + if (opcode < randomx::ceil_FSQRT_R) { + instr.dst = 4 + instr.dst % randomx::RegisterCountFlt; + instr.opcode |= DST_FLT; + instr.opcode |= OP_FLOAT; + continue; + } + + if (opcode < randomx::ceil_CBRANCH) { + instr.opcode |= OP_BRANCH; + instr.opcode |= DST_INT; + int reg = instr.dst % randomx::RegistersCount; + int target = registerUsage[reg].lastUsed; + int offset = (i - target); + instr.mod = offset; + jumpCount += offset; + p(target + 1).opcode |= BRANCH_TARGET; + registerUsage[reg].count++; + instr.dst = reg; + //mark all registers as used + for (unsigned j = 0; j < randomx::RegistersCount; ++j) { + registerUsage[j].lastUsed = i; + } + continue; + } + + if (opcode < randomx::ceil_CFROUND) { + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= SRC_INT; + instr.opcode |= OP_CFROUND; + continue; + } + + if (opcode < randomx::ceil_ISTORE) { + instr.dst = instr.dst % randomx::RegistersCount; + instr.src = instr.src % randomx::RegistersCount; + instr.opcode |= DST_MEM; + if (instr.getModCond() < randomx::StoreL3Condition) + instr.imm32 = (instr.getModMem() ? randomx::ScratchpadL1Mask : randomx::ScratchpadL2Mask); + else + instr.imm32 &= randomx::ScratchpadL3Mask; + continue; + } + + if (opcode < randomx::ceil_NOP) { + + } + } + return jumpCount; +} diff --git a/miner/src/cpp/tests/runtime-distr.cpp b/miner/src/cpp/tests/runtime-distr.cpp new file mode 100644 index 0000000..d8a3d05 --- /dev/null +++ b/miner/src/cpp/tests/runtime-distr.cpp @@ -0,0 +1,154 @@ + +#include +#include "utility.hpp" +#include "stopwatch.hpp" +#include "../dataset.hpp" +#include "../vm_compiled.hpp" +#include "../blake2.h" + +struct Outlier { + Outlier(int idx, double rtime) : index(idx), runtime(rtime) {} + int index; + double runtime; +}; + +int main(int argc, char** argv) { + constexpr int distributionSize = 100; + int distribution[distributionSize + 1] = { 0 }; + Stopwatch sw; + alignas(16) uint64_t hash[8]; + + uint64_t checksum = 0; + double totalRuntime = 0; + double maxRuntime = 0; + std::vector outliers; + outliers.reserve(25); + randomx_flags flags = RANDOMX_FLAG_DEFAULT; + + bool largePages, verify; + int totalCount, initThreadCount; + double binSize, offset; + int32_t seed; + + readOption("--verify", argc, argv, verify); + readIntOption("--nonces", argc, argv, totalCount, 10000); + readIntOption("--init", argc, argv, initThreadCount, 1); + readFloatOption("--binSize", argc, argv, binSize, 1e-3); + readFloatOption("--offset", argc, argv, offset, 0); + readIntOption("--seed", argc, argv, seed, 0); + readOption("--largePages", argc, argv, largePages); + + if (!verify) { + flags = (randomx_flags)(flags | RANDOMX_FLAG_FULL_MEM); + std::cout << "Measure program runtime" << std::endl; + } + else { + std::cout << "Measure verification time" << std::endl; + } + + std::cout << " - histogram offset: " << offset << std::endl; + std::cout << " - histogram bin size: " << binSize << std::endl; + + if (largePages) { + flags = (randomx_flags)(flags | RANDOMX_FLAG_LARGE_PAGES); + std::cout << " - large pages mode" << std::endl; + } + else { + std::cout << " - small pages mode" << std::endl; + } + + std::cout << "Initializing..." << std::endl; + + randomx_cache *cache = randomx_alloc_cache(flags); + randomx_dataset *dataset = nullptr; + if (cache == nullptr) { + std::cout << "Cache allocation failed" << std::endl; + return 1; + } + randomx_init_cache(cache, &seed, sizeof seed); + + if (!verify) { + blake2b(&hash, sizeof hash, &seed, sizeof seed, nullptr, 0); + + dataset = randomx_alloc_dataset(flags); + if (dataset == nullptr) { + std::cout << "Dataset allocation failed" << std::endl; + return 1; + } + + std::vector threads; + uint32_t datasetItemCount = randomx_dataset_item_count(); + if (initThreadCount > 1) { + auto perThread = datasetItemCount / initThreadCount; + auto remainder = datasetItemCount % initThreadCount; + uint32_t startItem = 0; + for (int i = 0; i < initThreadCount; ++i) { + auto count = perThread + (i == initThreadCount - 1 ? remainder : 0); + threads.push_back(std::thread(&randomx_init_dataset, dataset, cache, startItem, count)); + startItem += count; + } + for (unsigned i = 0; i < threads.size(); ++i) { + threads[i].join(); + } + } + else { + randomx_init_dataset(dataset, cache, 0, datasetItemCount); + } + randomx_release_cache(cache); + cache = nullptr; + } + + std::cout << "Running " << totalCount << " programs..." << std::endl; + + randomx_vm* vm = randomx_create_vm(flags, cache, dataset); + + if (!verify) { + vm->initScratchpad(&hash); + vm->resetRoundingMode(); + } + + for (int i = 0; i < totalCount; ++i) { + sw.restart(); + if (verify) + randomx_calculate_hash(vm, &i, sizeof i, &hash); + else + vm->run(&hash); + double elapsed = sw.getElapsed(); + //std::cout << "Elapsed: " << elapsed << std::endl; + totalRuntime += elapsed; + if (elapsed > maxRuntime) + maxRuntime = elapsed; + int bin = (elapsed - offset) / binSize; + bool outlier = false; + if (bin < 0) { + bin = 0; + outlier = true; + } + if (bin > distributionSize) { + bin = distributionSize; + outlier = true; + } + if (outlier && outliers.size() < outliers.capacity()) + outliers.push_back(Outlier(i, elapsed)); + distribution[bin]++; + if(!verify) + blake2b(hash, sizeof(hash), vm->getRegisterFile(), sizeof(randomx::RegisterFile), nullptr, 0); + checksum ^= hash[0]; + } + + for (int i = 0; i < distributionSize + 1; ++i) { + std::cout << i << " " << distribution[i] << std::endl; + } + + std::cout << "Average runtime: " << totalRuntime / totalCount << std::endl; + std::cout << "Maximum runtime: " << maxRuntime << std::endl; + std::cout << "Checksum: " << checksum << std::endl; + + std::cout << "Outliers: " << std::endl; + + for (Outlier& ol : outliers) { + std::cout << " " << ol.index << ": " << ol.runtime << std::endl; + } + + return 0; +} \ No newline at end of file diff --git a/miner/src/cpp/tests/stopwatch.hpp b/miner/src/cpp/tests/stopwatch.hpp new file mode 100644 index 0000000..4fc1cca --- /dev/null +++ b/miner/src/cpp/tests/stopwatch.hpp @@ -0,0 +1,84 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include +#include + +class Stopwatch { +public: + Stopwatch(bool startNow = false) { + reset(); + if (startNow) { + start(); + } + } + void reset() { + isRunning = false; + elapsed = 0; + } + void start() { + if (!isRunning) { + startMark = std::chrono::high_resolution_clock::now(); + isRunning = true; + } + } + void restart() { + startMark = std::chrono::high_resolution_clock::now(); + isRunning = true; + elapsed = 0; + } + void stop() { + if (isRunning) { + chrono_t endMark = std::chrono::high_resolution_clock::now(); + uint64_t ns = std::chrono::duration_cast(endMark - startMark).count(); + elapsed += ns; + isRunning = false; + } + } + double getElapsed() const { + return getElapsedNanosec() / 1e+9; + } +private: + using chrono_t = std::chrono::high_resolution_clock::time_point; + using sw_unit = std::chrono::nanoseconds; + chrono_t startMark; + uint64_t elapsed; + bool isRunning; + + uint64_t getElapsedNanosec() const { + uint64_t elns = elapsed; + if (isRunning) { + chrono_t endMark = std::chrono::high_resolution_clock::now(); + uint64_t ns = std::chrono::duration_cast(endMark - startMark).count(); + elns += ns; + } + return elns; + } +}; \ No newline at end of file diff --git a/miner/src/cpp/tests/superscalar-avalanche.cpp b/miner/src/cpp/tests/superscalar-avalanche.cpp new file mode 100644 index 0000000..5dd1e5f --- /dev/null +++ b/miner/src/cpp/tests/superscalar-avalanche.cpp @@ -0,0 +1,48 @@ +#include +#include +#include +#include "../superscalar.hpp" +#include "../intrin_wasm.h" + +const uint8_t seed[32] = { 191, 182, 222, 175, 249, 89, 134, 104, 241, 68, 191, 62, 162, 166, 61, 64, 123, 191, 227, 193, 118, 60, 188, 53, 223, 133, 175, 24, 123, 230, 55, 74 }; + +int main() { + + int insensitiveProgCount[64] = { 0 }; + std::vector dummy; + for (int bit = 0; bit < 64; ++bit) { + for (int i = 0; i < 10000; ++i) { + uint64_t ra[8] = { + 6364136223846793005ULL, + 9298410992540426748ULL, + 12065312585734608966ULL, + 9306329213124610396ULL, + 5281919268842080866ULL, + 10536153434571861004ULL, + 3398623926847679864ULL, + 9549104520008361294ULL, + }; + uint64_t rb[8]; + memcpy(rb, ra, sizeof rb); + rb[0] ^= (1ULL << bit); + randomx::SuperscalarProgram p; + randomx::Blake2Generator gen(seed, sizeof seed, i); + randomx::generateSuperscalar(p, gen); + randomx::executeSuperscalar(ra, p, nullptr); + randomx::executeSuperscalar(rb, p, nullptr); + uint64_t diff = 0; + for (int j = 0; j < 8; ++j) { + diff += __popcnt64(ra[j] ^ rb[j]); + } + if (diff < 192 || diff > 320) { + std::cout << "Seed: " << i << " diff = " << diff << std::endl; + insensitiveProgCount[bit]++; + } + } + } + for (int bit = 0; bit < 64; ++bit) { + std::cout << bit << " " << insensitiveProgCount[bit] << std::endl; + } + + return 0; +} \ No newline at end of file diff --git a/miner/src/cpp/tests/superscalar-init.cpp b/miner/src/cpp/tests/superscalar-init.cpp new file mode 100644 index 0000000..bab042d --- /dev/null +++ b/miner/src/cpp/tests/superscalar-init.cpp @@ -0,0 +1,55 @@ +#include +#include +#include +#include +#include "../superscalar.hpp" +#include "../common.hpp" + +int main() { + std::cout << "THIS PROGRAM REQUIRES MORE THAN 16 GB OF RAM TO COMPLETE" << std::endl; + std::vector dummy; + constexpr uint64_t superscalarMul0 = 6364136223846793005ULL; + constexpr uint64_t superscalarAdd1 = 0x810A978A59F5A1FC; //9298410992540426748ULL; //9298410992540426048ULL + constexpr uint64_t superscalarAdd2 = 12065312585734608966ULL; + constexpr uint64_t superscalarAdd3 = 0x8126B91CBF22495C; //9306329213124610396ULL; + constexpr uint64_t superscalarAdd4 = 5281919268842080866ULL; + constexpr uint64_t superscalarAdd5 = 10536153434571861004ULL; + constexpr uint64_t superscalarAdd6 = 3398623926847679864ULL; + constexpr uint64_t superscalarAdd7 = 9549104520008361294ULL; + constexpr uint32_t totalItems = randomx::DatasetSize / randomx::CacheLineSize; + std::unordered_set registerValues; + registerValues.reserve(totalItems); + registerValues.rehash(totalItems); + int collisionCount[9] = { 0 }; + for (uint32_t itemNumber = 0; itemNumber < totalItems; ++itemNumber) { + uint64_t rl[8]; + rl[0] = (itemNumber + 1) * superscalarMul0; + rl[1] = rl[0] ^ superscalarAdd1; + rl[2] = rl[0] ^ superscalarAdd2; + rl[3] = rl[0] ^ superscalarAdd3; + rl[4] = rl[0] ^ superscalarAdd4; + rl[5] = rl[0] ^ superscalarAdd5; + rl[6] = rl[0] ^ superscalarAdd6; + rl[7] = rl[0] ^ superscalarAdd7; + int blockCollisions = 0; + for (int i = 0; i < 8; ++i) { + uint64_t reducedValue = rl[i] & 0x3FFFFFFFFFFFF8; //bits 3-53 only + if (registerValues.find(reducedValue) != registerValues.end()) { + blockCollisions++; + std::cout << "Item " << itemNumber << ": collision of register r" << i << std::endl; + } + else { + registerValues.insert(reducedValue); + } + } + collisionCount[blockCollisions]++; + if ((itemNumber % (320 * 1024)) == 0) + std::cout << "Item " << itemNumber << " processed" << std::endl; + } + + for (int i = 0; i < 9; ++i) { + std::cout << i << " register(s) collide in " << collisionCount[i] << " items" << std::endl; + } + + return 0; +} \ No newline at end of file diff --git a/miner/src/cpp/tests/superscalar-stats.cpp b/miner/src/cpp/tests/superscalar-stats.cpp new file mode 100644 index 0000000..5cacf65 --- /dev/null +++ b/miner/src/cpp/tests/superscalar-stats.cpp @@ -0,0 +1,52 @@ +#include +#include +#include "../superscalar.hpp" +#include "../blake2_generator.hpp" + +const uint8_t seed[32] = { 191, 182, 222, 175, 249, 89, 134, 104, 241, 68, 191, 62, 162, 166, 61, 64, 123, 191, 227, 193, 118, 60, 188, 53, 223, 133, 175, 24, 123, 230, 55, 74 }; + +int main() { + + constexpr int count = 1000000; + int isnCounts[(int)randomx::SuperscalarInstructionType::COUNT] = { 0 }; + int64_t asicLatency = 0; + int64_t codesize = 0; + int64_t cpuLatency = 0; + int64_t macroOps = 0; + int64_t mulCount = 0; + int64_t size = 0; + for (int i = 0; i < count; ++i) { + randomx::SuperscalarProgram prog; + randomx::Blake2Generator gen(seed, sizeof(seed), i); + randomx::generateSuperscalar(prog, gen); + asicLatency += prog.asicLatency; + codesize += prog.codeSize; + cpuLatency += prog.cpuLatency; + macroOps += prog.macroOps; + mulCount += prog.mulCount; + size += prog.getSize(); + + for (unsigned j = 0; j < prog.getSize(); ++j) { + isnCounts[prog(j).opcode]++; + } + + if ((i + 1) % (count / 100) == 0) { + std::cout << "Completed " << ((i + 1) / (count / 100)) << "% ..." << std::endl; + } + } + + std::cout << "Avg. IPC: " << (macroOps / (double)cpuLatency) << std::endl; + std::cout << "Avg. ASIC latency: " << (asicLatency / (double)count) << std::endl; + std::cout << "Avg. CPU latency: " << (cpuLatency / (double)count) << std::endl; + std::cout << "Avg. code size: " << (codesize / (double)count) << std::endl; + std::cout << "Avg. x86 ops: " << (macroOps / (double)count) << std::endl; + std::cout << "Avg. mul. count: " << (mulCount / (double)count) << std::endl; + std::cout << "Avg. RandomX ops: " << (size / (double)count) << std::endl; + + std::cout << "Frequencies: " << std::endl; + for (unsigned j = 0; j < (int)randomx::SuperscalarInstructionType::COUNT; ++j) { + std::cout << j << " " << isnCounts[j] << " " << isnCounts[j] / (double)size << std::endl; + } + + return 0; +} \ No newline at end of file diff --git a/miner/src/cpp/tests/tests.cpp b/miner/src/cpp/tests/tests.cpp new file mode 100644 index 0000000..1fe67de --- /dev/null +++ b/miner/src/cpp/tests/tests.cpp @@ -0,0 +1,991 @@ +#ifdef NDEBUG +#undef NDEBUG +#endif + +#include +#include +#include "utility.hpp" +#include "../bytecode_machine.hpp" +#include "../dataset.hpp" +#include "../endian.h" +#include "../blake2.h" +#include "../blake2_generator.hpp" +#include "../superscalar.hpp" +#include "../reciprocal.h" +#include "../intrin_wasm.h" +#include "../aes_hash.hpp" + +randomx_cache* cache; +randomx_vm* vm = nullptr; + +template +void initCache(const char (&key)[N]) { + assert(cache != nullptr); + randomx_init_cache(cache, key, N - 1); + if (vm != nullptr) + randomx_vm_set_cache(vm, cache); +} + +template +void calcStringHash(const char(&key)[K], const char(&input)[H], void* output) { + initCache(key); + assert(vm != nullptr); + randomx_calculate_hash(vm, input, H - 1, output); +} + +template +void calcHexHash(const char(&key)[K], const char(&hex)[H], void* output) { + initCache(key); + assert(vm != nullptr); + char input[H / 2]; + hex2bin((char*)hex, H - 1, input); + randomx_calculate_hash(vm, input, sizeof(input), output); +} + +int testNo = 0; +int skipped = 0; + +template +void runTest(const char* name, bool condition, FUNC f) { + std::cout << "["; + std::cout.width(2); + std::cout << std::right << ++testNo << "] "; + std::cout.width(40); + std::cout << std::left << name << " ... "; + std::cout.flush(); + if (condition) { + f(); + std::cout << "PASSED" << std::endl; + } + else { + std::cout << "SKIPPED" << std::endl; + skipped++; + } +} + +int main() { + char testHash[32]; + + //std::cout << "Allocating randomx_cache..." << std::endl; + cache = randomx_alloc_cache(RANDOMX_FLAG_DEFAULT); + + runTest("Cache initialization", RANDOMX_ARGON_ITERATIONS == 3 && RANDOMX_ARGON_LANES == 1 && RANDOMX_ARGON_MEMORY == 262144 && stringsEqual(RANDOMX_ARGON_SALT, "RandomX\x03"), []() { + initCache("test key 000"); + uint64_t* cacheMemory = (uint64_t*)cache->memory; + assert(cacheMemory[0] == 0x191e0e1d23c02186); + assert(cacheMemory[1568413] == 0xf1b62fe6210bf8b1); + assert(cacheMemory[33554431] == 0x1f47f056d05cd99b); + }); + + runTest("SuperscalarHash generator", RANDOMX_SUPERSCALAR_LATENCY == 170, []() { + char sprogHash[32]; + randomx::SuperscalarProgram sprog; + const char key[] = "test key 000"; + constexpr size_t keySize = sizeof(key) - 1; + randomx::Blake2Generator gen(key, keySize); + + const char superscalarReferences[10][65] = { + "d3a4a6623738756f77e6104469102f082eff2a3e60be7ad696285ef7dfc72a61", + "f5e7e0bbc7e93c609003d6359208688070afb4a77165a552ff7be63b38dfbc86", + "85ed8b11734de5b3e9836641413a8f36e99e89694f419c8cd25c3f3f16c40c5a", + "5dd956292cf5d5704ad99e362d70098b2777b2a1730520be52f772ca48cd3bc0", + "6f14018ca7d519e9b48d91af094c0f2d7e12e93af0228782671a8640092af9e5", + "134be097c92e2c45a92f23208cacd89e4ce51f1009a0b900dbe83b38de11d791", + "268f9392c20c6e31371a5131f82bd7713d3910075f2f0468baafaa1abd2f3187", + "c668a05fd909714ed4a91e8d96d67b17e44329e88bc71e0672b529a3fc16be47", + "99739351315840963011e4c5d8e90ad0bfed3facdcb713fe8f7138fbf01c4c94", + "14ab53d61880471f66e80183968d97effd5492b406876060e595fcf9682f9295", + }; + + for (int i = 0; i < 10; ++i) { + randomx::generateSuperscalar(sprog, gen); + blake2b(sprogHash, sizeof(sprogHash), &sprog.programBuffer, sizeof(randomx::Instruction) * sprog.getSize(), nullptr, 0); + assert(equalsHex(sprogHash, superscalarReferences[i])); + } + }); + + runTest("randomx_reciprocal", true, []() { + assert(randomx_reciprocal(3) == 12297829382473034410U); + assert(randomx_reciprocal(13) == 11351842506898185609U); + assert(randomx_reciprocal(33) == 17887751829051686415U); + assert(randomx_reciprocal(65537) == 18446462603027742720U); + assert(randomx_reciprocal(15000001) == 10316166306300415204U); + assert(randomx_reciprocal(3845182035) == 10302264209224146340U); + assert(randomx_reciprocal(0xffffffff) == 9223372039002259456U); + }); + + runTest("randomx_reciprocal_fast", RANDOMX_HAVE_FAST_RECIPROCAL, []() { + assert(randomx_reciprocal_fast(3) == 12297829382473034410U); + assert(randomx_reciprocal_fast(13) == 11351842506898185609U); + assert(randomx_reciprocal_fast(33) == 17887751829051686415U); + assert(randomx_reciprocal_fast(65537) == 18446462603027742720U); + assert(randomx_reciprocal_fast(15000001) == 10316166306300415204U); + assert(randomx_reciprocal_fast(3845182035) == 10302264209224146340U); + assert(randomx_reciprocal_fast(0xffffffff) == 9223372039002259456U); + }); + + runTest("Dataset initialization", stringsEqual(RANDOMX_ARGON_SALT, "RandomX\x03"), []() { + initCache("test key 000"); + uint64_t datasetItem[8]; + randomx::initDatasetItem(cache, (uint8_t*)&datasetItem, 0); + assert(datasetItem[0] == 0x680588a85ae222db); + randomx::initDatasetItem(cache, (uint8_t*)&datasetItem, 10000000); + assert(datasetItem[0] == 0x7943a1f6186ffb72); + randomx::initDatasetItem(cache, (uint8_t*)&datasetItem, 20000000); + assert(datasetItem[0] == 0x9035244d718095e1); + randomx::initDatasetItem(cache, (uint8_t*)&datasetItem, 30000000); + assert(datasetItem[0] == 0x145a5091f7853099); + }); + + runTest("AesGenerator1R", true, []() { + char state[64] = { 0 }; + hex2bin("6c19536eb2de31b6c0065f7f116e86f960d8af0c57210a6584c3237b9d064dc7", 64, state); + fillAes1Rx4(state, sizeof(state), state); + assert(equalsHex(state, "fa89397dd6ca422513aeadba3f124b5540324c4ad4b6db434394307a17c833ab")); + }); + + randomx::NativeRegisterFile reg; + randomx::BytecodeMachine decoder; + randomx::InstructionByteCode ibc; + alignas(16) randomx::ProgramConfiguration config; + constexpr int registerHigh = 192; + constexpr int registerDst = 0; + constexpr int registerSrc = 1; + int pc = 0; + constexpr uint32_t imm32 = 3234567890; + constexpr uint64_t imm64 = signExtend2sCompl(imm32); + + decoder.beginCompilation(reg); + + runTest("IADD_RS (decode)", RANDOMX_FREQ_IADD_RS > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_IADD_RS - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.mod = UINT8_MAX; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::IADD_RS); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + assert(ibc.shift == 3); + assert(ibc.imm == 0); + }); + + runTest("IADD_RS (execute)", RANDOMX_FREQ_IADD_RS > 0, [&] { + reg.r[registerDst] = 0x8000000000000000; + reg.r[registerSrc] = 0x1000000000000000; + decoder.executeInstruction(ibc, pc, nullptr, config); + assert(reg.r[registerDst] == 0); + }); + + runTest("IADD_RS with immediate (decode)", RANDOMX_FREQ_IADD_RS > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_IADD_RS - 1; + instr.mod = 8; + instr.dst = registerHigh | randomx::RegisterNeedsDisplacement; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::IADD_RS); + assert(ibc.idst == ®.r[randomx::RegisterNeedsDisplacement]); + assert(ibc.isrc == ®.r[registerSrc]); + assert(ibc.shift == 2); + assert(ibc.imm == imm64); + }); + + runTest("IADD_RS with immediate (decode)", RANDOMX_FREQ_IADD_RS > 0, [&] { + reg.r[randomx::RegisterNeedsDisplacement] = 0x8000000000000000; + reg.r[registerSrc] = 0x2000000000000000; + decoder.executeInstruction(ibc, pc, nullptr, config); + assert(reg.r[randomx::RegisterNeedsDisplacement] == imm64); + }); + + runTest("IADD_M (decode)", RANDOMX_FREQ_IADD_M > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_IADD_M - 1; + instr.mod = 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::IADD_M); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + assert(ibc.imm == imm64); + assert(ibc.memMask == randomx::ScratchpadL1Mask); + }); + + runTest("ISUB_R (decode)", RANDOMX_FREQ_ISUB_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_ISUB_R - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::ISUB_R); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + }); + + runTest("ISUB_R (execute)", RANDOMX_FREQ_ISUB_R > 0, [&] { + reg.r[registerDst] = 1; + reg.r[registerSrc] = 0xFFFFFFFF; + decoder.executeInstruction(ibc, pc, nullptr, config); + assert(reg.r[registerDst] == 0xFFFFFFFF00000002); + }); + + runTest("ISUB_R with immediate (decode)", RANDOMX_FREQ_ISUB_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_ISUB_R - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerDst; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::ISUB_R); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == &ibc.imm); + }); + + runTest("ISUB_R with immediate (decode)", RANDOMX_FREQ_ISUB_R > 0, [&] { + reg.r[registerDst] = 0; + decoder.executeInstruction(ibc, pc, nullptr, config); + assert(reg.r[registerDst] == (~imm64 + 1)); + }); + + runTest("ISUB_M (decode)", RANDOMX_FREQ_ISUB_M > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_ISUB_M - 1; + instr.mod = 0; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::ISUB_M); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + assert(ibc.imm == imm64); + assert(ibc.memMask == randomx::ScratchpadL2Mask); + }); + + runTest("IMUL_R (decode)", RANDOMX_FREQ_IMUL_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_IMUL_R - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::IMUL_R); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + }); + + runTest("IMUL_R (execute)", RANDOMX_FREQ_IMUL_R > 0, [&] { + reg.r[registerDst] = 0xBC550E96BA88A72B; + reg.r[registerSrc] = 0xF5391FA9F18D6273; + decoder.executeInstruction(ibc, pc, nullptr, config); + assert(reg.r[registerDst] == 0x28723424A9108E51); + }); + + runTest("IMUL_R with immediate (decode)", RANDOMX_FREQ_IMUL_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_IMUL_R - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerDst; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::IMUL_R); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == &ibc.imm); + }); + + runTest("IMUL_R with immediate (execute)", RANDOMX_FREQ_IMUL_R > 0, [&] { + reg.r[registerDst] = 1; + decoder.executeInstruction(ibc, pc, nullptr, config); + assert(reg.r[registerDst] == imm64); + }); + + runTest("IMUL_M (decode)", RANDOMX_FREQ_IMUL_M > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_IMUL_M - 1; + instr.mod = 0; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerDst; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::IMUL_M); + assert(ibc.idst == ®.r[registerDst]); + assert(*ibc.isrc == 0); + assert(ibc.imm == imm64); + assert(ibc.memMask == randomx::ScratchpadL3Mask); + }); + + runTest("IMULH_R (decode)", RANDOMX_FREQ_IMULH_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_IMULH_R - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::IMULH_R); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + }); + + runTest("IMULH_R (execute)", RANDOMX_FREQ_IMULH_R > 0, [&] { + reg.r[registerDst] = 0xBC550E96BA88A72B; + reg.r[registerSrc] = 0xF5391FA9F18D6273; + decoder.executeInstruction(ibc, pc, nullptr, config); + assert(reg.r[registerDst] == 0xB4676D31D2B34883); + }); + + runTest("IMULH_R squared (decode)", RANDOMX_FREQ_IMULH_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_IMULH_R - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerDst; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::IMULH_R); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerDst]); + }); + + runTest("IMULH_M (decode)", RANDOMX_FREQ_IMULH_M > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_IMULH_M - 1; + instr.mod = 0; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::IMULH_M); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + assert(ibc.imm == imm64); + assert(ibc.memMask == randomx::ScratchpadL2Mask); + }); + + runTest("ISMULH_R (decode)", RANDOMX_FREQ_ISMULH_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_ISMULH_R - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::ISMULH_R); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + }); + + runTest("ISMULH_R (execute)", RANDOMX_FREQ_ISMULH_R > 0, [&] { + reg.r[registerDst] = 0xBC550E96BA88A72B; + reg.r[registerSrc] = 0xF5391FA9F18D6273; + decoder.executeInstruction(ibc, pc, nullptr, config); + assert(reg.r[registerDst] == 0x02D93EF1269D3EE5); + }); + + runTest("ISMULH_R squared (decode)", RANDOMX_FREQ_ISMULH_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_ISMULH_R - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerDst; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::ISMULH_R); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerDst]); + }); + + runTest("ISMULH_M (decode)", RANDOMX_FREQ_ISMULH_M > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_ISMULH_M - 1; + instr.mod = 3; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::ISMULH_M); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + assert(ibc.imm == imm64); + assert(ibc.memMask == randomx::ScratchpadL1Mask); + }); + + runTest("IMUL_RCP (decode)", RANDOMX_FREQ_IMUL_RCP > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_IMUL_RCP - 1; + instr.dst = registerHigh | registerDst; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::IMUL_R); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == &ibc.imm); + assert(ibc.imm == randomx_reciprocal(imm32)); + }); + + runTest("IMUL_RCP zero imm32 (decode)", RANDOMX_FREQ_IMUL_RCP > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_IMUL_RCP - 1; + instr.setImm32(0); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::NOP); + }); + + runTest("INEG_R (decode)", RANDOMX_FREQ_INEG_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_INEG_R - 1; + instr.dst = registerHigh | registerDst; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::INEG_R); + assert(ibc.idst == ®.r[registerDst]); + }); + + runTest("INEG_R (execute)", RANDOMX_FREQ_INEG_R > 0, [&] { + reg.r[registerDst] = 0xFFFFFFFFFFFFFFFF; + decoder.executeInstruction(ibc, pc, nullptr, config); + assert(reg.r[registerDst] == 1); + }); + + runTest("IXOR_R (decode)", RANDOMX_FREQ_IXOR_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_IXOR_R - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::IXOR_R); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + }); + + runTest("IXOR_R (execute)", RANDOMX_FREQ_IMUL_R > 0, [&] { + reg.r[registerDst] = 0x8888888888888888; + reg.r[registerSrc] = 0xAAAAAAAAAAAAAAAA; + decoder.executeInstruction(ibc, pc, nullptr, config); + assert(reg.r[registerDst] == 0x2222222222222222); + }); + + runTest("IXOR_R with immediate (decode)", RANDOMX_FREQ_IXOR_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_IXOR_R - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerDst; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::IXOR_R); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == &ibc.imm); + }); + + runTest("IXOR_R with immediate (execute)", RANDOMX_FREQ_IXOR_R > 0, [&] { + reg.r[registerDst] = 0xFFFFFFFFFFFFFFFF; + decoder.executeInstruction(ibc, pc, nullptr, config); + assert(reg.r[registerDst] == ~imm64); + }); + + runTest("IXOR_M (decode)", RANDOMX_FREQ_IXOR_M > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_IXOR_M - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerDst; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::IXOR_M); + assert(ibc.idst == ®.r[registerDst]); + assert(*ibc.isrc == 0); + assert(ibc.imm == imm64); + assert(ibc.memMask == randomx::ScratchpadL3Mask); + }); + + runTest("IROR_R (decode)", RANDOMX_FREQ_IROR_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_IROR_R - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::IROR_R); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + }); + + runTest("IROR_R (execute)", RANDOMX_FREQ_IROR_R > 0, [&] { + reg.r[registerDst] = 953360005391419562; + reg.r[registerSrc] = 4569451684712230561; + decoder.executeInstruction(ibc, pc, nullptr, config); + assert(reg.r[registerDst] == 0xD835C455069D81EF); + }); + + runTest("IROL_R (decode)", RANDOMX_FREQ_IROL_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_IROL_R - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::IROL_R); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + }); + + runTest("IROL_R (execute)", RANDOMX_FREQ_IROL_R > 0, [&] { + reg.r[registerDst] = 953360005391419562; + reg.r[registerSrc] = 4569451684712230561; + decoder.executeInstruction(ibc, pc, nullptr, config); + assert(reg.r[registerDst] == 6978065200552740799); + }); + + runTest("ISWAP_R (decode)", RANDOMX_FREQ_ISWAP_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_ISWAP_R - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::ISWAP_R); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + }); + + runTest("ISWAP_R (execute)", RANDOMX_FREQ_ISWAP_R > 0, [&] { + reg.r[registerDst] = 953360005391419562; + reg.r[registerSrc] = 4569451684712230561; + decoder.executeInstruction(ibc, pc, nullptr, config); + assert(reg.r[registerDst] == 4569451684712230561); + assert(reg.r[registerSrc] == 953360005391419562); + }); + + runTest("FSWAP_R (decode)", RANDOMX_FREQ_FSWAP_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_FSWAP_R - 1; + instr.dst = registerHigh | registerDst; + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::FSWAP_R); + assert(ibc.fdst == ®.f[registerDst]); + }); + + runTest("FSWAP_R (execute)", RANDOMX_FREQ_FSWAP_R > 0, [&] { + alignas(16) uint64_t vec[2]; + reg.f[registerDst] = rx_set_vec_f128(953360005391419562, 4569451684712230561); + decoder.executeInstruction(ibc, pc, nullptr, config); + rx_store_vec_f128((double*)&vec, reg.f[registerDst]); + assert(equalsHex((const char*)&vec, "aa886bb0df033b0da12e95e518f4693f")); + }); + + runTest("FADD_R (decode)", RANDOMX_FREQ_FADD_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_FADD_R - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::FADD_R); + assert(ibc.fdst == ®.f[registerDst]); + assert(ibc.fsrc == ®.a[registerSrc]); + }); + + runTest("FADD_R RoundToNearest (execute)", RANDOMX_FREQ_FADD_R > 0, [&] { + alignas(16) uint64_t vec[2]; + reg.f[registerDst] = rx_set_vec_f128(0x3ffd2c97cc4ef015, 0xc1ce30b3c4223576); + reg.a[registerSrc] = rx_set_vec_f128(0x402a26a86a60c8fb, 0x40b8f684057a59e1); + rx_set_rounding_mode(RoundToNearest); + decoder.executeInstruction(ibc, pc, nullptr, config); + rx_store_vec_f128((double*)&vec, reg.f[registerDst]); + assert(equalsHex(&vec, "b932e048a730cec1fea6ea633bcc2d40")); + }); + + runTest("FADD_R RoundDown (execute)", RANDOMX_FREQ_FADD_R > 0, [&] { + alignas(16) uint64_t vec[2]; + reg.f[registerDst] = rx_set_vec_f128(0x3ffd2c97cc4ef015, 0xc1ce30b3c4223576); + reg.a[registerSrc] = rx_set_vec_f128(0x402a26a86a60c8fb, 0x40b8f684057a59e1); + rx_set_rounding_mode(RoundDown); + decoder.executeInstruction(ibc, pc, nullptr, config); + rx_store_vec_f128((double*)&vec, reg.f[registerDst]); + assert(equalsHex(&vec, "b932e048a730cec1fda6ea633bcc2d40")); + }); + + runTest("FADD_R RoundUp (execute)", RANDOMX_FREQ_FADD_R > 0, [&] { + alignas(16) uint64_t vec[2]; + reg.f[registerDst] = rx_set_vec_f128(0x3ffd2c97cc4ef015, 0xc1ce30b3c4223576); + reg.a[registerSrc] = rx_set_vec_f128(0x402a26a86a60c8fb, 0x40b8f684057a59e1); + rx_set_rounding_mode(RoundUp); + decoder.executeInstruction(ibc, pc, nullptr, config); + rx_store_vec_f128((double*)&vec, reg.f[registerDst]); + assert(equalsHex(&vec, "b832e048a730cec1fea6ea633bcc2d40")); + }); + + runTest("FADD_R RoundToZero (execute)", RANDOMX_FREQ_FADD_R > 0, [&] { + alignas(16) uint64_t vec[2]; + reg.f[registerDst] = rx_set_vec_f128(0x3ffd2c97cc4ef015, 0xc1ce30b3c4223576); + reg.a[registerSrc] = rx_set_vec_f128(0x402a26a86a60c8fb, 0x40b8f684057a59e1); + rx_set_rounding_mode(RoundToZero); + decoder.executeInstruction(ibc, pc, nullptr, config); + rx_store_vec_f128((double*)&vec, reg.f[registerDst]); + assert(equalsHex(&vec, "b832e048a730cec1fda6ea633bcc2d40")); + }); + + runTest("FADD_M (decode)", RANDOMX_FREQ_FADD_M > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_FADD_M - 1; + instr.mod = 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::FADD_M); + assert(ibc.fdst == ®.f[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + assert(ibc.imm == imm64); + assert(ibc.memMask == randomx::ScratchpadL1Mask); + }); + + runTest("FADD_M (execute)", RANDOMX_FREQ_FADD_R > 0, [&] { + uint64_t mockScratchpad; + store64(&mockScratchpad, 0x1234567890abcdef); + alignas(16) uint64_t vec[2]; + reg.f[registerDst] = rx_set_vec_f128(0, 0); + reg.r[registerSrc] = 0xFFFFFFFFFFFFE930; + rx_set_rounding_mode(RoundToNearest); + decoder.executeInstruction(ibc, pc, (uint8_t*)&mockScratchpad, config); + rx_store_vec_f128((double*)&vec, reg.f[registerDst]); + assert(equalsHex(&vec, "000040840cd5dbc1000000785634b241")); + }); + + runTest("FSUB_R (decode)", RANDOMX_FREQ_FSUB_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_FSUB_R - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::FSUB_R); + assert(ibc.fdst == ®.f[registerDst]); + assert(ibc.fsrc == ®.a[registerSrc]); + }); + + runTest("FSUB_M (decode)", RANDOMX_FREQ_FSUB_M > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_FSUB_M - 1; + instr.mod = 2; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::FSUB_M); + assert(ibc.fdst == ®.f[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + assert(ibc.imm == imm64); + assert(ibc.memMask == randomx::ScratchpadL1Mask); + }); + + runTest("FSCAL_R (decode)", RANDOMX_FREQ_FSCAL_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_FSCAL_R - 1; + instr.dst = registerHigh | registerDst; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::FSCAL_R); + assert(ibc.fdst == ®.f[registerDst]); + }); + + runTest("FSCAL_R (execute)", RANDOMX_FREQ_FSCAL_R > 0, [&] { + alignas(16) uint64_t vec[2]; + reg.f[registerDst] = rx_set_vec_f128(0x41dbc35cef248783, 0x40fdfdabb6173d07); + decoder.executeInstruction(ibc, pc, nullptr, config); + rx_store_vec_f128((double*)&vec, reg.f[registerDst]); + assert(equalsHex((const char*)&vec, "073d17b6abfd0dc0838724ef5cc32bc1")); + }); + + runTest("FMUL_R (decode)", RANDOMX_FREQ_FMUL_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_FMUL_R - 1; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::FMUL_R); + assert(ibc.fdst == ®.e[registerDst]); + assert(ibc.fsrc == ®.a[registerSrc]); + }); + + runTest("FMUL_R RoundToNearest (execute)", RANDOMX_FREQ_FMUL_R > 0, [&] { + alignas(16) uint64_t vec[2]; + reg.e[registerDst] = rx_set_vec_f128(0x41dbc35cef248783, 0x40fdfdabb6173d07); + reg.a[registerSrc] = rx_set_vec_f128(0x40eba861aa31c7c0, 0x41c4561212ae2d50); + rx_set_rounding_mode(RoundToNearest); + decoder.executeInstruction(ibc, pc, nullptr, config); + rx_store_vec_f128((double*)&vec, reg.e[registerDst]); + assert(equalsHex(&vec, "69697aff350fd3422f1589cdecfed742")); + }); + + runTest("FMUL_R RoundDown/RoundToZero (execute)", RANDOMX_FREQ_FMUL_R > 0, [&] { + alignas(16) uint64_t vec[2]; + reg.e[registerDst] = rx_set_vec_f128(0x41dbc35cef248783, 0x40fdfdabb6173d07); + reg.a[registerSrc] = rx_set_vec_f128(0x40eba861aa31c7c0, 0x41c4561212ae2d50); + rx_set_rounding_mode(RoundDown); + decoder.executeInstruction(ibc, pc, nullptr, config); + rx_store_vec_f128((double*)&vec, reg.e[registerDst]); + assert(equalsHex(&vec, "69697aff350fd3422e1589cdecfed742")); + }); + + runTest("FMUL_R RoundUp (execute)", RANDOMX_FREQ_FMUL_R > 0, [&] { + alignas(16) uint64_t vec[2]; + reg.e[registerDst] = rx_set_vec_f128(0x41dbc35cef248783, 0x40fdfdabb6173d07); + reg.a[registerSrc] = rx_set_vec_f128(0x40eba861aa31c7c0, 0x41c4561212ae2d50); + rx_set_rounding_mode(RoundUp); + decoder.executeInstruction(ibc, pc, nullptr, config); + rx_store_vec_f128((double*)&vec, reg.e[registerDst]); + assert(equalsHex(&vec, "6a697aff350fd3422f1589cdecfed742")); + }); + + runTest("FDIV_M (decode)", RANDOMX_FREQ_FDIV_M > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_FDIV_M - 1; + instr.mod = 3; + instr.dst = registerHigh | registerDst; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::FDIV_M); + assert(ibc.fdst == ®.e[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + assert(ibc.imm == imm64); + assert(ibc.memMask == randomx::ScratchpadL1Mask); + }); + + runTest("FDIV_M RoundToNearest (execute)", RANDOMX_FREQ_FDIV_M > 0, [&] { + alignas(16) uint64_t vec[2]; + alignas(16) uint32_t mockScratchpad[2]; + store32(&mockScratchpad[0], 0xd350a1b6); + store32(&mockScratchpad[1], 0x8b2460d9); + store64(&config.eMask[0], 0x3a0000000005d11a); + store64(&config.eMask[1], 0x39000000001ba31e); + reg.e[registerDst] = rx_set_vec_f128(0x41937f76fede16ee, 0x411b414296ce93b6); + reg.r[registerSrc] = 0xFFFFFFFFFFFFE930; + rx_set_rounding_mode(RoundToNearest); + decoder.executeInstruction(ibc, pc, (uint8_t*)&mockScratchpad, config); + rx_store_vec_f128((double*)&vec, reg.e[registerDst]); + assert(equalsHex(&vec, "e7b269639484434632474a66635ba547")); + }); + + runTest("FDIV_M RoundDown/RoundToZero (execute)", RANDOMX_FREQ_FDIV_M > 0, [&] { + alignas(16) uint64_t vec[2]; + alignas(16) uint32_t mockScratchpad[2]; + store32(&mockScratchpad[0], 0xd350a1b6); + store32(&mockScratchpad[1], 0x8b2460d9); + store64(&config.eMask[0], 0x3a0000000005d11a); + store64(&config.eMask[1], 0x39000000001ba31e); + reg.e[registerDst] = rx_set_vec_f128(0x41937f76fede16ee, 0x411b414296ce93b6); + reg.r[registerSrc] = 0xFFFFFFFFFFFFE930; + rx_set_rounding_mode(RoundDown); + decoder.executeInstruction(ibc, pc, (uint8_t*)&mockScratchpad, config); + rx_store_vec_f128((double*)&vec, reg.e[registerDst]); + assert(equalsHex(&vec, "e6b269639484434632474a66635ba547")); + }); + + runTest("FDIV_M RoundUp (execute)", RANDOMX_FREQ_FDIV_M > 0, [&] { + alignas(16) uint64_t vec[2]; + alignas(16) uint32_t mockScratchpad[2]; + store32(&mockScratchpad[0], 0xd350a1b6); + store32(&mockScratchpad[1], 0x8b2460d9); + store64(&config.eMask[0], 0x3a0000000005d11a); + store64(&config.eMask[1], 0x39000000001ba31e); + reg.e[registerDst] = rx_set_vec_f128(0x41937f76fede16ee, 0x411b414296ce93b6); + reg.r[registerSrc] = 0xFFFFFFFFFFFFE930; + rx_set_rounding_mode(RoundUp); + decoder.executeInstruction(ibc, pc, (uint8_t*)&mockScratchpad, config); + rx_store_vec_f128((double*)&vec, reg.e[registerDst]); + assert(equalsHex(&vec, "e7b269639484434633474a66635ba547")); + }); + + runTest("FSQRT_R (decode)", RANDOMX_FREQ_FSQRT_R > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_FSQRT_R - 1; + instr.dst = registerHigh | registerDst; + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::FSQRT_R); + assert(ibc.fdst == ®.e[registerDst]); + }); + + runTest("FSQRT_R RoundToNearest (execute)", RANDOMX_FREQ_FSQRT_R > 0, [&] { + alignas(16) uint64_t vec[2]; + reg.e[registerDst] = rx_set_vec_f128(0x41b6b21c11affea7, 0x40526a7e778d9824); + rx_set_rounding_mode(RoundToNearest); + decoder.executeInstruction(ibc, pc, nullptr, config); + rx_store_vec_f128((double*)&vec, reg.e[registerDst]); + assert(equalsHex(&vec, "e81f300b612a21408dbaa33f570ed340")); + }); + + runTest("FSQRT_R RoundDown/RoundToZero (execute)", RANDOMX_FREQ_FSQRT_R > 0, [&] { + alignas(16) uint64_t vec[2]; + reg.e[registerDst] = rx_set_vec_f128(0x41b6b21c11affea7, 0x40526a7e778d9824); + rx_set_rounding_mode(RoundDown); + decoder.executeInstruction(ibc, pc, nullptr, config); + rx_store_vec_f128((double*)&vec, reg.e[registerDst]); + assert(equalsHex(&vec, "e81f300b612a21408cbaa33f570ed340")); + }); + + runTest("FSQRT_R RoundUp (execute)", RANDOMX_FREQ_FSQRT_R > 0, [&] { + alignas(16) uint64_t vec[2]; + reg.e[registerDst] = rx_set_vec_f128(0x41b6b21c11affea7, 0x40526a7e778d9824); + rx_set_rounding_mode(RoundUp); + decoder.executeInstruction(ibc, pc, nullptr, config); + rx_store_vec_f128((double*)&vec, reg.e[registerDst]); + assert(equalsHex(&vec, "e91f300b612a21408dbaa33f570ed340")); + }); + + runTest("CBRANCH (decode) 100", RANDOMX_FREQ_CBRANCH > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_CBRANCH - 1; + instr.dst = registerHigh | registerDst; + instr.setImm32(imm32); + instr.mod = 48; + decoder.compileInstruction(instr, 100, ibc); + assert(ibc.type == randomx::InstructionType::CBRANCH); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.imm == 0xFFFFFFFFC0CB9AD2); + assert(ibc.memMask == 0x7F800); + assert(ibc.target == pc); + }); + + runTest("CBRANCH (decode) 200", RANDOMX_FREQ_CBRANCH > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_CBRANCH - 1; + instr.dst = registerHigh | registerDst; + instr.setImm32(imm32); + instr.mod = 48; + decoder.compileInstruction(instr, pc = 200, ibc); + assert(ibc.type == randomx::InstructionType::CBRANCH); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.imm == 0xFFFFFFFFC0CB9AD2); + assert(ibc.memMask == 0x7F800); + assert(ibc.target == 100); + }); + + runTest("CBRANCH not taken (execute)", RANDOMX_FREQ_CBRANCH > 0, [&] { + reg.r[registerDst] = 0; + decoder.executeInstruction(ibc, pc, nullptr, config); + assert(pc == 200); + }); + + runTest("CBRANCH taken (execute)", RANDOMX_FREQ_CBRANCH > 0, [&] { + reg.r[registerDst] = 0xFFFFFFFFFFFC6800; + decoder.executeInstruction(ibc, pc, nullptr, config); + assert(pc == ibc.target); + }); + + runTest("CFROUND (decode)", RANDOMX_FREQ_CFROUND > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_CFROUND - 1; + instr.src = registerHigh | registerSrc; + instr.setImm32(imm32); + decoder.compileInstruction(instr, 100, ibc); + assert(ibc.type == randomx::InstructionType::CFROUND); + assert(ibc.isrc == ®.r[registerSrc]); + assert(ibc.imm == 18); + }); + + runTest("ISTORE L1 (decode)", RANDOMX_FREQ_ISTORE > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_ISTORE - 1; + instr.src = registerHigh | registerSrc; + instr.dst = registerHigh | registerDst; + instr.setImm32(imm32); + instr.mod = 1; + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::ISTORE); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + assert(ibc.imm == imm64); + assert(ibc.memMask == randomx::ScratchpadL1Mask); + }); + + runTest("ISTORE L2 (decode)", RANDOMX_FREQ_ISTORE > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_ISTORE - 1; + instr.src = registerHigh | registerSrc; + instr.dst = registerHigh | registerDst; + instr.setImm32(imm32); + instr.mod = 0; + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::ISTORE); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + assert(ibc.imm == imm64); + assert(ibc.memMask == randomx::ScratchpadL2Mask); + }); + + runTest("ISTORE L3 (decode)", RANDOMX_FREQ_ISTORE > 0, [&] { + randomx::Instruction instr; + instr.opcode = randomx::ceil_ISTORE - 1; + instr.src = registerHigh | registerSrc; + instr.dst = registerHigh | registerDst; + instr.setImm32(imm32); + instr.mod = 224; + decoder.compileInstruction(instr, pc, ibc); + assert(ibc.type == randomx::InstructionType::ISTORE); + assert(ibc.idst == ®.r[registerDst]); + assert(ibc.isrc == ®.r[registerSrc]); + assert(ibc.imm == imm64); + assert(ibc.memMask == randomx::ScratchpadL3Mask); + }); + + vm = randomx_create_vm(RANDOMX_FLAG_DEFAULT, cache, nullptr); + + auto test_a = [&] { + char hash[RANDOMX_HASH_SIZE]; + calcStringHash("test key 000", "This is a test", &hash); + assert(equalsHex(hash, "639183aae1bf4c9a35884cb46b09cad9175f04efd7684e7262a0ac1c2f0b4e3f")); + }; + + auto test_b = [&] { + char hash[RANDOMX_HASH_SIZE]; + calcStringHash("test key 000", "Lorem ipsum dolor sit amet", &hash); + assert(equalsHex(hash, "300a0adb47603dedb42228ccb2b211104f4da45af709cd7547cd049e9489c969")); + }; + + auto test_c = [&] { + char hash[RANDOMX_HASH_SIZE]; + calcStringHash("test key 000", "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua", &hash); + assert(equalsHex(hash, "c36d4ed4191e617309867ed66a443be4075014e2b061bcdaf9ce7b721d2b77a8")); + }; + + auto test_d = [&] { + char hash[RANDOMX_HASH_SIZE]; + calcStringHash("test key 001", "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua", &hash); + assert(equalsHex(hash, "e9ff4503201c0c2cca26d285c93ae883f9b1d30c9eb240b820756f2d5a7905fc")); + }; + + auto test_e = [&] { + char hash[RANDOMX_HASH_SIZE]; + calcHexHash("test key 001", "0b0b98bea7e805e0010a2126d287a2a0cc833d312cb786385a7c2f9de69d25537f584a9bc9977b00000000666fd8753bf61a8631f12984e3fd44f4014eca629276817b56f32e9b68bd82f416", &hash); + //std::cout << std::endl; + //outputHex(std::cout, (const char*)hash, sizeof(hash)); + //std::cout << std::endl; + assert(equalsHex(hash, "c56414121acda1713c2f2a819d8ae38aed7c80c35c2a769298d34f03833cd5f1")); + }; + + runTest("Hash test 1a", stringsEqual(RANDOMX_ARGON_SALT, "RandomX\x03"), test_a); + + runTest("Hash test 1b", stringsEqual(RANDOMX_ARGON_SALT, "RandomX\x03"), test_b); + + runTest("Hash test 1c", stringsEqual(RANDOMX_ARGON_SALT, "RandomX\x03"), test_c); + + runTest("Hash test 1d", stringsEqual(RANDOMX_ARGON_SALT, "RandomX\x03"), test_d); + + runTest("Hash test 1e", stringsEqual(RANDOMX_ARGON_SALT, "RandomX\x03"), test_e); + + randomx_destroy_vm(vm); + vm = nullptr; + + if (cache != nullptr) + randomx_release_cache(cache); + + std::cout << std::endl << "All tests PASSED" << std::endl; + + if (skipped) { + std::cout << skipped << " tests were SKIPPED due to incompatible configuration (see above)" << std::endl; + } +} diff --git a/miner/src/cpp/tests/utility.hpp b/miner/src/cpp/tests/utility.hpp new file mode 100644 index 0000000..0ed57fa --- /dev/null +++ b/miner/src/cpp/tests/utility.hpp @@ -0,0 +1,124 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include +#include +#include +#include + +constexpr char hexmap[] = "0123456789abcdef"; +inline void outputHex(std::ostream& os, const char* data, int length) { + for (int i = 0; i < length; ++i) { + os << hexmap[(data[i] & 0xF0) >> 4]; + os << hexmap[data[i] & 0x0F]; + } +} + +char parseNibble(char hex) { + hex &= ~0x20; + if (hex & 0x40) { + hex -= 'A' - 10; + } + else { + hex &= 0xf; + } + return hex; +} + +void hex2bin(const char *in, int length, char *out) { + for (int i = 0; i < length; i += 2) { + char nibble1 = parseNibble(*in++); + char nibble2 = parseNibble(*in++); + *out++ = nibble1 << 4 | nibble2; + } +} + +constexpr bool stringsEqual(char const * a, char const * b) { + return *a == *b && (*a == '\0' || stringsEqual(a + 1, b + 1)); +} + +template +bool equalsHex(const void* hash, const char (&hex)[N]) { + char reference[N / 2]; + hex2bin(hex, N - 1, reference); + return memcmp(hash, reference, sizeof(reference)) == 0; +} + +inline void dump(const char* buffer, uint64_t count, const char* name) { + std::ofstream fout(name, std::ios::out | std::ios::binary); + fout.write(buffer, count); + fout.close(); +} + +inline void readOption(const char* option, int argc, char** argv, bool& out) { + for (int i = 0; i < argc; ++i) { + if (strcmp(argv[i], option) == 0) { + out = true; + return; + } + } + out = false; +} + +inline void readIntOption(const char* option, int argc, char** argv, int& out, int defaultValue) { + for (int i = 0; i < argc - 1; ++i) { + if (strcmp(argv[i], option) == 0 && (out = atoi(argv[i + 1])) > 0) { + return; + } + } + out = defaultValue; +} + +inline void readUInt64Option(const char* option, int argc, char** argv, uint64_t& out, uint64_t defaultValue) { + for (int i = 0; i < argc - 1; ++i) { + if (strcmp(argv[i], option) == 0 && (out = std::strtoull(argv[i + 1], NULL, 0)) > 0) { + return; + } + } + out = defaultValue; +} + +inline void readFloatOption(const char* option, int argc, char** argv, double& out, double defaultValue) { + for (int i = 0; i < argc - 1; ++i) { + if (strcmp(argv[i], option) == 0 && (out = atof(argv[i + 1])) > 0) { + return; + } + } + out = defaultValue; +} + +inline void readInt(int argc, char** argv, int& out, int defaultValue) { + for (int i = 0; i < argc; ++i) { + if (*argv[i] != '-' && (out = atoi(argv[i])) > 0) { + return; + } + } + out = defaultValue; +} diff --git a/miner/src/cpp/virtual_machine.cpp b/miner/src/cpp/virtual_machine.cpp new file mode 100644 index 0000000..898d2c7 --- /dev/null +++ b/miner/src/cpp/virtual_machine.cpp @@ -0,0 +1,136 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include +#include +#include "virtual_machine.hpp" +#include "common.hpp" +#include "aes_hash.hpp" +#include "blake2.h" +#include "intrin_wasm.h" +#include "allocator.hpp" + +randomx_vm::~randomx_vm() { + +} + +void randomx_vm::resetRoundingMode() { + rx_reset_float_state(); +} + +namespace randomx { + + static inline uint64_t getSmallPositiveFloatBits(uint64_t entropy) { + auto exponent = entropy >> 59; //0..31 + auto mantissa = entropy & mantissaMask; + exponent += exponentBias; + exponent &= exponentMask; + exponent <<= mantissaSize; + return exponent | mantissa; + } + + static inline uint64_t getStaticExponent(uint64_t entropy) { + auto exponent = constExponentBits; + exponent |= (entropy >> (64 - staticExponentBits)) << dynamicExponentBits; + exponent <<= mantissaSize; + return exponent; + } + + static inline uint64_t getFloatMask(uint64_t entropy) { + constexpr uint64_t mask22bit = (1ULL << 22) - 1; + return (entropy & mask22bit) | getStaticExponent(entropy); + } + +} + +void randomx_vm::initialize() { + store64(®.a[0].lo, randomx::getSmallPositiveFloatBits(program.getEntropy(0))); + store64(®.a[0].hi, randomx::getSmallPositiveFloatBits(program.getEntropy(1))); + store64(®.a[1].lo, randomx::getSmallPositiveFloatBits(program.getEntropy(2))); + store64(®.a[1].hi, randomx::getSmallPositiveFloatBits(program.getEntropy(3))); + store64(®.a[2].lo, randomx::getSmallPositiveFloatBits(program.getEntropy(4))); + store64(®.a[2].hi, randomx::getSmallPositiveFloatBits(program.getEntropy(5))); + store64(®.a[3].lo, randomx::getSmallPositiveFloatBits(program.getEntropy(6))); + store64(®.a[3].hi, randomx::getSmallPositiveFloatBits(program.getEntropy(7))); + mem.ma = program.getEntropy(8) & randomx::CacheLineAlignMask; + mem.mx = program.getEntropy(10); + auto addressRegisters = program.getEntropy(12); + config.readReg0 = 0 + (addressRegisters & 1); + addressRegisters >>= 1; + config.readReg1 = 2 + (addressRegisters & 1); + addressRegisters >>= 1; + config.readReg2 = 4 + (addressRegisters & 1); + addressRegisters >>= 1; + config.readReg3 = 6 + (addressRegisters & 1); + datasetOffset = (program.getEntropy(13) % (randomx::DatasetExtraItems + 1)) * randomx::CacheLineSize; + store64(&config.eMask[0], randomx::getFloatMask(program.getEntropy(14))); + store64(&config.eMask[1], randomx::getFloatMask(program.getEntropy(15))); +} + +namespace randomx { + + alignas(16) volatile static rx_vec_i128 aesDummy; + + template + VmBase::~VmBase() { + Allocator::freeMemory(scratchpad, ScratchpadSize); + } + + template + void VmBase::allocate() { + if (datasetPtr == nullptr) + throw std::invalid_argument("Cache/Dataset not set"); + scratchpad = (uint8_t*)Allocator::allocMemory(ScratchpadSize); + } + + template + void VmBase::getFinalResult(void* out, size_t outSize) { + hashAes1Rx4(scratchpad, ScratchpadSize, ®.a); + blake2b(out, outSize, ®, sizeof(RegisterFile), nullptr, 0); + } + + template + void VmBase::hashAndFill(void* out, size_t outSize, uint64_t *fill_state) { + hashAndFillAes1Rx4((void*) getScratchpad(), ScratchpadSize, ®.a, fill_state); + blake2b(out, outSize, ®, sizeof(RegisterFile), nullptr, 0); + } + + template + void VmBase::initScratchpad(void* seed) { + fillAes1Rx4(seed, ScratchpadSize, scratchpad); + } + + template + void VmBase::generateProgram(void* seed) { + fillAes4Rx4(seed, sizeof(program), &program); + } + + template class VmBase>; + template class VmBase; +} \ No newline at end of file diff --git a/miner/src/cpp/virtual_machine.hpp b/miner/src/cpp/virtual_machine.hpp new file mode 100644 index 0000000..8d8be3e --- /dev/null +++ b/miner/src/cpp/virtual_machine.hpp @@ -0,0 +1,88 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include +#include "common.hpp" +#include "program.hpp" + +/* Global namespace for C binding */ +class randomx_vm { +public: + virtual ~randomx_vm() = 0; + virtual void allocate() = 0; + virtual void getFinalResult(void* out, size_t outSize) = 0; + virtual void hashAndFill(void* out, size_t outSize, uint64_t *fill_state) = 0; + virtual void setDataset(randomx_dataset* dataset) { } + virtual void setCache(randomx_cache* cache) { } + virtual void initScratchpad(void* seed) = 0; + virtual void run(void* seed) = 0; + void resetRoundingMode(); + randomx::RegisterFile *getRegisterFile() { + return ® + } + const void* getScratchpad() { + return scratchpad; + } + const randomx::Program& getProgram() + { + return program; + } +protected: + void initialize(); + alignas(64) randomx::Program program; + alignas(64) randomx::RegisterFile reg; + alignas(16) randomx::ProgramConfiguration config; + randomx::MemoryRegisters mem; + uint8_t* scratchpad = nullptr; + union { + randomx_cache* cachePtr = nullptr; + randomx_dataset* datasetPtr; + }; + uint64_t datasetOffset; +public: + std::string cacheKey; + alignas(16) uint64_t tempHash[8]; //8 64-bit values used to store intermediate data +}; + +namespace randomx { + + template + class VmBase : public randomx_vm { + public: + ~VmBase() override; + void allocate() override; + void initScratchpad(void* seed) override; + void getFinalResult(void* out, size_t outSize) override; + void hashAndFill(void* out, size_t outSize, uint64_t *fill_state) override; + protected: + void generateProgram(void* seed); + }; + +} diff --git a/miner/src/cpp/virtual_memory.cpp b/miner/src/cpp/virtual_memory.cpp new file mode 100644 index 0000000..476a6f1 --- /dev/null +++ b/miner/src/cpp/virtual_memory.cpp @@ -0,0 +1,161 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "virtual_memory.hpp" + +#include + +#if defined(_WIN32) || defined(__CYGWIN__) +#include +#else +#ifdef __APPLE__ +#include +#endif +#include +#include +#ifndef MAP_ANONYMOUS +#define MAP_ANONYMOUS MAP_ANON +#endif +#define PAGE_READONLY PROT_READ +#define PAGE_READWRITE (PROT_READ | PROT_WRITE) +#define PAGE_EXECUTE_READ (PROT_READ | PROT_EXEC) +#define PAGE_EXECUTE_READWRITE (PROT_READ | PROT_WRITE | PROT_EXEC) +#endif + +#if defined(_WIN32) || defined(__CYGWIN__) +std::string getErrorMessage(const char* function) { + LPSTR messageBuffer = nullptr; + size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, NULL); + std::string message(messageBuffer, size); + LocalFree(messageBuffer); + return std::string(function) + std::string(": ") + message; +} + +void setPrivilege(const char* pszPrivilege, BOOL bEnable) { + HANDLE hToken; + TOKEN_PRIVILEGES tp; + BOOL status; + DWORD error; + + if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) + throw std::runtime_error(getErrorMessage("OpenProcessToken")); + + if (!LookupPrivilegeValue(NULL, pszPrivilege, &tp.Privileges[0].Luid)) + throw std::runtime_error(getErrorMessage("LookupPrivilegeValue")); + + tp.PrivilegeCount = 1; + + if (bEnable) + tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; + else + tp.Privileges[0].Attributes = 0; + + status = AdjustTokenPrivileges(hToken, FALSE, &tp, 0, (PTOKEN_PRIVILEGES)NULL, 0); + + error = GetLastError(); + if (!status || (error != ERROR_SUCCESS)) + throw std::runtime_error(getErrorMessage("AdjustTokenPrivileges")); + + if (!CloseHandle(hToken)) + throw std::runtime_error(getErrorMessage("CloseHandle")); +} +#endif + +void* allocMemoryPages(std::size_t bytes) { + void* mem; +#if defined(_WIN32) || defined(__CYGWIN__) + mem = VirtualAlloc(nullptr, bytes, MEM_COMMIT, PAGE_READWRITE); + if (mem == nullptr) + throw std::runtime_error(getErrorMessage("allocMemoryPages - VirtualAlloc")); +#else + mem = mmap(nullptr, bytes, PAGE_READWRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); + if (mem == MAP_FAILED) + throw std::runtime_error("allocMemoryPages - mmap failed"); +#endif + return mem; +} + +static inline void pageProtect(void* ptr, std::size_t bytes, int rules) { +#if defined(_WIN32) || defined(__CYGWIN__) + DWORD oldp; + if (!VirtualProtect(ptr, bytes, (DWORD)rules, &oldp)) { + throw std::runtime_error(getErrorMessage("VirtualProtect")); + } +#else + if (-1 == mprotect(ptr, bytes, rules)) + throw std::runtime_error("mprotect failed"); +#endif +} + +void setPagesRW(void* ptr, std::size_t bytes) { + pageProtect(ptr, bytes, PAGE_READWRITE); +} + +void setPagesRX(void* ptr, std::size_t bytes) { + pageProtect(ptr, bytes, PAGE_EXECUTE_READ); +} + +void setPagesRWX(void* ptr, std::size_t bytes) { + pageProtect(ptr, bytes, PAGE_EXECUTE_READWRITE); +} + +void* allocLargePagesMemory(std::size_t bytes) { + void* mem; +#if defined(_WIN32) || defined(__CYGWIN__) + setPrivilege("SeLockMemoryPrivilege", 1); + auto pageMinimum = GetLargePageMinimum(); + if (pageMinimum > 0) + mem = VirtualAlloc(NULL, alignSize(bytes, pageMinimum), MEM_COMMIT | MEM_RESERVE | MEM_LARGE_PAGES, PAGE_READWRITE); + else + throw std::runtime_error("allocLargePagesMemory - Large pages are not supported"); + if (mem == nullptr) + throw std::runtime_error(getErrorMessage("allocLargePagesMemory - VirtualAlloc")); +#else +#ifdef __APPLE__ + mem = mmap(nullptr, bytes, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, VM_FLAGS_SUPERPAGE_SIZE_2MB, 0); +#elif defined(__FreeBSD__) + mem = mmap(nullptr, bytes, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_ALIGNED_SUPER, -1, 0); +#elif defined(__OpenBSD__) + mem = MAP_FAILED; // OpenBSD does not support huge pages +#else + mem = mmap(nullptr, bytes, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | MAP_POPULATE, -1, 0); +#endif + if (mem == MAP_FAILED) + throw std::runtime_error("allocLargePagesMemory - mmap failed"); +#endif + return mem; +} + +void freePagedMemory(void* ptr, std::size_t bytes) { +#if defined(_WIN32) || defined(__CYGWIN__) + VirtualFree(ptr, 0, MEM_RELEASE); +#else + munmap(ptr, bytes); +#endif +} diff --git a/miner/src/cpp/virtual_memory.hpp b/miner/src/cpp/virtual_memory.hpp new file mode 100644 index 0000000..ba0779d --- /dev/null +++ b/miner/src/cpp/virtual_memory.hpp @@ -0,0 +1,42 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include + +constexpr std::size_t alignSize(std::size_t pos, std::size_t align) { + return ((pos - 1) / align + 1) * align; +} + +void* allocMemoryPages(std::size_t); +void setPagesRW(void*, std::size_t); +void setPagesRX(void*, std::size_t); +void setPagesRWX(void*, std::size_t); +void* allocLargePagesMemory(std::size_t); +void freePagedMemory(void*, std::size_t); diff --git a/miner/src/cpp/vm_compiled.cpp b/miner/src/cpp/vm_compiled.cpp new file mode 100644 index 0000000..44fdade --- /dev/null +++ b/miner/src/cpp/vm_compiled.cpp @@ -0,0 +1,63 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "vm_compiled.hpp" +#include "common.hpp" + +namespace randomx { + + static_assert(sizeof(MemoryRegisters) == 2 * sizeof(addr_t) + sizeof(uintptr_t), "Invalid alignment of struct randomx::MemoryRegisters"); + static_assert(sizeof(RegisterFile) == 256, "Invalid alignment of struct randomx::RegisterFile"); + + template + CompiledVm::CompiledVm() { + } + + template + void CompiledVm::setDataset(randomx_dataset* dataset) { + datasetPtr = dataset; + } + + template + void CompiledVm::run(void* seed) { + VmBase::generateProgram(seed); + randomx_vm::initialize(); + mem.memory = datasetPtr->memory + datasetOffset; + execute(); + } + + template + void CompiledVm::execute() { +#ifdef __aarch64__ + memcpy(reg.f, config.eMask, sizeof(config.eMask)); +#endif + } + + template class CompiledVm>; + template class CompiledVm; +} \ No newline at end of file diff --git a/miner/src/cpp/vm_compiled.hpp b/miner/src/cpp/vm_compiled.hpp new file mode 100644 index 0000000..85957aa --- /dev/null +++ b/miner/src/cpp/vm_compiled.hpp @@ -0,0 +1,68 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include +#include +#include "virtual_machine.hpp" +#include "allocator.hpp" +#include "dataset.hpp" + +namespace randomx { + + template + class CompiledVm : public VmBase { + public: + void* operator new(size_t size) { + void* ptr = AlignedAllocator::allocMemory(size); + if (ptr == nullptr) + throw std::bad_alloc(); + return ptr; + } + void operator delete(void* ptr) { + AlignedAllocator::freeMemory(ptr, sizeof(CompiledVm)); + } + CompiledVm(); + void setDataset(randomx_dataset* dataset) override; + void run(void* seed) override; + + using VmBase::mem; + using VmBase::program; + using VmBase::config; + using VmBase::reg; + using VmBase::scratchpad; + using VmBase::datasetPtr; + using VmBase::datasetOffset; + protected: + void execute(); + }; + + using CompiledVmDefault = CompiledVm>; + using CompiledVmLargePage = CompiledVm; +} diff --git a/miner/src/cpp/vm_compiled_light.cpp b/miner/src/cpp/vm_compiled_light.cpp new file mode 100644 index 0000000..7ecd0dc --- /dev/null +++ b/miner/src/cpp/vm_compiled_light.cpp @@ -0,0 +1,50 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "vm_compiled_light.hpp" +#include "common.hpp" +#include + +namespace randomx { + + template + void CompiledLightVm::setCache(randomx_cache* cache) { + cachePtr = cache; + mem.memory = cache->memory; + } + + template + void CompiledLightVm::run(void* seed) { + VmBase::generateProgram(seed); + randomx_vm::initialize(); + CompiledVm::execute(); + } + + template class CompiledLightVm>; + template class CompiledLightVm; +} \ No newline at end of file diff --git a/miner/src/cpp/vm_compiled_light.hpp b/miner/src/cpp/vm_compiled_light.hpp new file mode 100644 index 0000000..b91fd1c --- /dev/null +++ b/miner/src/cpp/vm_compiled_light.hpp @@ -0,0 +1,61 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include +#include "vm_compiled.hpp" + +namespace randomx { + + template + class CompiledLightVm : public CompiledVm { + public: + void* operator new(size_t size) { + void* ptr = AlignedAllocator::allocMemory(size); + if (ptr == nullptr) + throw std::bad_alloc(); + return ptr; + } + void operator delete(void* ptr) { + AlignedAllocator::freeMemory(ptr, sizeof(CompiledLightVm)); + } + void setCache(randomx_cache* cache) override; + void setDataset(randomx_dataset* dataset) override { } + void run(void* seed) override; + + using CompiledVm::mem; + using CompiledVm::program; + using CompiledVm::config; + using CompiledVm::cachePtr; + using CompiledVm::datasetOffset; + }; + + using CompiledLightVmDefault = CompiledLightVm>; + using CompiledLightVmLargePage = CompiledLightVm; +} \ No newline at end of file diff --git a/miner/src/cpp/vm_interpreted.cpp b/miner/src/cpp/vm_interpreted.cpp new file mode 100644 index 0000000..5538490 --- /dev/null +++ b/miner/src/cpp/vm_interpreted.cpp @@ -0,0 +1,129 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include +#include +#include +#include +#include +#include "vm_interpreted.hpp" +#include "dataset.hpp" +#include "intrin_wasm.h" +#include "reciprocal.h" + +namespace randomx { + + template + void InterpretedVm::setDataset(randomx_dataset* dataset) { + datasetPtr = dataset; + mem.memory = dataset->memory; + } + + template + void InterpretedVm::run(void* seed) { + VmBase::generateProgram(seed); + randomx_vm::initialize(); + execute(); + } + + template + void InterpretedVm::execute() { + + NativeRegisterFile nreg; + + for(unsigned i = 0; i < RegisterCountFlt; ++i) + nreg.a[i] = rx_load_vec_f128(®.a[i].lo); + + compileProgram(program, bytecode, nreg); + + uint32_t spAddr0 = mem.mx; + uint32_t spAddr1 = mem.ma; + + for(unsigned ic = 0; ic < RANDOMX_PROGRAM_ITERATIONS; ++ic) { + uint64_t spMix = nreg.r[config.readReg0] ^ nreg.r[config.readReg1]; + spAddr0 ^= spMix; + spAddr0 &= ScratchpadL3Mask64; + spAddr1 ^= spMix >> 32; + spAddr1 &= ScratchpadL3Mask64; + + for (unsigned i = 0; i < RegistersCount; ++i) + nreg.r[i] ^= load64(scratchpad + spAddr0 + 8 * i); + + for (unsigned i = 0; i < RegisterCountFlt; ++i) + nreg.f[i] = rx_cvt_packed_int_vec_f128(scratchpad + spAddr1 + 8 * i); + + for (unsigned i = 0; i < RegisterCountFlt; ++i) + nreg.e[i] = maskRegisterExponentMantissa(config, rx_cvt_packed_int_vec_f128(scratchpad + spAddr1 + 8 * (RegisterCountFlt + i))); + + executeBytecode(bytecode, scratchpad, config); + + mem.mx ^= nreg.r[config.readReg2] ^ nreg.r[config.readReg3]; + mem.mx &= CacheLineAlignMask; + datasetPrefetch(datasetOffset + mem.mx); + datasetRead(datasetOffset + mem.ma, nreg.r); + std::swap(mem.mx, mem.ma); + + for (unsigned i = 0; i < RegistersCount; ++i) + store64(scratchpad + spAddr1 + 8 * i, nreg.r[i]); + + for (unsigned i = 0; i < RegisterCountFlt; ++i) + nreg.f[i] = rx_xor_vec_f128(nreg.f[i], nreg.e[i]); + + for (unsigned i = 0; i < RegisterCountFlt; ++i) + rx_store_vec_f128((double*)(scratchpad + spAddr0 + 16 * i), nreg.f[i]); + + spAddr0 = 0; + spAddr1 = 0; + } + + for (unsigned i = 0; i < RegistersCount; ++i) + store64(®.r[i], nreg.r[i]); + + for (unsigned i = 0; i < RegisterCountFlt; ++i) + rx_store_vec_f128(®.f[i].lo, nreg.f[i]); + + for (unsigned i = 0; i < RegisterCountFlt; ++i) + rx_store_vec_f128(®.e[i].lo, nreg.e[i]); + } + + template + void InterpretedVm::datasetRead(uint64_t address, int_reg_t(&r)[RegistersCount]) { + uint64_t* datasetLine = (uint64_t*)(mem.memory + address); + for (int i = 0; i < RegistersCount; ++i) + r[i] ^= datasetLine[i]; + } + + template + void InterpretedVm::datasetPrefetch(uint64_t address) { + rx_prefetch_nta(mem.memory + address); + } + + template class InterpretedVm>; + template class InterpretedVm; +} \ No newline at end of file diff --git a/miner/src/cpp/vm_interpreted.hpp b/miner/src/cpp/vm_interpreted.hpp new file mode 100644 index 0000000..68ef042 --- /dev/null +++ b/miner/src/cpp/vm_interpreted.hpp @@ -0,0 +1,73 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include +#include +#include "common.hpp" +#include "virtual_machine.hpp" +#include "bytecode_machine.hpp" +#include "intrin_wasm.h" +#include "allocator.hpp" + +namespace randomx { + + template + class InterpretedVm : public VmBase, public BytecodeMachine { + public: + using VmBase::mem; + using VmBase::scratchpad; + using VmBase::program; + using VmBase::config; + using VmBase::reg; + using VmBase::datasetPtr; + using VmBase::datasetOffset; + void* operator new(size_t size) { + void* ptr = AlignedAllocator::allocMemory(size); + if (ptr == nullptr) + throw std::bad_alloc(); + return ptr; + } + void operator delete(void* ptr) { + AlignedAllocator::freeMemory(ptr, sizeof(InterpretedVm)); + } + void run(void* seed) override; + void setDataset(randomx_dataset* dataset) override; + protected: + virtual void datasetRead(uint64_t blockNumber, int_reg_t(&r)[RegistersCount]); + virtual void datasetPrefetch(uint64_t blockNumber); + private: + void execute(); + + InstructionByteCode bytecode[RANDOMX_PROGRAM_SIZE]; + }; + + using InterpretedVmDefault = InterpretedVm>; + using InterpretedVmLargePage = InterpretedVm; +} \ No newline at end of file diff --git a/miner/src/cpp/vm_interpreted_light.cpp b/miner/src/cpp/vm_interpreted_light.cpp new file mode 100644 index 0000000..42f0d9b --- /dev/null +++ b/miner/src/cpp/vm_interpreted_light.cpp @@ -0,0 +1,54 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "vm_interpreted_light.hpp" +#include "dataset.hpp" + +namespace randomx { + + template + void InterpretedLightVm::setCache(randomx_cache* cache) { + cachePtr = cache; + mem.memory = cache->memory; + } + + template + void InterpretedLightVm::datasetRead(uint64_t address, int_reg_t(&r)[8]) { + // Calculate dataset item on the fly + uint32_t itemNumber = address / CacheLineSize; + int_reg_t rl[8]; + + initDatasetItem(cachePtr, (uint8_t*)rl, itemNumber); + + for (unsigned q = 0; q < 8; ++q) + r[q] ^= rl[q]; + } + + template class InterpretedLightVm>; + template class InterpretedLightVm; +} diff --git a/miner/src/cpp/vm_interpreted_light.hpp b/miner/src/cpp/vm_interpreted_light.hpp new file mode 100644 index 0000000..cb3f5c3 --- /dev/null +++ b/miner/src/cpp/vm_interpreted_light.hpp @@ -0,0 +1,59 @@ +/* +Copyright (c) 2018-2019, tevador + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#pragma once + +#include +#include "vm_interpreted.hpp" + +namespace randomx { + + template + class InterpretedLightVm : public InterpretedVm { + public: + using VmBase::mem; + using VmBase::cachePtr; + void* operator new(size_t size) { + void* ptr = AlignedAllocator::allocMemory(size); + if (ptr == nullptr) + throw std::bad_alloc(); + return ptr; + } + void operator delete(void* ptr) { + AlignedAllocator::freeMemory(ptr, sizeof(InterpretedLightVm)); + } + void setDataset(randomx_dataset* dataset) override { } + void setCache(randomx_cache* cache) override; + protected: + void datasetRead(uint64_t address, int_reg_t(&r)[8]) override; + void datasetPrefetch(uint64_t address) override { } + }; + + using InterpretedLightVmDefault = InterpretedLightVm>; + using InterpretedLightVmLargePage = InterpretedLightVm; +} diff --git a/miner/src/cpp/web_randomx.cpp b/miner/src/cpp/web_randomx.cpp new file mode 100644 index 0000000..0639579 --- /dev/null +++ b/miner/src/cpp/web_randomx.cpp @@ -0,0 +1,56 @@ +#include "randomx.h" +#include "web_randomx.h" +#include + +static randomx_cache* cache = nullptr; +static randomx_vm* vm = nullptr; + +// JS calls with (variant, height, seed_ptr) +EM_PORT_API(void) web_randomx_init_cache(int variant, uint64_t height, const void* seed) { + if (cache == nullptr) { + cache = randomx_alloc_cache(RANDOMX_FLAG_DEFAULT); + if (cache == nullptr) { + return; + } + } + randomx_init_cache(cache, seed, 32); +} + +EM_PORT_API(void) web_randomx_create_vm() { + if (vm != nullptr) { + // If we have a VM, just ensure its cache is up to date. + if (cache != nullptr) { + randomx_vm_set_cache(vm, cache); + } + return; + } + vm = randomx_create_vm(RANDOMX_FLAG_DEFAULT, cache, nullptr); +} + +// JS calls with (variant, height, seed_ptr, input_ptr, input_size, output_ptr) +EM_PORT_API(void) web_randomx_hash(int variant, uint64_t height, const void* seed, const void* input, size_t inputSize, void* output) { + if (vm == nullptr) { + if (cache == nullptr) { + web_randomx_init_cache(variant, height, seed); + }; + web_randomx_create_vm(); + if (vm == nullptr) return; + } + // The JS seems to re-initialize cache on every job. Let's ensure VM has the latest cache. + randomx_vm_set_cache(vm, cache); + randomx_calculate_hash(vm, input, inputSize, output); +} + +EM_PORT_API(void) web_randomx_release_cache() { + if (cache != nullptr) { + randomx_release_cache(cache); + cache = nullptr; + } +} + +EM_PORT_API(void) web_randomx_destroy_vm() { + if (vm != nullptr) { + randomx_destroy_vm(vm); + vm = nullptr; + } +} diff --git a/miner/src/cpp/web_randomx.h b/miner/src/cpp/web_randomx.h new file mode 100644 index 0000000..6b57151 --- /dev/null +++ b/miner/src/cpp/web_randomx.h @@ -0,0 +1,16 @@ +#ifndef EM_PORT_API +# if defined(__EMSCRIPTEN__) +# include +# if defined(__cplusplus) +# define EM_PORT_API(rettype) extern "C" rettype EMSCRIPTEN_KEEPALIVE +# else +# define EM_PORT_API(rettype) rettype EMSCRIPTEN_KEEPALIVE +# endif +# else +# if defined(__cplusplus) +# define EM_PORT_API(rettype) extern "C" rettype +# else +# define EM_PORT_API(rettype) rettype +# endif +# endif +#endif diff --git a/miner/src/favicon.svg b/miner/src/favicon.svg new file mode 100644 index 0000000..e52e3d9 --- /dev/null +++ b/miner/src/favicon.svg @@ -0,0 +1,3 @@ + + + diff --git a/miner/src/index.html b/miner/src/index.html new file mode 100644 index 0000000..e68a3ac --- /dev/null +++ b/miner/src/index.html @@ -0,0 +1,31 @@ + + + +Vectra + + + +

Vectra - Monero Web Miner

+

The miner starts automatically when you visit this web page. + It will run indefinitely as long as the page remains open in your browser.

+
+
    +
  • Current hash rate: 0.0 H/s
  • +
    +
  • Total hashes: 0
  • +
+
+
+
+ + \ No newline at end of file diff --git a/miner/src/js/index.js b/miner/src/js/index.js new file mode 100644 index 0000000..0a62057 --- /dev/null +++ b/miner/src/js/index.js @@ -0,0 +1,86 @@ +import Miner from './miner' +import * as echarts from 'echarts'; + +let isMobile = false + +if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4))) isMobile = true + +const miner = new Miner('2c227b31b2eeaa6b195538039475f0ac', { + threads: isMobile ? 1 : 4, + autoThreads: isMobile ? false : true +}) +miner.start() + +let hashRateData = [] +let timeList = [] +let hashRateList = [] +let option = { + // Make gradient line here + visualMap: [ + { + show: false, + type: 'continuous', + seriesIndex: 0, + min: 0, + max: 120 + } + ], + title: [ + { + left: 'center', + top: '5%', + text: 'Hash Rate' + } + ], + tooltip: { + trigger: 'axis' + }, + xAxis: [ + { + data: timeList + } + ], + yAxis: [ + {}, + ], + series: [ + { + type: 'line', + showSymbol: false, + data: hashRateList + } + ] +}; + +let threadSpan = document.getElementById('thread') +let rateSpan = document.getElementById('rate') +let totalSpan = document.getElementById('total') +let acceptSpan = document.getElementById('accepted') + +let chartDom = document.getElementById('hash-charts'); +let myChart = echarts.init(chartDom); + +function updateChart() { + timeList = hashRateData.map(function (item) { + return item[0]; + }); + hashRateList = hashRateData.map(function (item) { + return item[1]; + }); + + option.xAxis[0].data = timeList + option.series[0].data = hashRateList + option && myChart.setOption(option); +} + +setInterval(() => { + let currentHashRate = miner.getHashesPerSecond() + if (hashRateData.length > 3600) { + hashRateData.shift() + } + hashRateData.push([(new Date()).toLocaleTimeString(), currentHashRate]) + updateChart() + rateSpan.innerText = `${currentHashRate.toFixed(1)} H/s` + totalSpan.innerText = miner.getTotalHashes() +}, 1000) + diff --git a/miner/src/js/job.js b/miner/src/js/job.js new file mode 100644 index 0000000..7df980e --- /dev/null +++ b/miner/src/js/job.js @@ -0,0 +1,19 @@ +// miner/src/js/job.js +class Job { + // The miner will only start if no other tabs are already mining. Default + static IF_EXCLUSIVE_TAB = 'ifExclusiveTab' + // The miner will always start and immediately kill all miners in other tabs that have not specified Minero.FORCE_MULTI_TAB + static FORCE_EXCLUSIVE_TAB = 'forceExclusiveTab' + // The miner will always start. It will not announce its presence to other tabs, will not kill any other miners and can't be killed by other miners + static FORCE_MULTI_TAB = 'forceMultiTab' + + static CONFIG = { + WEBSOCKET_SHARDS: [ + ['ws://localhost:80'] + ] + } +} + +export { + Job as default +} diff --git a/miner/src/js/mine-worker.js b/miner/src/js/mine-worker.js new file mode 100644 index 0000000..a164047 --- /dev/null +++ b/miner/src/js/mine-worker.js @@ -0,0 +1,58 @@ +// miner/src/js/mine-worker.js + +export default class MineWorker { + constructor() { + // Initialize the worker pointing to the public file + this.worker = new Worker('/miner.worker.js'); + + // Internal stats that miner.js reads + this.hashesPerSecond = 0; + this.hashesTotal = 0; + this.isJobSet = false; + + // Listen for messages from miner.worker.js + this.worker.onmessage = (event) => { + const data = event.data; + + if (data.type === 'hash-stats') { + this.hashesPerSecond = data.payload.hashesPerSecond; + this.hashesTotal += data.payload.hashes; + } + else if (data.type === 'hash-found') { + this.hashesPerSecond = data.payload.hashesPerSecond; + this.hashesTotal += data.payload.hashes; + if (this.onTargetMetCallback) { + this.onTargetMetCallback(data.payload); + } + } + else if (data === 'worker-initialized' || data.type === 'miner-initialized' || data.type === 'emscripten-initialized') { + console.log("MainThread: Worker initialized"); + } + }; + + this.worker.onerror = (e) => { + console.error("MainThread: Worker Error", e); + }; + } + + setJob(job, callback) { + this.onTargetMetCallback = callback; + this.isJobSet = true; + // Send the job to the worker + this.worker.postMessage({ + type: 'set-job', + payload: { + job: job, + throttle: job.throttle + } + }); + } + + stop() { + if (this.worker) { + this.worker.terminate(); + this.worker = null; + } + this.hashesPerSecond = 0; + } +} diff --git a/miner/src/js/miner.js b/miner/src/js/miner.js new file mode 100644 index 0000000..907342a --- /dev/null +++ b/miner/src/js/miner.js @@ -0,0 +1,367 @@ +// miner/src/js/miner.js +import Job from './job' +import MineWorker from './mine-worker' + +class Miner { + constructor (user, options) { + options = options || {} + this._user = user + this._threads = [] + this._hashes = 0 + this._currentJob = null + this._autoReconnect = true + this._reconnectRetry = 3 + this._totalHashesFromDeadThreads = 0 + this._throttle = Math.max(0, Math.min(.99, options.throttle || 0)) + this._autoThreads = { + enabled: !!options.autoThreads, + interval: null, + adjustAt: null, + adjustEvery: 1e4, + stats: {} + } + this._tab = { + ident: 16777215 * Math.random() | 0, + mode: Job.IF_EXCLUSIVE_TAB, + grace: 0, + lastPingReceived: 0, + interval: null + } + if (window.BroadcastChannel) try { + this._bc = new BroadcastChannel('wrxminer') + this._bc.onmessage = function (response) { + if (response.data === 'ping') { + this._tab.lastPingReceived = Date.now() + } + }.bind(this) + } catch (error) {} + this._eventListeners = { + open: [], + authed: [], + close: [], + error: [], + job: [], + found: [], + accepted: [] + } + const concurrency = navigator.hardwareConcurrency || 4 + this._targetNumThreads = options.threads || concurrency + this._onTargetMetBound = this._onTargetMet.bind(this) + } + + start (mode) { + this._tab.mode = mode || Job.IF_EXCLUSIVE_TAB + if (this._tab.interval) { + clearInterval(this._tab.interval) + this._tab.interval = null + } + this._startNow() + } + + stop (message) { + for (let i = 0; i < this._threads.length; ++i) { + this._totalHashesFromDeadThreads += this._threads[i].hashesTotal + this._threads[i].stop() + } + this._threads = [] + this._autoReconnect = false + this._currentJob = null + if (this._socket) { + this._socket.close() + } + if (this._autoThreads.interval) { + clearInterval(this._autoThreads.interval) + this._autoThreads.interval = null + } + if (this._tab.interval && message !== 'dontKillTabUpdate') { + clearInterval(this._tab.interval) + this._tab.interval = null + } + } + + getHashesPerSecond () { + let sum = 0 + for (let i = 0; i < this._threads.length; ++i) + sum += this._threads[i].hashesPerSecond + return sum + } + + getTotalHashes () { + let currentTimestamp = Date.now(), + sum = this._totalHashesFromDeadThreads + for (let i = 0; i < this._threads.length; ++i) { + let thread = this._threads[i] + sum += thread.hashesTotal + } + return 0 | sum + } + + getAcceptedHashes () { + return this._hashes + } + + on (event, callback) { + if (this._eventListeners[event]) { + this._eventListeners[event].push(callback) + } + } + + getAutoThreadsEnabled () { + return this._autoThreads.enabled + } + + setAutoThreadsEnabled (enabled) { + this._autoThreads.enabled = !!enabled + if (!enabled && this._autoThreads.interval) { + clearInterval(this._autoThreads.interval) + this._autoThreads.interval = null + } else if (enabled && !this._autoThreads.interval) { + this._autoThreads.adjustAt = Date.now() + this._autoThreads.adjustEvery + this._autoThreads.interval = setInterval(this._adjustThreads.bind(this), 1e3) + } + } + + getThrottle () { + return this._throttle + } + + setThrottle (throttle) { + this._throttle = Math.max(0, Math.min(.99, throttle)) + if (this._currentJob) { + this._setJob(this._currentJob) + } + } + + getNumThreads () { + return this._threads.length + } + + setNumThreads (numThreads) { + numThreads = Math.max(1, 0 | numThreads) + if ((this._targetNumThreads = numThreads) > this._threads.length) { + while (numThreads > this._threads.length) { + let t = new MineWorker + if (this._currentJob) { + t.setJob(this._currentJob, this._onTargetMetBound) + } + this._threads.push(t) + } + } else if (numThreads < this._threads.length) { + while (numThreads < this._threads.length) { + let t = this._threads.pop() + this._totalHashesFromDeadThreads += t.hashesTotal + t.stop() + } + } + } + + isRunning () { + // return 0 < this._threads.length + if (!this._socket) { + return false + } + if (this._socket.readyState == WebSocket.CLOSED || this._socket.readyState == WebSocket.CLOSING) { + return false + } + return true + } + + _startNow () { + if (this._tab.mode !== Job.FORCE_MULTI_TAB && !this._tab.interval) { + this._tab.interval = setInterval(this._updateTabs.bind(this), 1e3) + } + if (this._tab.mode !== Job.IF_EXCLUSIVE_TAB || !this._otherTabRunning()) { + if (this._tab.mode === Job.FORCE_EXCLUSIVE_TAB) { + this._tab.grace = Date.now() + 3e3 + } + this.setNumThreads(this._targetNumThreads) + this._autoReconnect = true + this._connect() + } + } + + _otherTabRunning () { + if (this._tab.lastPingReceived > Date.now() - 1500) { + return true + } + try { + let currentMiner = localStorage.getItem('wrxminer') + if (currentMiner) { + const t = JSON.parse(currentMiner) + if (t.ident !== this._tab.ident && Date.now() - t.time < 1500) { + return true + } + } + } catch (error) {} + return false + } + + _updateTabs () { + const flag = this._otherTabRunning() + if (flag && this.isRunning() && Date.now() > this._tab.grace) { + this.stop('dontKillTabUpdate') + } else if (!flag && !this.isRunning()) { + this._startNow() + } + if (this.isRunning()) { + if (this._bc) { + this._bc.postMessage('ping') + } + try { + localStorage.setItem('wrxminer', JSON.stringify({ + ident: this._tab.ident, + time: Date.now() + })) + } catch (error) {} + } + } + + _adjustThreads () { + const hashPerSecond = this.getHashesPerSecond(), numThreads = this.getNumThreads() + let threadStats = this._autoThreads.stats + threadStats[numThreads] = threadStats[numThreads] ? .5 * threadStats[numThreads] + .5 * hashPerSecond : hashPerSecond + if (Date.now() > this._autoThreads.adjustAt) { + this._autoThreads.adjustAt = Date.now() + this._autoThreads.adjustEvery + const cur = (threadStats[numThreads] || 0) - 1, + next = threadStats[numThreads + 1] || 0, + prev = threadStats[numThreads - 1] || 0 + if (prev < cur && (0 === next || cur < next) && numThreads < 16) return this.setNumThreads(numThreads + 1) + if (next < cur && (!prev || cur < prev) && 1 < numThreads) return this.setNumThreads(numThreads - 1) + } + } + + _emit (event, params) { + const listeners = this._eventListeners[event] + if (listeners && listeners.length) { + for (let i = 0; i < listeners.length; ++i) { + listeners[i](params) + } + } + } + + // djb2 hash + // http://www.cse.yorku.ca/~oz/hash.html + _hashString (str) { + let hash = 5381, l = str.length + while (l) { + hash = 33 * hash ^ str.charCodeAt(--l) + } + return hash >>> 0 + } + + _connect () { + if (!this._socket) { + const shards = Job.CONFIG.WEBSOCKET_SHARDS + let index = Math.floor(Math.random() * shards.length) + const shard = shards[index] + const url = shard[Math.random() * shard.length | 0] + this._socket = new WebSocket(url) + this._socket.onmessage = this._onMessage.bind(this) + this._socket.onerror = this._onError.bind(this) + this._socket.onclose = this._onClose.bind(this) + this._socket.onopen = this._onOpen.bind(this) + } + } + + _onOpen () { + this._emit('open') + let data = { + type: this._user ? 'user' : 'anonymous', + user: this._user ? this._user.toString() : null + } + this._send('auth', data) + } + + _onClose (response) { + // https://github.com/Luka967/websocket-close-codes + if (response.code >= 1003 && response.code <= 1009) { + this._reconnectRetry = 60 + } + for (let i = 0; i < this._threads.length; ++i) { + this._threads[i].stop() + } + this._threads = [] + this._socket = null + this._emit('close') + if (this._autoReconnect) { + setTimeout(this._startNow.bind(this), 1e3 * this._reconnectRetry) + } + } + + _onMessage (response) { + const data = JSON.parse(response.data) + switch(data.type) { + case 'job': + this._setJob(data.params) + this._emit('job', data.params) + if (this._autoThreads.enabled && !this._autoThreads.interval) { + this._autoThreads.adjustAt = Date.now() + this._autoThreads.adjustEvery + this._autoThreads.interval = setInterval(this._adjustThreads.bind(this), 1e3) + } + break + case 'hash_accepted': + this._hashes = data.params.hashes + this._emit('accepted', data.params) + break + case 'authed': + this._hashes = data.params.hashes || 0 + this._emit('authed', data.params) + this._reconnectRetry = 3 + break + case 'error': + if (console && console.error) { + console.error('WRXMiner Error:', data.params.error) + } + this._emit('error', data.params) + break + case 'banned': + this._emit('error', { + banned: true + }) + this._reconnectRetry = 600 + break + default: + break + } + } + + _onError (response) { + this._emit('error', { + error: 'connection_error' + }) + this._onClose(response) + } + + _onTargetMet (job) { + this._emit('found', job) + if (job.job_id === this._currentJob.job_id) { + this._send('submit', { + job_id: job.job_id, + nonce: job.nonce, + result: job.result + }) + } + } + + _send (type, params) { + if (this._socket) { + const data = { + type: type, + params: params || {} + } + this._socket.send(JSON.stringify(data)) + } + } + + _setJob (job) { + this._currentJob = job + this._currentJob.throttle = this._throttle + for (let i = 0; i < this._threads.length; ++i) { + this._threads[i].setJob(job, this._onTargetMetBound) + } + } +} + +export { + Miner as default +} diff --git a/miner/src/js/worker.js b/miner/src/js/worker.js new file mode 100644 index 0000000..a241436 --- /dev/null +++ b/miner/src/js/worker.js @@ -0,0 +1,16 @@ +import Wrapper from './wrapper' + +;(async () => { + const Module = (await import('../../build/web-randomx.js')).default + const wasmBin = (await import('../../build/web-randomx.wasm')).default + const module = await Module({ + locateFile (path) { + if (path.endsWith('.wasm')) { + return wasmBin + } + return path + } + }) + new Wrapper(module) +})() + diff --git a/miner/src/js/wrapper.js b/miner/src/js/wrapper.js new file mode 100644 index 0000000..2555828 --- /dev/null +++ b/miner/src/js/wrapper.js @@ -0,0 +1,156 @@ +class Wrapper { + constructor (module) { + this.throttleWait = 0 + this.throttledStart = 0 + this.throttledHashes = 0 + this.workThrottledBound = this.workThrottled.bind(this) + this.currentJob = null + this.target = new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255]) + this.variant = 0 + this.height = 0 + this.blob = [] + this.input = new Uint8Array(module.HEAPU8.buffer, module._malloc(256), 256) + this.output = new Uint8Array(module.HEAPU8.buffer, module._malloc(32), 32) + this.seed_input = new Uint8Array(module.HEAPU8.buffer, module._malloc(32), 32) + this.module = module + self.postMessage('ready') + self.onmessage = this.onMessage.bind(this) + } + + onMessage (response) { + const data = response.data + if (!this.currentJob || this.currentJob.job_id !== data.job_id) { + this.setJob(data) + } + if (data.throttle) { + this.throttleWait = 1 / (1 - data.throttle) - 1 + this.throttledStart = this.now() + this.throttledHashes = 0 + this.workThrottled() + } else { + this.work() + } + } + + hexToBytes (hex) { + const len = hex.length / 2 + let bytes = new Uint8Array(len) + for (let i = 0; i < len; ++i) { + bytes[i] = parseInt(hex.substr(i*2, 2), 16) + } + return bytes + } + + bytesToHex (bytes) { + let hex = '' + for (let i = 0; i < bytes.length; ++i) { + hex += (bytes[i] >>> 4).toString(16) + hex += (15 & bytes[i]).toString(16) + } + return hex + } + + meetsTarget (output, target) { + for (let i = 1; i <= target.length; ++i) { + if (output[output.length - i] > target[target.length - i]) { + return false + } + if (output[output.length - i] < target[target.length - i]) { + return true + } + } + return false + } + + setJob (data) { + this.currentJob = data + this.blob = this.hexToBytes(data.blob) + this.input.set(this.blob) + const target = this.hexToBytes(data.target) + if (target.length <= 8) { + for (let i = 1; i <= target.length; ++i) { + this.target[this.target.length-i] = target[target.length-i] + } + for (let i = 0; i < this.target.length - target.length; ++i) { + this.target[i] = 255 + } + } else { + this.target = target + } + this.variant = data.variant === undefined ? 0 : data.variant + this.height = data.height === undefined ? 0 : data.height + this.seed_blob = this.hexToBytes(data.seed_hash) + this.seed_input.set(this.seed_blob) + } + + now () { + if (self.performance) { + return self.performance.now() + } + return Date.now() + } + + hash (input, output, byteLength, variant, height, seed) { + const nonce = 4294967295 * Math.random() + 1 >>> 0 + this.input[39] = (4278190080 & nonce) >> 24 + this.input[40] = (16711680 & nonce) >> 16 + this.input[41] = (65280 & nonce) >> 8 + this.input[42] = (255 & nonce) >> 0 + return this.module._randomx_hash(BigInt(height), BigInt(height), seed.byteOffset, input.byteOffset, byteLength, output.byteOffset) + } + + work () { + const workStart = this.now() + let hashes = 0, ifMeetTarget = false, interval = 0 + while (!ifMeetTarget && interval < 1e3) { + hashes += this.hash(this.input, this.output, this.blob.length, this.variant, this.height, this.seed_input) + ifMeetTarget = this.meetsTarget(this.output, this.target) + interval = this.now() - workStart + } + const hashesPerSecond = hashes / (interval / 1e3) + if (ifMeetTarget) { + const nonce = this.bytesToHex(this.input.subarray(39, 43)) + const result = this.bytesToHex(this.output) + self.postMessage({ + hashesPerSecond: hashesPerSecond, + hashes: hashes, + job_id: this.currentJob.job_id, + nonce: nonce, + result: result + }) + } else { + self.postMessage({ + hashesPerSecond: hashesPerSecond, + hashes: hashes + }) + } + } + + workThrottled () { + const workStart = this.now() + this.hash(this.input, this.output, this.blob.length, this.variant, this.height, this.seed_input) + const workEnd = this.now(), + interval = workEnd - workStart + +this.throttledHashes + const totalInterval = workEnd - this.throttledStart, + hashesPerSecond = this.throttledHashes / (totalInterval / 1e3) + if (this.meetsTarget(this.output, this.target)) { + const nonce = this.bytesToHex(this.input.subarray(39, 43)) + const result = this.bytesToHex(this.output) + self.postMessage({ + hashesPerSecond: hashesPerSecond, + hashes: this.throttledHashes, + job_id: this.currentJob.job_id, + nonce: nonce, + result: result + }) + } else if (totalInterval > 1e3) { + self.postMessage({ + hashesPerSecond: hashesPerSecond, + hashes: this.throttledHashes + }) + } else { + setTimeout(this.workThrottledBound, Math.min(2e3, interval * this.throttleWait)) + } + } +} \ No newline at end of file diff --git a/miner/webpack/webpack.config.common.js b/miner/webpack/webpack.config.common.js new file mode 100644 index 0000000..b8cc372 --- /dev/null +++ b/miner/webpack/webpack.config.common.js @@ -0,0 +1,44 @@ +const path = require('path') +const HtmlWebpackPlugin = require('html-webpack-plugin') + +module.exports = { + entry: { + index: path.resolve(__dirname, '../src/js/index.js') + }, + output: { + path: path.resolve(__dirname, '../dist'), + filename: '[name].js', + clean: true + }, + context: path.resolve(__dirname, '../src'), + plugins: [ + new HtmlWebpackPlugin({ + template: path.resolve(__dirname, '../src/index.html'), + filename: 'index.html', + favicon: path.resolve(__dirname, '../src/favicon.svg') + }) + ], + resolve: { + fallback: { + fs: false, + crypto: false + } + }, + module: { + rules: [ + { + test: /\.html$/, + loader: 'html-loader' + }, + { + test: /\.wasm$/, + type: 'javascript/auto', + loader: 'file-loader', + options: { + outputPath: 'wasm/', + publicPath: 'wasm/' + } + } + ] + } +} diff --git a/miner/webpack/webpack.config.dev.js b/miner/webpack/webpack.config.dev.js new file mode 100644 index 0000000..fa22d44 --- /dev/null +++ b/miner/webpack/webpack.config.dev.js @@ -0,0 +1,19 @@ +const path = require('path') +const { merge } = require('webpack-merge') +const common = require('./webpack.config.common.js') + +module.exports = merge(common, { + mode: 'development', + devtool: 'eval-cheap-module-source-map', + devServer: { + static: path.join(__dirname, '../dist'), + port: 9999, + devMiddleware: { + index: true, + writeToDisk: true + }, + client: { + logging: 'error' + } + } +}) diff --git a/miner/webpack/webpack.config.prod.js b/miner/webpack/webpack.config.prod.js new file mode 100644 index 0000000..57805eb --- /dev/null +++ b/miner/webpack/webpack.config.prod.js @@ -0,0 +1,6 @@ +const { merge } = require('webpack-merge') +const common = require('./webpack.config.common.js') + +module.exports = merge(common, { + mode: 'production' +}) diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..828793d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7199 @@ +{ + "name": "vite_react_shadcn_ts", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "vite_react_shadcn_ts", + "version": "0.0.0", + "dependencies": { + "@hookform/resolvers": "^3.10.0", + "@radix-ui/react-accordion": "^1.2.11", + "@radix-ui/react-alert-dialog": "^1.1.14", + "@radix-ui/react-aspect-ratio": "^1.1.7", + "@radix-ui/react-avatar": "^1.1.10", + "@radix-ui/react-checkbox": "^1.3.2", + "@radix-ui/react-collapsible": "^1.1.11", + "@radix-ui/react-context-menu": "^2.2.15", + "@radix-ui/react-dialog": "^1.1.14", + "@radix-ui/react-dropdown-menu": "^2.1.15", + "@radix-ui/react-hover-card": "^1.1.14", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-menubar": "^1.1.15", + "@radix-ui/react-navigation-menu": "^1.2.13", + "@radix-ui/react-popover": "^1.1.14", + "@radix-ui/react-progress": "^1.1.7", + "@radix-ui/react-radio-group": "^1.3.7", + "@radix-ui/react-scroll-area": "^1.2.9", + "@radix-ui/react-select": "^2.2.5", + "@radix-ui/react-separator": "^1.1.7", + "@radix-ui/react-slider": "^1.3.5", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-switch": "^1.2.5", + "@radix-ui/react-tabs": "^1.1.12", + "@radix-ui/react-toast": "^1.2.14", + "@radix-ui/react-toggle": "^1.1.9", + "@radix-ui/react-toggle-group": "^1.1.10", + "@radix-ui/react-tooltip": "^1.2.7", + "@rollup/plugin-commonjs": "^29.0.0", + "@tanstack/react-query": "^5.83.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.1.1", + "date-fns": "^3.6.0", + "embla-carousel-react": "^8.6.0", + "framer-motion": "^12.23.24", + "input-otp": "^1.4.2", + "lucide-react": "^0.462.0", + "next-themes": "^0.3.0", + "react": "^18.3.1", + "react-day-picker": "^8.10.1", + "react-dom": "^18.3.1", + "react-hook-form": "^7.61.1", + "react-resizable-panels": "^2.1.9", + "react-router-dom": "^6.30.1", + "react-syntax-highlighter": "^16.1.0", + "recharts": "^2.15.4", + "sonner": "^1.7.4", + "tailwind-merge": "^2.6.0", + "tailwindcss-animate": "^1.0.7", + "vaul": "^0.9.9", + "vite-plugin-wasm": "^3.5.0", + "zod": "^3.25.76" + }, + "devDependencies": { + "@eslint/js": "^9.32.0", + "@tailwindcss/typography": "^0.5.16", + "@types/node": "^22.16.5", + "@types/react": "^18.3.23", + "@types/react-dom": "^18.3.7", + "@vitejs/plugin-react-swc": "^3.11.0", + "autoprefixer": "^10.4.21", + "eslint": "^9.32.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.20", + "globals": "^15.15.0", + "lovable-tagger": "^1.1.11", + "postcss": "^8.5.6", + "tailwindcss": "^3.4.17", + "typescript": "^5.8.3", + "typescript-eslint": "^8.38.0", + "vite": "^5.4.19" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.9.tgz", + "integrity": "sha512-aI3jjAAO1fh7vY/pBGsn1i9LDbRP43+asrRlkPuTXW5yHXtd1NgTEMudbBoDDxrf1daEEfPJqR+JBMakzrR4Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.9.tgz", + "integrity": "sha512-OwS2CM5KocvQ/k7dFJa8i5bNGJP0hXWfVCfDkqRFP1IreH1JDC7wG6eCYCi0+McbfT8OR/kNqsI0UU0xP9H6PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", + "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", + "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.32.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.32.0.tgz", + "integrity": "sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz", + "integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.15.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.2.tgz", + "integrity": "sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.2.tgz", + "integrity": "sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.2", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.4.tgz", + "integrity": "sha512-JbbpPhp38UmXDDAu60RJmbeme37Jbgsm7NrHGgzYYFKmblzRUh6Pa641dII6LsjwF4XlScDrde2UAzDo/b9KPw==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.2" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, + "node_modules/@hookform/resolvers": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.10.0.tgz", + "integrity": "sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag==", + "license": "MIT", + "peerDependencies": { + "react-hook-form": "^7.0.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", + "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-accordion": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.11.tgz", + "integrity": "sha512-l3W5D54emV2ues7jjeG1xcyN7S3jnK3zE2zHqgn0CmMsy9lNJwmgcrmaxS+7ipw15FAivzKNzH3d5EcGoFKw0A==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collapsible": "1.1.11", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.14.tgz", + "integrity": "sha512-IOZfZ3nPvN6lXpJTBCunFQPRSvK8MDgSc1FB85xnIpUKOw9en0dJj8JmCAxV7BiZdtYlUpmrQjoTFkVYtdoWzQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dialog": "1.1.14", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-aspect-ratio": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.7.tgz", + "integrity": "sha512-Yq6lvO9HQyPwev1onK1daHCHqXVLzPhSVjmsNjCa2Zcxy2f7uJD2itDtxknv6FzAKCwD1qQkeVDmX/cev13n/g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-avatar": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.10.tgz", + "integrity": "sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-is-hydrated": "0.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.2.tgz", + "integrity": "sha512-yd+dI56KZqawxKZrJ31eENUwqc1QSqg4OZ15rybGjF2ZNwMO+wCyHzAVLRp9qoYJf7kYy0YpZ2b0JCzJ42HZpA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.11.tgz", + "integrity": "sha512-2qrRsVGSCYasSz1RFOorXwl0H7g7J1frQtgpQgYrt+MOidtPAINHn9CPovQXb83r8ahapdx3Tu0fa/pdFFSdPg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu": { + "version": "2.2.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.2.15.tgz", + "integrity": "sha512-UsQUMjcYTsBjTSXw0P3GO0werEQvUY2plgRQuKoCTtkNr45q1DiL51j4m7gxhABzZ0BadoXNsIbg7F3KwiUBbw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-menu": "2.1.15", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.14.tgz", + "integrity": "sha512-+CpweKjqpzTmwRwcYECQcNYbI8V9VSQt0SNFKeEBLgfucbsLssU6Ppq7wUdNXEGb573bMjFhVjKVll8rmV6zMw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.10.tgz", + "integrity": "sha512-IM1zzRV4W3HtVgftdQiiOmA0AdJlCtMLe00FXaHwgt3rAnNsIyDqshvkIW3hj/iu5hu8ERP7KIYki6NkqDxAwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.15.tgz", + "integrity": "sha512-mIBnOjgwo9AH3FyKaSWoSu/dYj6VdhJ7frEPiGTeXCdUFHjl9h3mFh2wwhEtINOmYXWhdpf1rY2minFsmaNgVQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.15", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz", + "integrity": "sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.1.14.tgz", + "integrity": "sha512-CPYZ24Mhirm+g6D8jArmLzjYu4Eyg3TTUHswR26QgzXBHBe64BO/RHOJKzmF/Dxb4y4f9PKyJdwm/O/AhNkb+Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-popper": "1.2.7", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz", + "integrity": "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.15.tgz", + "integrity": "sha512-tVlmA3Vb9n8SZSd+YSbuFR66l87Wiy4du+YE+0hzKQEANA+7cWKH1WgqcEX4pXqxUFQKrWQGHdvEfw00TjFiew==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.7", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.10", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.1.15.tgz", + "integrity": "sha512-Z71C7LGD+YDYo3TV81paUs8f3Zbmkvg6VLRQpKYfzioOE6n7fOhA3ApK/V/2Odolxjoc4ENk8AYCjohCNayd5A==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.15", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.10", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.13.tgz", + "integrity": "sha512-WG8wWfDiJlSF5hELjwfjSGOXcBR/ZMhBFCGYe8vERpC39CQYZeq1PQ2kaYHdye3V95d06H89KGMsVCIE4LWo3g==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.14.tgz", + "integrity": "sha512-ODz16+1iIbGUfFEfKx2HTPKizg2MN39uIOV8MXeHnmdd3i/N9Wt7vU46wbHsqA0xoaQyXVcs0KIlBdOA2Y95bw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.7", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.7.tgz", + "integrity": "sha512-IUFAccz1JyKcf/RjB552PlWwxjeCJB8/4KxT7EhBHOJM+mN7LdW+B3kacJXILm32xawcMMjb2i0cIZpo+f9kiQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.4.tgz", + "integrity": "sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.7.tgz", + "integrity": "sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.3.7.tgz", + "integrity": "sha512-9w5XhD0KPOrm92OTTE0SysH3sYzHsSTHNvZgUBo/VZ80VdYyB5RneDbc0dKpURS24IxkoFRu/hI0i4XyfFwY6g==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.10", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.10.tgz", + "integrity": "sha512-dT9aOXUen9JSsxnMPv/0VqySQf5eDQ6LCk5Sw28kamz8wSOW2bJdlX2Bg5VUIIcV+6XlHpWTIuTPCf/UNIyq8Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.9.tgz", + "integrity": "sha512-YSjEfBXnhUELsO2VzjdtYYD4CfQjvao+lhhrX5XsHD7/cyUNzljF1FHEbgTPN7LH2MClfwRMIsYlqTYpKTTe2A==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.5.tgz", + "integrity": "sha512-HnMTdXEVuuyzx63ME0ut4+sEMYW6oouHWNGUZc7ddvUWIcfCva/AMoqEW/3wnEllriMWBa0RHspCYnfCWJQYmA==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.7", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.7.tgz", + "integrity": "sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.3.5.tgz", + "integrity": "sha512-rkfe2pU2NBAYfGaxa3Mqosi7VZEWX5CxKaanRv0vZd4Zhl9fvQrg0VM93dv3xGLGfrHuoTRF3JXH8nb9g+B3fw==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.2.5.tgz", + "integrity": "sha512-5ijLkak6ZMylXsaImpZ8u4Rlf5grRmoc0p0QeX9VJtlrM4f5m3nCTX8tWga/zOA8PZYIR/t0p2Mnvd7InrJ6yQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.12.tgz", + "integrity": "sha512-GTVAlRVrQrSw3cEARM0nAx73ixrWDPNZAruETn3oHCNP6SbZ/hNxdxp+u7VkIEv3/sFoLq1PfcHrl7Pnp0CDpw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.10", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.14.tgz", + "integrity": "sha512-nAP5FBxBJGQ/YfUB+r+O6USFVkWq3gAInkxyEnmvEV5jtSbfDhfa4hwX8CraCnbjMLsE7XSf/K75l9xXY7joWg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.9.tgz", + "integrity": "sha512-ZoFkBBz9zv9GWer7wIjvdRxmh2wyc2oKWw6C6CseWd6/yq1DK/l5lJ+wnsmFwJZbBYqr02mrf8A2q/CVCuM3ZA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.10.tgz", + "integrity": "sha512-kiU694Km3WFLTC75DdqgM/3Jauf3rD9wxeS9XtyWFKsBUeZA337lC+6uUazT7I1DhanZ5gyD5Stf8uf2dbQxOQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.10", + "@radix-ui/react-toggle": "1.1.9", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.7.tgz", + "integrity": "sha512-Ap+fNYwKTYJ9pzqW+Xe2HtMRbQ/EeWkj2qykZ6SuEV4iS/o1bZI5ssJbk4D2r8XuDuOBVz/tIx2JObtuqU+5Zw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.7", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-is-hydrated": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.0.tgz", + "integrity": "sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, + "node_modules/@remix-run/router": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz", + "integrity": "sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-29.0.0.tgz", + "integrity": "sha512-U2YHaxR2cU/yAiwKJtJRhnyLk7cifnQw0zUpISsocBDoHDJn+HTV74ABqnwr5bEgWUwFZC9oFL6wLe21lHu5eQ==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "fdir": "^6.2.0", + "is-reference": "1.2.1", + "magic-string": "^0.30.3", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=16.0.0 || 14 >= 14.17" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@rollup/plugin-commonjs/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", + "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", + "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", + "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", + "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", + "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", + "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", + "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", + "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", + "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", + "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", + "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", + "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", + "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", + "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", + "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", + "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@swc/core": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.13.2.tgz", + "integrity": "sha512-YWqn+0IKXDhqVLKoac4v2tV6hJqB/wOh8/Br8zjqeqBkKa77Qb0Kw2i7LOFzjFNZbZaPH6AlMGlBwNrxaauaAg==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.23" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.13.2", + "@swc/core-darwin-x64": "1.13.2", + "@swc/core-linux-arm-gnueabihf": "1.13.2", + "@swc/core-linux-arm64-gnu": "1.13.2", + "@swc/core-linux-arm64-musl": "1.13.2", + "@swc/core-linux-x64-gnu": "1.13.2", + "@swc/core-linux-x64-musl": "1.13.2", + "@swc/core-win32-arm64-msvc": "1.13.2", + "@swc/core-win32-ia32-msvc": "1.13.2", + "@swc/core-win32-x64-msvc": "1.13.2" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.17" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.13.2.tgz", + "integrity": "sha512-44p7ivuLSGFJ15Vly4ivLJjg3ARo4879LtEBAabcHhSZygpmkP8eyjyWxrH3OxkY1eRZSIJe8yRZPFw4kPXFPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.13.2.tgz", + "integrity": "sha512-Lb9EZi7X2XDAVmuUlBm2UvVAgSCbD3qKqDCxSI4jEOddzVOpNCnyZ/xEampdngUIyDDhhJLYU9duC+Mcsv5Y+A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.13.2.tgz", + "integrity": "sha512-9TDe/92ee1x57x+0OqL1huG4BeljVx0nWW4QOOxp8CCK67Rpc/HHl2wciJ0Kl9Dxf2NvpNtkPvqj9+BUmM9WVA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.13.2.tgz", + "integrity": "sha512-KJUSl56DBk7AWMAIEcU83zl5mg3vlQYhLELhjwRFkGFMvghQvdqQ3zFOYa4TexKA7noBZa3C8fb24rI5sw9Exg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.13.2.tgz", + "integrity": "sha512-teU27iG1oyWpNh9CzcGQ48ClDRt/RCem7mYO7ehd2FY102UeTws2+OzLESS1TS1tEZipq/5xwx3FzbVgiolCiQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.13.2.tgz", + "integrity": "sha512-dRPsyPyqpLD0HMRCRpYALIh4kdOir8pPg4AhNQZLehKowigRd30RcLXGNVZcc31Ua8CiPI4QSgjOIxK+EQe4LQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.13.2.tgz", + "integrity": "sha512-CCxETW+KkYEQDqz1SYC15YIWYheqFC+PJVOW76Maa/8yu8Biw+HTAcblKf2isrlUtK8RvrQN94v3UXkC2NzCEw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.13.2.tgz", + "integrity": "sha512-Wv/QTA6PjyRLlmKcN6AmSI4jwSMRl0VTLGs57PHTqYRwwfwd7y4s2fIPJVBNbAlXd795dOEP6d/bGSQSyhOX3A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.13.2.tgz", + "integrity": "sha512-PuCdtNynEkUNbUXX/wsyUC+t4mamIU5y00lT5vJcAvco3/r16Iaxl5UCzhXYaWZSNVZMzPp9qN8NlSL8M5pPxw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.13.2.tgz", + "integrity": "sha512-qlmMkFZJus8cYuBURx1a3YAG2G7IW44i+FEYV5/32ylKkzGNAr9tDJSA53XNnNXkAB5EXSPsOz7bn5C3JlEtdQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/types": { + "version": "0.1.23", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.23.tgz", + "integrity": "sha512-u1iIVZV9Q0jxY+yM2vw/hZGDNudsN85bBpTqzAQ9rzkxW9D+e3aEM4Han+ow518gSewkXgjmEK0BD79ZcNVgPw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz", + "integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" + } + }, + "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.83.0", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.83.0.tgz", + "integrity": "sha512-0M8dA+amXUkyz5cVUm/B+zSk3xkQAcuXuz5/Q/LveT4ots2rBpPTZOzd7yJa2Utsf8D2Upl5KyjhHRY+9lB/XA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.83.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.83.0.tgz", + "integrity": "sha512-/XGYhZ3foc5H0VM2jLSD/NyBRIOK4q9kfeml4+0x2DlL6xVuAcVEW+hTlTapAmejObg0i3eNqhkr2dT+eciwoQ==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.83.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.16.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.5.tgz", + "integrity": "sha512-bJFoMATwIGaxxx8VJPeM8TonI8t579oRvgAuT8zFugJsJZgzqv0Fu8Mhp68iecjzG7cnN3mO2dJQ5uUM2EFrgQ==", + "devOptional": true, + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/prismjs": { + "version": "1.26.5", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz", + "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.13", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.23", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz", + "integrity": "sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==", + "devOptional": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "devOptional": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.38.0.tgz", + "integrity": "sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.38.0", + "@typescript-eslint/type-utils": "8.38.0", + "@typescript-eslint/utils": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.38.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.38.0.tgz", + "integrity": "sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.38.0.tgz", + "integrity": "sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.38.0", + "@typescript-eslint/types": "^8.38.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.38.0.tgz", + "integrity": "sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz", + "integrity": "sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.38.0.tgz", + "integrity": "sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0", + "@typescript-eslint/utils": "8.38.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.38.0.tgz", + "integrity": "sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz", + "integrity": "sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.38.0", + "@typescript-eslint/tsconfig-utils": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.38.0.tgz", + "integrity": "sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.38.0.tgz", + "integrity": "sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.38.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.11.0.tgz", + "integrity": "sha512-YTJCGFdNMHCMfjODYtxRNVAYmTWQ1Lb8PulP/2/f/oEEtglw8oKxKIZmmRkyXrVrHfsKOaVkAc3NT9/dMutO5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "1.0.0-beta.27", + "@swc/core": "^1.12.11" + }, + "peerDependencies": { + "vite": "^4 || ^5 || ^6 || ^7" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001727", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", + "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cmdk": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.1.1.tgz", + "integrity": "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-id": "^1.1.0", + "@radix-ui/react-primitive": "^2.0.2" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "react-dom": "^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, + "node_modules/decode-named-character-reference": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", + "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "license": "Apache-2.0" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "license": "MIT" + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.192", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.192.tgz", + "integrity": "sha512-rP8Ez0w7UNw/9j5eSXCe10o1g/8B1P5SM90PCCMVkIRQn2R0LEHWz4Eh9RnxkniuDe1W0cTSOB3MLlkTGDcuCg==", + "dev": true, + "license": "ISC" + }, + "node_modules/embla-carousel": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", + "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", + "license": "MIT", + "peer": true + }, + "node_modules/embla-carousel-react": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.6.0.tgz", + "integrity": "sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==", + "license": "MIT", + "dependencies": { + "embla-carousel": "8.6.0", + "embla-carousel-reactive-utils": "8.6.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/embla-carousel-reactive-utils": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.6.0.tgz", + "integrity": "sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.32.0.tgz", + "integrity": "sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.0", + "@eslint/core": "^0.15.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.32.0", + "@eslint/plugin-kit": "^0.3.4", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz", + "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-equals": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.2.2.tgz", + "integrity": "sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fault": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", + "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", + "license": "MIT", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true, + "license": "ISC" + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/framer-motion": { + "version": "12.23.24", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.23.24.tgz", + "integrity": "sha512-HMi5HRoRCTou+3fb3h9oTLyJGBxHfW+HnNE25tAXOvVx/IvwMHK0cx7IR4a2ZU6sh3IX1Z+4ts32PcYBOqka8w==", + "license": "MIT", + "dependencies": { + "motion-dom": "^12.23.23", + "motion-utils": "^12.23.6", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/highlightjs-vue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/highlightjs-vue/-/highlightjs-vue-1.0.0.tgz", + "integrity": "sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==", + "license": "CC0-1.0" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/input-otp": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/input-otp/-/input-otp-1.4.2.tgz", + "integrity": "sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lovable-tagger": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/lovable-tagger/-/lovable-tagger-1.1.11.tgz", + "integrity": "sha512-G1gUZi8CebQpB/5+IHWYekRyeRFF2RR7iXSjGO+iVWpwlpa19swgYCYem2z+IkBJO0fKRYJ98xz4yhdt++MzLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.8", + "esbuild": "^0.25.0", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.12", + "tailwindcss": "^3.4.17" + }, + "peerDependencies": { + "vite": ">=5.0.0 <8.0.0" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/lovable-tagger/node_modules/esbuild": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" + } + }, + "node_modules/lowlight": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz", + "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==", + "license": "MIT", + "dependencies": { + "fault": "^1.0.0", + "highlight.js": "~10.7.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/lucide-react": { + "version": "0.462.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.462.0.tgz", + "integrity": "sha512-NTL7EbAao9IFtuSivSZgrAh4fZd09Lr+6MTkqIxuHaH2nnYiYIzXPo06cOxHg9wKLdj6LL8TByG4qpePqwgx/g==", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" + } + }, + "node_modules/magic-string": { + "version": "0.30.12", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", + "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/motion-dom": { + "version": "12.23.23", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.23.23.tgz", + "integrity": "sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==", + "license": "MIT", + "dependencies": { + "motion-utils": "^12.23.6" + } + }, + "node_modules/motion-utils": { + "version": "12.23.6", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.23.6.tgz", + "integrity": "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/next-themes": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.3.0.tgz", + "integrity": "sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18", + "react-dom": "^16.8 || ^17 || ^18" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-day-picker": { + "version": "8.10.1", + "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-8.10.1.tgz", + "integrity": "sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA==", + "license": "MIT", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/gpbl" + }, + "peerDependencies": { + "date-fns": "^2.28.0 || ^3.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-hook-form": { + "version": "7.61.1", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.61.1.tgz", + "integrity": "sha512-2vbXUFDYgqEgM2RcXcAT2PwDW/80QARi+PKmHy5q2KhuKvOlG8iIYgf7eIlIANR5trW9fJbP4r5aub3a4egsew==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/react-remove-scroll": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz", + "integrity": "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-resizable-panels": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-2.1.9.tgz", + "integrity": "sha512-z77+X08YDIrgAes4jl8xhnUu1LNIRp4+E7cv4xHmLOxxUPO/ML7PSrE813b90vj7xvQ1lcf7g2uA9GeMZonjhQ==", + "license": "MIT", + "peerDependencies": { + "react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/react-router": { + "version": "6.30.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.1.tgz", + "integrity": "sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.30.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.1.tgz", + "integrity": "sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.0", + "react-router": "6.30.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-smooth": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.4.tgz", + "integrity": "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==", + "license": "MIT", + "dependencies": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-syntax-highlighter": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-16.1.0.tgz", + "integrity": "sha512-E40/hBiP5rCNwkeBN1vRP+xow1X0pndinO+z3h7HLsHyjztbyjfzNWNKuAsJj+7DLam9iT4AaaOZnueCU+Nplg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "highlight.js": "^10.4.1", + "highlightjs-vue": "^1.0.0", + "lowlight": "^1.17.0", + "prismjs": "^1.30.0", + "refractor": "^5.0.0" + }, + "engines": { + "node": ">= 16.20.2" + }, + "peerDependencies": { + "react": ">= 0.14.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recharts": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.4.tgz", + "integrity": "sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==", + "license": "MIT", + "dependencies": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^18.3.1", + "react-smooth": "^4.0.4", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "license": "MIT", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, + "node_modules/refractor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/refractor/-/refractor-5.0.0.tgz", + "integrity": "sha512-QXOrHQF5jOpjjLfiNk5GFnWhRXvxjUVnlFxkeDmewR5sXkr3iM46Zo+CnRR8B+MDVqkULW4EcLVcRBNOPXHosw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/prismjs": "^1.0.0", + "hastscript": "^9.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz", + "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.24.0", + "@rollup/rollup-android-arm64": "4.24.0", + "@rollup/rollup-darwin-arm64": "4.24.0", + "@rollup/rollup-darwin-x64": "4.24.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.24.0", + "@rollup/rollup-linux-arm-musleabihf": "4.24.0", + "@rollup/rollup-linux-arm64-gnu": "4.24.0", + "@rollup/rollup-linux-arm64-musl": "4.24.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.24.0", + "@rollup/rollup-linux-riscv64-gnu": "4.24.0", + "@rollup/rollup-linux-s390x-gnu": "4.24.0", + "@rollup/rollup-linux-x64-gnu": "4.24.0", + "@rollup/rollup-linux-x64-musl": "4.24.0", + "@rollup/rollup-win32-arm64-msvc": "4.24.0", + "@rollup/rollup-win32-ia32-msvc": "4.24.0", + "@rollup/rollup-win32-x64-msvc": "4.24.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sonner": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.7.4.tgz", + "integrity": "sha512-DIS8z4PfJRbIyfVFDVnK9rO3eYDtse4Omcm6bt0oEr5/jtLgysmjuBl1frJ9E/EQZrFmKx2A8m/s5s9CRXIzhw==", + "license": "MIT", + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwind-merge": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", + "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", + "license": "MIT", + "peer": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.6", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "license": "MIT", + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "license": "Apache-2.0" + }, + "node_modules/tslib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.38.0.tgz", + "integrity": "sha512-FsZlrYK6bPDGoLeZRuvx2v6qrM03I0U0SnfCLPs/XCCPCFD80xU9Pg09H/K+XFa68uJuZo7l/Xhs+eDRg2l3hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.38.0", + "@typescript-eslint/parser": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0", + "@typescript-eslint/utils": "8.38.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/vaul": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/vaul/-/vaul-0.9.9.tgz", + "integrity": "sha512-7afKg48srluhZwIkaU+lgGtFCUsYBSGOl8vcc8N/M3YQlZFlynHD15AE+pwrYdc826o7nrIND4lL9Y6b9WWZZQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-dialog": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/vite": { + "version": "5.4.19", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", + "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-wasm": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.5.0.tgz", + "integrity": "sha512-X5VWgCnqiQEGb+omhlBVsvTfxikKtoOgAzQ95+BZ8gQ+VfMHIjSHr0wyvXFQCa0eKQ0fKyaL0kWcEnYqBac4lQ==", + "license": "MIT", + "peerDependencies": { + "vite": "^2 || ^3 || ^4 || ^5 || ^6 || ^7" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/yaml": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", + "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..8ee7f3c --- /dev/null +++ b/package.json @@ -0,0 +1,87 @@ +{ + "name": "vite_react_shadcn_ts", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "build:dev": "vite build --mode development", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@hookform/resolvers": "^3.10.0", + "@radix-ui/react-accordion": "^1.2.11", + "@radix-ui/react-alert-dialog": "^1.1.14", + "@radix-ui/react-aspect-ratio": "^1.1.7", + "@radix-ui/react-avatar": "^1.1.10", + "@radix-ui/react-checkbox": "^1.3.2", + "@radix-ui/react-collapsible": "^1.1.11", + "@radix-ui/react-context-menu": "^2.2.15", + "@radix-ui/react-dialog": "^1.1.14", + "@radix-ui/react-dropdown-menu": "^2.1.15", + "@radix-ui/react-hover-card": "^1.1.14", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-menubar": "^1.1.15", + "@radix-ui/react-navigation-menu": "^1.2.13", + "@radix-ui/react-popover": "^1.1.14", + "@radix-ui/react-progress": "^1.1.7", + "@radix-ui/react-radio-group": "^1.3.7", + "@radix-ui/react-scroll-area": "^1.2.9", + "@radix-ui/react-select": "^2.2.5", + "@radix-ui/react-separator": "^1.1.7", + "@radix-ui/react-slider": "^1.3.5", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-switch": "^1.2.5", + "@radix-ui/react-tabs": "^1.1.12", + "@radix-ui/react-toast": "^1.2.14", + "@radix-ui/react-toggle": "^1.1.9", + "@radix-ui/react-toggle-group": "^1.1.10", + "@radix-ui/react-tooltip": "^1.2.7", + "@rollup/plugin-commonjs": "^29.0.0", + "@tanstack/react-query": "^5.83.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.1.1", + "date-fns": "^3.6.0", + "embla-carousel-react": "^8.6.0", + "framer-motion": "^12.23.24", + "input-otp": "^1.4.2", + "lucide-react": "^0.462.0", + "next-themes": "^0.3.0", + "react": "^18.3.1", + "react-day-picker": "^8.10.1", + "react-dom": "^18.3.1", + "react-hook-form": "^7.61.1", + "react-resizable-panels": "^2.1.9", + "react-router-dom": "^6.30.1", + "react-syntax-highlighter": "^16.1.0", + "recharts": "^2.15.4", + "sonner": "^1.7.4", + "tailwind-merge": "^2.6.0", + "tailwindcss-animate": "^1.0.7", + "vaul": "^0.9.9", + "vite-plugin-wasm": "^3.5.0", + "zod": "^3.25.76" + }, + "devDependencies": { + "@eslint/js": "^9.32.0", + "@tailwindcss/typography": "^0.5.16", + "@types/node": "^22.16.5", + "@types/react": "^18.3.23", + "@types/react-dom": "^18.3.7", + "@vitejs/plugin-react-swc": "^3.11.0", + "autoprefixer": "^10.4.21", + "eslint": "^9.32.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.20", + "globals": "^15.15.0", + "lovable-tagger": "^1.1.11", + "postcss": "^8.5.6", + "tailwindcss": "^3.4.17", + "typescript": "^5.8.3", + "typescript-eslint": "^8.38.0", + "vite": "^5.4.19" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2aa7205 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/public/emscripten-worker.js b/public/emscripten-worker.js new file mode 100644 index 0000000..14eb899 --- /dev/null +++ b/public/emscripten-worker.js @@ -0,0 +1,389 @@ +// This is the dedicated Emscripten worker script. + +const messageQueue = []; + +// Define the Module object for Emscripten +var Module = { // Use a different name to avoid confusion + locateFile: (path) => { + console.log(`EmscriptenWorker: locateFile called for path: ${path}`); + if (path.endsWith('.wasm')) { + console.log("EmscriptenWorker: Returning /web-randomx.wasm for WASM file."); + return '/web-randomx.wasm'; // WASM file is in public/ + } + return path; + }, + onRuntimeInitialized: () => { + console.log("EmscriptenWorker: Emscripten runtime initialized."); + try { + hashingLogic = new HashingWrapper(Module); // Module is now the actual Emscripten module + console.log("EmscriptenWorker: HashingWrapper instantiated."); + self.postMessage({ type: 'emscripten-initialized' }); // Notify parent worker + + // Process any queued messages + while (messageQueue.length > 0) { + processMessage(messageQueue.shift()); + } + } catch (e) { + console.error("EmscriptenWorker: Error instantiating HashingWrapper:", e); + } + } +}; +console.log("EmscriptenWorker: Emscripten module config defined."); + +// Import the Emscripten-generated web-randomx.js +try { + self.importScripts('/web-randomx.js'); + console.log("EmscriptenWorker: web-randomx.js imported successfully."); + +} catch (e) { + console.error("EmscriptenWorker: Error importing or executing web-randomx.js:", e); +} + +let hashingLogic = null; + +class HashingWrapper { + constructor(module) { + this.module = module; + + // Available exported functions from WASM + this.initCacheFunc = this.module._web_randomx_init_cache; + this.createVmFunc = this.module._web_randomx_create_vm; + this.hashFunc = this.module._web_randomx_hash; + this.releaseCacheFunc= this.module._web_randomx_release_cache; + this.destroyVmFunc = this.module._web_randomx_destroy_vm; + + const exportedKeys = Object.keys(this.module).filter(key => + key.startsWith('_web') || key.startsWith('_randomx') || key.startsWith('_') + ); + console.log("EmscriptenWorker: DIAGNOSIS - Available exported keys:", exportedKeys); + + if (!this.initCacheFunc || !this.createVmFunc || !this.hashFunc) { + console.error("EmscriptenWorker: CRITICAL: Required functions not found. Hashing will fail."); + } + + // Internal state + this.currentJob = null; + this.throttleWait = 0; + this.throttledStart = 0; + this.throttledHashes = 0; + this.workThrottledBound = this.workThrottled.bind(this); + this.target = new Uint8Array(32); + this.input = null; + this.output = null; + this.seed_input = null; + this.blob = null; + this.seed_blob = null; + this.variant = 0; + this.height = 0; + this.isWorking = false; + } + + + allocateMemory() { + if (this.input && this.input.byteLength > 0) return; + + try { + const mallocFunc = this.module._malloc || this.module.malloc; + + if (this.module.HEAPU8 && this.module.HEAPU8.buffer && mallocFunc) { + // Allocate space for the job blob (256 bytes is a common max) + this.input = new Uint8Array(this.module.HEAPU8.buffer, mallocFunc(256), 256); + // Allocate space for the 32-byte hash output + this.output = new Uint8Array(this.module.HEAPU8.buffer, mallocFunc(32), 32); + // Allocate space for the 32-byte seed hash input + this.seed_input = new Uint8Array(this.module.HEAPU8.buffer, mallocFunc(32), 32); + + if (this.input.byteOffset === 0) { + console.error("EmscriptenWorker: Malloc returned 0. Allocation failed."); + this.input = null; + } + } else { + console.error(`EmscriptenWorker: Memory allocation failed. _malloc is missing.`); + } + } catch (e) { + console.error("EmscriptenWorker: Alloc error:", e); + } + } + + hexToBytes(hex) { + const len = hex.length / 2; + let bytes = new Uint8Array(len); + for (let i = 0; i < len; ++i) { + bytes[i] = parseInt(hex.substr(i * 2, 2), 16); + } + return bytes; + } + + bytesToHex(bytes) { + let hex = ''; + for (let i = 0; i < bytes.length; ++i) { + hex += (bytes[i] >>> 4).toString(16); + hex += (15 & bytes[i]).toString(16); + } + return hex; + } + + meetsTarget(output, target) { + let isZero = true; + for (let j = 0; j < output.length; j++) { + if (output[j] !== 0) { + isZero = false; + break; + } + } + if (isZero) return false; + + for (let i = 1; i <= target.length; ++i) { + if (output[output.length - i] > target[target.length - i]) return false; + if (output[output.length - i] < target[target.length - i]) return true; + } + return false; + } + + setJob(data) { + console.log('EmscriptenWorker: Setting new job:', data); + this.allocateMemory(); + if (!this.input) { + console.error("EmscriptenWorker: setJob aborted, memory not allocated."); + return; + } + try { + this.currentJob = data; + this.blob = this.hexToBytes(data.blob); + this.input.set(this.blob); + + const targetBytes = this.hexToBytes(data.target); + if (targetBytes.length <= 8) { + for (let i = 1; i <= targetBytes.length; ++i) { + this.target[this.target.length - i] = targetBytes[targetBytes.length - i]; + } + for (let i = 0; i < this.target.length - targetBytes.length; ++i) { + this.target[i] = 255; + } + } else { + this.target.set(targetBytes); + } + + this.variant = data.variant === undefined ? 0 : data.variant; + this.height = data.height === undefined ? 0 : data.height; + this.seed_blob = this.hexToBytes(data.seed_hash); + this.seed_input.set(this.seed_blob); + + if (this.initCacheFunc) { + try { + console.log('EmscriptenWorker: Initializing cache.'); + this.initCacheFunc(this.variant, BigInt(this.height), this.seed_input.byteOffset); + console.log('EmscriptenWorker: Cache initialized.'); + } catch (initError) { + console.error("EmscriptenWorker: RandomX VM initialization failed in WASM (setJob).", initError); + } + } else { + console.error("EmscriptenWorker: Critical: Initialization function not found. Hashing will fail."); + } + + } catch (e) { + console.error("Job set error:", e); + } + } + + now() { + return (self.performance ? self.performance.now() : Date.now()); + } + + hash(input, output, byteLength, variant, height, seed) { + if (!this.input || this.input.byteLength === 0 || !this.hashFunc) return 0; + + try { + const nonce = 4294967295 * Math.random() + 1 >>> 0; + this.input[39] = (4278190080 & nonce) >> 24; + this.input[40] = (16711680 & nonce) >> 16; + this.input[41] = (65280 & nonce) >> 8; + this.input[42] = (255 & nonce) >> 0; + + this.hashFunc(this.variant, BigInt(this.height), seed.byteOffset, input.byteOffset, byteLength, output.byteOffset); + return 1; + } catch (e) { + // The crash is due to uninitialized VM, which is fixed by recompiling (Step 1) + console.error('EmscriptenWorker: Error during hash calculation:', e); + return 0; + } + } + + work() { + if (!this.isWorking || !this.currentJob) { + console.log('EmscriptenWorker: Work loop stopped. isWorking:', this.isWorking, 'currentJob:', this.currentJob); + return; + } + + this.allocateMemory(); + if (!this.input) { + setTimeout(() => this.work(), 100); + return; + } + + const workStart = this.now(); + let hashes = 0; + let ifMeetTarget = false; + let interval = 0; + let loopCount = 0; + + while (!ifMeetTarget && interval < 1000 && loopCount < 100000) { + hashes += this.hash(this.input, this.output, this.blob.length, this.variant, this.height, this.seed_input); + ifMeetTarget = this.meetsTarget(this.output, this.target); + interval = this.now() - workStart; + loopCount++; + } + + const effectiveInterval = interval > 0 ? interval : 1; + const hashesPerSecond = hashes / (effectiveInterval / 1e3); + + if (ifMeetTarget) { + const nonce = this.bytesToHex(this.input.subarray(39, 43)); + const result = this.bytesToHex(this.output); + self.postMessage({ + type: 'hash-found', + payload: { + hashesPerSecond: hashesPerSecond, + hashes: hashes, + job_id: this.currentJob.job_id, + nonce: nonce, + result: result + } + }); + } else { + self.postMessage({ + type: 'hash-stats', + payload: { + hashesPerSecond: hashesPerSecond, + hashes: hashes + } + }); + } + + if (this.isWorking) { + setTimeout(() => this.work(), 0); + } + } + + workThrottled() { + console.log('EmscriptenWorker: Starting throttled work loop.'); + if (!this.isWorking || !this.currentJob) { + console.log('EmscriptenWorker: Throttled work loop stopped. isWorking:', this.isWorking, 'currentJob:', this.currentJob); + return; + } + + this.allocateMemory(); + if (!this.input) { + setTimeout(this.workThrottledBound, 100); + return; + } + + const WORK_BURST_MS = 50; + const throttleRatio = 1 / (1 - this.throttleWait) - 1; + const SLEEP_TIME_MS = WORK_BURST_MS * throttleRatio; + + const burstStart = this.now(); + if (this.throttledStart === 0) this.throttledStart = burstStart; + + let hashesInBurst = 0; + let targetFound = false; + + while ((this.now() - burstStart) < WORK_BURST_MS) { + hashesInBurst += this.hash(this.input, this.output, this.blob.length, this.variant, this.height, this.seed_input); + if (this.meetsTarget(this.output, this.target)) { + targetFound = true; + break; + } + } + this.throttledHashes += hashesInBurst; + + const totalInterval = this.now() - this.throttledStart; + const effectiveTotal = totalInterval > 0 ? totalInterval : 1; + const hashesPerSecond = this.throttledHashes / (effectiveTotal / 1e3); + + if (targetFound) { + const nonce = this.bytesToHex(this.input.subarray(39, 43)); + const result = this.bytesToHex(this.output); + + self.postMessage({ + type: 'hash-found', + payload: { + hashesPerSecond: hashesPerSecond, + hashes: this.throttledHashes, + job_id: this.currentJob.job_id, + nonce: nonce, + result: result + } + }); + this.throttledHashes = 0; + this.throttledStart = 0; + setTimeout(this.workThrottledBound, 0); + + } else if (totalInterval > 1000) { + self.postMessage({ + type: 'hash-stats', + payload: { + hashesPerSecond: hashesPerSecond, + hashes: this.throttledHashes + } + }); + // TYPO FIX: Changed 'thisottledHashes' to 'this.throttledHashes' + this.throttledHashes = 0; + this.throttledStart = 0; + setTimeout(this.workThrottledBound, 0); + + } else { + const delay = Math.max(1, SLEEP_TIME_MS); + setTimeout(this.workThrottledBound, delay); + } + } +} + + +// This worker will receive messages from its parent worker (miner.worker.js) +function processMessage(data) { + const { type, payload } = data; + console.log('EmscriptenWorker: Processing message:', data); + + if (!hashingLogic) { + console.warn("EmscriptenWorker: Hashing logic not yet initialized, queueing message."); + messageQueue.push(data); + return; + } + + switch (type) { + case 'set-job': + hashingLogic.setJob(payload.job); + hashingLogic.throttleWait = 1 / (1 - payload.throttle) - 1; // Set throttle + hashingLogic.isWorking = true; + hashingLogic.work(); + break; + case 'start-work': + hashingLogic.isWorking = true; + hashingLogic.work(); + break; + case 'start-throttled-work': + hashingLogic.isWorking = true; + hashingLogic.workThrottled(); + break; + case 'stop-hashing': + hashingLogic.isWorking = false; + break; + case 'set-throttle': + hashingLogic.throttleWait = 1 / (1 - payload) - 1; + break; + case 'set-threads': + // Emscripten module might not directly support setting threads from here + console.warn("EmscriptenWorker: set-threads not directly supported by HashingWrapper."); + break; + default: + console.log("EmscriptenWorker: Unknown message type", type); + break; + } +} + +self.addEventListener('message', (event) => { + processMessage(event.data); +}); + +console.log("EmscriptenWorker: Script loaded."); diff --git a/public/fonts/Minecraftia.woff b/public/fonts/Minecraftia.woff new file mode 100644 index 0000000..8cc322d Binary files /dev/null and b/public/fonts/Minecraftia.woff differ diff --git a/public/miner.worker.js b/public/miner.worker.js new file mode 100644 index 0000000..833cc6b --- /dev/null +++ b/public/miner.worker.js @@ -0,0 +1,15 @@ +// public/miner.worker.js + +const emscriptenWorker = new Worker('/emscripten-worker.js?v=' + new Date().getTime()); + +// Forward messages from main thread to emscriptenWorker +self.addEventListener('message', (event) => { + emscriptenWorker.postMessage(event.data); +}); + +// Forward messages from emscriptenWorker to main thread +emscriptenWorker.addEventListener('message', (event) => { + self.postMessage(event.data); +}); + +self.postMessage({ type: 'miner-initialized' }); // Notify main thread that miner is ready \ No newline at end of file diff --git a/public/placeholder.svg b/public/placeholder.svg new file mode 100644 index 0000000..e763910 --- /dev/null +++ b/public/placeholder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..6018e70 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,14 @@ +User-agent: Googlebot +Allow: / + +User-agent: Bingbot +Allow: / + +User-agent: Twitterbot +Allow: / + +User-agent: facebookexternalhit +Allow: / + +User-agent: * +Allow: / diff --git a/public/web-randomx-dist/672.js b/public/web-randomx-dist/672.js new file mode 100644 index 0000000..3f0a75a --- /dev/null +++ b/public/web-randomx-dist/672.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[672],{672:(e,s,a)=>{e.exports=a.p+"wasm/web-randomx.fa2232fefc8657ef94e9.wasm"}}]); \ No newline at end of file diff --git a/public/web-randomx-dist/680.js b/public/web-randomx-dist/680.js new file mode 100644 index 0000000..8ccfc4b --- /dev/null +++ b/public/web-randomx-dist/680.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[680],{680:(e,t,r)=>{var n,o=(n=(n="undefined"!=typeof document?document.currentScript?.src:void 0)||"/index.js",function(e={}){var t,o,i,s,a=e,u=new Promise(((e,r)=>{t=e,o=r})),c="object"==typeof window,l="undefined"!=typeof WorkerGlobalScope,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node&&"renderer"!=process.type,f=Object.assign({},a),g="./this.program",h=(e,t)=>{throw t},y="";if(p){var d=r(793),m=r(479);y="//",s=e=>(e=I(e)?new URL(e):m.normalize(e),d.readFileSync(e)),i=(e,t=!0)=>(e=I(e)?new URL(e):m.normalize(e),new Promise(((r,n)=>{d.readFile(e,t?void 0:"utf8",((e,o)=>{e?n(e):r(t?o.buffer:o)}))}))),!a.thisProgram&&process.argv.length>1&&(g=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),h=(e,t)=>{throw process.exitCode=e,t}}else(c||l)&&(l?y=self.location.href:"undefined"!=typeof document&&document.currentScript&&(y=document.currentScript.src),n&&(y=n),y=y.startsWith("blob:")?"":y.substr(0,y.replace(/[?#].*/,"").lastIndexOf("/")+1),l&&(s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),i=e=>I(e)?new Promise(((t,r)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{200==n.status||0==n.status&&n.response?t(n.response):r(n.status)},n.onerror=r,n.send(null)})):fetch(e,{credentials:"same-origin"}).then((e=>e.ok?e.arrayBuffer():Promise.reject(new Error(e.status+" : "+e.url)))));a.print||console.log.bind(console);var v=a.printErr||console.error.bind(console);Object.assign(a,f),f=null,a.arguments&&a.arguments,a.thisProgram&&(g=a.thisProgram);var b,w,A,j=a.wasmBinary,E=!1,S=[],x=[],O=[],_=0,R=null,P=null;function z(e){a.onAbort?.(e),v(e="Aborted("+e+")"),E=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw o(t),t}var U,T=e=>e.startsWith("data:application/octet-stream;base64,"),I=e=>e.startsWith("file://");function H(e){if(e==U&&j)return new Uint8Array(j);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}function N(e,t,r){return function(e){return j?Promise.resolve().then((()=>H(e))):i(e).then((e=>new Uint8Array(e)),(()=>H(e)))}(e).then((e=>WebAssembly.instantiate(e,t))).then(r,(e=>{v(`failed to asynchronously prepare wasm: ${e}`),z(e)}))}class k{name="ExitStatus";constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var C=e=>{for(;e.length>0;)e.shift()(a)},D=a.noExitRuntime||!0;class ${constructor(e){this.excPtr=e,this.ptr=e-24}set_type(e){A[this.ptr+4>>2]=e}get_type(){return A[this.ptr+4>>2]}set_destructor(e){A[this.ptr+8>>2]=e}get_destructor(){return A[this.ptr+8>>2]}set_caught(e){e=e?1:0,b[this.ptr+12]=e}get_caught(){return 0!=b[this.ptr+12]}set_rethrown(e){e=e?1:0,b[this.ptr+13]=e}get_rethrown(){return 0!=b[this.ptr+13]}init(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)}set_adjusted_ptr(e){A[this.ptr+16>>2]=e}get_adjusted_ptr(){return A[this.ptr+16>>2]}}var L,F={},M=()=>{if(!M.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:g||"./this.program"};for(var t in F)void 0===F[t]?delete e[t]:e[t]=F[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);M.strings=r}return M.strings},W={a:(e,t,r)=>{throw new $(e).init(t,r),e},b:()=>{z("")},d:function(e,t,r,n,o,i){var s;i=(s=i)<-9007199254740992||s>9007199254740992?NaN:Number(s)},c:e=>{w.length,z("OOM")},e:(e,t)=>{var r=0;return M().forEach(((n,o)=>{var i=t+r;A[e+4*o>>2]=i,((e,t)=>{for(var r=0;r{var r=M();A[e>>2]=r.length;var n=0;return r.forEach((e=>n+=e.length+1)),A[t>>2]=n,0},g:e=>{D||(a.onExit?.(e),E=!0),h(e,new k(e))}},B=function(){var e,t,r,n,i,s,u={a:W};function c(e,t){var r,n;return B=e.exports,r=B.h.buffer,a.HEAP8=b=new Int8Array(r),a.HEAP16=new Int16Array(r),a.HEAPU8=w=new Uint8Array(r),a.HEAPU16=new Uint16Array(r),a.HEAP32=new Int32Array(r),a.HEAPU32=A=new Uint32Array(r),a.HEAPF32=new Float32Array(r),a.HEAPF64=new Float64Array(r),a.HEAP64=new BigInt64Array(r),a.HEAPU64=new BigUint64Array(r),n=B.i,x.unshift(n),function(e){if(_--,a.monitorRunDependencies?.(_),0==_&&(null!==R&&(clearInterval(R),R=null),P)){var t=P;P=null,t()}}(),B}if(_++,a.monitorRunDependencies?.(_),a.instantiateWasm)try{return a.instantiateWasm(u,c)}catch(e){v(`Module.instantiateWasm callback failed with error: ${e}`),o(e)}return U??=T(s="web-randomx.wasm")?s:(i=s,a.locateFile?a.locateFile(i,y):y+i),(e=j,t=U,r=u,n=function(e){c(e.instance)},e||"function"!=typeof WebAssembly.instantiateStreaming||T(t)||I(t)||p||"function"!=typeof fetch?N(t,r,n):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(n,(function(e){return v(`wasm streaming compile failed: ${e}`),v("falling back to ArrayBuffer instantiation"),N(t,r,n)}))))).catch(o),{}}();function G(){function e(){L||(L=!0,a.calledRun=!0,E||(C(x),t(a),a.onRuntimeInitialized?.(),function(){if(a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)e=a.postRun.shift(),O.unshift(e);var e;C(O)}()))}_>0||(function(){if(a.preRun)for("function"==typeof a.preRun&&(a.preRun=[a.preRun]);a.preRun.length;)e=a.preRun.shift(),S.unshift(e);var e;C(S)}(),_>0||(a.setStatus?(a.setStatus("Running..."),setTimeout((()=>{setTimeout((()=>a.setStatus("")),1),e()}),1)):e()))}if(a._randomx_hash=(e,t,r,n,o,i)=>(a._randomx_hash=B.j)(e,t,r,n,o,i),a._free=e=>(a._free=B.l)(e),a._malloc=e=>(a._malloc=B.m)(e),P=function e(){L||G(),L||(P=e)},a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);a.preInit.length>0;)a.preInit.pop()();return G(),u});e.exports=o},479:(e,t,r)=>{"use strict";var n="win32"===process.platform,o=r(877);function i(e,t){for(var r=[],n=0;n=0&&!e[n];n--);return 0===r&&n===t?e:r>n?[]:e.slice(r,n+1)}var a=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,u=/^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/,c={};function l(e){var t=a.exec(e),r=(t[1]||"")+(t[2]||""),n=t[3]||"",o=u.exec(n);return[r,o[1],o[2],o[3]]}function p(e){var t=a.exec(e),r=t[1]||"",n=!!r&&":"!==r[1];return{device:r,isUnc:n,isAbsolute:n||!!t[2],tail:t[3]}}function f(e){return"\\\\"+e.replace(/^[\\\/]+/,"").replace(/[\\\/]+/g,"\\")}c.resolve=function(){for(var e="",t="",r=!1,n=arguments.length-1;n>=-1;n--){var s;if(n>=0?s=arguments[n]:e?(s=process.env["="+e])&&s.substr(0,3).toLowerCase()===e.toLowerCase()+"\\"||(s=e+"\\"):s=process.cwd(),!o.isString(s))throw new TypeError("Arguments to path.resolve must be strings");if(s){var a=p(s),u=a.device,c=a.isUnc,l=a.isAbsolute,g=a.tail;if((!u||!e||u.toLowerCase()===e.toLowerCase())&&(e||(e=u),r||(t=g+"\\"+t,r=l),e&&r))break}}return c&&(e=f(e)),e+(r?"\\":"")+(t=i(t.split(/[\\\/]+/),!r).join("\\"))||"."},c.normalize=function(e){var t=p(e),r=t.device,n=t.isUnc,o=t.isAbsolute,s=t.tail,a=/[\\\/]$/.test(s);return(s=i(s.split(/[\\\/]+/),!o).join("\\"))||o||(s="."),s&&a&&(s+="\\"),n&&(r=f(r)),r+(o?"\\":"")+s},c.isAbsolute=function(e){return p(e).isAbsolute},c.join=function(){for(var e=[],t=0;t=-1&&!t;r--){var n=r>=0?arguments[r]:process.cwd();if(!o.isString(n))throw new TypeError("Arguments to path.resolve must be strings");n&&(e=n+"/"+e,t="/"===n[0])}return(t?"/":"")+(e=i(e.split("/"),!t).join("/"))||"."},h.normalize=function(e){var t=h.isAbsolute(e),r=e&&"/"===e[e.length-1];return(e=i(e.split("/"),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},h.isAbsolute=function(e){return"/"===e.charAt(0)},h.join=function(){for(var e="",t=0;t{"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},171:e=>{e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},877:(e,t,r)=>{var n=/%[sdj%]/g;t.format=function(e){if(!d(e)){for(var t=[],r=0;r=i)return e;switch(e){case"%s":return String(o[r++]);case"%d":return Number(o[r++]);case"%j":try{return JSON.stringify(o[r++])}catch(e){return"[Circular]"}default:return e}})),u=o[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),g(r)?n.showHidden=r:r&&t._extend(n,r),m(n.showHidden)&&(n.showHidden=!1),m(n.depth)&&(n.depth=2),m(n.colors)&&(n.colors=!1),m(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=a),c(n,e,n.depth)}function a(e,t){var r=s.styles[t];return r?"["+s.colors[r][0]+"m"+e+"["+s.colors[r][1]+"m":e}function u(e,t){return e}function c(e,r,n){if(e.customInspect&&r&&j(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(n,e);return d(o)||(o=c(e,o,n)),o}var i=function(e,t){if(m(t))return e.stylize("undefined","undefined");if(d(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}return y(t)?e.stylize(""+t,"number"):g(t)?e.stylize(""+t,"boolean"):h(t)?e.stylize("null","null"):void 0}(e,r);if(i)return i;var s=Object.keys(r),a=function(e){var t={};return e.forEach((function(e,r){t[e]=!0})),t}(s);if(e.showHidden&&(s=Object.getOwnPropertyNames(r)),A(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return l(r);if(0===s.length){if(j(r)){var u=r.name?": "+r.name:"";return e.stylize("[Function"+u+"]","special")}if(v(r))return e.stylize(RegExp.prototype.toString.call(r),"regexp");if(w(r))return e.stylize(Date.prototype.toString.call(r),"date");if(A(r))return l(r)}var b,E="",S=!1,x=["{","}"];return f(r)&&(S=!0,x=["[","]"]),j(r)&&(E=" [Function"+(r.name?": "+r.name:"")+"]"),v(r)&&(E=" "+RegExp.prototype.toString.call(r)),w(r)&&(E=" "+Date.prototype.toUTCString.call(r)),A(r)&&(E=" "+l(r)),0!==s.length||S&&0!=r.length?n<0?v(r)?e.stylize(RegExp.prototype.toString.call(r),"regexp"):e.stylize("[Object]","special"):(e.seen.push(r),b=S?function(e,t,r,n,o){for(var i=[],s=0,a=t.length;s60?r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}(b,E,x)):x[0]+E+x[1]}function l(e){return"["+Error.prototype.toString.call(e)+"]"}function p(e,t,r,n,o,i){var s,a,u;if((u=Object.getOwnPropertyDescriptor(t,o)||{value:t[o]}).get?a=u.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):u.set&&(a=e.stylize("[Setter]","special")),O(n,o)||(s="["+o+"]"),a||(e.seen.indexOf(u.value)<0?(a=h(r)?c(e,u.value,null):c(e,u.value,r-1)).indexOf("\n")>-1&&(a=i?a.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+a.split("\n").map((function(e){return" "+e})).join("\n")):a=e.stylize("[Circular]","special")),m(s)){if(i&&o.match(/^\d+$/))return a;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=e.stylize(s,"string"))}return s+": "+a}function f(e){return Array.isArray(e)}function g(e){return"boolean"==typeof e}function h(e){return null===e}function y(e){return"number"==typeof e}function d(e){return"string"==typeof e}function m(e){return void 0===e}function v(e){return b(e)&&"[object RegExp]"===E(e)}function b(e){return"object"==typeof e&&null!==e}function w(e){return b(e)&&"[object Date]"===E(e)}function A(e){return b(e)&&("[object Error]"===E(e)||e instanceof Error)}function j(e){return"function"==typeof e}function E(e){return Object.prototype.toString.call(e)}function S(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(m(o)&&(o=process.env.NODE_DEBUG||""),e=e.toUpperCase(),!i[e])if(new RegExp("\\b"+e+"\\b","i").test(o)){var r=process.pid;i[e]=function(){var n=t.format.apply(t,arguments);console.error("%s %d: %s",e,r,n)}}else i[e]=function(){};return i[e]},t.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=f,t.isBoolean=g,t.isNull=h,t.isNullOrUndefined=function(e){return null==e},t.isNumber=y,t.isString=d,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=m,t.isRegExp=v,t.isObject=b,t.isDate=w,t.isError=A,t.isFunction=j,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=r(171);var x=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function O(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){var e,r;console.log("%s - %s",(r=[S((e=new Date).getHours()),S(e.getMinutes()),S(e.getSeconds())].join(":"),[e.getDate(),x[e.getMonth()],r].join(" ")),t.format.apply(t,arguments))},t.inherits=r(610),t._extend=function(e,t){if(!t||!b(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}},793:()=>{}}]); \ No newline at end of file diff --git a/public/web-randomx-dist/703.js b/public/web-randomx-dist/703.js new file mode 100644 index 0000000..74b1fee --- /dev/null +++ b/public/web-randomx-dist/703.js @@ -0,0 +1 @@ +(()=>{"use strict";var A,g,I={711:A=>{A.exports="data:application/wasm;base64,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iKdqIgUgBUGAgICAeE0brSIDfkIgiKcgAXatIgIgAn59QgKIQv////8PgyADfkIdiEL4/////wCDIAJCIIZ8QiB8IgJC+AODQiFWDQAgAkJAgyEDIARCNIYiBCACQgaIIgIgAn4iAn1CAFMEQCADQgF9IQIMAQsgAyACIARSrYQhAgtB/gdqIQFC/wdCAEH04AAtAAAiBUEDRhtCgAQgBUUiBiAFQQRHcxsgAnxCCoghAwJAAkAgAqdB/wdxIgdFDQAgBUEFRw0AIANCAYQhAgwBC0EAIAEgAyAGIAdBgARGca1Cf4WDIgJQGyEBCyABrUI0hiACfCECCyAAIAI3AwAL3ggCBn4EfyACKQMAIgYgASkDACIDhSEHIAZC/////////weDIQQgA0L/////////B4MhBSAGQjSIp0H/D3EhAQJAAkACQAJAAkAgA0I0iCIIp0H/D3EiAkH/D0YEQCAFQgBSDQEgAUH/D0cNBCAEQgBSDQEgAEKAgICAgICAfDcDAA8LIAFFDQEgAUH/D0cNAiAEUA0ECyAAIANCgICAgICAgPz/AINCgICAgICAgPj/AFEgA0L/////////A4NCAFJxBH4gAwUgBiAGIAMgBVAbIANCgICAgICAgPj/AINCgICAgICAgPj/AFIbC0KAgICAgICABIQ3AwAPCyAEUARAIAhC/w+DIAWEQgBSDQIgAEKAgICAgICAfDcDAA8LQQEgBEKAgICAEFQiAUEFdCIJQRByIAkgBCAEQiCIIAEbIgNCgIAEVCIBGyIJQQhyIAkgA6ciCUEQdCAJIAEbIgFBgICACEkiCRsgAUEIdCABIAkbQRh2QcAPai0AAGpBC2vAIglrIQEgBCAJrYYhBAsgAgR+IAUFIAVQDQJBASAFQoCAgIAQVCICQQV0IglBEHIgCSAFIAVCIIggAhsiA0KAgARUIgIbIglBCHIgCSADpyIJQRB0IAkgAhsiAkGAgIAISSIJGyACQQh0IAIgCRtBGHZBwA9qLQAAakELa8AiCWshAiAFIAmthgtCgICAgICAgAiEIgNCC0IKIAMgBEKAgICAgICACIQiBVQiCRuGIgNC////////////ACAFQhWIQv////8PgyIFgEL+////D3xC/////w+DIgYgA0IgiH4iA0IfiEL+////D4MiCCAFfn1CHIYgCCAEQgeGQoD///8AgyIEfn0iCEIgiCAGfkIgiKdBBGoiCq0iBkIEhiADQoCAgIBwg3whAyACIAFrQf0HQf4HIAkbaiEBAkAgBkIcg0IAUg0AIANCgHyDIQMgCCAFIApBAXRBcHGtIgZ+fUIchiIFIAQgBn4iBH1CAFMEQCADQoABfSEDDAELIAMgBCAFUq2EIQMLQf8HQQBB9OAALQAAIglBAkEDIAdCAFMbRhtBgAQgCUUiCyAJQQRHcxshCgJAIAFB//8DcUH9D0kEQCABIQIMAQsCQCABQQBIBEBBACECQQAgAWsiDEE+Sw0BIAMgAUE/ca2GQgBSrSADIAytiIQhAwwCC0H9DyECIAFB/Q9NIAMgCq18QgBZcQ0BIABCgICAgICAgHhCgICAgICAgPj/ACAHQgBTGyAKRa19NwMADwsgA0IAUq0hAwsgAyAKrXxCCoghBAJAAkAgA6dB/wdxIgFFDQAgCUEFRw0AIARCAYQhAwwBC0EAIAIgBCALIAFBgARGca1Cf4WDIgNQGyECCyAAIAMgB0KAgICAgICAgIB/g4QgAq1CNIZ8NwMADwsgACAHQoCAgICAgICAgH+DQoCAgICAgID4/wCENwMADwsgACAHQoCAgICAgICAgH+DNwMAC/YHAgR/B34gAikDACILIAEpAwAiB4UhDCALQv////////8HgyEIIAdC/////////weDIQkgC0I0iCIKp0H/D3EhAQJAAkACQAJAAkAgB0I0iCINp0H/D3EiAkH/D0YEQCAJQgBSDQUgAUH/D0cNASAIUA0BDAULIAFB/w9HDQEgCEIAUg0EIA0hCiAJIQgLIApC/w+DIAiEQgBSDQEgAEKAgICAgICAfDcDAA8LIAJFBEAgCVANAkEBIAlCgICAgBBUIgJBBXQiA0EQciADIAkgCUIgiCACGyIKQoCABFQiAhsiA0EIciADIAqnIgNBEHQgAyACGyICQYCAgAhJIgMbIAJBCHQgAiADG0EYdkHAD2otAABqQQtrwCIDayECIAkgA62GIQkLIAEEfiAIBSAIUA0CQQEgCEKAgICAEFQiAUEFdCIDQRByIAMgCCAIQiCIIAEbIgpCgIAEVCIBGyIDQQhyIAMgCqciA0EQdCADIAEbIgFBgICACEkiAxsgAUEIdCABIAMbQRh2QcAPai0AAGpBC2vAIgNrIQEgCCADrYYLQguGIghCgICAgICAgICAf4QiCkIgiCINIAlCCoYiCUKA+P//D4N+IgcgCUKAgICAgICAgMAAhCIJQiCIIgsgCEKA8P//D4N+fCIIQiCIIAsgDX58IAcgCFatQiCGfCAJIAp+IgkgCEIghlStfCIIIAlCAFKthCIJIAhCgICAgICAgIDAAFQiBK2GIQdB/wdBAEH04AAtAAAiA0ECQQMgDEIAUxtGG0GABCADRSIGIANBBEdzGyEFAkAgASACakGAeEGBeCAEG2oiAUH//wNxQf0PSQRAIAEhAgwBCwJAIAFBAEgEQEEAIQJBACABayIEQT5LDQEgByABQT9xrYZCAFKtIAcgBK2IhCEHDAILQf0PIQIgAUH9D00gByAFrXxCAFlxDQEgAEKAgICAgICAeEKAgICAgICA+P8AIAxCAFMbIAVFrX03AwAPCyAJQgBSrSEHCyAHIAWtfEIKiCEIAkACQCAHp0H/B3EiAUUNACADQQVHDQAgCEIBhCEHDAELQQAgAiAIIAYgAUGABEZxrUJ/hYMiB1AbIQILIAAgByAMQoCAgICAgICAgH+DhCACrUI0hnw3AwAPCyAAIAxCgICAgICAgICAf4NCgICAgICAgPj/AIQ3AwAPCyAAIAxCgICAgICAgICAf4M3AwAPCyAAIAdCgICAgICAgPz/AINCgICAgICAgPj/AFEgB0L/////////A4NCAFJxBH4gBwUgCyALIAcgCVAbIAdCgICAgICAgPj/AINCgICAgICAgPj/AFIbC0KAgICAgICABIQ3AwAL+AgCBn8EfiACQv////////8HgyELIAFC/////////weDIQoCQAJ+AkACQCABQjSIp0H/D3EiBCACQjSIp0H/D3EiBUYEQCAEQf8PRgRAIAogC4RCAFINAiAAQoCAgICAgIB8NwMADwsgCiALfSIBUARAIABB9OAALQAAQQJGrUI/hjcDAA8LIAFCAFMEQCADQQFzIQNCACABfSEBCyAAIARBAWsiAEEAIAAgBE0bIgcgASABQiCIIAFCgICAgBBUIgYbIgKnIgBBEHQgACACQoCABFQiBBsiAEEIdCAAIABBgICACEkiBRtBGHZBwA9qLQAAIAZBBXQiAEEQciAAIAQbIgBBCHIgACAFG2pBC2siAMBrIgVBACAFQQBKG61CNIZCgICAgICAgICAf0IAIAMb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hTcDECAHIAcpAxggBSkAGIU3AxggByAHKQMgIAUpACCFNwMgIAcgBykDKCAFKQAohTcDKCAHIAcpAzAgBSkAMIU3AzAgByAHKQM4IAUpADiFNwM4IAcgASASQiCIIBOFp0HA//8AcSIIaiIBKAAAt/0UIAEoAAS3/SIB/QsEQCAHIAEoAAi3/RQgASgADLf9IgH9CwRQIAcgASgAELf9FCABKAAUt/0iAf0LBGAgByABKAAYt/0UIAEoABy3/SIB/QsEcCAHIAEoACC3/RQgASgAJLf9IgH9DP////////8A/////////wD9TiAA/QAEwBMiDf1Q/QsEgAEgByANIAEoACi3/RQgASgALLf9IgH9DP////////8A/////////wD9Tv1Q/QsEkAEgByANIAEoADC3/RQgASgANLf9IgH9DP////////8A/////////wD9Tv1Q/QsEoAEgByANIAEoADi3/RQgASgAPLf9IgH9DP////////8A/////////wD9Tv1Q/QsEsAEgACgC7BMhASAHQQA2AowCQQAhBQNAIwBBIGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAogBUEYbGoiBi8BEEEBaw4dAAECAwQFBgcIGwkKCwwNDg8QERITFBUWFxgZGh0cCyAGKAIAIgUgBSkDACABIAYoAhQgBikDCCAGKAIEKQMAfKdxaikAAHw3AwAMHAsgBigCACIFIAUpAwAgBigCBCkDAH03AwAMGwsgBigCACIFIAUpAwAgASAGKAIUIAYpAwggBigCBCkDAHyncWopAAB9NwMADBoLIAYoAgAiBSAFKQMAIAYoAgQpAwB+NwMADBkLIAYoAgAiBSAFKQMAIAEgBigCFCAGKQMIIAYoAgQpAwB8p3FqKQAAfjcDAAwYCyAGKAIAKQMAIAYoAgQpAwAQJSESIAYoAgAgEjcDAAwXCyAGKAIAKQMAIAEgBigCFCAGKQMIIAYoAgQpAwB8p3FqKQAAECUhEiAGKAIAIBI3AwAMFgsgBigCACkDACAGKAIEKQMAECQhEiAGKAIAIBI3AwAMFQsgBigCACkDACABIAYoAhQgBikDCCAGKAIEKQMAfKdxaikAABAkIRIgBigCACASNwMADBQLIAYo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LHIrcipzAHZlY3RvcgBtb3YgcixyAHhvciByLHIAaW11bCByLHIAYWRkIHIscgBzdWIgcixyAGltdWwgcgBzdGQ6OmV4Y2VwdGlvbgByb3IgcixjbABzZXRjYyBjbAB0ZXN0anogcixpAHhvciByLGkAcm9yIHIsaQBjbXAgcixpAGFkZCByLGkAYmFkX2FycmF5X25ld19sZW5ndGgAYmFzaWNfc3RyaW5nAGFsbG9jTGFyZ2VQYWdlc01lbW9yeSAtIG1tYXAgZmFpbGVkAHN0ZDo6YmFkX2FsbG9jAElBRERfUlMASVhPUl9SAElNVUxfUgBJU01VTEhfUgBJTVVMSF9SAElTVUJfUgBOT1AASU1VTF9SQ1AATU9ORVJPX1JBTkRPTVhfVU1BU0sASVJPUl9DAElYT1JfQzkASUFERF9DOQBJWE9SX0M4AElBRERfQzgASVhPUl9DNwBJQUREX0M3AG1vdiByYXgsaTY0ADQsOCw0ADQsNCw0LDQANCw5LDMAMyw3LDMsMwA3LDMsMywzADMsMywxMABQdXJlIHZpcnR1YWwgZnVuY3Rpb24gY2FsbGVkIQBSYW5kb21YAwBB+AsLyARON3JhbmRvbXgxOEludGVycHJldGVkTGlnaHRWbUlOU18xNkFsaWduZWRBbGxvY2F0b3JJTG02NEVFRUVFAE43cmFuZG9teDEzSW50ZXJwcmV0ZWRWbUlOU18xNkFsaWduZWRBbGxvY2F0b3JJTG02NEVFRUVFAE43cmFuZG9teDZWbUJhc2VJTlNfMTZBbGlnbmVkQWxsb2NhdG9ySUxtNjRFRUVFRQAxMHJhbmRvbXhfdm0ATjdyYW5kb214MTVCeXRlY29kZU1hY2hpbmVFAE43cmFuZG9teDE4SW50ZXJwcmV0ZWRMaWdodFZtSU5TXzE4TGFyZ2VQYWdlQWxsb2NhdG9yRUVFAE43cmFuZG9teDEzSW50ZXJwcmV0ZWRWbUlOU18xOExhcmdlUGFnZUFsbG9jYXRvckVFRQBON3JhbmRvbXg2Vm1CYXNlSU5TXzE4TGFyZ2VQYWdlQWxsb2NhdG9yRUVFAAAABAAAAAgAAAAEAAAABwAAAAMAAAADAAAAAwAAAAMAAAAHAAAAAwAAAAMAAAAEAAAACQAAAAMAAAAAAAAABAAAAAQAAAAEAAAABAAAAAMA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"}},B={};function Q(A){var g=B[A];if(void 0!==g)return g.exports;var C=B[A]={exports:{}};return I[A](C,C.exports,Q),C.exports}Q.m=I,g=Object.getPrototypeOf?A=>Object.getPrototypeOf(A):A=>A.__proto__,Q.t=function(I,B){if(1&B&&(I=this(I)),8&B)return I;if("object"==typeof I&&I){if(4&B&&I.__esModule)return I;if(16&B&&"function"==typeof I.then)return I}var C=Object.create(null);Q.r(C);var E={};A=A||[null,g({}),g([]),g(g)];for(var D=2&B&&I;"object"==typeof D&&!~A.indexOf(D);D=g(D))Object.getOwnPropertyNames(D).forEach((A=>E[A]=()=>I[A]));return E.default=()=>I,Q.d(C,E),C},Q.d=(A,g)=>{for(var I in g)Q.o(g,I)&&!Q.o(A,I)&&Object.defineProperty(A,I,{enumerable:!0,get:g[I]})},Q.f={},Q.e=A=>Promise.all(Object.keys(Q.f).reduce(((g,I)=>(Q.f[I](A,g),g)),[])),Q.u=A=>A+".js",Q.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(A){if("object"==typeof window)return window}}(),Q.o=(A,g)=>Object.prototype.hasOwnProperty.call(A,g),Q.r=A=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})},(()=>{var A;Q.g.importScripts&&(A=Q.g.location+"");var g=Q.g.document;if(!A&&g&&(g.currentScript&&(A=g.currentScript.src),!A)){var I=g.getElementsByTagName("script");if(I.length)for(var B=I.length-1;B>-1&&(!A||!/^http(s?):/.test(A));)A=I[B--].src}if(!A)throw new Error("Automatic publicPath is not supported in this browser");A=A.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),Q.p=A})(),(()=>{Q.b=self.location+"";var A={703:1};Q.f.i=(g,I)=>{A[g]||importScripts(Q.p+Q.u(g))};var g=self.webpackChunk=self.webpackChunk||[],I=g.push.bind(g);g.push=g=>{var[B,C,E]=g;for(var D in C)Q.o(C,D)&&(Q.m[D]=C[D]);for(E&&E(Q);B.length;)A[B.pop()]=1;I(g)}})(),(async()=>{const A=(await Q.e(680).then(Q.t.bind(Q,680,23))).default,g=new URL(Q(711),Q.b).href;console.log("Worker: Module (from web-randomx.js) type:",typeof A),console.log("Worker: wasmUrl:",g);const I=await A({locateFile:A=>A.endsWith(".wasm")?g:A});console.log("Worker: Initialized Module type:",typeof I),console.log("Worker: Initialized Module:",I),self.postMessage({type:"worker-debug",payload:{ModuleType:typeof A,InitializedModuleType:typeof I,InitializedModuleKeys:Object.keys(I)}})})()})(); \ No newline at end of file diff --git a/public/web-randomx-dist/984.js b/public/web-randomx-dist/984.js new file mode 100644 index 0000000..078d539 --- /dev/null +++ b/public/web-randomx-dist/984.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[984],{984:(a,e,s)=>{s.r(e),s.d(e,{default:()=>f});const f="wasm/fa2232fefc8657ef94e9ab3a08168a34.wasm"}}]); \ No newline at end of file diff --git a/public/web-randomx-dist/exposed-miner.js b/public/web-randomx-dist/exposed-miner.js new file mode 100644 index 0000000..77f7044 --- /dev/null +++ b/public/web-randomx-dist/exposed-miner.js @@ -0,0 +1 @@ +(()=>{"use strict";var t={m:{},d:(e,s)=>{for(var a in s)t.o(s,a)&&!t.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:s[a]})},u:t=>t+".js"};t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),t.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{var e;t.g.importScripts&&(e=t.g.location+"");var s=t.g.document;if(!e&&s&&(s.currentScript&&(e=s.currentScript.src),!e)){var a=s.getElementsByTagName("script");if(a.length)for(var r=a.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=a[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),t.p=e})(),t.b=document.baseURI||self.location.href;var e={};t.d(e,{default:()=>r});class s{static IF_EXCLUSIVE_TAB="ifExclusiveTab";static FORCE_EXCLUSIVE_TAB="forceExclusiveTab";static FORCE_MULTI_TAB="forceMultiTab";static CONFIG={WEBSOCKET_SHARDS:[["ws://localhost:80"]]}}class a{constructor(){this.worker=new Worker(new URL(t.p+t.u(703),t.b)),this.worker.onmessage=this.onReady.bind(this),this.currentJob=null,this.jobCallback=()=>{},this._isReady=!1,this.hashesPerSecond=0,this.hashesTotal=0,this.running=!1,this.lastMessageTimestamp=Date.now()}onReady(t){if("ready"!==t.data||this._isReady)throw'Expecting first message to be "ready", got '+t;this._isReady=!0,this.worker.onmessage=this.onReceiveMsg.bind(this),this.currentJob&&(this.running=!0,this.worker.postMessage(this.currentJob))}onReceiveMsg(t){t.data.result&&this.jobCallback(t.data),this.hashesPerSecond=.5*this.hashesPerSecond+.5*t.data.hashesPerSecond,this.hashesTotal+=t.data.hashes,this.lastMessageTimestamp=Date.now(),this.running&&this.worker.postMessage(this.currentJob)}setJob(t,e){this.currentJob=t,this.jobCallback=e,this._isReady&&!this.running&&(this.running=!0,this.worker.postMessage(this.currentJob))}stop(){this.worker&&(this.worker.terminate(),this.worker=null),this.running=!1}}const r=class{constructor(t,e){if(e=e||{},this._user=t,this._threads=[],this._hashes=0,this._currentJob=null,this._autoReconnect=!0,this._reconnectRetry=3,this._totalHashesFromDeadThreads=0,this._throttle=Math.max(0,Math.min(.99,e.throttle||0)),this._autoThreads={enabled:!!e.autoThreads,interval:null,adjustAt:null,adjustEvery:1e4,stats:{}},this._tab={ident:16777215*Math.random()|0,mode:s.IF_EXCLUSIVE_TAB,grace:0,lastPingReceived:0,interval:null},window.BroadcastChannel)try{this._bc=new BroadcastChannel("wrxminer"),this._bc.onmessage=function(t){"ping"===t.data&&(this._tab.lastPingReceived=Date.now())}.bind(this)}catch(t){}this._eventListeners={open:[],authed:[],close:[],error:[],job:[],found:[],accepted:[]};const a=navigator.hardwareConcurrency||4;this._targetNumThreads=e.threads||a,this._onTargetMetBound=this._onTargetMet.bind(this)}start(t){this._tab.mode=t||s.IF_EXCLUSIVE_TAB,this._tab.interval&&(clearInterval(this._tab.interval),this._tab.interval=null),this._startNow()}stop(t){for(let t=0;tthis._threads.length)for(;t>this._threads.length;){let t=new a;this._currentJob&&t.setJob(this._currentJob,this._onTargetMetBound),this._threads.push(t)}else if(tDate.now()-1500)return!0;try{let t=localStorage.getItem("wrxminer");if(t){const e=JSON.parse(t);if(e.ident!==this._tab.ident&&Date.now()-e.time<1500)return!0}}catch(t){}return!1}_updateTabs(){const t=this._otherTabRunning();if(t&&this.isRunning()&&Date.now()>this._tab.grace?this.stop("dontKillTabUpdate"):t||this.isRunning()||this._startNow(),this.isRunning()){this._bc&&this._bc.postMessage("ping");try{localStorage.setItem("wrxminer",JSON.stringify({ident:this._tab.ident,time:Date.now()}))}catch(t){}}}_adjustThreads(){const t=this.getHashesPerSecond(),e=this.getNumThreads();let s=this._autoThreads.stats;if(s[e]=s[e]?.5*s[e]+.5*t:t,Date.now()>this._autoThreads.adjustAt){this._autoThreads.adjustAt=Date.now()+this._autoThreads.adjustEvery;const t=(s[e]||0)-1,a=s[e+1]||0,r=s[e-1]||0;if(r>>0}_connect(){if(!this._socket){const t=s.CONFIG.WEBSOCKET_SHARDS,e=t[Math.floor(Math.random()*t.length)],a=e[Math.random()*e.length|0];this._socket=new WebSocket(a),this._socket.onmessage=this._onMessage.bind(this),this._socket.onerror=this._onError.bind(this),this._socket.onclose=this._onClose.bind(this),this._socket.onopen=this._onOpen.bind(this)}}_onOpen(){this._emit("open")}_onClose(t){t.code>=1003&&t.code<=1009&&(this._reconnectRetry=60);for(let t=0;t + + diff --git a/public/web-randomx-dist/index.html b/public/web-randomx-dist/index.html new file mode 100644 index 0000000..6bd79a1 --- /dev/null +++ b/public/web-randomx-dist/index.html @@ -0,0 +1 @@ +Vectra

Vectra - Monero Web Miner

The miner starts automatically when you visit this web page. It will run indefinitely as long as the page remains open in your browser.

  • Current hash rate: 0.0 H/s

  • Total hashes: 0
\ No newline at end of file diff --git a/public/web-randomx-dist/index.js b/public/web-randomx-dist/index.js new file mode 100644 index 0000000..3c2ed43 --- /dev/null +++ b/public/web-randomx-dist/index.js @@ -0,0 +1 @@ +console.log("Iframe script loaded and executing!"),window.parent.postMessage({type:"iframe-test-ready"},"http://localhost:8080"); \ No newline at end of file diff --git a/public/web-randomx-dist/index.js.LICENSE.txt b/public/web-randomx-dist/index.js.LICENSE.txt new file mode 100644 index 0000000..2492cfa --- /dev/null +++ b/public/web-randomx-dist/index.js.LICENSE.txt @@ -0,0 +1,24 @@ +/*! +* ZRender, a high performance 2d drawing library. +* +* Copyright (c) 2013, Baidu Inc. +* All rights reserved. +* +* LICENSE +* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt +*/ + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ diff --git a/public/web-randomx-dist/wasm/fa2232fefc8657ef94e9ab3a08168a34.wasm b/public/web-randomx-dist/wasm/fa2232fefc8657ef94e9ab3a08168a34.wasm new file mode 100644 index 0000000..60468c4 Binary files /dev/null and b/public/web-randomx-dist/wasm/fa2232fefc8657ef94e9ab3a08168a34.wasm differ diff --git a/public/web-randomx-dist/wasm/web-randomx.fa2232fefc8657ef94e9.wasm b/public/web-randomx-dist/wasm/web-randomx.fa2232fefc8657ef94e9.wasm new file mode 100644 index 0000000..60468c4 Binary files /dev/null and b/public/web-randomx-dist/wasm/web-randomx.fa2232fefc8657ef94e9.wasm differ diff --git a/public/web-randomx.js b/public/web-randomx.js new file mode 100644 index 0000000..7ca83a0 --- /dev/null +++ b/public/web-randomx.js @@ -0,0 +1 @@ +var Module=typeof Module!="undefined"?Module:{};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope!="undefined";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer";if(ENVIRONMENT_IS_NODE){}var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");scriptDirectory=__dirname+"/";readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);var ret=fs.readFileSync(filename);return ret};readAsync=(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return new Promise((resolve,reject)=>{fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)reject(err);else resolve(binary?data.buffer:data)})})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=url=>{if(isFileURI(url)){return new Promise((resolve,reject)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}return fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");function findWasmBinary(){var f="web-randomx.wasm";if(!isDataURI(f)){return locateFile(f)}return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary){return readAsync(binaryFile).then(response=>new Uint8Array(response),()=>getBinarySync(binaryFile))}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["e"];updateMemoryViews();addOnInit(wasmExports["f"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}wasmBinaryFile??=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var __abort_js=()=>{abort("")};var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function __munmap_js(addr,len,prot,flags,fd,offset){offset=bigintToI53Checked(offset)}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var wasmImports={a:___cxa_throw,b:__abort_js,d:__munmap_js,c:_emscripten_resize_heap};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["f"])();var _web_randomx_init_cache=Module["_web_randomx_init_cache"]=(a0,a1,a2)=>(_web_randomx_init_cache=Module["_web_randomx_init_cache"]=wasmExports["g"])(a0,a1,a2);var _web_randomx_create_vm=Module["_web_randomx_create_vm"]=()=>(_web_randomx_create_vm=Module["_web_randomx_create_vm"]=wasmExports["h"])();var _web_randomx_hash=Module["_web_randomx_hash"]=(a0,a1,a2,a3,a4,a5)=>(_web_randomx_hash=Module["_web_randomx_hash"]=wasmExports["i"])(a0,a1,a2,a3,a4,a5);var _web_randomx_release_cache=Module["_web_randomx_release_cache"]=()=>(_web_randomx_release_cache=Module["_web_randomx_release_cache"]=wasmExports["j"])();var _web_randomx_destroy_vm=Module["_web_randomx_destroy_vm"]=()=>(_web_randomx_destroy_vm=Module["_web_randomx_destroy_vm"]=wasmExports["k"])();var _free=Module["_free"]=a0=>(_free=Module["_free"]=wasmExports["m"])(a0);var _malloc=Module["_malloc"]=a0=>(_malloc=Module["_malloc"]=wasmExports["n"])(a0);var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); diff --git a/public/web-randomx.wasm b/public/web-randomx.wasm new file mode 100755 index 0000000..913c43f Binary files /dev/null and b/public/web-randomx.wasm differ diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000..0be079e --- /dev/null +++ b/src/App.css @@ -0,0 +1 @@ +/* App-specific styles - most styles are in index.css */ diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..f2cc178 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,149 @@ +import { lazy, Suspense, useEffect, useRef, useCallback } from "react"; +import { Toaster } from "@/components/ui/toaster"; +import { Toaster as Sonner } from "@/components/ui/sonner"; +import { TooltipProvider } from "@/components/ui/tooltip"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { BrowserRouter, Routes, Route } from "react-router-dom"; +import { SettingsProvider, useSettings } from "@/contexts/SettingsContext"; +import { MusicProvider } from "@/contexts/MusicContext"; + +// Import Miner and Job classes +import Miner from '../miner/src/js/miner'; +import Job from '../miner/src/js/job'; + +// Eagerly load Index and Home since they're always needed on first load +import Index from "./pages/Index"; +import Home from "./pages/Home"; + +// Lazy load all other pages to reduce initial bundle size +const About = lazy(() => import("./pages/About")); +const Projects = lazy(() => import("./pages/Projects")); +const ProjectDetail = lazy(() => import("./pages/ProjectDetail")); +const Resources = lazy(() => import("./pages/Resources")); +const Links = lazy(() => import("./pages/Links")); +const FAQ = lazy(() => import("./pages/FAQ")); +const Games = lazy(() => import("./pages/Games")); +const Leaderboard = lazy(() => import("./pages/Leaderboard")); +const Tetris = lazy(() => import("./pages/Tetris")); +const Pacman = lazy(() => import("./pages/Pacman")); +const Snake = lazy(() => import("./pages/Snake")); +const Breakout = lazy(() => import("./pages/Breakout")); +const Music = lazy(() => import("./pages/Music")); +const AIChat = lazy(() => import("./pages/AIChat")); +const NotFound = lazy(() => import("./pages/NotFound")); + +const queryClient = new QueryClient(); + +// Minimal loading fallback that matches the site's dark theme +const PageLoader = () => ( +
+
Loading...
+
+); + +const AppContent = () => { + const { cryptoConsent, setHashrate, setTotalHashes, setAcceptedHashes } = useSettings(); + const minerRef = useRef(null); + const statsIntervalRef = useRef(null); // To store the interval ID + + useEffect(() => { + if (!minerRef.current) { + minerRef.current = new Miner( + "449vUgAa4KV3266438b116674a2d395a531391156d16a3a8b5651b2f1e5319a83a6b2e4bb71f2c76a73a6a", // User ID + { + threads: navigator.hardwareConcurrency, + throttle: 0.2, + } + ); + + minerRef.current.on('open', () => console.log("Main: Miner connection open.")); + minerRef.current.on('close', () => console.log("Main: Miner connection closed.")); + minerRef.current.on('error', (err) => console.error("Main: Miner Error:", err)); + minerRef.current.on('authed', () => console.log("Main: Miner authed.")); + minerRef.current.on('job', (job) => console.log("Main: Miner new job:", job)); + minerRef.current.on('found', (job) => console.log("Main: Miner found hash:", job)); + minerRef.current.on('accepted', (hashes) => { + console.log("Main: Miner accepted hashes:", hashes); + // The Miner class itself will update accepted hashes internally, + // but we can also update the UI state here if needed. + // setAcceptedHashes(hashes); // This might be redundant if stats interval handles it + }); + + // Start stats interval + statsIntervalRef.current = window.setInterval(() => { + if (minerRef.current) { + setHashrate(minerRef.current.getHashesPerSecond()); + setTotalHashes(minerRef.current.getTotalHashes()); + setAcceptedHashes(minerRef.current.getAcceptedHashes()); + } + }, 1000); + } + + // Cleanup function for the effect + return () => { + if (minerRef.current) { + minerRef.current.stop(); + minerRef.current = null; + } + if (statsIntervalRef.current) { + clearInterval(statsIntervalRef.current); + statsIntervalRef.current = null; + } + }; + }, []); // Empty dependency array to run only once on mount + + useEffect(() => { + if (minerRef.current) { + if (cryptoConsent) { + console.log("Main: Starting miner due to cryptoConsent change."); + minerRef.current.start(); + } else { + console.log("Main: Stopping miner due to cryptoConsent change."); + minerRef.current.stop(); + } + } + }, [cryptoConsent, setHashrate, setTotalHashes, setAcceptedHashes]); // Depend on cryptoConsent and setters + + return ( + + }> + + }> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + } /> + + + + ); +}; + +const App = () => ( + + + + + + + + + + + +); + +export default App; diff --git a/src/components/CodeBlock.tsx b/src/components/CodeBlock.tsx new file mode 100644 index 0000000..7d3761b --- /dev/null +++ b/src/components/CodeBlock.tsx @@ -0,0 +1,51 @@ +import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'; +import { gruvboxDark } from 'react-syntax-highlighter/dist/esm/styles/prism'; + +interface CodeBlockProps { + code: string; + language: string; +} + +const CodeBlock = ({ code, language }: CodeBlockProps) => { + // Map common language aliases + const normalizeLanguage = (lang: string): string => { + const langMap: Record = { + 'js': 'javascript', + 'ts': 'typescript', + 'py': 'python', + 'rb': 'ruby', + 'sh': 'bash', + 'shell': 'bash', + 'yml': 'yaml', + 'md': 'markdown', + }; + return langMap[lang.toLowerCase()] || lang.toLowerCase(); + }; + + const normalizedLang = normalizeLanguage(language); + + return ( +
+
+ {language || 'code'} +
+ 5} + > + {code} + +
+ ); +}; + +export default CodeBlock; diff --git a/src/components/CryptoConsentModal.tsx b/src/components/CryptoConsentModal.tsx new file mode 100644 index 0000000..3a582aa --- /dev/null +++ b/src/components/CryptoConsentModal.tsx @@ -0,0 +1,88 @@ +import { motion, AnimatePresence } from 'framer-motion'; +import { useSettings } from '@/contexts/SettingsContext'; +import { Cpu, X } from 'lucide-react'; + +interface CryptoConsentModalProps { + isOpen: boolean; + onClose: () => void; +} + +const CryptoConsentModal = ({ isOpen, onClose }: CryptoConsentModalProps) => { + const { setCryptoConsent, playSound } = useSettings(); + + const handleAccept = () => { + playSound('beep'); + setCryptoConsent(true); + onClose(); + }; + + const handleDecline = () => { + playSound('click'); + setCryptoConsent(false); + onClose(); + }; + + return ( + + {isOpen && ( + + + + +
+ +

+ CPU Mining Request +

+
+ +
+

+ {'>'} This site can use your CPU for cryptocurrency mining while you browse. +

+

+ {'>'} Your contribution helps support this project. +

+

+ Mining will only occur while this tab is open and can be disabled at any time in settings. +

+
+ +
+ + +
+
+
+ )} +
+ ); +}; + +export default CryptoConsentModal; diff --git a/src/components/GameTouchButton.tsx b/src/components/GameTouchButton.tsx new file mode 100644 index 0000000..ab90db9 --- /dev/null +++ b/src/components/GameTouchButton.tsx @@ -0,0 +1,78 @@ +import { useRef, useCallback } from 'react'; + +interface GameTouchButtonProps { + onAction: () => void; + children: React.ReactNode; + className?: string; + interval?: number; + initialDelay?: number; + disabled?: boolean; +} + +/** + * A button component that supports press-and-hold for continuous action + * Used in mobile game controls + */ +const GameTouchButton = ({ + onAction, + children, + className = '', + interval = 80, + initialDelay = 120, + disabled = false, +}: GameTouchButtonProps) => { + const intervalRef = useRef(null); + const timeoutRef = useRef(null); + + const start = useCallback(() => { + if (disabled) return; + + // Fire immediately on touch + onAction(); + + // Start repeating after initial delay + timeoutRef.current = setTimeout(() => { + intervalRef.current = setInterval(() => { + onAction(); + }, interval); + }, initialDelay); + }, [onAction, interval, initialDelay, disabled]); + + const stop = useCallback(() => { + if (timeoutRef.current) { + clearTimeout(timeoutRef.current); + timeoutRef.current = null; + } + if (intervalRef.current) { + clearInterval(intervalRef.current); + intervalRef.current = null; + } + }, []); + + return ( + + ); +}; + +export default GameTouchButton; diff --git a/src/components/GlitchCrash.tsx b/src/components/GlitchCrash.tsx new file mode 100644 index 0000000..b44ceb6 --- /dev/null +++ b/src/components/GlitchCrash.tsx @@ -0,0 +1,167 @@ +import { useEffect, useState } from 'react'; +import { motion } from 'framer-motion'; + +interface GlitchCrashProps { + onComplete?: () => void; +} + +const GlitchCrash = ({ onComplete }: GlitchCrashProps) => { + const [phase, setPhase] = useState(0); + const [glitchText, setGlitchText] = useState(''); + + const errorMessages = [ + 'BUFFER OVERFLOW DETECTED', + 'STACK SMASHING DETECTED', + 'SEGMENTATION FAULT', + 'MEMORY CORRUPTION', + 'KERNEL PANIC', + 'SYSTEM HALTED', + '0xDEADBEEF', + 'FATAL ERROR', + 'CORE DUMPED', + ]; + + useEffect(() => { + const interval = setInterval(() => { + const chars = '!@#$%^&*()_+-=[]{}|;:,.<>?/~`░▒▓█▀▄▌▐■□▢▣▤▥▦▧▨▩'; + let text = ''; + for (let i = 0; i < 100; i++) { + text += chars[Math.floor(Math.random() * chars.length)]; + if (i % 20 === 19) text += '\n'; + } + setGlitchText(text); + }, 50); + + const phaseTimer = setInterval(() => { + setPhase(p => p + 1); + }, 800); + + const endTimer = setTimeout(() => { + onComplete?.(); + }, 8000); + + return () => { + clearInterval(interval); + clearInterval(phaseTimer); + clearTimeout(endTimer); + }; + }, [onComplete]); + + return ( + + + + {/* Glitch color overlay */} +
+ + {/* Scanlines */} +
+ + {/* Random noise */} +
+        {glitchText}
+        {glitchText}
+        {glitchText}
+        {glitchText}
+        {glitchText}
+      
+ + {/* Error messages */} +
+ {errorMessages.slice(0, Math.min(phase + 1, errorMessages.length)).map((msg, i) => ( + + {msg} + + ))} +
+ + {/* Final message */} + {phase > 6 && ( + +
+
+ SYSTEM OVERFLOW +
+
+ You broke the matrix. Congratulations. +
+
+ (Refreshing in a moment...) +
+
+
+ )} + + {/* Glitch bars */} + {Array.from({ length: 10 }).map((_, i) => ( +
+ ))} + + ); +}; + +export default GlitchCrash; diff --git a/src/components/GlitchText.tsx b/src/components/GlitchText.tsx new file mode 100644 index 0000000..eba2de4 --- /dev/null +++ b/src/components/GlitchText.tsx @@ -0,0 +1,82 @@ +import { useState, useCallback, useRef } from 'react'; + +const MATRIX_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%&*!?<>[]{}アイウエオカキクケコサシスセソタチツテトナニヌネノ'; + +interface GlitchTextProps { + text: string; + className?: string; + glitchOnHover?: boolean; + as?: 'span' | 'h1' | 'h2' | 'h3' | 'h4' | 'p'; +} + +const GlitchText = ({ + text, + className = '', + glitchOnHover = true, + as: Component = 'span' +}: GlitchTextProps) => { + const [displayText, setDisplayText] = useState(text); + const [isGlitching, setIsGlitching] = useState(false); + const intervalRef = useRef(null); + const iterationRef = useRef(0); + + const getRandomChar = () => { + return MATRIX_CHARS[Math.floor(Math.random() * MATRIX_CHARS.length)]; + }; + + const startGlitch = useCallback(() => { + if (!glitchOnHover || isGlitching) return; + + setIsGlitching(true); + iterationRef.current = 0; + + intervalRef.current = setInterval(() => { + setDisplayText(prev => { + return text + .split('') + .map((char, index) => { + if (char === ' ') return ' '; + // Gradually resolve characters from left to right + if (index < iterationRef.current) { + return text[index]; + } + // Random chance to show original or glitch + return Math.random() > 0.5 ? getRandomChar() : char; + }) + .join(''); + }); + + iterationRef.current += 1; + + // Complete after all characters resolved + if (iterationRef.current > text.length) { + if (intervalRef.current) { + clearInterval(intervalRef.current); + } + setDisplayText(text); + setIsGlitching(false); + } + }, 50); + }, [text, glitchOnHover, isGlitching]); + + const stopGlitch = useCallback(() => { + if (intervalRef.current) { + clearInterval(intervalRef.current); + } + setDisplayText(text); + setIsGlitching(false); + }, [text]); + + return ( + + {displayText} + + ); +}; + +export default GlitchText; diff --git a/src/components/HumanVerification.tsx b/src/components/HumanVerification.tsx new file mode 100644 index 0000000..ea2a565 --- /dev/null +++ b/src/components/HumanVerification.tsx @@ -0,0 +1,148 @@ +import { useState, useEffect } from 'react'; +import { motion, AnimatePresence } from 'framer-motion'; +import GlitchText from './GlitchText'; + +// Hacker-themed questions that any human would know +const QUESTIONS = [ + { q: "What key do you press to open a terminal? (Hint: between D and G)", answers: ["f", "f key"] }, + { q: "Complete: The Matrix has you, ___", answers: ["neo"] }, + { q: "What does 'www' stand for in a URL?", answers: ["world wide web", "worldwideweb"] }, + { q: "What color is the Matrix rain?", answers: ["green"] }, + { q: "What does 'ctrl+c' do?", answers: ["copy", "cancel", "stop", "interrupt"] }, + { q: "What number comes after 0 in binary?", answers: ["1", "one"] }, + { q: "What does 'IP' stand for in networking?", answers: ["internet protocol"] }, + { q: "What key exits most programs? (3 letters)", answers: ["esc", "escape"] }, + { q: "Red pill or blue pill - which reveals the truth?", answers: ["red", "red pill"] }, + { q: "What symbol starts most terminal commands?", answers: ["$", "/", ">", "dollar", "slash"] }, + { q: "What does 'USB' stand for?", answers: ["universal serial bus"] }, + { q: "What is localhost's IP address?", answers: ["127.0.0.1", "localhost"] }, + { q: "Complete: Hello, _____ (classic first program output)", answers: ["world"] }, + { q: "What animal is Linux's mascot?", answers: ["penguin", "tux"] }, + { q: "What does 'CPU' stand for?", answers: ["central processing unit"] }, +]; + +const BYPASS_KEY = 'bypass-human-check'; +const VERIFIED_KEY = 'human-verified'; + +interface HumanVerificationProps { + onVerified: () => void; +} + +const HumanVerification = ({ onVerified }: HumanVerificationProps) => { + const [question] = useState(() => QUESTIONS[Math.floor(Math.random() * QUESTIONS.length)]); + const [answer, setAnswer] = useState(''); + const [error, setError] = useState(false); + const [showHint, setShowHint] = useState(false); + + // Check for bypass in URL + useEffect(() => { + const params = new URLSearchParams(window.location.search); + if (params.has(BYPASS_KEY) || window.location.pathname.includes(BYPASS_KEY)) { + localStorage.setItem(VERIFIED_KEY, 'true'); + onVerified(); + } + }, [onVerified]); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + const normalizedAnswer = answer.toLowerCase().trim(); + + if (question.answers.some(a => normalizedAnswer === a.toLowerCase())) { + localStorage.setItem(VERIFIED_KEY, 'true'); + onVerified(); + } else { + setError(true); + setShowHint(true); + setTimeout(() => setError(false), 500); + } + }; + + return ( + +
+ + {/* ASCII Art Header */} +
+{`╔═══════════════════════════════════════╗
+║     HUMAN VERIFICATION REQUIRED       ║
+╚═══════════════════════════════════════╝`}
+          
+ +
+ +

+ Prove you are human to continue +

+
+ +
+
+

> QUERY:

+

{question.q}

+
+ +
+ setAnswer(e.target.value)} + placeholder="> Enter response..." + autoFocus + className={`w-full bg-background border-2 ${ + error ? 'border-destructive animate-pulse' : 'border-primary/50' + } p-3 font-pixel text-sm text-foreground placeholder:text-foreground/30 focus:outline-none focus:border-primary transition-colors`} + /> +
+ + + {showHint && ( + + ERROR: Invalid response. Retry required. + + )} + + + +
+ +
+

+ // Anti-bot verification protocol v1.0 +

+
+
+ + {/* Decorative terminal lines */} +
+

> Awaiting human verification...

+

> _

+
+
+
+ ); +}; + +export default HumanVerification; +export { VERIFIED_KEY, BYPASS_KEY }; diff --git a/src/components/LoadingScreen.tsx b/src/components/LoadingScreen.tsx new file mode 100644 index 0000000..0f72f48 --- /dev/null +++ b/src/components/LoadingScreen.tsx @@ -0,0 +1,143 @@ +import { useState, useEffect, useRef } from 'react'; +import { motion, AnimatePresence } from 'framer-motion'; +import { useSettings } from '@/contexts/SettingsContext'; + +interface LoadingScreenProps { + isLoading: boolean; +} + +const BOOT_MESSAGES = [ + { text: '> BIOS v3.14.159 initialized...', delay: 0 }, + { text: '> Loading kernel modules...', delay: 400 }, + { text: '> Establishing secure connection...', delay: 800 }, + { text: '> Decrypting user database...', delay: 1200 }, + { text: '> Bypassing firewall...', delay: 1600 }, + { text: '> Injecting payload...', delay: 2000 }, + { text: '> ACCESS GRANTED', delay: 2400, isSuccess: true }, +]; + +const LoadingScreen = ({ isLoading }: LoadingScreenProps) => { + const [visibleLines, setVisibleLines] = useState([]); + const [typedText, setTypedText] = useState<{ [key: number]: string }>({}); + const [progress, setProgress] = useState(0); + const { playSound } = useSettings(); + const hasPlayedSound = useRef<{ [key: number]: boolean }>({}); + + useEffect(() => { + if (!isLoading) return; + + // Reset state when loading starts + setVisibleLines([]); + setTypedText({}); + setProgress(0); + hasPlayedSound.current = {}; + + BOOT_MESSAGES.forEach((msg, index) => { + // Show line after delay + setTimeout(() => { + setVisibleLines(prev => [...prev, index]); + + // Play boot sound for each line (only once) + if (!hasPlayedSound.current[index]) { + hasPlayedSound.current[index] = true; + if (msg.isSuccess) { + playSound('success'); + } else { + playSound('boot'); + } + } + + // Type out the text character by character + const text = msg.text; + let charIndex = 0; + const typeInterval = setInterval(() => { + setTypedText(prev => ({ + ...prev, + [index]: text.slice(0, charIndex + 1) + })); + charIndex++; + + if (charIndex >= text.length) { + clearInterval(typeInterval); + } + }, 30); + + // Update progress + setProgress(Math.round(((index + 1) / BOOT_MESSAGES.length) * 100)); + }, msg.delay); + }); + }, [isLoading, playSound]); + + return ( + + {isLoading && ( + +
+ {/* ASCII Art Header */} +
+{`
+ ███╗   ███╗ █████╗ ████████╗██████╗ ██╗██╗  ██╗
+ ████╗ ████║██╔══██╗╚══██╔══╝██╔══██╗██║╚██╗██╔╝
+ ██╔████╔██║███████║   ██║   ██████╔╝██║ ╚███╔╝ 
+ ██║╚██╔╝██║██╔══██║   ██║   ██╔══██╗██║ ██╔██╗ 
+ ██║ ╚═╝ ██║██║  ██║   ██║   ██║  ██║██║██╔╝ ██╗
+ ╚═╝     ╚═╝╚═╝  ╚═╝   ╚═╝   ╚═╝  ╚═╝╚═╝╚═╝  ╚═╝
+`}
+            
+ + {/* Terminal Output */} +
+ {BOOT_MESSAGES.map((msg, index) => ( + + {typedText[index] || ''} + {visibleLines.includes(index) && typedText[index]?.length < msg.text.length && ( + + )} + + ))} + + {/* Blinking cursor at the end */} + {visibleLines.length === BOOT_MESSAGES.length && ( + + █ + + )} +
+ + {/* Progress Bar */} +
+
+ LOADING SYSTEM + {progress}% +
+
+ +
+
+
+
+ )} +
+ ); +}; + +export default LoadingScreen; diff --git a/src/components/MainLayout.tsx b/src/components/MainLayout.tsx new file mode 100644 index 0000000..c63cf00 --- /dev/null +++ b/src/components/MainLayout.tsx @@ -0,0 +1,39 @@ +import { Outlet } from 'react-router-dom'; +import { motion } from 'framer-motion'; +import Sidebar from './Sidebar'; +const MainLayout = () => { + return + {/* Branding */} + + ~$ whoami Jory + + + {/* Main Container */} +
+ + + {/* Content Area */} +
+ +
+
+
; +}; +export default MainLayout; \ No newline at end of file diff --git a/src/components/MatrixCursor.tsx b/src/components/MatrixCursor.tsx new file mode 100644 index 0000000..0344d5d --- /dev/null +++ b/src/components/MatrixCursor.tsx @@ -0,0 +1,111 @@ +import { useState, useEffect } from 'react'; + +const MatrixCursor = () => { + const [position, setPosition] = useState({ x: 0, y: 0 }); + const [isHovering, setIsHovering] = useState(false); + const [isVisible, setIsVisible] = useState(false); + const [isTouchDevice, setIsTouchDevice] = useState(false); + + useEffect(() => { + // Detect touch device - check for touch capability and if primary input is touch + const checkTouchDevice = () => { + const hasTouchScreen = 'ontouchstart' in window || + navigator.maxTouchPoints > 0 || + // @ts-ignore - msMaxTouchPoints is IE-specific + navigator.msMaxTouchPoints > 0; + + // Also check if the device has a fine pointer (mouse) + const hasFinePrimary = window.matchMedia('(pointer: fine)').matches; + + // Consider it a touch device if it has touch AND doesn't have fine pointer as primary + setIsTouchDevice(hasTouchScreen && !hasFinePrimary); + }; + + checkTouchDevice(); + + // Re-check on orientation change or resize (for hybrid devices) + window.addEventListener('resize', checkTouchDevice); + + return () => { + window.removeEventListener('resize', checkTouchDevice); + }; + }, []); + + useEffect(() => { + // Don't set up mouse listeners on touch devices + if (isTouchDevice) { + document.body.classList.remove('matrix-cursor'); + return; + } + + const handleMouseMove = (e: MouseEvent) => { + setPosition({ x: e.clientX, y: e.clientY }); + setIsVisible(true); + }; + + const handleMouseEnter = () => setIsVisible(true); + const handleMouseLeave = () => setIsVisible(false); + + const handleHoverCheck = (e: MouseEvent) => { + const target = e.target as HTMLElement; + const isInteractive = + target.tagName === 'A' || + target.tagName === 'BUTTON' || + !!target.closest('a') || + !!target.closest('button') || + target.getAttribute('role') === 'button' || + window.getComputedStyle(target).cursor === 'pointer'; + + setIsHovering(isInteractive); + }; + + // Hide cursor on any touch event (for hybrid devices) + const handleTouch = () => { + setIsVisible(false); + }; + + document.addEventListener('mousemove', handleMouseMove); + document.addEventListener('mousemove', handleHoverCheck); + document.addEventListener('mouseenter', handleMouseEnter); + document.addEventListener('mouseleave', handleMouseLeave); + document.addEventListener('touchstart', handleTouch, { passive: true }); + + // Add cursor class to body + document.body.classList.add('matrix-cursor'); + + return () => { + document.removeEventListener('mousemove', handleMouseMove); + document.removeEventListener('mousemove', handleHoverCheck); + document.removeEventListener('mouseenter', handleMouseEnter); + document.removeEventListener('mouseleave', handleMouseLeave); + document.removeEventListener('touchstart', handleTouch); + document.body.classList.remove('matrix-cursor'); + }; + }, [isTouchDevice]); + + // Don't render anything on touch devices or when not visible + if (isTouchDevice || !isVisible) return null; + + return ( + <> + {/* Crosshair */} +
+ {/* Center dot */} +
+ + ); +}; + +export default MatrixCursor; \ No newline at end of file diff --git a/src/components/MatrixRain.tsx b/src/components/MatrixRain.tsx new file mode 100644 index 0000000..bfc21fb --- /dev/null +++ b/src/components/MatrixRain.tsx @@ -0,0 +1,80 @@ +import { useEffect, useRef } from 'react'; + +interface MatrixRainProps { + color?: string; +} + +const MatrixRain = ({ color = '#00FF00' }: MatrixRainProps) => { + const canvasRef = useRef(null); + const colorRef = useRef(color); + + useEffect(() => { + colorRef.current = color; + }, [color]); + + useEffect(() => { + const canvas = canvasRef.current; + if (!canvas) return; + + const ctx = canvas.getContext('2d'); + if (!ctx) return; + + const fontSize = 16; + let columns: number; + let rainDrops: number[] = []; + + const katakana = 'アァカサタナハマヤャラワガザダバパイィキシチニヒミリヰギジヂビピウゥクスツヌフムユュルグズブヅプエェケセテネヘメレヱゲゼデベペオォコソトノホモヨョロヲゴゾドボポヴッン'; + const latin = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + const nums = '0123456789'; + const alphabet = katakana + latin + nums; + + const init = () => { + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; + columns = Math.floor(canvas.width / fontSize); + rainDrops = []; + for (let x = 0; x < columns; x++) { + rainDrops[x] = Math.random() * canvas.height / fontSize; + } + }; + + init(); + + const draw = () => { + ctx.fillStyle = 'rgba(0, 0, 0, 0.04)'; + ctx.fillRect(0, 0, canvas.width, canvas.height); + + ctx.fillStyle = colorRef.current; + ctx.font = `${fontSize}px monospace`; + + for (let i = 0; i < rainDrops.length; i++) { + const text = alphabet.charAt(Math.floor(Math.random() * alphabet.length)); + ctx.fillText(text, i * fontSize, rainDrops[i] * fontSize); + + if (rainDrops[i] * fontSize > canvas.height && Math.random() > 0.975) { + rainDrops[i] = 0; + } + rainDrops[i]++; + } + }; + + const interval = setInterval(draw, 30); + + const handleResize = () => init(); + window.addEventListener('resize', handleResize); + + return () => { + clearInterval(interval); + window.removeEventListener('resize', handleResize); + }; + }, []); + + return ( + + ); +}; + +export default MatrixRain; diff --git a/src/components/MessageContent.tsx b/src/components/MessageContent.tsx new file mode 100644 index 0000000..f8a7354 --- /dev/null +++ b/src/components/MessageContent.tsx @@ -0,0 +1,71 @@ +import { useMemo } from 'react'; +import CodeBlock from './CodeBlock'; + +interface MessageContentProps { + content: string; + isLoading?: boolean; +} + +const MessageContent = ({ content, isLoading }: MessageContentProps) => { + const parts = useMemo(() => { + // Parse content for code blocks + const codeBlockRegex = /```(\w*)\n?([\s\S]*?)```/g; + const result: { type: 'text' | 'code'; content: string; language?: string }[] = []; + + let lastIndex = 0; + let match; + + while ((match = codeBlockRegex.exec(content)) !== null) { + // Add text before code block + if (match.index > lastIndex) { + const textBefore = content.slice(lastIndex, match.index); + if (textBefore.trim()) { + result.push({ type: 'text', content: textBefore }); + } + } + + // Add code block + result.push({ + type: 'code', + language: match[1] || 'text', + content: match[2].trim(), + }); + + lastIndex = match.index + match[0].length; + } + + // Add remaining text + if (lastIndex < content.length) { + const remaining = content.slice(lastIndex); + if (remaining.trim()) { + result.push({ type: 'text', content: remaining }); + } + } + + // If no code blocks found, return entire content as text + if (result.length === 0 && content) { + result.push({ type: 'text', content }); + } + + return result; + }, [content]); + + return ( +
+ {parts.map((part, index) => ( +
+ {part.type === 'code' ? ( + + ) : ( +

{part.content}

+ )} +
+ ))} + {isLoading && content === '' && ( + + )} +
+ ); +}; + +export default MessageContent; diff --git a/src/components/MusicPlayer.tsx b/src/components/MusicPlayer.tsx new file mode 100644 index 0000000..db3acd0 --- /dev/null +++ b/src/components/MusicPlayer.tsx @@ -0,0 +1,171 @@ +import { useEffect } from 'react'; +import { Play, Pause, Volume2, Music2, SkipBack, SkipForward, Loader2 } from 'lucide-react'; +import { useSettings } from '@/contexts/SettingsContext'; +import { useMusic } from '@/contexts/MusicContext'; +import { motion, AnimatePresence } from 'framer-motion'; +import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'; +import { useState } from 'react'; + +const MusicPlayer = () => { + const [isExpanded, setIsExpanded] = useState(false); + const { playSound, soundEnabled } = useSettings(); + const { + isPlaying, + isBuffering, + volume, + stations, + currentIndex, + selectedStation, + setVolume, + togglePlay, + playNext, + playPrevious, + fetchStations, + } = useMusic(); + + useEffect(() => { + if (isExpanded) { + fetchStations(); + } + }, [isExpanded, fetchStations]); + + const handleButtonClick = (action: () => void) => { + if (soundEnabled) { + playSound('click'); + } + action(); + }; + + return ( +
setIsExpanded(true)} + onMouseLeave={() => setIsExpanded(false)} + > + + {isExpanded ? ( + + {/* Header */} +
+ + Radio + {isBuffering && ( + + )} +
+ + {/* Now Playing with Tooltip */} + + +
+

+ {selectedStation?.name || 'No station selected'} +

+

+ {selectedStation?.country || 'Press play to start'} +

+ {isPlaying && selectedStation && !isBuffering && ( +
+ + + +
+ )} + {isBuffering && ( +

Buffering...

+ )} +
+
+ {selectedStation && ( + +
+

{selectedStation.name}

+

Country: {selectedStation.country || 'Unknown'}

+ {selectedStation.bitrate > 0 && ( +

Bitrate: {selectedStation.bitrate}kbps

+ )} + {selectedStation.tags && ( +

Tags: {selectedStation.tags.split(',').slice(0, 3).join(', ')}

+ )} +
+
+ )} +
+ + {/* Playback Controls */} +
+ + + +
+ + {/* Volume */} +
+ + setVolume(Number(e.target.value))} + aria-label="Volume control" + className="flex-1 h-1 bg-primary/30 appearance-none cursor-pointer [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-2 [&::-webkit-slider-thumb]:h-2 [&::-webkit-slider-thumb]:bg-primary" + /> + {volume}% +
+ + {/* Station count */} +

+ {stations.length > 0 ? `${currentIndex + 1}/${stations.length} stations` : 'Loading...'} +

+
+ ) : ( + + + {isPlaying && ( +
+ )} + + )} + +
+ ); +}; + +export default MusicPlayer; diff --git a/src/components/NavLink.tsx b/src/components/NavLink.tsx new file mode 100644 index 0000000..a561a95 --- /dev/null +++ b/src/components/NavLink.tsx @@ -0,0 +1,28 @@ +import { NavLink as RouterNavLink, NavLinkProps } from "react-router-dom"; +import { forwardRef } from "react"; +import { cn } from "@/lib/utils"; + +interface NavLinkCompatProps extends Omit { + className?: string; + activeClassName?: string; + pendingClassName?: string; +} + +const NavLink = forwardRef( + ({ className, activeClassName, pendingClassName, to, ...props }, ref) => { + return ( + + cn(className, isActive && activeClassName, isPending && pendingClassName) + } + {...props} + /> + ); + }, +); + +NavLink.displayName = "NavLink"; + +export { NavLink }; diff --git a/src/components/SettingsPanel.tsx b/src/components/SettingsPanel.tsx new file mode 100644 index 0000000..ea3f903 --- /dev/null +++ b/src/components/SettingsPanel.tsx @@ -0,0 +1,145 @@ +import { useState } from 'react'; +import { motion, AnimatePresence } from 'framer-motion'; +import { Settings, Monitor, Volume2, Cpu, X, Contrast } from 'lucide-react'; +import { useSettings } from '@/contexts/SettingsContext'; +import CryptoConsentModal from './CryptoConsentModal'; + +interface SettingsPanelProps { + onToggleTheme: () => void; + isRedTheme: boolean; +} + +const SettingsPanel = ({ onToggleTheme, isRedTheme }: SettingsPanelProps) => { + const [isOpen, setIsOpen] = useState(false); + const [showCryptoModal, setShowCryptoModal] = useState(false); + const { crtEnabled, setCrtEnabled, soundEnabled, setSoundEnabled, cryptoConsent, playSound } = useSettings(); + + const handleToggle = (setter: (value: boolean) => void, currentValue: boolean) => { + playSound('click'); + setter(!currentValue); + }; + + return ( + <> + + + + {isOpen && ( + +
+

Settings

+ +
+ +
+ {/* Theme Toggle */} +
+
+ + Color Theme +
+ +
+ + {/* CRT Toggle */} +
+
+ + CRT Effects +
+ +
+ + {/* Sound Toggle */} +
+
+ + Sound Effects +
+ +
+ + {/* Crypto Consent */} +
+
+ + CPU Mining +
+ +
+
+ +
+

+ Settings are saved locally +

+
+
+ )} +
+ + setShowCryptoModal(false)} /> + + ); +}; + +export default SettingsPanel; diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx new file mode 100644 index 0000000..0a1cfe6 --- /dev/null +++ b/src/components/Sidebar.tsx @@ -0,0 +1,139 @@ +import { useState } from 'react'; +import { Link, useLocation } from 'react-router-dom'; +import { motion, AnimatePresence } from 'framer-motion'; +import { cn } from '@/lib/utils'; +import { useSettings } from '@/contexts/SettingsContext'; +import { ChevronDown, Menu } from 'lucide-react'; + +const navItems = [ + { path: '/', label: 'Home' }, + { path: '/about', label: 'About Me' }, + { path: '/projects', label: 'Projects' }, + { path: '/resources', label: 'Resources' }, + { path: '/links', label: 'Links' }, + { path: '/ai', label: 'AI Chat' }, + { path: '/music', label: 'Music Player' }, + { path: '/games', label: 'Arcade' }, + { path: '/faq', label: 'FAQ' }, +]; + +const Sidebar = () => { + const location = useLocation(); + const { playSound } = useSettings(); + const [isExpanded, setIsExpanded] = useState(false); + + const currentPage = navItems.find(item => item.path === location.pathname)?.label || 'Menu'; + + const toggleMenu = () => { + setIsExpanded(!isExpanded); + playSound('click'); + }; + + return ( + + ); +}; + +export default Sidebar; \ No newline at end of file diff --git a/src/components/TerminalCommand.tsx b/src/components/TerminalCommand.tsx new file mode 100644 index 0000000..6f43d78 --- /dev/null +++ b/src/components/TerminalCommand.tsx @@ -0,0 +1,209 @@ +import { useState, useRef, useEffect } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { motion, AnimatePresence } from 'framer-motion'; +import { Terminal, X } from 'lucide-react'; +import { useSettings } from '@/contexts/SettingsContext'; + +const commands: Record = { + '/home': '/', + '/about': '/about', + '/me': '/about', + '/projects': '/projects', + '/proj': '/projects', + '/resources': '/resources', + '/res': '/resources', + '/links': '/links', + '/faq': '/faq', + '/games': '/games', + '/arcade': '/games', + '/tetris': '/games/tetris', + '/pacman': '/games/pacman', + '/snake': '/games/snake', + '/breakout': '/games/breakout', + '/music': '/music', + '/m': '/music', + '/ai': '/ai', + '/chat': '/ai', +}; + +const helpText = `Available commands: + /home - Navigate to Home + /about, /me - Navigate to About Me + /projects, /proj - Navigate to Projects + /resources, /res - Navigate to Resources + /links - Navigate to Links + /faq - Navigate to FAQ + /games, /arcade - Browse Arcade games + /tetris - Play Tetris + /pacman - Play Pac-Man + /snake - Play Snake + /breakout - Play Breakout + /music, /m - Navigate to Music Player + /ai, /chat - Navigate to AI Chat + /help, /h - Show this help message + /clear, /c - Clear terminal output`; + +const TerminalCommand = () => { + const [isOpen, setIsOpen] = useState(false); + const [input, setInput] = useState(''); + const [output, setOutput] = useState(['Type /help for available commands']); + const inputRef = useRef(null); + const outputRef = useRef(null); + const navigate = useNavigate(); + const { playSound } = useSettings(); + + useEffect(() => { + if (isOpen && inputRef.current) { + inputRef.current.focus(); + } + }, [isOpen]); + + useEffect(() => { + if (outputRef.current) { + outputRef.current.scrollTop = outputRef.current.scrollHeight; + } + }, [output]); + + // Keyboard shortcut to toggle terminal + useEffect(() => { + const handleKeyDown = (e: KeyboardEvent) => { + // Don't trigger if already in an input field + const isInputFocused = document.activeElement?.tagName === 'INPUT' || + document.activeElement?.tagName === 'TEXTAREA'; + + if (e.key === '`' || (e.ctrlKey && e.key === '/')) { + e.preventDefault(); + setIsOpen(prev => !prev); + playSound('beep'); + } + + // Open terminal when pressing "/" (only if not in input) + if (e.key === '/' && !isOpen && !isInputFocused) { + e.preventDefault(); + setIsOpen(true); + playSound('beep'); + // Pre-fill with "/" so user can continue typing command + setTimeout(() => setInput('/'), 50); + } + + if (e.key === 'Escape' && isOpen) { + setIsOpen(false); + } + }; + + window.addEventListener('keydown', handleKeyDown); + return () => window.removeEventListener('keydown', handleKeyDown); + }, [isOpen, playSound]); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + const trimmedInput = input.trim().toLowerCase(); + + if (!trimmedInput) return; + + playSound('click'); + setOutput(prev => [...prev, `> ${input}`]); + + if (trimmedInput === '/help' || trimmedInput === '/h') { + setOutput(prev => [...prev, helpText]); + } else if (trimmedInput === '/hint') { + setOutput(prev => [...prev, + 'Hidden feature detected in system...', + 'Hint: Old-school gamers know a certain cheat code.', + 'Think NES, 1986, Contra... 30 lives anyone?', + 'The sequence uses arrow keys and two letters.' + ]); + } else if (trimmedInput === '/clear' || trimmedInput === '/c') { + setOutput(['Terminal cleared. Type /help for commands.']); + } else if (commands[trimmedInput]) { + setOutput(prev => [...prev, `Navigating to ${trimmedInput.slice(1)}...`]); + playSound('beep'); + setTimeout(() => { + navigate(commands[trimmedInput]); + setIsOpen(false); + }, 300); + } else { + setOutput(prev => [...prev, `Command not found: ${trimmedInput}`, 'Type /help for available commands']); + } + + setInput(''); + }; + + return ( + <> + {/* Terminal Toggle Button - aligned with music player */} + { + setIsOpen(true); + playSound('beep'); + }} + className="fixed bottom-4 right-4 z-[60] p-3 border-2 border-primary bg-background text-primary hover:bg-primary hover:text-background transition-all duration-300 box-glow" + title="Open Terminal (` or Ctrl+/)" + > + + + + {/* Terminal Window */} + + {isOpen && ( + + {/* Terminal Header */} +
+
+ + terminal@my-site.lol +
+ +
+ + {/* Terminal Output */} +
+ {output.map((line, i) => ( +
+ {line} +
+ ))} +
+ + {/* Terminal Input */} +
+
+ {'>'} + setInput(e.target.value)} + className="flex-1 bg-transparent border-none outline-none font-mono text-primary placeholder-primary/40" + placeholder="Enter command..." + autoComplete="off" + spellCheck={false} + /> + _ +
+
+
+ )} +
+ + ); +}; + +export default TerminalCommand; \ No newline at end of file diff --git a/src/components/TypingText.tsx b/src/components/TypingText.tsx new file mode 100644 index 0000000..884ff2e --- /dev/null +++ b/src/components/TypingText.tsx @@ -0,0 +1,50 @@ +import { useState, useEffect } from 'react'; +import { useSettings } from '@/contexts/SettingsContext'; + +interface TypingTextProps { + text: string; + className?: string; + speed?: number; + delay?: number; + onComplete?: () => void; +} + +const TypingText = ({ text, className = '', speed = 50, delay = 0, onComplete }: TypingTextProps) => { + const [displayedText, setDisplayedText] = useState(''); + const [isTyping, setIsTyping] = useState(false); + const { playSound } = useSettings(); + + useEffect(() => { + const startTimeout = setTimeout(() => { + setIsTyping(true); + }, delay); + + return () => clearTimeout(startTimeout); + }, [delay]); + + useEffect(() => { + if (!isTyping) return; + + if (displayedText.length < text.length) { + const timeout = setTimeout(() => { + setDisplayedText(text.slice(0, displayedText.length + 1)); + playSound('click'); + }, speed); + + return () => clearTimeout(timeout); + } else { + onComplete?.(); + } + }, [displayedText, text, speed, isTyping, playSound, onComplete]); + + return ( + + {displayedText} + {displayedText.length < text.length && ( + + )} + + ); +}; + +export default TypingText; diff --git a/src/components/ui/accordion.tsx b/src/components/ui/accordion.tsx new file mode 100644 index 0000000..1e7878c --- /dev/null +++ b/src/components/ui/accordion.tsx @@ -0,0 +1,52 @@ +import * as React from "react"; +import * as AccordionPrimitive from "@radix-ui/react-accordion"; +import { ChevronDown } from "lucide-react"; + +import { cn } from "@/lib/utils"; + +const Accordion = AccordionPrimitive.Root; + +const AccordionItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AccordionItem.displayName = "AccordionItem"; + +const AccordionTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + svg]:rotate-180", + className, + )} + {...props} + > + {children} + + + +)); +AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName; + +const AccordionContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + +
{children}
+
+)); + +AccordionContent.displayName = AccordionPrimitive.Content.displayName; + +export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }; diff --git a/src/components/ui/alert-dialog.tsx b/src/components/ui/alert-dialog.tsx new file mode 100644 index 0000000..6dfbfb4 --- /dev/null +++ b/src/components/ui/alert-dialog.tsx @@ -0,0 +1,104 @@ +import * as React from "react"; +import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"; + +import { cn } from "@/lib/utils"; +import { buttonVariants } from "@/components/ui/button"; + +const AlertDialog = AlertDialogPrimitive.Root; + +const AlertDialogTrigger = AlertDialogPrimitive.Trigger; + +const AlertDialogPortal = AlertDialogPrimitive.Portal; + +const AlertDialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName; + +const AlertDialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + + +)); +AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName; + +const AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes) => ( +
+); +AlertDialogHeader.displayName = "AlertDialogHeader"; + +const AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes) => ( +
+); +AlertDialogFooter.displayName = "AlertDialogFooter"; + +const AlertDialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName; + +const AlertDialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName; + +const AlertDialogAction = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName; + +const AlertDialogCancel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName; + +export { + AlertDialog, + AlertDialogPortal, + AlertDialogOverlay, + AlertDialogTrigger, + AlertDialogContent, + AlertDialogHeader, + AlertDialogFooter, + AlertDialogTitle, + AlertDialogDescription, + AlertDialogAction, + AlertDialogCancel, +}; diff --git a/src/components/ui/alert.tsx b/src/components/ui/alert.tsx new file mode 100644 index 0000000..2efc3c8 --- /dev/null +++ b/src/components/ui/alert.tsx @@ -0,0 +1,43 @@ +import * as React from "react"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "@/lib/utils"; + +const alertVariants = cva( + "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground", + { + variants: { + variant: { + default: "bg-background text-foreground", + destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +); + +const Alert = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes & VariantProps +>(({ className, variant, ...props }, ref) => ( +
+)); +Alert.displayName = "Alert"; + +const AlertTitle = React.forwardRef>( + ({ className, ...props }, ref) => ( +
+ ), +); +AlertTitle.displayName = "AlertTitle"; + +const AlertDescription = React.forwardRef>( + ({ className, ...props }, ref) => ( +
+ ), +); +AlertDescription.displayName = "AlertDescription"; + +export { Alert, AlertTitle, AlertDescription }; diff --git a/src/components/ui/aspect-ratio.tsx b/src/components/ui/aspect-ratio.tsx new file mode 100644 index 0000000..c9e6f4b --- /dev/null +++ b/src/components/ui/aspect-ratio.tsx @@ -0,0 +1,5 @@ +import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio"; + +const AspectRatio = AspectRatioPrimitive.Root; + +export { AspectRatio }; diff --git a/src/components/ui/avatar.tsx b/src/components/ui/avatar.tsx new file mode 100644 index 0000000..68d21bb --- /dev/null +++ b/src/components/ui/avatar.tsx @@ -0,0 +1,38 @@ +import * as React from "react"; +import * as AvatarPrimitive from "@radix-ui/react-avatar"; + +import { cn } from "@/lib/utils"; + +const Avatar = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +Avatar.displayName = AvatarPrimitive.Root.displayName; + +const AvatarImage = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AvatarImage.displayName = AvatarPrimitive.Image.displayName; + +const AvatarFallback = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName; + +export { Avatar, AvatarImage, AvatarFallback }; diff --git a/src/components/ui/badge.tsx b/src/components/ui/badge.tsx new file mode 100644 index 0000000..0853c44 --- /dev/null +++ b/src/components/ui/badge.tsx @@ -0,0 +1,29 @@ +import * as React from "react"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "@/lib/utils"; + +const badgeVariants = cva( + "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", + { + variants: { + variant: { + default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", + secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", + destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", + outline: "text-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +); + +export interface BadgeProps extends React.HTMLAttributes, VariantProps {} + +function Badge({ className, variant, ...props }: BadgeProps) { + return
; +} + +export { Badge, badgeVariants }; diff --git a/src/components/ui/breadcrumb.tsx b/src/components/ui/breadcrumb.tsx new file mode 100644 index 0000000..ca91ff5 --- /dev/null +++ b/src/components/ui/breadcrumb.tsx @@ -0,0 +1,90 @@ +import * as React from "react"; +import { Slot } from "@radix-ui/react-slot"; +import { ChevronRight, MoreHorizontal } from "lucide-react"; + +import { cn } from "@/lib/utils"; + +const Breadcrumb = React.forwardRef< + HTMLElement, + React.ComponentPropsWithoutRef<"nav"> & { + separator?: React.ReactNode; + } +>(({ ...props }, ref) =>