diff --git a/.github/update.log b/.github/update.log index 08c0be31e9..df6a50055a 100644 --- a/.github/update.log +++ b/.github/update.log @@ -804,3 +804,4 @@ Update On Mon Oct 21 20:36:16 CEST 2024 Update On Tue Oct 22 20:35:01 CEST 2024 Update On Wed Oct 23 20:36:27 CEST 2024 Update On Thu Oct 24 20:36:15 CEST 2024 +Update On Fri Oct 25 20:37:13 CEST 2024 diff --git a/clash-nyanpasu/backend/Cargo.lock b/clash-nyanpasu/backend/Cargo.lock index c4d93c8303..86e619c76f 100644 --- a/clash-nyanpasu/backend/Cargo.lock +++ b/clash-nyanpasu/backend/Cargo.lock @@ -848,7 +848,7 @@ dependencies = [ "bitflags 2.6.0", "cexpr", "clang-sys", - "itertools 0.10.5", + "itertools 0.12.1", "lazy_static", "lazycell", "log", @@ -1184,9 +1184,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" dependencies = [ "serde", ] @@ -4722,7 +4722,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.48.5", ] [[package]] @@ -5976,9 +5976,9 @@ checksum = "fb37767f6569cd834a413442455e0f066d0d522de8630436e2a1761d9726ba56" [[package]] name = "oxc_allocator" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40baa80a3e4ae7cea94c1e04dc8820162b934f5f5cbca8a96e80a0b85a2815f4" +checksum = "b951072744cf013eb767d9f61d29b6605e0ae747b05d3da4778a010f3ffa260d" dependencies = [ "allocator-api2", "bumpalo", @@ -5986,9 +5986,9 @@ dependencies = [ [[package]] name = "oxc_ast" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7eb50a1c3485609b4b2051bd23352c1e6a8743b9e345dd6def70b3470948429" +checksum = "bccf1b681ed1f6babc3a72241823599ba78ac07b60d31d0ec029182b6bf72cde" dependencies = [ "bitflags 2.6.0", "num-bigint", @@ -6002,9 +6002,9 @@ dependencies = [ [[package]] name = "oxc_ast_macros" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4b29106d9f2bbcca4f5ee7a9325c99844ff9721d10103625cd5278795507fe" +checksum = "830a9d68d1378023bdaca765a636e3f5608751949ed6f6b2d20708a13412cf21" dependencies = [ "proc-macro2", "quote", @@ -6013,9 +6013,9 @@ dependencies = [ [[package]] name = "oxc_diagnostics" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2e7c7ff14a1a80cb229593d9fcfae6660c7b2cda8707caa4a89cb489656d156" +checksum = "b5739c0992540324c4b9f9e7e9c3e3f1263e07e16f26dfaae566a2a9c4492e16" dependencies = [ "miette", "owo-colors", @@ -6026,9 +6026,9 @@ dependencies = [ [[package]] name = "oxc_ecmascript" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17d5cf1710748afcda1269998d2003af79df1fef7c5b4183054aeb1b2a803ff6" +checksum = "45a6cf3633dd508c3f864e7723a2db4087f2467702081aca2095821b5b4648b8" dependencies = [ "num-bigint", "num-traits", @@ -6039,21 +6039,21 @@ dependencies = [ [[package]] name = "oxc_estree" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "befa5f762524cdd768fee0321c4f19ee24e13e7340ca2a64629183a37875ba71" +checksum = "b5e473cefef347ff5e4774a297d55fd84c405e5a457a6a48cdc0289b50637a0d" [[package]] name = "oxc_index" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a576b0f0a1ef9112504880a3ba82fa895c4cceb52cdc37825180c43b01336f" +checksum = "74ac390082ad5964110a384e117f8d61bde137d5a1548d9a3f30abbbbfd38700" [[package]] name = "oxc_parser" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43e722cd698a1ac383b645ddf6283757d4977b56f6dc278038b9ea74867a508" +checksum = "09157972bc9a1c13be84a676409b8716b5d4659a54d34e519eae733fd7321529" dependencies = [ "assert-unchecked", "bitflags 2.6.0", @@ -6074,9 +6074,9 @@ dependencies = [ [[package]] name = "oxc_regular_expression" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "231ed7fd6173c41270e019c4d1b2cd4bfa463a8abba32e0107bed6a7e9ceca93" +checksum = "9b0e9930f3a3042866b93e69c5718aeba59259cd6bcbae8631a452f417ca14f4" dependencies = [ "oxc_allocator", "oxc_ast_macros", @@ -6090,9 +6090,9 @@ dependencies = [ [[package]] name = "oxc_span" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "734602328c49aa8c31840e72662196ca1b0d7bf3585eca1f9ddbef127172112f" +checksum = "517f9a331c761341bc9279a3aa83e963c7e340a3790ad1b841b17d356e24580c" dependencies = [ "compact_str", "miette", @@ -6103,9 +6103,9 @@ dependencies = [ [[package]] name = "oxc_syntax" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a56d62a59f4ace25365c1d056d7ce3129ca3fb20e9337b19a0efe62d6bc84cb" +checksum = "6f10879bd61d0af333b0dacf9746355e0cd82a6fd579695436c4640e54b6891a" dependencies = [ "assert-unchecked", "bitflags 2.6.0", @@ -9112,9 +9112,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", diff --git a/clash-nyanpasu/backend/tauri/Cargo.toml b/clash-nyanpasu/backend/tauri/Cargo.toml index 726ac7afd4..8752035664 100644 --- a/clash-nyanpasu/backend/tauri/Cargo.toml +++ b/clash-nyanpasu/backend/tauri/Cargo.toml @@ -149,11 +149,11 @@ display-info = "0.5.0" # should be removed after upgrading to tauri v2 # OXC (The Oxidation Compiler) # We use it to parse and transpile the old script profile to esm based script profile -oxc_parser = "0.32" -oxc_allocator = "0.32" -oxc_span = "0.32" -oxc_ast = "0.32" -oxc_syntax = "0.32" +oxc_parser = "0.33" +oxc_allocator = "0.33" +oxc_span = "0.33" +oxc_ast = "0.33" +oxc_syntax = "0.33" # Lua Integration mlua = { version = "0.9", features = [ diff --git a/clash-nyanpasu/frontend/nyanpasu/package.json b/clash-nyanpasu/frontend/nyanpasu/package.json index 10a84c83df..2f3e13841e 100644 --- a/clash-nyanpasu/frontend/nyanpasu/package.json +++ b/clash-nyanpasu/frontend/nyanpasu/package.json @@ -29,7 +29,7 @@ "country-code-emoji": "2.3.0", "dayjs": "1.11.13", "framer-motion": "12.0.0-alpha.1", - "i18next": "23.16.3", + "i18next": "23.16.4", "jotai": "2.10.1", "json-schema": "0.4.0", "material-react-table": "3.0.1", @@ -40,7 +40,7 @@ "react-error-boundary": "4.1.2", "react-fast-marquee": "1.6.5", "react-hook-form-mui": "7.4.0", - "react-i18next": "15.0.3", + "react-i18next": "15.1.0", "react-markdown": "9.0.1", "react-split-grid": "1.0.4", "react-use": "17.5.1", @@ -77,7 +77,7 @@ "monaco-yaml": "5.2.2", "nanoid": "5.0.7", "sass": "1.80.4", - "shiki": "1.22.0", + "shiki": "1.22.1", "tailwindcss-textshadow": "2.1.3", "unplugin-auto-import": "0.18.3", "unplugin-icons": "0.19.3", diff --git a/clash-nyanpasu/frontend/ui/package.json b/clash-nyanpasu/frontend/ui/package.json index e74609936a..d2e298f531 100644 --- a/clash-nyanpasu/frontend/ui/package.json +++ b/clash-nyanpasu/frontend/ui/package.json @@ -32,7 +32,7 @@ "react": "rc", "react-dom": "rc", "react-error-boundary": "4.1.2", - "react-i18next": "15.0.3", + "react-i18next": "15.1.0", "react-use": "17.5.1", "vite": "5.4.10", "vite-tsconfig-paths": "5.0.1" diff --git a/clash-nyanpasu/package.json b/clash-nyanpasu/package.json index 4095449216..7ad00af8f2 100644 --- a/clash-nyanpasu/package.json +++ b/clash-nyanpasu/package.json @@ -63,7 +63,7 @@ "@tauri-apps/cli": "2.0.4", "@types/fs-extra": "11.0.4", "@types/lodash-es": "4.17.12", - "@types/node": "22.7.9", + "@types/node": "22.8.0", "@typescript-eslint/eslint-plugin": "8.11.0", "@typescript-eslint/parser": "8.11.0", "autoprefixer": "10.4.20", diff --git a/clash-nyanpasu/pnpm-lock.yaml b/clash-nyanpasu/pnpm-lock.yaml index f812693348..5273f2c082 100644 --- a/clash-nyanpasu/pnpm-lock.yaml +++ b/clash-nyanpasu/pnpm-lock.yaml @@ -22,7 +22,7 @@ importers: devDependencies: '@commitlint/cli': specifier: 19.5.0 - version: 19.5.0(@types/node@22.7.9)(typescript@5.6.3) + version: 19.5.0(@types/node@22.8.0)(typescript@5.6.3) '@commitlint/config-conventional': specifier: 19.5.0 version: 19.5.0 @@ -39,8 +39,8 @@ importers: specifier: 4.17.12 version: 4.17.12 '@types/node': - specifier: 22.7.9 - version: 22.7.9 + specifier: 22.8.0 + version: 22.8.0 '@typescript-eslint/eslint-plugin': specifier: 8.11.0 version: 8.11.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3) @@ -97,7 +97,7 @@ importers: version: 4.6.2(eslint@8.57.1) knip: specifier: 5.34.0 - version: 5.34.0(@types/node@22.7.9)(typescript@5.6.3) + version: 5.34.0(@types/node@22.8.0)(typescript@5.6.3) lint-staged: specifier: 15.2.10 version: 15.2.10 @@ -166,16 +166,16 @@ importers: version: 2.0.3 ahooks: specifier: 3.8.1 - version: 3.8.1(react@19.0.0-rc-1631855f-20241023) + version: 3.8.1(react@19.0.0-rc-cae764ce-20241025) ofetch: specifier: 1.4.1 version: 1.4.1 react: specifier: rc - version: 19.0.0-rc-1631855f-20241023 + version: 19.0.0-rc-cae764ce-20241025 swr: specifier: 2.2.5 - version: 2.2.5(react@19.0.0-rc-1631855f-20241023) + version: 2.2.5(react@19.0.0-rc-cae764ce-20241025) devDependencies: '@types/react': specifier: npm:types-react@rc @@ -185,16 +185,16 @@ importers: dependencies: '@dnd-kit/core': specifier: 6.1.0 - version: 6.1.0(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + version: 6.1.0(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) '@dnd-kit/sortable': specifier: 8.0.0 - version: 8.0.0(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + version: 8.0.0(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) '@dnd-kit/utilities': specifier: 3.2.2 - version: 3.2.2(react@19.0.0-rc-1631855f-20241023) + version: 3.2.2(react@19.0.0-rc-cae764ce-20241025) '@emotion/styled': specifier: 11.13.0 - version: 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + version: 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@juggle/resize-observer': specifier: 3.4.0 version: 3.4.0 @@ -203,13 +203,13 @@ importers: version: 0.3.0 '@mui/icons-material': specifier: 6.1.5 - version: 6.1.5(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + version: 6.1.5(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@mui/lab': specifier: 6.0.0-beta.13 - version: 6.0.0-beta.13(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + version: 6.0.0-beta.13(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@mui/material': specifier: 6.1.5 - version: 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + version: 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@nyanpasu/interface': specifier: workspace:^ version: link:../interface @@ -218,7 +218,7 @@ importers: version: link:../ui '@tanstack/router-zod-adapter': specifier: 1.76.1 - version: 1.76.1(@tanstack/react-router@1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023))(zod@3.23.8) + version: 1.76.1(@tanstack/react-router@1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025))(zod@3.23.8) '@tauri-apps/api': specifier: 2.0.3 version: 2.0.3 @@ -227,10 +227,10 @@ importers: version: 7.0.15 ahooks: specifier: 3.8.1 - version: 3.8.1(react@19.0.0-rc-1631855f-20241023) + version: 3.8.1(react@19.0.0-rc-cae764ce-20241025) allotment: specifier: 1.20.2 - version: 1.20.2(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + version: 1.20.2(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) country-code-emoji: specifier: 2.3.0 version: 2.3.0 @@ -239,58 +239,58 @@ importers: version: 1.11.13 framer-motion: specifier: 12.0.0-alpha.1 - version: 12.0.0-alpha.1(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + version: 12.0.0-alpha.1(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) i18next: - specifier: 23.16.3 - version: 23.16.3 + specifier: 23.16.4 + version: 23.16.4 jotai: specifier: 2.10.1 - version: 2.10.1(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + version: 2.10.1(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) json-schema: specifier: 0.4.0 version: 0.4.0 material-react-table: specifier: 3.0.1 - version: 3.0.1(ssp4w3hwtozkjqzhgdupzt3ocq) + version: 3.0.1(5vw72tj7snwug53s6dkn5axbwi) monaco-editor: specifier: 0.52.0 version: 0.52.0 mui-color-input: specifier: 4.0.2 - version: 4.0.2(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + version: 4.0.2(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) react: specifier: rc - version: 19.0.0-rc-1631855f-20241023 + version: 19.0.0-rc-cae764ce-20241025 react-dom: specifier: rc - version: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + version: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) react-error-boundary: specifier: 4.1.2 - version: 4.1.2(react@19.0.0-rc-1631855f-20241023) + version: 4.1.2(react@19.0.0-rc-cae764ce-20241025) react-fast-marquee: specifier: 1.6.5 - version: 1.6.5(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + version: 1.6.5(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) react-hook-form-mui: specifier: 7.4.0 - version: 7.4.0(ir3pm7rxqjrasaubsqt6khinqy) + version: 7.4.0(vaiq7ih44qbefvijqz7wujobm4) react-i18next: - specifier: 15.0.3 - version: 15.0.3(i18next@23.16.3)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + specifier: 15.1.0 + version: 15.1.0(i18next@23.16.4)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) react-markdown: specifier: 9.0.1 - version: 9.0.1(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + version: 9.0.1(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) react-split-grid: specifier: 1.0.4 - version: 1.0.4(react@19.0.0-rc-1631855f-20241023) + version: 1.0.4(react@19.0.0-rc-cae764ce-20241025) react-use: specifier: 17.5.1 - version: 17.5.1(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + version: 17.5.1(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) swr: specifier: 2.2.5 - version: 2.2.5(react@19.0.0-rc-1631855f-20241023) + version: 2.2.5(react@19.0.0-rc-cae764ce-20241025) virtua: specifier: 0.35.1 - version: 0.35.1(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + version: 0.35.1(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) vite-bundle-visualizer: specifier: 1.2.1 version: 1.2.1(rollup@4.21.0) @@ -303,22 +303,22 @@ importers: version: 11.12.0 '@emotion/react': specifier: 11.13.3 - version: 11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + version: 11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@iconify/json': specifier: 2.2.263 version: 2.2.263 '@monaco-editor/react': specifier: 4.6.0 - version: 4.6.0(monaco-editor@0.52.0)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + version: 4.6.0(monaco-editor@0.52.0)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) '@tanstack/react-router': specifier: 1.76.1 - version: 1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + version: 1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) '@tanstack/router-devtools': specifier: 1.76.1 - version: 1.76.1(@tanstack/react-router@1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023))(csstype@3.1.3)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + version: 1.76.1(@tanstack/react-router@1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025))(csstype@3.1.3)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) '@tanstack/router-plugin': specifier: 1.76.0 - version: 1.76.0(vite@5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))(webpack-sources@3.2.3) + version: 1.76.0(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))(webpack-sources@3.2.3) '@tauri-apps/plugin-clipboard-manager': specifier: 2.0.0 version: 2.0.0 @@ -354,10 +354,10 @@ importers: version: 13.12.2 '@vitejs/plugin-react': specifier: 4.3.3 - version: 4.3.3(vite@5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) + version: 4.3.3(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) '@vitejs/plugin-react-swc': specifier: 3.7.1 - version: 3.7.1(vite@5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) + version: 3.7.1(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) change-case: specifier: 5.4.4 version: 5.4.4 @@ -380,8 +380,8 @@ importers: specifier: 1.80.4 version: 1.80.4 shiki: - specifier: 1.22.0 - version: 1.22.0 + specifier: 1.22.1 + version: 1.22.1 tailwindcss-textshadow: specifier: 2.1.3 version: 2.1.3 @@ -396,16 +396,16 @@ importers: version: 13.12.0 vite: specifier: 5.4.10 - version: 5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + version: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) vite-plugin-sass-dts: specifier: 1.3.29 - version: 1.3.29(postcss@8.4.47)(prettier@3.3.3)(sass-embedded@1.78.0)(vite@5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) + version: 1.3.29(postcss@8.4.47)(prettier@3.3.3)(sass-embedded@1.78.0)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) vite-plugin-svgr: specifier: 4.2.0 - version: 4.2.0(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) + version: 4.2.0(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) vite-tsconfig-paths: specifier: 5.0.1 - version: 5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) + version: 5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) zod: specifier: 3.23.8 version: 3.23.8 @@ -417,19 +417,19 @@ importers: version: 0.3.0 '@mui/icons-material': specifier: 6.1.5 - version: 6.1.5(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + version: 6.1.5(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@mui/lab': specifier: 6.0.0-beta.13 - version: 6.0.0-beta.13(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + version: 6.0.0-beta.13(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@mui/material': specifier: 6.1.5 - version: 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + version: 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@radix-ui/react-portal': specifier: 1.1.2 - version: 1.1.2(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + version: 1.1.2(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@radix-ui/react-scroll-area': specifier: 1.2.0 - version: 1.2.0(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + version: 1.2.0(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@tauri-apps/api': specifier: 2.0.3 version: 2.0.3 @@ -441,41 +441,41 @@ importers: version: types-react@19.0.0-rc.1 '@vitejs/plugin-react': specifier: 4.3.3 - version: 4.3.3(vite@5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) + version: 4.3.3(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) ahooks: specifier: 3.8.1 - version: 3.8.1(react@19.0.0-rc-1631855f-20241023) + version: 3.8.1(react@19.0.0-rc-cae764ce-20241025) d3: specifier: 7.9.0 version: 7.9.0 framer-motion: specifier: 12.0.0-alpha.1 - version: 12.0.0-alpha.1(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + version: 12.0.0-alpha.1(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) react: specifier: rc - version: 19.0.0-rc-1631855f-20241023 + version: 19.0.0-rc-cae764ce-20241025 react-dom: specifier: rc - version: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + version: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) react-error-boundary: specifier: 4.1.2 - version: 4.1.2(react@19.0.0-rc-1631855f-20241023) + version: 4.1.2(react@19.0.0-rc-cae764ce-20241025) react-i18next: - specifier: 15.0.3 - version: 15.0.3(i18next@23.16.3)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + specifier: 15.1.0 + version: 15.1.0(i18next@23.16.4)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) react-use: specifier: 17.5.1 - version: 17.5.1(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + version: 17.5.1(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) vite: specifier: 5.4.10 - version: 5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + version: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) vite-tsconfig-paths: specifier: 5.0.1 - version: 5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) + version: 5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) devDependencies: '@emotion/react': specifier: 11.13.3 - version: 11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + version: 11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@types/d3-interpolate-path': specifier: 2.0.3 version: 2.0.3 @@ -496,7 +496,7 @@ importers: version: 5.1.0(typescript@5.6.3) vite-plugin-dts: specifier: 4.3.0 - version: 4.3.0(@types/node@22.7.9)(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) + version: 4.3.0(@types/node@22.8.0)(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)) scripts: dependencies: @@ -2124,17 +2124,17 @@ packages: '@rushstack/ts-command-line@4.23.0': resolution: {integrity: sha512-jYREBtsxduPV6ptNq8jOKp9+yx0ld1Tb/Tkdnlj8gTjazl1sF3DwX2VbluyYrNd0meWIL0bNeer7WDf5tKFjaQ==} - '@shikijs/core@1.22.0': - resolution: {integrity: sha512-S8sMe4q71TJAW+qG93s5VaiihujRK6rqDFqBnxqvga/3LvqHEnxqBIOPkt//IdXVtHkQWKu4nOQNk0uBGicU7Q==} + '@shikijs/core@1.22.1': + resolution: {integrity: sha512-bqAhT/Ri5ixV4oYsvJNH8UJjpjbINWlWyXY6tBTsP4OmD6XnFv43nRJ+lTdxd2rmG5pgam/x+zGR6kLRXrpEKA==} - '@shikijs/engine-javascript@1.22.0': - resolution: {integrity: sha512-AeEtF4Gcck2dwBqCFUKYfsCq0s+eEbCEbkUuFou53NZ0sTGnJnJ/05KHQFZxpii5HMXbocV9URYVowOP2wH5kw==} + '@shikijs/engine-javascript@1.22.1': + resolution: {integrity: sha512-540pyoy0LWe4jj2BVbgELwOFu1uFvRI7lg4hdsExrSXA9x7gqfzZ/Nnh4RfX86aDAgJ647gx4TCmRwACbnQSvw==} - '@shikijs/engine-oniguruma@1.22.0': - resolution: {integrity: sha512-5iBVjhu/DYs1HB0BKsRRFipRrD7rqjxlWTj4F2Pf+nQSPqc3kcyqFFeZXnBMzDf0HdqaFVvhDRAGiYNvyLP+Mw==} + '@shikijs/engine-oniguruma@1.22.1': + resolution: {integrity: sha512-L+1Vmd+a2kk8HtogUFymQS6BjUfJnzcWoUp1BUgxoDiklbKSMvrsMuLZGevTOP1m0rEjgnC5MsDmsr8lX1lC+Q==} - '@shikijs/types@1.22.0': - resolution: {integrity: sha512-Fw/Nr7FGFhlQqHfxzZY8Cwtwk5E9nKDUgeLjZgt3UuhcM3yJR9xj3ZGNravZZok8XmEZMiYkSMTPlPkULB8nww==} + '@shikijs/types@1.22.1': + resolution: {integrity: sha512-+45f8mu/Hxqs6Kyhfm98Nld5n7Q7lwhjU8UtdQwrOPs7BnM4VAb929O3IQ2ce+4D7SlNFlZGd8CnKRSnwbQreQ==} '@shikijs/vscode-textmate@9.3.0': resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} @@ -2668,8 +2668,8 @@ packages: '@types/node@22.5.0': resolution: {integrity: sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==} - '@types/node@22.7.9': - resolution: {integrity: sha512-jrTfRC7FM6nChvU7X2KqcrgquofrWLFDeYC1hKfwNWomVvrn7JIksqf344WN2X/y8xrgqBd2dJATZV4GbatBfg==} + '@types/node@22.8.0': + resolution: {integrity: sha512-84rafSBHC/z1i1E3p0cJwKA+CfYDNSXX9WSZBRopjIzLET8oNt6ht2tei4C7izwDeEiLLfdeSVBv1egOH916hg==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -4418,8 +4418,8 @@ packages: hyphenate-style-name@1.1.0: resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==} - i18next@23.16.3: - resolution: {integrity: sha512-e8q9gFyjrou5v/hBXgRwtWVK7Gp5So19Kf42spJlijGDfkin5abYFHlblonmD2GFYcsf9XIT7MpVuveJq/VCcA==} + i18next@23.16.4: + resolution: {integrity: sha512-9NIYBVy9cs4wIqzurf7nLXPyf3R78xYbxExVqHLK9od3038rjpyOEzW+XB130kZ1N4PZ9inTtJ471CRJ4Ituyg==} iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} @@ -5884,10 +5884,10 @@ packages: resolution: {integrity: sha512-B5XGOnOfwH4B7m0chzE1Cv5jlnfbbxF0LoBI+lacQuNj9PMvZ6JS5NCFnDw3zzy7zpOo6leyJNAED8sN3CgLVA==} hasBin: true - react-dom@19.0.0-rc-1631855f-20241023: - resolution: {integrity: sha512-9L3iceg5wGF9QZCjYKgPrar5mjPtPJ/R4yZa7w/E06utqJRO48EWhFrqs71tFWCeM4ehmitQCxkuDk7IW47xUA==} + react-dom@19.0.0-rc-cae764ce-20241025: + resolution: {integrity: sha512-e3CVe2+ojMe4dz8E/WsV9bkRj+lZt5ms+rhTFHEqIAHv4/PDdXa7P4uJXNhfik+ZYF4Wg5wCDVP4l7cgaudCpg==} peerDependencies: - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 react-error-boundary@4.1.2: resolution: {integrity: sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag==} @@ -5924,8 +5924,8 @@ packages: peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 - react-i18next@15.0.3: - resolution: {integrity: sha512-BlO1P+oLKjjIxDBQ0GkAIMacgjfMbnvops+3Y5nZXF7UJ99v4KCWr0Na1azJXC8AMiNWp4kgUcFCJM7U9ZsUDg==} + react-i18next@15.1.0: + resolution: {integrity: sha512-zj3nJynMnZsy2gPZiOTC7XctCY5eQGqT3tcKMmfJWC9FMvgd+960w/adq61j8iPzpwmsXejqID9qC3Mqu1Xu2Q==} peerDependencies: i18next: '>= 23.2.3' react: '>= 16.8.0' @@ -5976,8 +5976,8 @@ packages: react: '*' react-dom: '*' - react@19.0.0-rc-1631855f-20241023: - resolution: {integrity: sha512-2kP1KI+/cI4WQ8taRm4572pnyY7FbdQqAJgtPNl/Uiiq+lIGZjloEeX5IcShWP/wBmlhm91/NCCeWs7rtm3jFw==} + react@19.0.0-rc-cae764ce-20241025: + resolution: {integrity: sha512-5wV/3MJc6Ws4l4ZF95yaQKaMV8aWVlIBKOdPA4Kere7CfdJ0NMIuKt9j9v0U4ZTmCi4ubAdN+KL4gGdfTEIpuw==} engines: {node: '>=0.10.0'} read-cache@1.0.0: @@ -6276,8 +6276,8 @@ packages: sax@1.3.0: resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} - scheduler@0.25.0-rc-1631855f-20241023: - resolution: {integrity: sha512-2s9EC24hDG8cuGleyCZRpmzt7aiPMjr54Z7dvE0iSTowzzy33pyySHY/CofKbRX1I/wQMKD0I8i/gPgcc3dUxA==} + scheduler@0.25.0-rc-cae764ce-20241025: + resolution: {integrity: sha512-kiDqIcp0nrZ8RW65wMujBEs7eDNfd49hcfjDmscxWIsnDTz9NRQrTAChv/tYRYCUNk7qPM36SQOja2HcRuee0A==} screenfull@5.2.0: resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} @@ -6346,8 +6346,8 @@ packages: shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - shiki@1.22.0: - resolution: {integrity: sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw==} + shiki@1.22.1: + resolution: {integrity: sha512-PbJ6XxrWLMwB2rm3qdjIHNm3zq4SfFnOx0B3rEoi4AN8AUngsdyZ1tRe5slMPtn6jQkbUURLNZPpLR7Do3k78g==} side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} @@ -7672,11 +7672,11 @@ snapshots: '@bufbuild/protobuf@1.10.0': {} - '@commitlint/cli@19.5.0(@types/node@22.7.9)(typescript@5.6.3)': + '@commitlint/cli@19.5.0(@types/node@22.8.0)(typescript@5.6.3)': dependencies: '@commitlint/format': 19.5.0 '@commitlint/lint': 19.5.0 - '@commitlint/load': 19.5.0(@types/node@22.7.9)(typescript@5.6.3) + '@commitlint/load': 19.5.0(@types/node@22.8.0)(typescript@5.6.3) '@commitlint/read': 19.5.0 '@commitlint/types': 19.5.0 tinyexec: 0.3.0 @@ -7723,7 +7723,7 @@ snapshots: '@commitlint/rules': 19.5.0 '@commitlint/types': 19.5.0 - '@commitlint/load@19.5.0(@types/node@22.7.9)(typescript@5.6.3)': + '@commitlint/load@19.5.0(@types/node@22.8.0)(typescript@5.6.3)': dependencies: '@commitlint/config-validator': 19.5.0 '@commitlint/execute-rule': 19.5.0 @@ -7731,7 +7731,7 @@ snapshots: '@commitlint/types': 19.5.0 chalk: 5.3.0 cosmiconfig: 9.0.0(typescript@5.6.3) - cosmiconfig-typescript-loader: 5.0.0(@types/node@22.7.9)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3) + cosmiconfig-typescript-loader: 5.0.0(@types/node@22.8.0)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -7803,29 +7803,29 @@ snapshots: '@ctrl/tinycolor@4.1.0': {} - '@dnd-kit/accessibility@3.1.0(react@19.0.0-rc-1631855f-20241023)': + '@dnd-kit/accessibility@3.1.0(react@19.0.0-rc-cae764ce-20241025)': dependencies: - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 tslib: 2.7.0 - '@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)': + '@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)': dependencies: - '@dnd-kit/accessibility': 3.1.0(react@19.0.0-rc-1631855f-20241023) - '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-1631855f-20241023) - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + '@dnd-kit/accessibility': 3.1.0(react@19.0.0-rc-cae764ce-20241025) + '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-cae764ce-20241025) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) tslib: 2.7.0 - '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)': + '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)': dependencies: - '@dnd-kit/core': 6.1.0(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) - '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-1631855f-20241023) - react: 19.0.0-rc-1631855f-20241023 + '@dnd-kit/core': 6.1.0(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) + '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-cae764ce-20241025) + react: 19.0.0-rc-cae764ce-20241025 tslib: 2.7.0 - '@dnd-kit/utilities@3.2.2(react@19.0.0-rc-1631855f-20241023)': + '@dnd-kit/utilities@3.2.2(react@19.0.0-rc-cae764ce-20241025)': dependencies: - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 tslib: 2.7.0 '@dual-bundle/import-meta-resolve@4.1.0': {} @@ -7874,17 +7874,17 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 '@emotion/babel-plugin': 11.12.0 '@emotion/cache': 11.13.1 '@emotion/serialize': 1.3.1 - '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0-rc-1631855f-20241023) + '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0-rc-cae764ce-20241025) '@emotion/utils': 1.4.0 '@emotion/weak-memoize': 0.4.0 hoist-non-react-statics: 3.3.2 - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 @@ -7914,16 +7914,16 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 '@emotion/babel-plugin': 11.12.0 '@emotion/is-prop-valid': 1.3.0 - '@emotion/react': 11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@emotion/serialize': 1.3.1 - '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0-rc-1631855f-20241023) + '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0-rc-cae764ce-20241025) '@emotion/utils': 1.4.0 - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 @@ -7931,9 +7931,9 @@ snapshots: '@emotion/unitless@0.9.0': {} - '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@19.0.0-rc-1631855f-20241023)': + '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@19.0.0-rc-cae764ce-20241025)': dependencies: - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 '@emotion/utils@1.4.0': {} @@ -8116,11 +8116,11 @@ snapshots: '@floating-ui/core': 1.6.1 '@floating-ui/utils': 0.2.2 - '@floating-ui/react-dom@2.1.2(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)': + '@floating-ui/react-dom@2.1.2(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)': dependencies: '@floating-ui/dom': 1.6.5 - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) '@floating-ui/utils@0.2.2': {} @@ -8206,23 +8206,23 @@ snapshots: '@material/material-color-utilities@0.3.0': {} - '@microsoft/api-extractor-model@7.29.8(@types/node@22.7.9)': + '@microsoft/api-extractor-model@7.29.8(@types/node@22.8.0)': dependencies: '@microsoft/tsdoc': 0.15.0 '@microsoft/tsdoc-config': 0.17.0 - '@rushstack/node-core-library': 5.9.0(@types/node@22.7.9) + '@rushstack/node-core-library': 5.9.0(@types/node@22.8.0) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.47.11(@types/node@22.7.9)': + '@microsoft/api-extractor@7.47.11(@types/node@22.8.0)': dependencies: - '@microsoft/api-extractor-model': 7.29.8(@types/node@22.7.9) + '@microsoft/api-extractor-model': 7.29.8(@types/node@22.8.0) '@microsoft/tsdoc': 0.15.0 '@microsoft/tsdoc-config': 0.17.0 - '@rushstack/node-core-library': 5.9.0(@types/node@22.7.9) + '@rushstack/node-core-library': 5.9.0(@types/node@22.8.0) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.14.2(@types/node@22.7.9) - '@rushstack/ts-command-line': 4.23.0(@types/node@22.7.9) + '@rushstack/terminal': 0.14.2(@types/node@22.8.0) + '@rushstack/ts-command-line': 4.23.0(@types/node@22.8.0) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.8 @@ -8246,105 +8246,105 @@ snapshots: monaco-editor: 0.52.0 state-local: 1.0.7 - '@monaco-editor/react@4.6.0(monaco-editor@0.52.0)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)': + '@monaco-editor/react@4.6.0(monaco-editor@0.52.0)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)': dependencies: '@monaco-editor/loader': 1.4.0(monaco-editor@0.52.0) monaco-editor: 0.52.0 - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) - '@mui/base@5.0.0-beta.60(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@mui/base@5.0.0-beta.60(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.7 - '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) '@mui/types': 7.2.18(types-react@19.0.0-rc.1) - '@mui/utils': 6.1.5(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@mui/utils': 6.1.5(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@popperjs/core': 2.11.8 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 '@mui/core-downloads-tracker@6.1.5': {} - '@mui/icons-material@6.1.5(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@mui/icons-material@6.1.5(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.7 - '@mui/material': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-1631855f-20241023 + '@mui/material': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-cae764ce-20241025 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/lab@6.0.0-beta.13(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@mui/lab@6.0.0-beta.13(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.7 - '@mui/base': 5.0.0-beta.60(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@mui/material': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@mui/system': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@mui/base': 5.0.0-beta.60(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@mui/material': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@mui/system': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@mui/types': 7.2.18(types-react@19.0.0-rc.1) - '@mui/utils': 6.1.5(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@mui/utils': 6.1.5(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@types/react': types-react@19.0.0-rc.1 - '@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.7 '@mui/core-downloads-tracker': 6.1.5 - '@mui/system': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@mui/system': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@mui/types': 7.2.18(types-react@19.0.0-rc.1) - '@mui/utils': 6.1.5(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@mui/utils': 6.1.5(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@popperjs/core': 2.11.8 '@types/react-transition-group': 4.4.11 clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) react-is: 18.3.1 - react-transition-group: 4.4.5(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + react-transition-group: 4.4.5(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@types/react': types-react@19.0.0-rc.1 - '@mui/private-theming@5.16.6(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@mui/private-theming@5.16.6(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.7 - '@mui/utils': 5.16.6(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@mui/utils': 5.16.6(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) prop-types: 15.8.1 - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/private-theming@6.1.5(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@mui/private-theming@6.1.5(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.7 - '@mui/utils': 6.1.5(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@mui/utils': 6.1.5(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) prop-types: 15.8.1 - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/styled-engine@5.16.6(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)': + '@mui/styled-engine@5.16.6(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)': dependencies: '@babel/runtime': 7.25.7 '@emotion/cache': 11.13.1 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) - '@mui/styled-engine@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)': + '@mui/styled-engine@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)': dependencies: '@babel/runtime': 7.25.7 '@emotion/cache': 11.13.1 @@ -8352,87 +8352,87 @@ snapshots: '@emotion/sheet': 1.4.0 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) - '@mui/system@5.16.7(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@mui/system@5.16.7(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.7 - '@mui/private-theming': 5.16.6(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@mui/styled-engine': 5.16.6(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023) + '@mui/private-theming': 5.16.6(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@mui/styled-engine': 5.16.6(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025) '@mui/types': 7.2.18(types-react@19.0.0-rc.1) - '@mui/utils': 5.16.6(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@mui/utils': 5.16.6(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@types/react': types-react@19.0.0-rc.1 - '@mui/system@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@mui/system@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.7 - '@mui/private-theming': 6.1.5(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@mui/styled-engine': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023) + '@mui/private-theming': 6.1.5(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@mui/styled-engine': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025) '@mui/types': 7.2.18(types-react@19.0.0-rc.1) - '@mui/utils': 6.1.5(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@mui/utils': 6.1.5(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@types/react': types-react@19.0.0-rc.1 '@mui/types@7.2.18(types-react@19.0.0-rc.1)': optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/utils@5.16.6(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@mui/utils@5.16.6(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.7 '@mui/types': 7.2.18(types-react@19.0.0-rc.1) '@types/prop-types': 15.7.13 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 react-is: 18.3.1 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/utils@6.1.5(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@mui/utils@6.1.5(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.7 '@mui/types': 7.2.18(types-react@19.0.0-rc.1) '@types/prop-types': 15.7.13 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 react-is: 18.3.1 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/x-date-pickers@7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@mui/x-date-pickers@7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.7 - '@mui/base': 5.0.0-beta.60(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@mui/material': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@mui/system': 5.16.7(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@mui/utils': 5.16.6(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@mui/base': 5.0.0-beta.60(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@mui/material': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@mui/system': 5.16.7(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@mui/utils': 5.16.6(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@types/react-transition-group': 4.4.11 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) - react-transition-group: 4.4.5(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) + react-transition-group: 4.4.5(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) dayjs: 1.11.13 transitivePeerDependencies: - '@types/react' @@ -8719,82 +8719,82 @@ snapshots: '@radix-ui/primitive@1.1.0': {} - '@radix-ui/react-compose-refs@1.1.0(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@radix-ui/react-compose-refs@1.1.0(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-context@1.1.1(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@radix-ui/react-context@1.1.1(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-direction@1.1.0(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@radix-ui/react-direction@1.1.0(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-portal@1.1.2(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@radix-ui/react-portal@1.1.2(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: - '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-presence@1.1.1(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@radix-ui/react-presence@1.1.1(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-primitive@2.0.0(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@radix-ui/react-primitive@2.0.0(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: - '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-scroll-area@1.2.0(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@radix-ui/react-scroll-area@1.2.0(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/number': 1.1.0 '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@radix-ui/react-context': 1.1.1(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@radix-ui/react-direction': 1.1.0(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@radix-ui/react-presence': 1.1.1(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@radix-ui/react-context': 1.1.1(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@radix-ui/react-direction': 1.1.0(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@radix-ui/react-presence': 1.1.1(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-slot@1.1.0(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@radix-ui/react-slot@1.1.0(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-1631855f-20241023 + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-cae764ce-20241025 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-use-callback-ref@1.1.0(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@radix-ui/react-use-callback-ref@1.1.0(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-use-layout-effect@1.1.0(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1)': + '@radix-ui/react-use-layout-effect@1.1.0(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1)': dependencies: - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 @@ -8856,7 +8856,7 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@rushstack/node-core-library@5.9.0(@types/node@22.7.9)': + '@rushstack/node-core-library@5.9.0(@types/node@22.8.0)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -8867,50 +8867,50 @@ snapshots: resolve: 1.22.8 semver: 7.5.4 optionalDependencies: - '@types/node': 22.7.9 + '@types/node': 22.8.0 '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.8 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.14.2(@types/node@22.7.9)': + '@rushstack/terminal@0.14.2(@types/node@22.8.0)': dependencies: - '@rushstack/node-core-library': 5.9.0(@types/node@22.7.9) + '@rushstack/node-core-library': 5.9.0(@types/node@22.8.0) supports-color: 8.1.1 optionalDependencies: - '@types/node': 22.7.9 + '@types/node': 22.8.0 - '@rushstack/ts-command-line@4.23.0(@types/node@22.7.9)': + '@rushstack/ts-command-line@4.23.0(@types/node@22.8.0)': dependencies: - '@rushstack/terminal': 0.14.2(@types/node@22.7.9) + '@rushstack/terminal': 0.14.2(@types/node@22.8.0) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 transitivePeerDependencies: - '@types/node' - '@shikijs/core@1.22.0': + '@shikijs/core@1.22.1': dependencies: - '@shikijs/engine-javascript': 1.22.0 - '@shikijs/engine-oniguruma': 1.22.0 - '@shikijs/types': 1.22.0 + '@shikijs/engine-javascript': 1.22.1 + '@shikijs/engine-oniguruma': 1.22.1 + '@shikijs/types': 1.22.1 '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 hast-util-to-html: 9.0.3 - '@shikijs/engine-javascript@1.22.0': + '@shikijs/engine-javascript@1.22.1': dependencies: - '@shikijs/types': 1.22.0 + '@shikijs/types': 1.22.1 '@shikijs/vscode-textmate': 9.3.0 oniguruma-to-js: 0.4.3 - '@shikijs/engine-oniguruma@1.22.0': + '@shikijs/engine-oniguruma@1.22.1': dependencies: - '@shikijs/types': 1.22.0 + '@shikijs/types': 1.22.1 '@shikijs/vscode-textmate': 9.3.0 - '@shikijs/types@1.22.0': + '@shikijs/types@1.22.1': dependencies: '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 @@ -9057,43 +9057,43 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/react-router@1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)': + '@tanstack/react-router@1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)': dependencies: '@tanstack/history': 1.61.1 - '@tanstack/react-store': 0.5.6(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + '@tanstack/react-store': 0.5.6(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) tiny-invariant: 1.3.3 tiny-warning: 1.0.3 optionalDependencies: '@tanstack/router-generator': 1.74.2 - '@tanstack/react-store@0.5.6(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)': + '@tanstack/react-store@0.5.6(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)': dependencies: '@tanstack/store': 0.5.5 - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) - use-sync-external-store: 1.2.2(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) + use-sync-external-store: 1.2.2(react@19.0.0-rc-cae764ce-20241025) - '@tanstack/react-table@8.20.5(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)': + '@tanstack/react-table@8.20.5(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)': dependencies: '@tanstack/table-core': 8.20.5 - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) - '@tanstack/react-virtual@3.10.6(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)': + '@tanstack/react-virtual@3.10.6(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)': dependencies: '@tanstack/virtual-core': 3.10.6 - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) - '@tanstack/router-devtools@1.76.1(@tanstack/react-router@1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023))(csstype@3.1.3)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)': + '@tanstack/router-devtools@1.76.1(@tanstack/react-router@1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025))(csstype@3.1.3)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)': dependencies: - '@tanstack/react-router': 1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + '@tanstack/react-router': 1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) transitivePeerDependencies: - csstype @@ -9104,7 +9104,7 @@ snapshots: tsx: 4.19.1 zod: 3.23.8 - '@tanstack/router-plugin@1.76.0(vite@5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))(webpack-sources@3.2.3)': + '@tanstack/router-plugin@1.76.0(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))(webpack-sources@3.2.3)': dependencies: '@babel/core': 7.25.8 '@babel/generator': 7.25.7 @@ -9125,14 +9125,14 @@ snapshots: unplugin: 1.14.1(webpack-sources@3.2.3) zod: 3.23.8 optionalDependencies: - vite: 5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + vite: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) transitivePeerDependencies: - supports-color - webpack-sources - '@tanstack/router-zod-adapter@1.76.1(@tanstack/react-router@1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023))(zod@3.23.8)': + '@tanstack/router-zod-adapter@1.76.1(@tanstack/react-router@1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025))(zod@3.23.8)': dependencies: - '@tanstack/react-router': 1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + '@tanstack/react-router': 1.76.1(@tanstack/router-generator@1.74.2)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) zod: 3.23.8 '@tanstack/store@0.5.5': {} @@ -9272,12 +9272,12 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 22.7.9 + '@types/node': 22.8.0 '@types/responselike': 1.0.3 '@types/conventional-commits-parser@5.0.0': dependencies: - '@types/node': 22.7.9 + '@types/node': 22.8.0 '@types/d3-array@3.2.1': {} @@ -9413,7 +9413,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 22.7.9 + '@types/node': 22.8.0 '@types/geojson@7946.0.14': {} @@ -9431,11 +9431,11 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 22.7.9 + '@types/node': 22.8.0 '@types/keyv@3.1.4': dependencies: - '@types/node': 22.7.9 + '@types/node': 22.8.0 '@types/lodash-es@4.17.12': dependencies: @@ -9455,7 +9455,7 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/node@22.7.9': + '@types/node@22.8.0': dependencies: undici-types: 6.19.8 @@ -9477,7 +9477,7 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 22.7.9 + '@types/node': 22.8.0 '@types/retry@0.12.2': {} @@ -9489,7 +9489,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.7.9 + '@types/node': 22.8.0 optional: true '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)': @@ -9575,21 +9575,21 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-react-swc@3.7.1(vite@5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))': + '@vitejs/plugin-react-swc@3.7.1(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))': dependencies: '@swc/core': 1.7.26 - vite: 5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + vite: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@4.3.3(vite@5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))': + '@vitejs/plugin-react@4.3.3(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0))': dependencies: '@babel/core': 7.25.8 '@babel/plugin-transform-react-jsx-self': 7.25.7(@babel/core@7.25.8) '@babel/plugin-transform-react-jsx-source': 7.25.7(@babel/core@7.25.8) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + vite: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) transitivePeerDependencies: - supports-color @@ -9679,14 +9679,14 @@ snapshots: clean-stack: 5.2.0 indent-string: 5.0.0 - ahooks@3.8.1(react@19.0.0-rc-1631855f-20241023): + ahooks@3.8.1(react@19.0.0-rc-cae764ce-20241025): dependencies: '@babel/runtime': 7.25.6 dayjs: 1.11.13 intersection-observer: 0.12.2 js-cookie: 3.0.5 lodash: 4.17.21 - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 react-fast-compare: 3.2.2 resize-observer-polyfill: 1.5.1 screenfull: 5.2.0 @@ -9728,16 +9728,16 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - allotment@1.20.2(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023): + allotment@1.20.2(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025): dependencies: classnames: 2.5.1 eventemitter3: 5.0.1 lodash.clamp: 4.0.3 lodash.debounce: 4.0.8 lodash.isequal: 4.5.0 - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) - use-resize-observer: 9.1.0(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) + use-resize-observer: 9.1.0(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) ansi-align@2.0.0: dependencies: @@ -10182,9 +10182,9 @@ snapshots: dependencies: toggle-selection: 1.0.6 - cosmiconfig-typescript-loader@5.0.0(@types/node@22.7.9)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3): + cosmiconfig-typescript-loader@5.0.0(@types/node@22.8.0)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3): dependencies: - '@types/node': 22.7.9 + '@types/node': 22.8.0 cosmiconfig: 9.0.0(typescript@5.6.3) jiti: 1.21.6 typescript: 5.6.3 @@ -11209,13 +11209,13 @@ snapshots: fraction.js@4.3.7: {} - framer-motion@12.0.0-alpha.1(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023): + framer-motion@12.0.0-alpha.1(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025): dependencies: tslib: 2.7.0 optionalDependencies: '@emotion/is-prop-valid': 1.3.0 - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) fs-extra@11.2.0: dependencies: @@ -11540,7 +11540,7 @@ snapshots: hyphenate-style-name@1.1.0: {} - i18next@23.16.3: + i18next@23.16.4: dependencies: '@babel/runtime': 7.25.7 @@ -11831,10 +11831,10 @@ snapshots: jju@1.4.0: {} - jotai@2.10.1(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1): + jotai@2.10.1(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1): optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 js-cookie@2.2.1: {} @@ -11904,11 +11904,11 @@ snapshots: kind-of@6.0.3: {} - knip@5.34.0(@types/node@22.7.9)(typescript@5.6.3): + knip@5.34.0(@types/node@22.8.0)(typescript@5.6.3): dependencies: '@nodelib/fs.walk': 1.2.8 '@snyk/github-codeowners': 1.1.0 - '@types/node': 22.7.9 + '@types/node': 22.8.0 easy-table: 1.2.0 enhanced-resolve: 5.17.1 fast-glob: 3.3.2 @@ -12083,19 +12083,19 @@ snapshots: escape-string-regexp: 4.0.0 optional: true - material-react-table@3.0.1(ssp4w3hwtozkjqzhgdupzt3ocq): + material-react-table@3.0.1(5vw72tj7snwug53s6dkn5axbwi): dependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@mui/icons-material': 6.1.5(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@mui/material': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@mui/icons-material': 6.1.5(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@mui/material': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) '@tanstack/match-sorter-utils': 8.19.4 - '@tanstack/react-table': 8.20.5(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) - '@tanstack/react-virtual': 3.10.6(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) + '@tanstack/react-table': 8.20.5(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) + '@tanstack/react-virtual': 3.10.6(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) highlight-words: 1.2.2 - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) mathml-tag-names@2.1.3: {} @@ -12430,14 +12430,14 @@ snapshots: muggle-string@0.4.1: {} - mui-color-input@4.0.2(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1): + mui-color-input@4.0.2(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1): dependencies: '@ctrl/tinycolor': 4.1.0 - '@emotion/react': 11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@mui/material': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + '@emotion/react': 11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@mui/material': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 @@ -12447,15 +12447,15 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nano-css@5.6.2(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023): + nano-css@5.6.2(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025): dependencies: '@jridgewell/sourcemap-codec': 1.5.0 css-tree: 1.1.3 csstype: 3.1.3 fastest-stable-stringify: 2.0.2 inline-style-prefixer: 7.0.1 - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) rtl-css-js: 1.16.1 stacktrace-js: 2.0.2 stylis: 4.3.2 @@ -12996,50 +12996,50 @@ snapshots: - supports-color - utf-8-validate - react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023): + react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025): dependencies: - react: 19.0.0-rc-1631855f-20241023 - scheduler: 0.25.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 + scheduler: 0.25.0-rc-cae764ce-20241025 - react-error-boundary@4.1.2(react@19.0.0-rc-1631855f-20241023): + react-error-boundary@4.1.2(react@19.0.0-rc-cae764ce-20241025): dependencies: '@babel/runtime': 7.25.7 - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 react-fast-compare@3.2.2: {} - react-fast-marquee@1.6.5(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023): + react-fast-marquee@1.6.5(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025): dependencies: - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) - react-hook-form-mui@7.4.0(ir3pm7rxqjrasaubsqt6khinqy): + react-hook-form-mui@7.4.0(vaiq7ih44qbefvijqz7wujobm4): dependencies: - '@mui/material': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-1631855f-20241023 - react-hook-form: 7.52.1(react@19.0.0-rc-1631855f-20241023) + '@mui/material': 6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-cae764ce-20241025 + react-hook-form: 7.52.1(react@19.0.0-rc-cae764ce-20241025) optionalDependencies: - '@mui/icons-material': 6.1.5(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) - '@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1) + '@mui/icons-material': 6.1.5(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) + '@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@mui/material@6.1.5(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1) - react-hook-form@7.52.1(react@19.0.0-rc-1631855f-20241023): + react-hook-form@7.52.1(react@19.0.0-rc-cae764ce-20241025): dependencies: - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 - react-i18next@15.0.3(i18next@23.16.3)(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023): + react-i18next@15.1.0(i18next@23.16.4)(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025): dependencies: - '@babel/runtime': 7.25.6 + '@babel/runtime': 7.25.7 html-parse-stringify: 3.0.1 - i18next: 23.16.3 - react: 19.0.0-rc-1631855f-20241023 + i18next: 23.16.4 + react: 19.0.0-rc-cae764ce-20241025 optionalDependencies: - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) react-is@16.13.1: {} react-is@18.3.1: {} - react-markdown@9.0.1(react@19.0.0-rc-1631855f-20241023)(types-react@19.0.0-rc.1): + react-markdown@9.0.1(react@19.0.0-rc-cae764ce-20241025)(types-react@19.0.0-rc.1): dependencies: '@types/hast': 3.0.4 '@types/react': types-react@19.0.0-rc.1 @@ -13047,7 +13047,7 @@ snapshots: hast-util-to-jsx-runtime: 2.3.0 html-url-attributes: 3.0.0 mdast-util-to-hast: 13.1.0 - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 remark-parse: 11.0.0 remark-rehype: 11.1.0 unified: 11.0.4 @@ -13058,27 +13058,27 @@ snapshots: react-refresh@0.14.2: {} - react-split-grid@1.0.4(react@19.0.0-rc-1631855f-20241023): + react-split-grid@1.0.4(react@19.0.0-rc-cae764ce-20241025): dependencies: prop-types: 15.8.1 - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 split-grid: 1.0.11 - react-transition-group@4.4.5(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023): + react-transition-group@4.4.5(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025): dependencies: '@babel/runtime': 7.25.7 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) - react-universal-interface@0.6.2(react@19.0.0-rc-1631855f-20241023)(tslib@2.7.0): + react-universal-interface@0.6.2(react@19.0.0-rc-cae764ce-20241025)(tslib@2.7.0): dependencies: - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 tslib: 2.7.0 - react-use@17.5.1(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023): + react-use@17.5.1(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025): dependencies: '@types/js-cookie': 2.2.7 '@xobotyi/scrollbar-width': 1.9.5 @@ -13086,10 +13086,10 @@ snapshots: fast-deep-equal: 3.1.3 fast-shallow-equal: 1.0.0 js-cookie: 2.2.1 - nano-css: 5.6.2(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023) - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) - react-universal-interface: 0.6.2(react@19.0.0-rc-1631855f-20241023)(tslib@2.7.0) + nano-css: 5.6.2(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) + react-universal-interface: 0.6.2(react@19.0.0-rc-cae764ce-20241025)(tslib@2.7.0) resize-observer-polyfill: 1.5.1 screenfull: 5.2.0 set-harmonic-interval: 1.0.1 @@ -13097,7 +13097,7 @@ snapshots: ts-easing: 0.2.0 tslib: 2.7.0 - react@19.0.0-rc-1631855f-20241023: {} + react@19.0.0-rc-cae764ce-20241025: {} read-cache@1.0.0: dependencies: @@ -13394,7 +13394,7 @@ snapshots: sax@1.3.0: {} - scheduler@0.25.0-rc-1631855f-20241023: {} + scheduler@0.25.0-rc-cae764ce-20241025: {} screenfull@5.2.0: {} @@ -13454,12 +13454,12 @@ snapshots: shell-quote@1.8.1: {} - shiki@1.22.0: + shiki@1.22.1: dependencies: - '@shikijs/core': 1.22.0 - '@shikijs/engine-javascript': 1.22.0 - '@shikijs/engine-oniguruma': 1.22.0 - '@shikijs/types': 1.22.0 + '@shikijs/core': 1.22.1 + '@shikijs/engine-javascript': 1.22.1 + '@shikijs/engine-oniguruma': 1.22.1 + '@shikijs/types': 1.22.1 '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 @@ -13800,11 +13800,11 @@ snapshots: svg-tags@1.0.0: {} - swr@2.2.5(react@19.0.0-rc-1631855f-20241023): + swr@2.2.5(react@19.0.0-rc-cae764ce-20241025): dependencies: client-only: 0.0.1 - react: 19.0.0-rc-1631855f-20241023 - use-sync-external-store: 1.2.2(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + use-sync-external-store: 1.2.2(react@19.0.0-rc-cae764ce-20241025) synckit@0.9.1: dependencies: @@ -14241,15 +14241,15 @@ snapshots: dependencies: prepend-http: 1.0.4 - use-resize-observer@9.1.0(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023): + use-resize-observer@9.1.0(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025): dependencies: '@juggle/resize-observer': 3.4.0 - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) - use-sync-external-store@1.2.2(react@19.0.0-rc-1631855f-20241023): + use-sync-external-store@1.2.2(react@19.0.0-rc-cae764ce-20241025): dependencies: - react: 19.0.0-rc-1631855f-20241023 + react: 19.0.0-rc-cae764ce-20241025 utf-8-validate@5.0.10: dependencies: @@ -14272,10 +14272,10 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - virtua@0.35.1(react-dom@19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023))(react@19.0.0-rc-1631855f-20241023): + virtua@0.35.1(react-dom@19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025))(react@19.0.0-rc-cae764ce-20241025): optionalDependencies: - react: 19.0.0-rc-1631855f-20241023 - react-dom: 19.0.0-rc-1631855f-20241023(react@19.0.0-rc-1631855f-20241023) + react: 19.0.0-rc-cae764ce-20241025 + react-dom: 19.0.0-rc-cae764ce-20241025(react@19.0.0-rc-cae764ce-20241025) vite-bundle-visualizer@1.2.1(rollup@4.21.0): dependencies: @@ -14287,9 +14287,9 @@ snapshots: - rollup - supports-color - vite-plugin-dts@4.3.0(@types/node@22.7.9)(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)): + vite-plugin-dts@4.3.0(@types/node@22.8.0)(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)): dependencies: - '@microsoft/api-extractor': 7.47.11(@types/node@22.7.9) + '@microsoft/api-extractor': 7.47.11(@types/node@22.8.0) '@rollup/pluginutils': 5.1.0(rollup@4.21.0) '@volar/typescript': 2.4.5 '@vue/language-core': 2.1.6(typescript@5.6.3) @@ -14300,49 +14300,49 @@ snapshots: magic-string: 0.30.11 typescript: 5.6.3 optionalDependencies: - vite: 5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + vite: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-sass-dts@1.3.29(postcss@8.4.47)(prettier@3.3.3)(sass-embedded@1.78.0)(vite@5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)): + vite-plugin-sass-dts@1.3.29(postcss@8.4.47)(prettier@3.3.3)(sass-embedded@1.78.0)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)): dependencies: postcss: 8.4.47 postcss-js: 4.0.1(postcss@8.4.47) prettier: 3.3.3 sass-embedded: 1.78.0 - vite: 5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + vite: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) - vite-plugin-svgr@4.2.0(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)): + vite-plugin-svgr@4.2.0(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)): dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.21.0) '@svgr/core': 8.1.0(typescript@5.6.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.6.3)) - vite: 5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + vite: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) transitivePeerDependencies: - rollup - supports-color - typescript - vite-tsconfig-paths@5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)): + vite-tsconfig-paths@5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.0.3(typescript@5.6.3) optionalDependencies: - vite: 5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) + vite: 5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.10(@types/node@22.7.9)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0): + vite@5.4.10(@types/node@22.8.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.80.4)(stylus@0.62.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 rollup: 4.21.0 optionalDependencies: - '@types/node': 22.7.9 + '@types/node': 22.8.0 fsevents: 2.3.3 less: 4.2.0 sass: 1.80.4 diff --git a/clash-verge-rev/src-tauri/src/core/tray.rs b/clash-verge-rev/src-tauri/src/core/tray.rs index af2c855f24..4d1e5d7118 100644 --- a/clash-verge-rev/src-tauri/src/core/tray.rs +++ b/clash-verge-rev/src-tauri/src/core/tray.rs @@ -83,12 +83,12 @@ impl Tray { let verge = Config::verge().latest().clone(); let system_proxy = verge.enable_system_proxy.as_ref().unwrap_or(&false); let tun_mode = verge.enable_tun_mode.as_ref().unwrap_or(&false); - #[cfg(target_os = "macos")] - let tray_icon = verge.tray_icon.clone().unwrap_or("monochrome".to_string()); let common_tray_icon = verge.common_tray_icon.as_ref().unwrap_or(&false); let sysproxy_tray_icon = verge.sysproxy_tray_icon.as_ref().unwrap_or(&false); let tun_tray_icon = verge.tun_tray_icon.as_ref().unwrap_or(&false); let tray = app_handle.tray_by_id("main").unwrap(); + #[cfg(target_os = "macos")] + let tray_icon = verge.tray_icon.clone().unwrap_or("monochrome".to_string()); let _ = tray.set_menu(Some(create_tray_menu( &app_handle, @@ -97,28 +97,20 @@ impl Tray { *tun_mode, )?)); - // let _ = tray. - #[cfg(target_os = "macos")] - match tray_icon.as_str() { - "monochrome" => { - let _ = tray.set_icon_as_template(true); - } - "colorful" => { - let _ = tray.set_icon_as_template(false); - } - _ => {} - } - + let mut use_custom_icon = false; + #[allow(unused)] let mut indication_icon = if *system_proxy { #[cfg(target_os = "macos")] let mut icon = match tray_icon.as_str() { - "monochrome" => include_bytes!("../../icons/tray-icon-sys-mono.ico").to_vec(), - "colorful" => include_bytes!("../../icons/tray-icon-sys.ico").to_vec(), + "colorful" => { + use_custom_icon = true; + include_bytes!("../../icons/tray-icon-sys.ico").to_vec() + } _ => include_bytes!("../../icons/tray-icon-sys-mono.ico").to_vec(), }; + #[cfg(not(target_os = "macos"))] let mut icon = include_bytes!("../../icons/tray-icon-sys.ico").to_vec(); - if *sysproxy_tray_icon { let icon_dir_path = dirs::app_home_dir()?.join("icons"); let png_path = icon_dir_path.join("sysproxy.png"); @@ -128,37 +120,19 @@ impl Tray { } else if png_path.exists() { icon = std::fs::read(png_path).unwrap(); } + use_custom_icon = true; } icon - } else { + } else if *tun_mode { #[cfg(target_os = "macos")] let mut icon = match tray_icon.as_str() { - "monochrome" => include_bytes!("../../icons/tray-icon-mono.ico").to_vec(), - "colorful" => include_bytes!("../../icons/tray-icon.ico").to_vec(), - _ => include_bytes!("../../icons/tray-icon-mono.ico").to_vec(), - }; - #[cfg(not(target_os = "macos"))] - let mut icon = include_bytes!("../../icons/tray-icon.ico").to_vec(); - if *common_tray_icon { - let icon_dir_path = dirs::app_home_dir()?.join("icons"); - let png_path = icon_dir_path.join("common.png"); - let ico_path = icon_dir_path.join("common.ico"); - if ico_path.exists() { - icon = std::fs::read(ico_path).unwrap(); - } else if png_path.exists() { - icon = std::fs::read(png_path).unwrap(); + "colorful" => { + use_custom_icon = true; + include_bytes!("../../icons/tray-icon-tun.ico").to_vec() } - } - icon - }; - - if *tun_mode { - #[cfg(target_os = "macos")] - let mut icon = match tray_icon.as_str() { - "monochrome" => include_bytes!("../../icons/tray-icon-tun-mono.ico").to_vec(), - "colorful" => include_bytes!("../../icons/tray-icon-tun.ico").to_vec(), _ => include_bytes!("../../icons/tray-icon-tun-mono.ico").to_vec(), }; + #[cfg(not(target_os = "macos"))] let mut icon = include_bytes!("../../icons/tray-icon-tun.ico").to_vec(); if *tun_tray_icon { @@ -170,9 +144,46 @@ impl Tray { } else if png_path.exists() { icon = std::fs::read(png_path).unwrap(); } + use_custom_icon = true; + } + icon + } else { + #[cfg(target_os = "macos")] + let mut icon = match tray_icon.as_str() { + "colorful" => { + use_custom_icon = true; + include_bytes!("../../icons/tray-icon.ico").to_vec() + } + _ => include_bytes!("../../icons/tray-icon-mono.ico").to_vec(), + }; + + #[cfg(not(target_os = "macos"))] + let mut icon = include_bytes!("../../icons/tray-icon.ico").to_vec(); + if *common_tray_icon { + let icon_dir_path = dirs::app_home_dir()?.join("icons"); + let png_path = icon_dir_path.join("common.png"); + let ico_path = icon_dir_path.join("common.ico"); + if ico_path.exists() { + icon = std::fs::read(ico_path).unwrap(); + } else if png_path.exists() { + icon = std::fs::read(png_path).unwrap(); + } + use_custom_icon = true; + } + icon + }; + + #[cfg(target_os = "macos")] + { + if use_custom_icon { + let _ = tray.set_icon_as_template(false); + let _ = tray.set_icon(Some(tauri::image::Image::from_bytes(&indication_icon)?)); + } else { + let _ = tray.set_icon_as_template(true); } - indication_icon = icon } + + #[cfg(not(target_os = "macos"))] let _ = tray.set_icon(Some(tauri::image::Image::from_bytes(&indication_icon)?)); let switch_map = { diff --git a/clash-verge-rev/src-tauri/src/enhance/tun.rs b/clash-verge-rev/src-tauri/src/enhance/tun.rs index c872809041..9e7446df4d 100644 --- a/clash-verge-rev/src-tauri/src/enhance/tun.rs +++ b/clash-verge-rev/src-tauri/src/enhance/tun.rs @@ -24,7 +24,23 @@ pub async fn use_tun(mut config: Mapping, enable: bool) -> Mapping { let mut tun_val = tun_val.map_or(Mapping::new(), |val| { val.as_mapping().cloned().unwrap_or(Mapping::new()) }); + let dns_key = Value::from("dns"); + let dns_val = config.get(&dns_key); + let mut dns_val = dns_val.map_or(Mapping::new(), |val| { + val.as_mapping().cloned().unwrap_or(Mapping::new()) + }); + + if enable { + revise!(dns_val, "enable", true); + revise!(dns_val, "ip-v6", true); + revise!(dns_val, "enhanced-mode", "fake-ip"); + revise!(dns_val, "fake-ip-range", "10.96.0.0/16"); + } else { + revise!(dns_val, "enhanced-mode", "redir-host"); + } + revise!(tun_val, "enable", enable); revise!(config, "tun", tun_val); + revise!(config, "dns", dns_val); config } diff --git a/geoip/README.md b/geoip/README.md index fc6ae41ff0..2a0473baa5 100644 --- a/geoip/README.md +++ b/geoip/README.md @@ -602,60 +602,186 @@ $ ./geoip convert -c config.json ### 查找 IP 或 CIDR 所在类别(`lookup`) +可能的返回结果: + +- 查询的字符串不是有效的 IP 或 CIDR,返回 `false` +- 查询的 IP 或 CIDR 不存在于任何一个类别中,返回 `false` +- 查询的 IP 或 CIDR 存在于某种格式文件的单个类别中: + - 若该格式文件只包含一个类别,返回 `true` + - 若该格式文件包含多个类别,返回匹配的类别名称 +- 查询的 IP 或 CIDR 存在于多个类别中,返回以英文逗号分隔的类别名称,如 `au,cloudflare` + ```bash -# lookup one IP from local file -$ ./geoip lookup -f text -u ./cn.txt -n cn 1.0.1.1 +# ================= One-time Mode ================= # + +# 从 text 格式的本地文件(只包含一个类别)中查找某个 IP 地址 +# lookup IP from local file (with only one list) in text format +$ ./geoip lookup -f text -u ./cn.txt 1.0.1.1 +true + + +# 从 text 格式的本地文件(只包含一个类别)中查找某个 IP 地址 +# lookup IP from local file (with only one list) in text format +$ ./geoip lookup -f text -u ./cn.txt 2.2.2.2 +false + + +# 从 text 格式的本地文件(只包含一个类别)中查找某个 CIDR +# lookup CIDR from local file (with only one list) in text format +$ ./geoip lookup -f text -u ./cn.txt 1.0.1.1/24 +true + + +# 从 text 格式的本地文件(只包含一个类别)中查找某个 CIDR +# lookup CIDR from local file (with only one list) in text format +$ ./geoip lookup -f text -u ./cn.txt 1.0.1.1/23 +false + + +# 从 text 格式的远程 URL(只包含一个类别)中查找某个 IP 地址 +# lookup IP from remote URL (with only one list) in text format +$ ./geoip lookup -f text -u https://example.com/cn.txt 1.0.1.1 +true + + +# 从 v2rayGeoIPDat 格式的本地文件(只包含一个类别)中查找某个 IP 地址 +# lookup IP from local file (with only one list) in v2rayGeoIPDat format +$ ./geoip lookup -f v2rayGeoIPDat -u ./cn.dat 1.0.1.1 +true + + +# 从 v2rayGeoIPDat 格式的本地文件(包含多个类别)中查找某个 IP 地址 +# lookup IP from local file (with multiple lists) in v2rayGeoIPDat format +$ ./geoip lookup -f v2rayGeoIPDat -u ./geoip.dat 1.0.1.1 cn -# lookup one CIDR from local file -$ ./geoip lookup -f text -u ./cn.txt -n cn 1.0.1.1/24 -cn +# 从 v2rayGeoIPDat 格式的本地文件(包含多个类别)中查找某个 IP 地址 +# lookup IP from local file (with multiple lists) in v2rayGeoIPDat format +$ ./geoip lookup -f v2rayGeoIPDat -u ./geoip.dat 1.0.0.1 +au,cloudflare -# lookup IP or CIDR in REPL mode from local file -$ ./geoip lookup -f text -u ./cn.txt -n cn -Enter IP or CIDR (type `exit` to quit): +# 从 v2rayGeoIPDat 格式的远程 URL(包含多个类别)中查找某个 CIDR +# lookup CIDR from remote URL (with multiple lists) in v2rayGeoIPDat format +$ ./geoip lookup -f v2rayGeoIPDat -u https://example.com/geoip.dat 1.0.0.1/24 +au,cloudflare + + + + +# ================= REPL Mode ================= # + +# 从 text 格式的本地文件(只包含一个类别)中查找某个 IP 地址或 CIDR +# lookup IP or CIDR from local file (with only one list) in text format +$ ./geoip lookup -f text -u ./cn.txt +Enter IP or CIDR (type "exit" to quit): +>> 1.0.1.1 +true + +>> 1.0.1.1/24 +true + +>> 1.0.1.1/23 +false + +>> 2.2.2.2 +false + +>> 2.2.2.2/24 +false + +>> 300.300.300.300 +false + +>> 300.300.300.300/24 +false + +>> exit + + +# 从 text 格式的远程 URL(只包含一个类别)中查找某个 IP 地址或 CIDR +# lookup IP or CIDR from remote URL (with only one list) in text format +$ ./geoip lookup -f text -u https://example.com/cn.txt +Enter IP or CIDR (type "exit" to quit): +>> 1.0.1.1 +true + +>> 1.0.1.1/24 +true + +>> 1.0.1.1/23 +false + +>> 2.2.2.2 +false + +>> 2.2.2.2/24 +false + +>> 300.300.300.300 +false + +>> 300.300.300.300/24 +false + +>> exit + + +# 从 v2rayGeoIPDat 格式的本地文件(只包含一个类别)中查找某个 IP 地址或 CIDR +# lookup IP or CIDR from local file (with only one list) in v2rayGeoIPDat format +$ ./geoip lookup -f v2rayGeoIPDat -u ./cn.dat +Enter IP or CIDR (type "exit" to quit): +>> 1.0.1.1 +true + +>> 1.0.1.1/24 +true + +>> 1.0.1.1/23 +false + +>> 2.2.2.2 +false + +>> 2.2.2.2/24 +false + +>> 300.300.300.300 +false + +>> 300.300.300.300/24 +false + +>> exit + + +# 从 v2rayGeoIPDat 格式的远程 URL(包含多个类别)中查找某个 IP 地址或 CIDR +# lookup IP or CIDR from remote URL (with multiple list) in v2rayGeoIPDat format +$ ./geoip lookup -f v2rayGeoIPDat -u https://example.com/geoip.dat +Enter IP or CIDR (type "exit" to quit): >> 1.0.1.1 cn + >> 1.0.1.1/24 cn +>> 1.0.1.1/23 +false -# lookup IP or CIDR in REPL mode from remote file -$ ./geoip lookup -f text -u https://example.com/cn.txt -n cn -Enter IP or CIDR (type `exit` to quit): ->> 1.0.1.1 -cn ->> 1.0.1.1/24 -cn +>> 1.0.0.1 +au,cloudflare +>> 1.0.0.1/24 +au,cloudflare -# lookup IP or CIDR in REPL mode from local directory, got two lists joined with comma -$ ./geoip lookup -f text -d ./path/to/your/directory/ -Enter IP or CIDR (type `exit` to quit): ->> 1.0.1.1 -cn,my-custom-list ->> 1.0.1.1/24 -cn,my-custom-list +>> 300.300.300.300 +false +>> 300.300.300.300/24 +false -# lookup IP or CIDR in REPL mode from specified lists in local directory -$ ./geoip lookup -f text -d ./path/to/your/directory/ -l cn,us,jp -Enter IP or CIDR (type `exit` to quit): ->> 1.0.1.1 -cn ->> 1.0.1.1/24 -cn - - -# lookup IP or CIDR in REPL mode with another format from specified lists in remote file -$ ./geoip lookup -f v2rayGeoIPDat -u https://example.com/geoip.dat -l cn,us,jp -Enter IP or CIDR (type `exit` to quit): ->> 1.0.1.1 -cn ->> 1.0.1.1/24 -cn +>> exit ``` ## 使用本项目的项目 diff --git a/geoip/lib/container.go b/geoip/lib/container.go index 3ecb5b0ea1..b08cbc13dd 100644 --- a/geoip/lib/container.go +++ b/geoip/lib/container.go @@ -232,41 +232,29 @@ func (c *container) lookup(addrOrPrefix any, iptype IPType, searchList ...string continue } + var ipset *netipx.IPSet + var err error switch iptype { case IPv4: - ipset, err := entry.GetIPv4Set() - if err != nil { - return nil, false, err - } - switch addrOrPrefix := addrOrPrefix.(type) { - case netip.Prefix: - if found := ipset.ContainsPrefix(addrOrPrefix); found { - isfound = true - result = append(result, entry.GetName()) - } - case netip.Addr: - if found := ipset.Contains(addrOrPrefix); found { - isfound = true - result = append(result, entry.GetName()) - } - } - + ipset, err = entry.GetIPv4Set() case IPv6: - ipset, err := entry.GetIPv6Set() - if err != nil { - return nil, false, err + ipset, err = entry.GetIPv6Set() + } + + if err != nil { + return nil, false, err + } + + switch addrOrPrefix := addrOrPrefix.(type) { + case netip.Prefix: + if found := ipset.ContainsPrefix(addrOrPrefix); found { + isfound = true + result = append(result, entry.GetName()) } - switch addrOrPrefix := addrOrPrefix.(type) { - case netip.Prefix: - if found := ipset.ContainsPrefix(addrOrPrefix); found { - isfound = true - result = append(result, entry.GetName()) - } - case netip.Addr: - if found := ipset.Contains(addrOrPrefix); found { - isfound = true - result = append(result, entry.GetName()) - } + case netip.Addr: + if found := ipset.Contains(addrOrPrefix); found { + isfound = true + result = append(result, entry.GetName()) } } } diff --git a/geoip/lookup.go b/geoip/lookup.go index 079e1cc3bf..090c2802af 100644 --- a/geoip/lookup.go +++ b/geoip/lookup.go @@ -4,6 +4,7 @@ import ( "bufio" "fmt" "log" + "net/netip" "os" "strings" @@ -12,34 +13,34 @@ import ( ) var supportedInputFormats = map[string]bool{ - strings.ToLower("maxmindMMDB"): true, - strings.ToLower("clashRuleSetClassical"): true, strings.ToLower("clashRuleSet"): true, + strings.ToLower("clashRuleSetClassical"): true, + strings.ToLower("maxmindMMDB"): true, + strings.ToLower("mihomoMRS"): true, + strings.ToLower("singboxSRS"): true, strings.ToLower("surgeRuleSet"): true, strings.ToLower("text"): true, - strings.ToLower("singboxSRS"): true, strings.ToLower("v2rayGeoIPDat"): true, } func init() { rootCmd.AddCommand(lookupCmd) - lookupCmd.Flags().StringP("format", "f", "", "The input format, available options: text, v2rayGeoIPDat, maxmindMMDB, singboxSRS, clashRuleSet, clashRuleSetClassical, surgeRuleSet") - lookupCmd.Flags().StringP("name", "n", "", "The name of the list, use with \"uri\" flag") - lookupCmd.Flags().StringP("uri", "u", "", "URI of the input file, support both local file path and remote HTTP(S) URL") - lookupCmd.Flags().StringP("dir", "d", "", "Path to the input directory. The filename without extension will be as the name of the list") + lookupCmd.Flags().StringP("format", "f", "", "(Required) The input format. Available formats: text, v2rayGeoIPDat, maxmindMMDB, mihomoMRS, singboxSRS, clashRuleSet, clashRuleSetClassical, surgeRuleSet") + lookupCmd.Flags().StringP("uri", "u", "", "URI of the input file, support both local file path and remote HTTP(S) URL. (Cannot be used with \"dir\" flag)") + lookupCmd.Flags().StringP("dir", "d", "", "Path to the input directory. The filename without extension will be as the name of the list. (Cannot be used with \"uri\" flag)") lookupCmd.Flags().StringSliceP("searchlist", "l", []string{}, "The lists to search from, separated by comma") lookupCmd.MarkFlagRequired("format") lookupCmd.MarkFlagsOneRequired("uri", "dir") - lookupCmd.MarkFlagsRequiredTogether("name", "uri") + lookupCmd.MarkFlagsMutuallyExclusive("uri", "dir") lookupCmd.MarkFlagDirname("dir") } var lookupCmd = &cobra.Command{ Use: "lookup", Aliases: []string{"find"}, - Short: "Lookup specified IP or CIDR in specified lists", + Short: "Lookup if specified IP or CIDR is in specified lists", Args: cobra.RangeArgs(0, 1), Run: func(cmd *cobra.Command, args []string) { // Validate format @@ -49,9 +50,8 @@ var lookupCmd = &cobra.Command{ log.Fatal("unsupported input format") } - // Get name - name, _ := cmd.Flags().GetString("name") - name = strings.ToLower(strings.TrimSpace(name)) + // Set name + name := "true" // Get uri uri, _ := cmd.Flags().GetString("uri") @@ -68,42 +68,38 @@ var lookupCmd = &cobra.Command{ switch len(args) > 0 { case true: // With search arg, run in once mode - search := strings.ToLower(args[0]) - config := generateConfigForLookup(format, name, uri, dir, search, searchListStr) - - instance, err := lib.NewInstance() - if err != nil { - log.Fatal(err) - } - if err := instance.InitFromBytes([]byte(config)); err != nil { - log.Fatal(err) + search := strings.ToLower(strings.TrimSpace(args[0])) + if !isValidIPOrCIDR(search) { + fmt.Println("false") + return } - if err := instance.Run(); err != nil { - log.Fatal(err) - } + execute(format, name, uri, dir, search, searchListStr) case false: // No search arg, run in REPL mode - fmt.Println("Enter IP or CIDR (type `exit` to quit):") + fmt.Println(`Enter IP or CIDR (type "exit" to quit):`) fmt.Print(">> ") scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { search := strings.ToLower(strings.TrimSpace(scanner.Text())) - if search == "exit" { + if search == "" { + fmt.Println() + fmt.Print(">> ") + continue + } + if search == "exit" || search == `"exit"` { break } - config := generateConfigForLookup(format, name, uri, dir, search, searchListStr) - instance, err := lib.NewInstance() - if err != nil { - log.Fatal(err) - } - if err := instance.InitFromBytes([]byte(config)); err != nil { - log.Fatal(err) - } - if err := instance.Run(); err != nil { - log.Fatal(err) + if !isValidIPOrCIDR(search) { + fmt.Println("false") + fmt.Println() + fmt.Print(">> ") + continue } + + execute(format, name, uri, dir, search, searchListStr) + fmt.Println() fmt.Print(">> ") } @@ -114,6 +110,40 @@ var lookupCmd = &cobra.Command{ }, } +// Check if the input is a valid IP or CIDR +func isValidIPOrCIDR(search string) bool { + if search == "" { + return false + } + + var err error + switch strings.Contains(search, "/") { + case true: // CIDR + _, err = netip.ParsePrefix(search) + case false: // IP + _, err = netip.ParseAddr(search) + } + + return err == nil +} + +func execute(format, name, uri, dir, search, searchListStr string) { + config := generateConfigForLookup(format, name, uri, dir, search, searchListStr) + + instance, err := lib.NewInstance() + if err != nil { + log.Fatal(err) + } + + if err := instance.InitFromBytes([]byte(config)); err != nil { + log.Fatal(err) + } + + if err := instance.Run(); err != nil { + log.Fatal(err) + } +} + func generateConfigForLookup(format, name, uri, dir, search, searchListStr string) string { return fmt.Sprintf(` { diff --git a/geoip/plugin/special/lookup.go b/geoip/plugin/special/lookup.go index 34ba0207da..6b9e6af0b6 100644 --- a/geoip/plugin/special/lookup.go +++ b/geoip/plugin/special/lookup.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "net/netip" + "slices" "strings" "github.com/Loyalsoldier/geoip/lib" @@ -85,7 +86,10 @@ func (l *lookup) Output(container lib.Container) error { lists, found, _ := container.Lookup(l.Search, l.SearchList...) if found { + slices.Sort(lists) fmt.Println(strings.ToLower(strings.Join(lists, ","))) + } else { + fmt.Println("false") } return nil diff --git a/lede/target/linux/mediatek/dts/mt7981b-openembed-som7981.dts b/lede/target/linux/mediatek/dts/mt7981b-openembed-som7981.dts index 777b7f269e..024fb38368 100644 --- a/lede/target/linux/mediatek/dts/mt7981b-openembed-som7981.dts +++ b/lede/target/linux/mediatek/dts/mt7981b-openembed-som7981.dts @@ -45,12 +45,12 @@ compatible = "gpio-leds"; led-0 { - label = "amber:lan"; + label = "green:lan"; gpios = <&pio 8 GPIO_ACTIVE_LOW>; }; led-1 { - label = "green:lan"; + label = "amber:lan"; gpios = <&pio 13 GPIO_ACTIVE_LOW>; }; @@ -120,11 +120,11 @@ compatible = "ethernet-phy-ieee802.3-c45"; phy-mode = "2500base-x"; reset-gpios = <&pio 14 GPIO_ACTIVE_LOW>; - reset-assert-us = <10000>; - reset-deassert-us = <50000>; + reset-assert-us = <15000>; + reset-deassert-us = <68000>; realtek,aldps-enable; realtek,led-link-select = <0x0 0xa7 0xa7>; - realtek,led-act-select = <0x2612>; + realtek,led-act-select = <0x2614>; realtek,led-polarity-select = <0x63>; }; }; @@ -231,14 +231,14 @@ uart1_pins: uart1-pins { mux { - function = "uart1"; - groups = "uart1_1_tx_rx"; + function = "uart"; + groups = "uart1_3"; }; }; uart2_pins: uart2-pins { mux { - function = "uart2"; + function = "uart"; groups = "uart2_0_tx_rx"; }; }; diff --git a/lede/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds b/lede/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds index 38a3e8c267..cfbbac13ab 100644 --- a/lede/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds +++ b/lede/target/linux/mediatek/filogic/base-files/etc/board.d/01_leds @@ -40,8 +40,8 @@ nokia,ea0326gmp) ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth1" ;; openembed,som7981) - ucidef_set_led_netdev "lanact" "LANACT" "green:lan" "eth1" "rx tx" - ucidef_set_led_netdev "lanlink" "LANLINK" "amber:lan" "eth1" "link" + ucidef_set_led_netdev "lanact" "LANACT" "amber:lan" "eth1" "rx tx" + ucidef_set_led_netdev "lanlink" "LANLINK" "green:lan" "eth1" "link" ucidef_set_led_netdev "wlan2g" "WLAN2G" "green:wlan2g" "wlan0" ucidef_set_led_netdev "wlan5g" "WLAN5G" "red:wlan5g" "wlan1" ;; diff --git a/lede/target/linux/qualcommax/files-6.1/arch/arm64/boot/dts/qcom/ipq6018.dtsi b/lede/target/linux/qualcommax/files-6.1/arch/arm64/boot/dts/qcom/ipq6018.dtsi deleted file mode 100644 index 66a9ec7056..0000000000 --- a/lede/target/linux/qualcommax/files-6.1/arch/arm64/boot/dts/qcom/ipq6018.dtsi +++ /dev/null @@ -1,1193 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) -/* - * IPQ6018 SoC device tree source - * - * Copyright (c) 2019, The Linux Foundation. All rights reserved. - */ - -#include -#include -#include -#include - -/ { - #address-cells = <2>; - #size-cells = <2>; - interrupt-parent = <&intc>; - - clocks: clocks { - sleep_clk: sleep-clk { - compatible = "fixed-clock"; - clock-frequency = <32000>; - #clock-cells = <0>; - }; - - xo: xo { - compatible = "fixed-clock"; - clock-frequency = <24000000>; - #clock-cells = <0>; - }; - }; - - cpus: cpus { - #address-cells = <1>; - #size-cells = <0>; - - CPU0: cpu@0 { - device_type = "cpu"; - compatible = "arm,cortex-a53"; - reg = <0x0>; - enable-method = "psci"; - next-level-cache = <&L2_0>; - clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>; - clock-names = "cpu"; - operating-points-v2 = <&cpu_opp_table>; - }; - - CPU1: cpu@1 { - device_type = "cpu"; - compatible = "arm,cortex-a53"; - enable-method = "psci"; - reg = <0x1>; - next-level-cache = <&L2_0>; - clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>; - clock-names = "cpu"; - operating-points-v2 = <&cpu_opp_table>; - }; - - CPU2: cpu@2 { - device_type = "cpu"; - compatible = "arm,cortex-a53"; - enable-method = "psci"; - reg = <0x2>; - next-level-cache = <&L2_0>; - clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>; - clock-names = "cpu"; - operating-points-v2 = <&cpu_opp_table>; - }; - - CPU3: cpu@3 { - device_type = "cpu"; - compatible = "arm,cortex-a53"; - enable-method = "psci"; - reg = <0x3>; - next-level-cache = <&L2_0>; - clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>; - clock-names = "cpu"; - operating-points-v2 = <&cpu_opp_table>; - }; - - L2_0: l2-cache { - compatible = "cache"; - cache-level = <0x2>; - }; - }; - - firmware { - scm { - compatible = "qcom,scm-ipq6018", "qcom,scm"; - qcom,dload-mode = <&tcsr 0x6100>; - }; - }; - - cpu_opp_table: opp-table-cpu { - compatible = "operating-points-v2-kryo-cpu"; - nvmem-cells = <&cpu_speed_bin>; - opp-shared; - - opp-864000000 { - opp-hz = /bits/ 64 <864000000>; - opp-microvolt = <725000>; - opp-supported-hw = <0xf>; - clock-latency-ns = <200000>; - }; - - opp-1056000000 { - opp-hz = /bits/ 64 <1056000000>; - opp-microvolt = <787500>; - opp-supported-hw = <0xf>; - clock-latency-ns = <200000>; - }; - - opp-1200000000 { - opp-hz = /bits/ 64 <1200000000>; - opp-microvolt = <850000>; - opp-supported-hw = <0x4>; - clock-latency-ns = <200000>; - }; - - opp-1320000000 { - opp-hz = /bits/ 64 <1320000000>; - opp-microvolt = <862500>; - opp-supported-hw = <0x3>; - clock-latency-ns = <200000>; - }; - - opp-1440000000 { - opp-hz = /bits/ 64 <1440000000>; - opp-microvolt = <925000>; - opp-supported-hw = <0x3>; - clock-latency-ns = <200000>; - }; - - opp-1512000000 { - opp-hz = /bits/ 64 <1512000000>; - opp-microvolt = <937500>; - opp-supported-hw = <0x2>; - clock-latency-ns = <200000>; - }; - - opp-1608000000 { - opp-hz = /bits/ 64 <1608000000>; - opp-microvolt = <987500>; - opp-supported-hw = <0x1>; - clock-latency-ns = <200000>; - }; - - opp-1800000000 { - opp-hz = /bits/ 64 <1800000000>; - opp-microvolt = <1062500>; - opp-supported-hw = <0x1>; - clock-latency-ns = <200000>; - }; - }; - - pmuv8: pmu { - compatible = "arm,cortex-a53-pmu"; - interrupts = ; - }; - - psci: psci { - compatible = "arm,psci-1.0"; - method = "smc"; - }; - - rpm: remoteproc { - compatible = "qcom,ipq6018-rpm-proc", "qcom,rpm-proc"; - - glink-edge { - compatible = "qcom,glink-rpm"; - interrupts = ; - qcom,rpm-msg-ram = <&rpm_msg_ram>; - mboxes = <&apcs_glb 0>; - - rpm_requests: rpm-requests { - compatible = "qcom,rpm-ipq6018"; - qcom,glink-channels = "rpm_requests"; - }; - }; - }; - - reserved-memory { - #address-cells = <2>; - #size-cells = <2>; - ranges; - - rpm_msg_ram: memory@60000 { - reg = <0x0 0x00060000 0x0 0x6000>; - no-map; - }; - - bootloader@4a100000 { - reg = <0x0 0x4a100000 0x0 0x400000>; - no-map; - }; - - sbl@4a500000 { - reg = <0x0 0x4a500000 0x0 0x100000>; - no-map; - }; - - tz: memory@4a600000 { - reg = <0x0 0x4a600000 0x0 0x400000>; - no-map; - }; - - smem_region: memory@4aa00000 { - reg = <0x0 0x4aa00000 0x0 0x100000>; - no-map; - }; - - q6_region: memory@4ab00000 { - reg = <0x0 0x4ab00000 0x0 0x5500000>; - no-map; - }; - - nss_region: nss@40000000 { - no-map; - reg = <0x0 0x40000000 0x0 0x01000000>; - }; - - q6_etr_region: q6_etr_dump@50000000 { - reg = <0x0 0x50000000 0x0 0x100000>; - no-map; - }; - - m3_dump_region: m3_dump@50100000 { - reg = <0x0 0x50100000 0x0 0x100000>; - no-map; - }; - }; - - smem { - compatible = "qcom,smem"; - memory-region = <&smem_region>; - hwlocks = <&tcsr_mutex 3>; - }; - - soc: soc@0 { - #address-cells = <2>; - #size-cells = <2>; - ranges = <0 0 0 0 0x0 0xffffffff>; - dma-ranges; - compatible = "simple-bus"; - - qusb_phy_1: qusb@59000 { - compatible = "qcom,ipq6018-qusb2-phy"; - reg = <0x0 0x00059000 0x0 0x180>; - #phy-cells = <0>; - - clocks = <&gcc GCC_USB1_PHY_CFG_AHB_CLK>, - <&xo>; - clock-names = "cfg_ahb", "ref"; - - resets = <&gcc GCC_QUSB2_1_PHY_BCR>; - status = "disabled"; - }; - - ssphy_0: ssphy@78000 { - compatible = "qcom,ipq6018-qmp-usb3-phy"; - reg = <0x0 0x00078000 0x0 0x1c4>; - #address-cells = <2>; - #size-cells = <2>; - ranges; - - clocks = <&gcc GCC_USB0_AUX_CLK>, - <&gcc GCC_USB0_PHY_CFG_AHB_CLK>, <&xo>; - clock-names = "aux", "cfg_ahb", "ref"; - - resets = <&gcc GCC_USB0_PHY_BCR>, - <&gcc GCC_USB3PHY_0_PHY_BCR>; - reset-names = "phy","common"; - status = "disabled"; - - usb0_ssphy: phy@78200 { - reg = <0x0 0x00078200 0x0 0x130>, /* Tx */ - <0x0 0x00078400 0x0 0x200>, /* Rx */ - <0x0 0x00078800 0x0 0x1f8>, /* PCS */ - <0x0 0x00078600 0x0 0x044>; /* PCS misc */ - #phy-cells = <0>; - #clock-cells = <0>; - clocks = <&gcc GCC_USB0_PIPE_CLK>; - clock-names = "pipe0"; - clock-output-names = "gcc_usb0_pipe_clk_src"; - }; - }; - - qusb_phy_0: qusb@79000 { - compatible = "qcom,ipq6018-qusb2-phy"; - reg = <0x0 0x00079000 0x0 0x180>; - #phy-cells = <0>; - - clocks = <&gcc GCC_USB0_PHY_CFG_AHB_CLK>, - <&xo>; - clock-names = "cfg_ahb", "ref"; - - resets = <&gcc GCC_QUSB2_0_PHY_BCR>; - status = "disabled"; - }; - - pcie_phy: phy@84000 { - compatible = "qcom,ipq6018-qmp-pcie-phy"; - reg = <0x0 0x00084000 0x0 0x1bc>; /* Serdes PLL */ - status = "disabled"; - #address-cells = <2>; - #size-cells = <2>; - ranges; - - clocks = <&gcc GCC_PCIE0_AUX_CLK>, - <&gcc GCC_PCIE0_AHB_CLK>; - clock-names = "aux", "cfg_ahb"; - - resets = <&gcc GCC_PCIE0_PHY_BCR>, - <&gcc GCC_PCIE0PHY_PHY_BCR>; - reset-names = "phy", - "common"; - - pcie_phy0: phy@84200 { - reg = <0x0 0x00084200 0x0 0x16c>, /* Serdes Tx */ - <0x0 0x00084400 0x0 0x200>, /* Serdes Rx */ - <0x0 0x00084800 0x0 0x1f0>, /* PCS: Lane0, COM, PCIE */ - <0x0 0x00084c00 0x0 0xf4>; /* pcs_misc */ - #phy-cells = <0>; - - clocks = <&gcc GCC_PCIE0_PIPE_CLK>; - clock-names = "pipe0"; - clock-output-names = "gcc_pcie0_pipe_clk_src"; - #clock-cells = <0>; - }; - }; - - mdio: mdio@90000 { - #address-cells = <1>; - #size-cells = <0>; - compatible = "qcom,ipq6018-mdio", "qcom,ipq4019-mdio"; - reg = <0x0 0x00090000 0x0 0x64>; - clocks = <&gcc GCC_MDIO_AHB_CLK>; - clock-names = "gcc_mdio_ahb_clk"; - status = "disabled"; - }; - - qfprom: efuse@a4000 { - compatible = "qcom,ipq6018-qfprom", "qcom,qfprom"; - reg = <0x0 0x000a4000 0x0 0x2000>; - #address-cells = <1>; - #size-cells = <1>; - - cpu_speed_bin: cpu-speed-bin@135 { - reg = <0x135 0x1>; - bits = <7 1>; - }; - }; - - prng: qrng@e3000 { - compatible = "qcom,prng-ee"; - reg = <0x0 0x000e3000 0x0 0x1000>; - clocks = <&gcc GCC_PRNG_AHB_CLK>; - clock-names = "core"; - }; - - tsens: thermal-sensor@4a9000 { - compatible = "qcom,ipq6018-tsens", "qcom,ipq8074-tsens"; - reg = <0x0 0x4a9000 0x0 0x1000>, /* TM */ - <0x0 0x4a8000 0x0 0x1000>; /* SROT */ - interrupts = ; - interrupt-names = "combined"; - #qcom,sensors = <16>; - #thermal-sensor-cells = <1>; - }; - - cryptobam: dma-controller@704000 { - compatible = "qcom,bam-v1.7.0"; - reg = <0x0 0x00704000 0x0 0x20000>; - interrupts = ; - clocks = <&gcc GCC_CRYPTO_AHB_CLK>; - clock-names = "bam_clk"; - #dma-cells = <1>; - qcom,ee = <1>; - qcom,controlled-remotely; - }; - - crypto: crypto@73a000 { - compatible = "qcom,crypto-v5.1"; - reg = <0x0 0x0073a000 0x0 0x6000>; - clocks = <&gcc GCC_CRYPTO_AHB_CLK>, - <&gcc GCC_CRYPTO_AXI_CLK>, - <&gcc GCC_CRYPTO_CLK>; - clock-names = "iface", "bus", "core"; - dmas = <&cryptobam 2>, <&cryptobam 3>; - dma-names = "rx", "tx"; - }; - - tlmm: pinctrl@1000000 { - compatible = "qcom,ipq6018-pinctrl"; - reg = <0x0 0x01000000 0x0 0x300000>; - interrupts = ; - gpio-controller; - #gpio-cells = <2>; - gpio-ranges = <&tlmm 0 0 80>; - interrupt-controller; - #interrupt-cells = <2>; - - serial_3_pins: serial3-state { - pins = "gpio44", "gpio45"; - function = "blsp2_uart"; - drive-strength = <8>; - bias-pull-down; - }; - - qpic_pins: qpic-state { - pins = "gpio1", "gpio3", "gpio4", - "gpio5", "gpio6", "gpio7", - "gpio8", "gpio10", "gpio11", - "gpio12", "gpio13", "gpio14", - "gpio15", "gpio17"; - function = "qpic_pad"; - drive-strength = <8>; - bias-disable; - }; - }; - - gcc: gcc@1800000 { - compatible = "qcom,gcc-ipq6018"; - reg = <0x0 0x01800000 0x0 0x80000>; - clocks = <&xo>, <&sleep_clk>; - clock-names = "xo", "sleep_clk"; - #clock-cells = <1>; - #reset-cells = <1>; - }; - - tcsr_mutex: hwlock@1905000 { - compatible = "qcom,ipq6018-tcsr-mutex", "qcom,tcsr-mutex"; - reg = <0x0 0x01905000 0x0 0x20000>; - #hwlock-cells = <1>; - }; - - tcsr: syscon@1937000 { - compatible = "qcom,tcsr-ipq6018", "syscon", "simple-mfd"; - reg = <0x0 0x01937000 0x0 0x21000>; - ranges = <0x0 0x0 0x01937000 0x21000>; - #address-cells = <1>; - #size-cells = <1>; - - pwm: pwm@a010 { - compatible = "qcom,ipq6018-pwm"; - reg = <0xa010 0x20>; - clocks = <&gcc GCC_ADSS_PWM_CLK>; - assigned-clocks = <&gcc GCC_ADSS_PWM_CLK>; - assigned-clock-rates = <100000000>; - #pwm-cells = <2>; - status = "disabled"; - }; - }; - - usb2: usb@70f8800 { - compatible = "qcom,ipq6018-dwc3", "qcom,dwc3"; - reg = <0x0 0x070f8800 0x0 0x400>; - #address-cells = <2>; - #size-cells = <2>; - ranges; - clocks = <&gcc GCC_USB1_MASTER_CLK>, - <&gcc GCC_USB1_SLEEP_CLK>, - <&gcc GCC_USB1_MOCK_UTMI_CLK>; - clock-names = "core", - "sleep", - "mock_utmi"; - - assigned-clocks = <&gcc GCC_USB1_MASTER_CLK>, - <&gcc GCC_USB1_MOCK_UTMI_CLK>; - assigned-clock-rates = <133330000>, - <24000000>; - resets = <&gcc GCC_USB1_BCR>; - status = "disabled"; - - dwc_1: usb@7000000 { - compatible = "snps,dwc3"; - reg = <0x0 0x07000000 0x0 0xcd00>; - interrupts = ; - phys = <&qusb_phy_1>; - phy-names = "usb2-phy"; - tx-fifo-resize; - snps,is-utmi-l1-suspend; - snps,hird-threshold = /bits/ 8 <0x0>; - snps,dis_u2_susphy_quirk; - snps,dis_u3_susphy_quirk; - dr_mode = "host"; - }; - }; - - sdhc: mmc@7804000 { - compatible = "qcom,ipq6018-sdhci", "qcom,sdhci-msm-v5"; - reg = <0x0 0x7804000 0x0 0x1000>, - <0x0 0x7805000 0x0 0x1000>; - reg-names = "hc", "cqhci"; - - interrupts = , - ; - interrupt-names = "hc_irq", "pwr_irq"; - - clocks = <&gcc GCC_SDCC1_AHB_CLK>, - <&gcc GCC_SDCC1_APPS_CLK>, - <&xo>; - clock-names = "iface", "core", "xo"; - resets = <&gcc GCC_SDCC1_BCR>; - max-frequency = <192000000>; - - status = "disabled"; - }; - - blsp_dma: dma-controller@7884000 { - compatible = "qcom,bam-v1.7.0"; - reg = <0x0 0x07884000 0x0 0x2b000>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "bam_clk"; - #dma-cells = <1>; - qcom,ee = <0>; - }; - - blsp1_uart1: serial@78af000 { - compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; - reg = <0x0 0x78af000 0x0 0x200>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, - <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "core", "iface"; - status = "disabled"; - }; - - blsp1_uart2: serial@78b0000 { - compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; - reg = <0x0 0x78b0000 0x0 0x200>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, - <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "core", "iface"; - status = "disabled"; - }; - - blsp1_uart3: serial@78b1000 { - compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; - reg = <0x0 0x078b1000 0x0 0x200>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_UART3_APPS_CLK>, - <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "core", "iface"; - status = "disabled"; - }; - - blsp1_uart4: serial@78b2000 { - compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; - reg = <0x0 0x078b2000 0x0 0x200>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_UART4_APPS_CLK>, - <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "core", "iface"; - status = "disabled"; - }; - - blsp1_uart5: serial@78b3000 { - compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; - reg = <0x0 0x78b3000 0x0 0x200>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_UART5_APPS_CLK>, - <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "core", "iface"; - status = "disabled"; - }; - - blsp1_uart6: serial@78b4000 { - compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; - reg = <0x0 0x078b4000 0x0 0x200>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_UART6_APPS_CLK>, - <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "core", "iface"; - status = "disabled"; - }; - - blsp1_spi1: spi@78b5000 { - compatible = "qcom,spi-qup-v2.2.1"; - #address-cells = <1>; - #size-cells = <0>; - reg = <0x0 0x078b5000 0x0 0x600>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>, - <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "core", "iface"; - dmas = <&blsp_dma 12>, <&blsp_dma 13>; - dma-names = "tx", "rx"; - status = "disabled"; - }; - - blsp1_spi2: spi@78b6000 { - compatible = "qcom,spi-qup-v2.2.1"; - #address-cells = <1>; - #size-cells = <0>; - reg = <0x0 0x078b6000 0x0 0x600>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>, - <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "core", "iface"; - dmas = <&blsp_dma 14>, <&blsp_dma 15>; - dma-names = "tx", "rx"; - status = "disabled"; - }; - - blsp1_i2c2: i2c@78b6000 { - compatible = "qcom,i2c-qup-v2.2.1"; - #address-cells = <1>; - #size-cells = <0>; - reg = <0x0 0x078b6000 0x0 0x600>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>, - <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "core", "iface"; - clock-frequency = <400000>; - dmas = <&blsp_dma 14>, <&blsp_dma 15>; - dma-names = "tx", "rx"; - status = "disabled"; - }; - - blsp1_i2c3: i2c@78b7000 { - compatible = "qcom,i2c-qup-v2.2.1"; - #address-cells = <1>; - #size-cells = <0>; - reg = <0x0 0x078b7000 0x0 0x600>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>, - <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "core", "iface"; - clock-frequency = <400000>; - dmas = <&blsp_dma 16>, <&blsp_dma 17>; - dma-names = "tx", "rx"; - status = "disabled"; - }; - - qpic_bam: dma-controller@7984000 { - compatible = "qcom,bam-v1.7.0"; - reg = <0x0 0x07984000 0x0 0x1a000>; - interrupts = ; - clocks = <&gcc GCC_QPIC_AHB_CLK>; - clock-names = "bam_clk"; - #dma-cells = <1>; - qcom,ee = <0>; - status = "disabled"; - }; - - qpic_nand: nand-controller@79b0000 { - compatible = "qcom,ipq6018-nand"; - reg = <0x0 0x079b0000 0x0 0x10000>; - #address-cells = <1>; - #size-cells = <0>; - clocks = <&gcc GCC_QPIC_CLK>, - <&gcc GCC_QPIC_AHB_CLK>; - clock-names = "core", "aon"; - - dmas = <&qpic_bam 0>, - <&qpic_bam 1>, - <&qpic_bam 2>; - dma-names = "tx", "rx", "cmd"; - pinctrl-0 = <&qpic_pins>; - pinctrl-names = "default"; - status = "disabled"; - }; - - usb3: usb@8af8800 { - compatible = "qcom,ipq6018-dwc3", "qcom,dwc3"; - reg = <0x0 0x08af8800 0x0 0x400>; - #address-cells = <2>; - #size-cells = <2>; - ranges; - - clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>, - <&gcc GCC_USB0_MASTER_CLK>, - <&gcc GCC_USB0_SLEEP_CLK>, - <&gcc GCC_USB0_MOCK_UTMI_CLK>; - clock-names = "cfg_noc", - "core", - "sleep", - "mock_utmi"; - - assigned-clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>, - <&gcc GCC_USB0_MASTER_CLK>, - <&gcc GCC_USB0_MOCK_UTMI_CLK>; - assigned-clock-rates = <133330000>, - <133330000>, - <24000000>; - - resets = <&gcc GCC_USB0_BCR>; - status = "disabled"; - - dwc_0: usb@8a00000 { - compatible = "snps,dwc3"; - reg = <0x0 0x08a00000 0x0 0xcd00>; - interrupts = ; - phys = <&qusb_phy_0>, <&usb0_ssphy>; - phy-names = "usb2-phy", "usb3-phy"; - clocks = <&xo>; - clock-names = "ref"; - tx-fifo-resize; - snps,is-utmi-l1-suspend; - snps,hird-threshold = /bits/ 8 <0x0>; - snps,dis_u2_susphy_quirk; - snps,dis_u3_susphy_quirk; - dr_mode = "host"; - }; - }; - - intc: interrupt-controller@b000000 { - compatible = "qcom,msm-qgic2"; - #address-cells = <2>; - #size-cells = <2>; - interrupt-controller; - #interrupt-cells = <0x3>; - reg = <0x0 0x0b000000 0x0 0x1000>, /*GICD*/ - <0x0 0x0b002000 0x0 0x1000>, /*GICC*/ - <0x0 0x0b001000 0x0 0x1000>, /*GICH*/ - <0x0 0x0b004000 0x0 0x1000>; /*GICV*/ - interrupts = ; - ranges = <0 0 0 0xb00a000 0 0xffd>; - - v2m@0 { - compatible = "arm,gic-v2m-frame"; - msi-controller; - reg = <0x0 0x0 0x0 0xffd>; - }; - }; - - watchdog@b017000 { - compatible = "qcom,kpss-wdt"; - interrupts = ; - reg = <0x0 0x0b017000 0x0 0x40>; - clocks = <&sleep_clk>; - timeout-sec = <10>; - }; - - apcs_glb: mailbox@b111000 { - compatible = "qcom,ipq6018-apcs-apps-global"; - reg = <0x0 0x0b111000 0x0 0x1000>; - #clock-cells = <1>; - clocks = <&a53pll>, <&xo>, <&gcc GPLL0>; - clock-names = "pll", "xo", "gpll0"; - #mbox-cells = <1>; - }; - - a53pll: clock@b116000 { - compatible = "qcom,ipq6018-a53pll"; - reg = <0x0 0x0b116000 0x0 0x40>; - #clock-cells = <0>; - clocks = <&xo>; - clock-names = "xo"; - }; - - timer@b120000 { - #address-cells = <1>; - #size-cells = <1>; - ranges = <0 0 0 0x10000000>; - compatible = "arm,armv7-timer-mem"; - reg = <0x0 0x0b120000 0x0 0x1000>; - - frame@b120000 { - frame-number = <0>; - interrupts = , - ; - reg = <0x0b121000 0x1000>, - <0x0b122000 0x1000>; - }; - - frame@b123000 { - frame-number = <1>; - interrupts = ; - reg = <0x0b123000 0x1000>; - status = "disabled"; - }; - - frame@b124000 { - frame-number = <2>; - interrupts = ; - reg = <0x0b124000 0x1000>; - status = "disabled"; - }; - - frame@b125000 { - frame-number = <3>; - interrupts = ; - reg = <0x0b125000 0x1000>; - status = "disabled"; - }; - - frame@b126000 { - frame-number = <4>; - interrupts = ; - reg = <0x0b126000 0x1000>; - status = "disabled"; - }; - - frame@b127000 { - frame-number = <5>; - interrupts = ; - reg = <0x0b127000 0x1000>; - status = "disabled"; - }; - - frame@b128000 { - frame-number = <6>; - interrupts = ; - reg = <0x0b128000 0x1000>; - status = "disabled"; - }; - }; - - wifi: wifi@c000000 { - compatible = "qcom,ipq6018-wifi"; - reg = <0x0 0xc000000 0x0 0x1000000>; - - interrupts = <0 320 IRQ_TYPE_EDGE_RISING>, - <0 319 IRQ_TYPE_EDGE_RISING>, - <0 318 IRQ_TYPE_EDGE_RISING>, - <0 316 IRQ_TYPE_EDGE_RISING>, - <0 315 IRQ_TYPE_EDGE_RISING>, - <0 314 IRQ_TYPE_EDGE_RISING>, - <0 311 IRQ_TYPE_EDGE_RISING>, - <0 310 IRQ_TYPE_EDGE_RISING>, - <0 411 IRQ_TYPE_EDGE_RISING>, - <0 410 IRQ_TYPE_EDGE_RISING>, - <0 40 IRQ_TYPE_EDGE_RISING>, - <0 39 IRQ_TYPE_EDGE_RISING>, - <0 302 IRQ_TYPE_EDGE_RISING>, - <0 301 IRQ_TYPE_EDGE_RISING>, - <0 37 IRQ_TYPE_EDGE_RISING>, - <0 36 IRQ_TYPE_EDGE_RISING>, - <0 296 IRQ_TYPE_EDGE_RISING>, - <0 295 IRQ_TYPE_EDGE_RISING>, - <0 294 IRQ_TYPE_EDGE_RISING>, - <0 293 IRQ_TYPE_EDGE_RISING>, - <0 292 IRQ_TYPE_EDGE_RISING>, - <0 291 IRQ_TYPE_EDGE_RISING>, - <0 290 IRQ_TYPE_EDGE_RISING>, - <0 289 IRQ_TYPE_EDGE_RISING>, - <0 288 IRQ_TYPE_EDGE_RISING>, - <0 239 IRQ_TYPE_EDGE_RISING>, - <0 236 IRQ_TYPE_EDGE_RISING>, - <0 235 IRQ_TYPE_EDGE_RISING>, - <0 234 IRQ_TYPE_EDGE_RISING>, - <0 233 IRQ_TYPE_EDGE_RISING>, - <0 232 IRQ_TYPE_EDGE_RISING>, - <0 231 IRQ_TYPE_EDGE_RISING>, - <0 230 IRQ_TYPE_EDGE_RISING>, - <0 229 IRQ_TYPE_EDGE_RISING>, - <0 228 IRQ_TYPE_EDGE_RISING>, - <0 224 IRQ_TYPE_EDGE_RISING>, - <0 223 IRQ_TYPE_EDGE_RISING>, - <0 203 IRQ_TYPE_EDGE_RISING>, - <0 183 IRQ_TYPE_EDGE_RISING>, - <0 180 IRQ_TYPE_EDGE_RISING>, - <0 179 IRQ_TYPE_EDGE_RISING>, - <0 178 IRQ_TYPE_EDGE_RISING>, - <0 177 IRQ_TYPE_EDGE_RISING>, - <0 176 IRQ_TYPE_EDGE_RISING>, - <0 163 IRQ_TYPE_EDGE_RISING>, - <0 162 IRQ_TYPE_EDGE_RISING>, - <0 160 IRQ_TYPE_EDGE_RISING>, - <0 414 IRQ_TYPE_EDGE_RISING>, - <0 159 IRQ_TYPE_EDGE_RISING>, - <0 158 IRQ_TYPE_EDGE_RISING>, - <0 157 IRQ_TYPE_EDGE_RISING>, - <0 156 IRQ_TYPE_EDGE_RISING>; - - interrupt-names = "misc-pulse1", - "misc-latch", - "sw-exception", - "ce0", - "ce1", - "ce2", - "ce3", - "ce4", - "ce5", - "ce6", - "ce7", - "ce8", - "ce9", - "ce10", - "ce11", - "host2wbm-desc-feed", - "host2reo-re-injection", - "host2reo-command", - "host2rxdma-monitor-ring3", - "host2rxdma-monitor-ring2", - "host2rxdma-monitor-ring1", - "reo2ost-exception", - "wbm2host-rx-release", - "reo2host-status", - "reo2host-destination-ring4", - "reo2host-destination-ring3", - "reo2host-destination-ring2", - "reo2host-destination-ring1", - "rxdma2host-monitor-destination-mac3", - "rxdma2host-monitor-destination-mac2", - "rxdma2host-monitor-destination-mac1", - "ppdu-end-interrupts-mac3", - "ppdu-end-interrupts-mac2", - "ppdu-end-interrupts-mac1", - "rxdma2host-monitor-status-ring-mac3", - "rxdma2host-monitor-status-ring-mac2", - "rxdma2host-monitor-status-ring-mac1", - "host2rxdma-host-buf-ring-mac3", - "host2rxdma-host-buf-ring-mac2", - "host2rxdma-host-buf-ring-mac1", - "rxdma2host-destination-ring-mac3", - "rxdma2host-destination-ring-mac2", - "rxdma2host-destination-ring-mac1", - "host2tcl-input-ring4", - "host2tcl-input-ring3", - "host2tcl-input-ring2", - "host2tcl-input-ring1", - "wbm2host-tx-completions-ring4", - "wbm2host-tx-completions-ring3", - "wbm2host-tx-completions-ring2", - "wbm2host-tx-completions-ring1", - "tcl2host-status-ring"; - qcom,rproc = <&q6v5_wcss>; - status = "disabled"; - }; - - q6v5_wcss: remoteproc@cd00000 { - compatible = "qcom,ipq6018-wcss-pil"; - reg = <0x0 0x0cd00000 0x0 0x4040>, - <0x0 0x004ab000 0x0 0x20>; - reg-names = "qdsp6", - "rmb"; - interrupts-extended = <&intc GIC_SPI 325 IRQ_TYPE_EDGE_RISING>, - <&wcss_smp2p_in 0 0>, - <&wcss_smp2p_in 1 0>, - <&wcss_smp2p_in 2 0>, - <&wcss_smp2p_in 3 0>; - interrupt-names = "wdog", - "fatal", - "ready", - "handover", - "stop-ack"; - - resets = <&gcc GCC_WCSSAON_RESET>, - <&gcc GCC_WCSS_BCR>, - <&gcc GCC_WCSS_Q6_BCR>; - - reset-names = "wcss_aon_reset", - "wcss_reset", - "wcss_q6_reset"; - - clocks = <&gcc GCC_PRNG_AHB_CLK>, - <&gcc GCC_SYS_NOC_WCSS_AHB_CLK>, - <&gcc GCC_Q6SS_ATBM_CLK>, - <&gcc GCC_Q6SS_PCLKDBG_CLK>, - <&gcc GCC_Q6_TSCTR_1TO2_CLK>; - clock-names = "prng", - "gcc_sys_noc_wcss_ahb_clk", - "gcc_q6ss_atbm_clk", - "gcc_q6ss_pclkdbg_clk", - "gcc_q6_tsctr_1to2_clk"; - assigned-clocks = <&gcc GCC_SYS_NOC_WCSS_AHB_CLK>, - <&gcc GCC_Q6SS_PCLKDBG_CLK>, - <&gcc GCC_Q6_TSCTR_1TO2_CLK>, - <&gcc GCC_Q6SS_ATBM_CLK>; - assigned-clock-rates = <133333333>, - <600000000>, - <600000000>, - <240000000>; - - qcom,halt-regs = <&tcsr 0x18000 0x1b000 0xe000>; - - qcom,smem-states = <&wcss_smp2p_out 0>, - <&wcss_smp2p_out 1>; - qcom,smem-state-names = "shutdown", - "stop"; - - memory-region = <&q6_region>; - - glink-edge { - interrupts = ; - label = "rtr"; - qcom,remote-pid = <1>; - mboxes = <&apcs_glb 8>; - - qrtr_requests { - qcom,glink-channels = "IPCRTR"; - }; - }; - }; - - pcie0: pci@20000000 { - compatible = "qcom,pcie-ipq6018"; - reg = <0x0 0x20000000 0x0 0xf1d>, - <0x0 0x20000f20 0x0 0xa8>, - <0x0 0x20001000 0x0 0x1000>, - <0x0 0x80000 0x0 0x4000>, - <0x0 0x20100000 0x0 0x1000>; - reg-names = "dbi", "elbi", "atu", "parf", "config"; - - device_type = "pci"; - linux,pci-domain = <0>; - bus-range = <0x00 0xff>; - num-lanes = <1>; - max-link-speed = <3>; - #address-cells = <3>; - #size-cells = <2>; - - phys = <&pcie_phy0>; - phy-names = "pciephy"; - - ranges = <0x81000000 0 0x20200000 0 0x20200000 0 0x10000>, - <0x82000000 0 0x20220000 0 0x20220000 0 0xfde0000>; - - interrupts = ; - interrupt-names = "msi"; - - #interrupt-cells = <1>; - interrupt-map-mask = <0 0 0 0x7>; - interrupt-map = <0 0 0 1 &intc 0 75 IRQ_TYPE_LEVEL_HIGH>, /* int_a */ - <0 0 0 2 &intc 0 78 IRQ_TYPE_LEVEL_HIGH>, /* int_b */ - <0 0 0 3 &intc 0 79 IRQ_TYPE_LEVEL_HIGH>, /* int_c */ - <0 0 0 4 &intc 0 83 IRQ_TYPE_LEVEL_HIGH>; /* int_d */ - - clocks = <&gcc GCC_SYS_NOC_PCIE0_AXI_CLK>, - <&gcc GCC_PCIE0_AXI_M_CLK>, - <&gcc GCC_PCIE0_AXI_S_CLK>, - <&gcc GCC_PCIE0_AXI_S_BRIDGE_CLK>, - <&gcc PCIE0_RCHNG_CLK>; - clock-names = "iface", - "axi_m", - "axi_s", - "axi_bridge", - "rchng"; - - resets = <&gcc GCC_PCIE0_PIPE_ARES>, - <&gcc GCC_PCIE0_SLEEP_ARES>, - <&gcc GCC_PCIE0_CORE_STICKY_ARES>, - <&gcc GCC_PCIE0_AXI_MASTER_ARES>, - <&gcc GCC_PCIE0_AXI_SLAVE_ARES>, - <&gcc GCC_PCIE0_AHB_ARES>, - <&gcc GCC_PCIE0_AXI_MASTER_STICKY_ARES>, - <&gcc GCC_PCIE0_AXI_SLAVE_STICKY_ARES>; - reset-names = "pipe", - "sleep", - "sticky", - "axi_m", - "axi_s", - "ahb", - "axi_m_sticky", - "axi_s_sticky"; - - status = "disabled"; - }; - }; - - thermal-zones { - nss-top-thermal { - polling-delay-passive = <250>; - polling-delay = <1000>; - - thermal-sensors = <&tsens 4>; - - trips { - nss-top-crit { - temperature = <110000>; - hysteresis = <1000>; - type = "critical"; - }; - }; - }; - - nss0-thermal { - polling-delay-passive = <250>; - polling-delay = <1000>; - - thermal-sensors = <&tsens 5>; - - trips { - nss-0-crit { - temperature = <110000>; - hysteresis = <1000>; - type = "critical"; - }; - }; - }; - - wcss-phya0-thermal { - polling-delay-passive = <250>; - polling-delay = <1000>; - - thermal-sensors = <&tsens 7>; - - trips { - wcss-phya0-crit { - temperature = <110000>; - hysteresis = <1000>; - type = "critical"; - }; - }; - }; - - wcss-phya1-thermal { - polling-delay-passive = <250>; - polling-delay = <1000>; - - thermal-sensors = <&tsens 8>; - - trips { - wcss-phya1-crit { - temperature = <110000>; - hysteresis = <1000>; - type = "critical"; - }; - }; - }; - - cluster_thermal: cluster-thermal { - polling-delay-passive = <250>; - polling-delay = <1000>; - - thermal-sensors = <&tsens 13>; - - trips { - cluster-crit { - temperature = <110000>; - hysteresis = <1000>; - type = "critical"; - }; - }; - }; - - lpass-qsdp6-thermal { - polling-delay-passive = <250>; - polling-delay = <1000>; - - thermal-sensors = <&tsens 14>; - - trips { - lpass-qsdp6-crit { - temperature = <110000>; - hysteresis = <1000>; - type = "critical"; - }; - }; - }; - - package-top-thermal { - polling-delay-passive = <250>; - polling-delay = <1000>; - - thermal-sensors = <&tsens 15>; - - trips { - package-top-crit { - temperature = <110000>; - hysteresis = <1000>; - type = "critical"; - }; - }; - }; - }; - - timer { - compatible = "arm,armv8-timer"; - interrupts = , - , - , - ; - }; - - wcss: wcss-smp2p { - compatible = "qcom,smp2p"; - qcom,smem = <435>, <428>; - - interrupt-parent = <&intc>; - interrupts = ; - - mboxes = <&apcs_glb 9>; - - qcom,local-pid = <0>; - qcom,remote-pid = <1>; - - wcss_smp2p_out: master-kernel { - qcom,entry-name = "master-kernel"; - #qcom,smem-state-cells = <1>; - }; - - wcss_smp2p_in: slave-kernel { - qcom,entry-name = "slave-kernel"; - interrupt-controller; - #interrupt-cells = <2>; - }; - }; -}; diff --git a/lede/target/linux/qualcommax/patches-6.1/0008-v6.2-arm64-dts-qcom-ipq6018-fix-NAND-node-name.patch b/lede/target/linux/qualcommax/patches-6.1/0008-v6.2-arm64-dts-qcom-ipq6018-fix-NAND-node-name.patch new file mode 100644 index 0000000000..a87ae4b8ad --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0008-v6.2-arm64-dts-qcom-ipq6018-fix-NAND-node-name.patch @@ -0,0 +1,28 @@ +From 8857b0ab6a562c473c5bded0efda9390b82a84d4 Mon Sep 17 00:00:00 2001 +From: Robert Marko +Date: Tue, 27 Sep 2022 22:12:17 +0200 +Subject: [PATCH] arm64: dts: qcom: ipq6018: fix NAND node name + +Per schema it should be nand-controller@79b0000 instead of nand@79b0000. +Fix it to match nand-controller.yaml requirements. + +Signed-off-by: Robert Marko +Reviewed-by: Krzysztof Kozlowski +Reviewed-by: Neil Armstrong +Signed-off-by: Bjorn Andersson +Link: https://lore.kernel.org/r/20220927201218.1264506-1-robimarko@gmail.com +--- + arch/arm64/boot/dts/qcom/ipq6018.dtsi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -348,7 +348,7 @@ + status = "disabled"; + }; + +- qpic_nand: nand@79b0000 { ++ qpic_nand: nand-controller@79b0000 { + compatible = "qcom,ipq6018-nand"; + reg = <0x0 0x079b0000 0x0 0x10000>; + #address-cells = <1>; diff --git a/lede/target/linux/qualcommax/patches-6.1/0018-v6.2-arm64-dts-qcom-ipq6018-align-TLMM-pin-configuration-.patch b/lede/target/linux/qualcommax/patches-6.1/0018-v6.2-arm64-dts-qcom-ipq6018-align-TLMM-pin-configuration-.patch index 4caa5a38df..ceaf68bf7a 100644 --- a/lede/target/linux/qualcommax/patches-6.1/0018-v6.2-arm64-dts-qcom-ipq6018-align-TLMM-pin-configuration-.patch +++ b/lede/target/linux/qualcommax/patches-6.1/0018-v6.2-arm64-dts-qcom-ipq6018-align-TLMM-pin-configuration-.patch @@ -35,3 +35,22 @@ Link: https://lore.kernel.org/r/20221006124659.217540-3-krzysztof.kozlowski@lina pins = "gpio38", "gpio39", "gpio40", "gpio41"; function = "blsp0_spi"; drive-strength = <8>; +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -218,14 +218,14 @@ + interrupt-controller; + #interrupt-cells = <2>; + +- serial_3_pins: serial3-pinmux { ++ serial_3_pins: serial3-state { + pins = "gpio44", "gpio45"; + function = "blsp2_uart"; + drive-strength = <8>; + bias-pull-down; + }; + +- qpic_pins: qpic-pins { ++ qpic_pins: qpic-state { + pins = "gpio1", "gpio3", "gpio4", + "gpio5", "gpio6", "gpio7", + "gpio8", "gpio10", "gpio11", diff --git a/lede/target/linux/qualcommax/patches-6.1/0033-v6.2-arm64-dts-qcom-ipq6018-move-ARMv8-timer-out-of-SoC.patch b/lede/target/linux/qualcommax/patches-6.1/0033-v6.2-arm64-dts-qcom-ipq6018-move-ARMv8-timer-out-of-SoC.patch new file mode 100644 index 0000000000..692a9cfe75 --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0033-v6.2-arm64-dts-qcom-ipq6018-move-ARMv8-timer-out-of-SoC.patch @@ -0,0 +1,52 @@ +From feeef118fda562cf9081edef8ad464d89db070f4 Mon Sep 17 00:00:00 2001 +From: Robert Marko +Date: Tue, 27 Sep 2022 22:12:18 +0200 +Subject: [PATCH] arm64: dts: qcom: ipq6018: move ARMv8 timer out of SoC node + +The ARM timer is usually considered not part of SoC node, just like +other ARM designed blocks (PMU, PSCI). This fixes dtbs_check warning: + +arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dtb: soc: timer: {'compatible': ['arm,armv8-timer'], 'interrupts': [[1, 2, 3848], [1, 3, 3848], [1, 4, 3848], [1, 1, 3848]]} should not be valid under {'type': 'object'} + From schema: dtschema/schemas/simple-bus.yaml + +Signed-off-by: Robert Marko +Reviewed-by: Krzysztof Kozlowski +Reviewed-by: Neil Armstrong +Signed-off-by: Bjorn Andersson +Link: https://lore.kernel.org/r/20220927201218.1264506-2-robimarko@gmail.com +--- + arch/arm64/boot/dts/qcom/ipq6018.dtsi | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -510,14 +510,6 @@ + clock-names = "xo"; + }; + +- timer { +- compatible = "arm,armv8-timer"; +- interrupts = , +- , +- , +- ; +- }; +- + timer@b120000 { + #address-cells = <1>; + #size-cells = <1>; +@@ -770,6 +762,14 @@ + }; + }; + ++ timer { ++ compatible = "arm,armv8-timer"; ++ interrupts = , ++ , ++ , ++ ; ++ }; ++ + wcss: wcss-smp2p { + compatible = "qcom,smp2p"; + qcom,smem = <435>, <428>; diff --git a/lede/target/linux/qualcommax/patches-6.1/0034-v6.3-arm64-dts-qcom-ipq6018-Sort-nodes-properly.patch b/lede/target/linux/qualcommax/patches-6.1/0034-v6.3-arm64-dts-qcom-ipq6018-Sort-nodes-properly.patch new file mode 100644 index 0000000000..f9662b9c10 --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0034-v6.3-arm64-dts-qcom-ipq6018-Sort-nodes-properly.patch @@ -0,0 +1,607 @@ +From 2c6e322a41c5e1ca45be50b9d5fbcda62dc23a0d Mon Sep 17 00:00:00 2001 +From: Konrad Dybcio +Date: Mon, 2 Jan 2023 10:46:28 +0100 +Subject: [PATCH] arm64: dts: qcom: ipq6018: Sort nodes properly + +Order nodes by unit address if one exists and alphabetically otherwise. + +Signed-off-by: Konrad Dybcio +Signed-off-by: Bjorn Andersson +Link: https://lore.kernel.org/r/20230102094642.74254-4-konrad.dybcio@linaro.org +--- + arch/arm64/boot/dts/qcom/ipq6018.dtsi | 562 +++++++++++++------------- + 1 file changed, 281 insertions(+), 281 deletions(-) + +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -87,6 +87,12 @@ + }; + }; + ++ firmware { ++ scm { ++ compatible = "qcom,scm-ipq6018", "qcom,scm"; ++ }; ++ }; ++ + cpu_opp_table: opp-table-cpu { + compatible = "operating-points-v2"; + opp-shared; +@@ -123,12 +129,6 @@ + }; + }; + +- firmware { +- scm { +- compatible = "qcom,scm-ipq6018", "qcom,scm"; +- }; +- }; +- + pmuv8: pmu { + compatible = "arm,cortex-a53-pmu"; + interrupts = ; ++ qcom,rpm-msg-ram = <&rpm_msg_ram>; ++ mboxes = <&apcs_glb 0>; ++ ++ rpm_requests: glink-channel { ++ compatible = "qcom,rpm-ipq6018"; ++ qcom,glink-channels = "rpm_requests"; ++ ++ regulators { ++ compatible = "qcom,rpm-mp5496-regulators"; ++ ++ ipq6018_s2: s2 { ++ regulator-min-microvolt = <725000>; ++ regulator-max-microvolt = <1062500>; ++ regulator-always-on; ++ }; ++ }; ++ }; ++ }; ++ + smem { + compatible = "qcom,smem"; + memory-region = <&smem_region>; +@@ -179,6 +201,102 @@ + dma-ranges; + compatible = "simple-bus"; + ++ qusb_phy_1: qusb@59000 { ++ compatible = "qcom,ipq6018-qusb2-phy"; ++ reg = <0x0 0x00059000 0x0 0x180>; ++ #phy-cells = <0>; ++ ++ clocks = <&gcc GCC_USB1_PHY_CFG_AHB_CLK>, ++ <&xo>; ++ clock-names = "cfg_ahb", "ref"; ++ ++ resets = <&gcc GCC_QUSB2_1_PHY_BCR>; ++ status = "disabled"; ++ }; ++ ++ ssphy_0: ssphy@78000 { ++ compatible = "qcom,ipq6018-qmp-usb3-phy"; ++ reg = <0x0 0x00078000 0x0 0x1c4>; ++ #address-cells = <2>; ++ #size-cells = <2>; ++ ranges; ++ ++ clocks = <&gcc GCC_USB0_AUX_CLK>, ++ <&gcc GCC_USB0_PHY_CFG_AHB_CLK>, <&xo>; ++ clock-names = "aux", "cfg_ahb", "ref"; ++ ++ resets = <&gcc GCC_USB0_PHY_BCR>, ++ <&gcc GCC_USB3PHY_0_PHY_BCR>; ++ reset-names = "phy","common"; ++ status = "disabled"; ++ ++ usb0_ssphy: phy@78200 { ++ reg = <0x0 0x00078200 0x0 0x130>, /* Tx */ ++ <0x0 0x00078400 0x0 0x200>, /* Rx */ ++ <0x0 0x00078800 0x0 0x1f8>, /* PCS */ ++ <0x0 0x00078600 0x0 0x044>; /* PCS misc */ ++ #phy-cells = <0>; ++ #clock-cells = <0>; ++ clocks = <&gcc GCC_USB0_PIPE_CLK>; ++ clock-names = "pipe0"; ++ clock-output-names = "gcc_usb0_pipe_clk_src"; ++ }; ++ }; ++ ++ qusb_phy_0: qusb@79000 { ++ compatible = "qcom,ipq6018-qusb2-phy"; ++ reg = <0x0 0x00079000 0x0 0x180>; ++ #phy-cells = <0>; ++ ++ clocks = <&gcc GCC_USB0_PHY_CFG_AHB_CLK>, ++ <&xo>; ++ clock-names = "cfg_ahb", "ref"; ++ ++ resets = <&gcc GCC_QUSB2_0_PHY_BCR>; ++ status = "disabled"; ++ }; ++ ++ pcie_phy: phy@84000 { ++ compatible = "qcom,ipq6018-qmp-pcie-phy"; ++ reg = <0x0 0x00084000 0x0 0x1bc>; /* Serdes PLL */ ++ status = "disabled"; ++ #address-cells = <2>; ++ #size-cells = <2>; ++ ranges; ++ ++ clocks = <&gcc GCC_PCIE0_AUX_CLK>, ++ <&gcc GCC_PCIE0_AHB_CLK>; ++ clock-names = "aux", "cfg_ahb"; ++ ++ resets = <&gcc GCC_PCIE0_PHY_BCR>, ++ <&gcc GCC_PCIE0PHY_PHY_BCR>; ++ reset-names = "phy", ++ "common"; ++ ++ pcie_phy0: phy@84200 { ++ reg = <0x0 0x00084200 0x0 0x16c>, /* Serdes Tx */ ++ <0x0 0x00084400 0x0 0x200>, /* Serdes Rx */ ++ <0x0 0x00084800 0x0 0x1f0>, /* PCS: Lane0, COM, PCIE */ ++ <0x0 0x00084c00 0x0 0xf4>; /* pcs_misc */ ++ #phy-cells = <0>; ++ ++ clocks = <&gcc GCC_PCIE0_PIPE_CLK>; ++ clock-names = "pipe0"; ++ clock-output-names = "gcc_pcie0_pipe_clk_src"; ++ #clock-cells = <0>; ++ }; ++ }; ++ ++ mdio: mdio@90000 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ compatible = "qcom,ipq6018-mdio", "qcom,ipq4019-mdio"; ++ reg = <0x0 0x00090000 0x0 0x64>; ++ clocks = <&gcc GCC_MDIO_AHB_CLK>; ++ clock-names = "gcc_mdio_ahb_clk"; ++ status = "disabled"; ++ }; ++ + prng: qrng@e1000 { + compatible = "qcom,prng-ee"; + reg = <0x0 0x000e3000 0x0 0x1000>; +@@ -257,6 +375,41 @@ + reg = <0x0 0x01937000 0x0 0x21000>; + }; + ++ usb2: usb@70f8800 { ++ compatible = "qcom,ipq6018-dwc3", "qcom,dwc3"; ++ reg = <0x0 0x070F8800 0x0 0x400>; ++ #address-cells = <2>; ++ #size-cells = <2>; ++ ranges; ++ clocks = <&gcc GCC_USB1_MASTER_CLK>, ++ <&gcc GCC_USB1_SLEEP_CLK>, ++ <&gcc GCC_USB1_MOCK_UTMI_CLK>; ++ clock-names = "core", ++ "sleep", ++ "mock_utmi"; ++ ++ assigned-clocks = <&gcc GCC_USB1_MASTER_CLK>, ++ <&gcc GCC_USB1_MOCK_UTMI_CLK>; ++ assigned-clock-rates = <133330000>, ++ <24000000>; ++ resets = <&gcc GCC_USB1_BCR>; ++ status = "disabled"; ++ ++ dwc_1: usb@7000000 { ++ compatible = "snps,dwc3"; ++ reg = <0x0 0x07000000 0x0 0xcd00>; ++ interrupts = ; ++ phys = <&qusb_phy_1>; ++ phy-names = "usb2-phy"; ++ tx-fifo-resize; ++ snps,is-utmi-l1-suspend; ++ snps,hird-threshold = /bits/ 8 <0x0>; ++ snps,dis_u2_susphy_quirk; ++ snps,dis_u3_susphy_quirk; ++ dr_mode = "host"; ++ }; ++ }; ++ + blsp_dma: dma-controller@7884000 { + compatible = "qcom,bam-v1.7.0"; + reg = <0x0 0x07884000 0x0 0x2b000>; +@@ -366,6 +519,50 @@ + status = "disabled"; + }; + ++ usb3: usb@8af8800 { ++ compatible = "qcom,ipq6018-dwc3", "qcom,dwc3"; ++ reg = <0x0 0x08af8800 0x0 0x400>; ++ #address-cells = <2>; ++ #size-cells = <2>; ++ ranges; ++ ++ clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>, ++ <&gcc GCC_USB0_MASTER_CLK>, ++ <&gcc GCC_USB0_SLEEP_CLK>, ++ <&gcc GCC_USB0_MOCK_UTMI_CLK>; ++ clock-names = "cfg_noc", ++ "core", ++ "sleep", ++ "mock_utmi"; ++ ++ assigned-clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>, ++ <&gcc GCC_USB0_MASTER_CLK>, ++ <&gcc GCC_USB0_MOCK_UTMI_CLK>; ++ assigned-clock-rates = <133330000>, ++ <133330000>, ++ <24000000>; ++ ++ resets = <&gcc GCC_USB0_BCR>; ++ status = "disabled"; ++ ++ dwc_0: usb@8a00000 { ++ compatible = "snps,dwc3"; ++ reg = <0x0 0x08a00000 0x0 0xcd00>; ++ interrupts = ; ++ phys = <&qusb_phy_0>, <&usb0_ssphy>; ++ phy-names = "usb2-phy", "usb3-phy"; ++ clocks = <&xo>; ++ clock-names = "ref"; ++ tx-fifo-resize; ++ snps,parkmode-disable-ss-quirk; ++ snps,is-utmi-l1-suspend; ++ snps,hird-threshold = /bits/ 8 <0x0>; ++ snps,dis_u2_susphy_quirk; ++ snps,dis_u3_susphy_quirk; ++ dr_mode = "host"; ++ }; ++ }; ++ + intc: interrupt-controller@b000000 { + compatible = "qcom,msm-qgic2"; + #address-cells = <2>; +@@ -386,105 +583,6 @@ + }; + }; + +- pcie_phy: phy@84000 { +- compatible = "qcom,ipq6018-qmp-pcie-phy"; +- reg = <0x0 0x00084000 0x0 0x1bc>; /* Serdes PLL */ +- status = "disabled"; +- #address-cells = <2>; +- #size-cells = <2>; +- ranges; +- +- clocks = <&gcc GCC_PCIE0_AUX_CLK>, +- <&gcc GCC_PCIE0_AHB_CLK>; +- clock-names = "aux", "cfg_ahb"; +- +- resets = <&gcc GCC_PCIE0_PHY_BCR>, +- <&gcc GCC_PCIE0PHY_PHY_BCR>; +- reset-names = "phy", +- "common"; +- +- pcie_phy0: phy@84200 { +- reg = <0x0 0x00084200 0x0 0x16c>, /* Serdes Tx */ +- <0x0 0x00084400 0x0 0x200>, /* Serdes Rx */ +- <0x0 0x00084800 0x0 0x1f0>, /* PCS: Lane0, COM, PCIE */ +- <0x0 0x00084c00 0x0 0xf4>; /* pcs_misc */ +- #phy-cells = <0>; +- +- clocks = <&gcc GCC_PCIE0_PIPE_CLK>; +- clock-names = "pipe0"; +- clock-output-names = "gcc_pcie0_pipe_clk_src"; +- #clock-cells = <0>; +- }; +- }; +- +- pcie0: pci@20000000 { +- compatible = "qcom,pcie-ipq6018"; +- reg = <0x0 0x20000000 0x0 0xf1d>, +- <0x0 0x20000f20 0x0 0xa8>, +- <0x0 0x20001000 0x0 0x1000>, +- <0x0 0x80000 0x0 0x4000>, +- <0x0 0x20100000 0x0 0x1000>; +- reg-names = "dbi", "elbi", "atu", "parf", "config"; +- +- device_type = "pci"; +- linux,pci-domain = <0>; +- bus-range = <0x00 0xff>; +- num-lanes = <1>; +- max-link-speed = <3>; +- #address-cells = <3>; +- #size-cells = <2>; +- +- phys = <&pcie_phy0>; +- phy-names = "pciephy"; +- +- ranges = <0x81000000 0x0 0x00000000 0x0 0x20200000 0x0 0x10000>, +- <0x82000000 0x0 0x20220000 0x0 0x20220000 0x0 0xfde0000>; +- +- interrupts = ; +- interrupt-names = "msi"; +- +- #interrupt-cells = <1>; +- interrupt-map-mask = <0 0 0 0x7>; +- interrupt-map = <0 0 0 1 &intc 0 75 +- IRQ_TYPE_LEVEL_HIGH>, /* int_a */ +- <0 0 0 2 &intc 0 78 +- IRQ_TYPE_LEVEL_HIGH>, /* int_b */ +- <0 0 0 3 &intc 0 79 +- IRQ_TYPE_LEVEL_HIGH>, /* int_c */ +- <0 0 0 4 &intc 0 83 +- IRQ_TYPE_LEVEL_HIGH>; /* int_d */ +- +- clocks = <&gcc GCC_SYS_NOC_PCIE0_AXI_CLK>, +- <&gcc GCC_PCIE0_AXI_M_CLK>, +- <&gcc GCC_PCIE0_AXI_S_CLK>, +- <&gcc GCC_PCIE0_AXI_S_BRIDGE_CLK>, +- <&gcc PCIE0_RCHNG_CLK>; +- clock-names = "iface", +- "axi_m", +- "axi_s", +- "axi_bridge", +- "rchng"; +- +- resets = <&gcc GCC_PCIE0_PIPE_ARES>, +- <&gcc GCC_PCIE0_SLEEP_ARES>, +- <&gcc GCC_PCIE0_CORE_STICKY_ARES>, +- <&gcc GCC_PCIE0_AXI_MASTER_ARES>, +- <&gcc GCC_PCIE0_AXI_SLAVE_ARES>, +- <&gcc GCC_PCIE0_AHB_ARES>, +- <&gcc GCC_PCIE0_AXI_MASTER_STICKY_ARES>, +- <&gcc GCC_PCIE0_AXI_SLAVE_STICKY_ARES>; +- reset-names = "pipe", +- "sleep", +- "sticky", +- "axi_m", +- "axi_s", +- "ahb", +- "axi_m_sticky", +- "axi_s_sticky"; +- +- status = "disabled"; +- }; +- + watchdog@b017000 { + compatible = "qcom,kpss-wdt"; + interrupts = ; +@@ -617,148 +715,74 @@ + }; + }; + +- mdio: mdio@90000 { +- #address-cells = <1>; +- #size-cells = <0>; +- compatible = "qcom,ipq6018-mdio", "qcom,ipq4019-mdio"; +- reg = <0x0 0x00090000 0x0 0x64>; +- clocks = <&gcc GCC_MDIO_AHB_CLK>; +- clock-names = "gcc_mdio_ahb_clk"; +- status = "disabled"; +- }; +- +- qusb_phy_1: qusb@59000 { +- compatible = "qcom,ipq6018-qusb2-phy"; +- reg = <0x0 0x00059000 0x0 0x180>; +- #phy-cells = <0>; +- +- clocks = <&gcc GCC_USB1_PHY_CFG_AHB_CLK>, +- <&xo>; +- clock-names = "cfg_ahb", "ref"; +- +- resets = <&gcc GCC_QUSB2_1_PHY_BCR>; +- status = "disabled"; +- }; +- +- usb2: usb@70f8800 { +- compatible = "qcom,ipq6018-dwc3", "qcom,dwc3"; +- reg = <0x0 0x070F8800 0x0 0x400>; +- #address-cells = <2>; +- #size-cells = <2>; +- ranges; +- clocks = <&gcc GCC_USB1_MASTER_CLK>, +- <&gcc GCC_USB1_SLEEP_CLK>, +- <&gcc GCC_USB1_MOCK_UTMI_CLK>; +- clock-names = "core", +- "sleep", +- "mock_utmi"; +- +- assigned-clocks = <&gcc GCC_USB1_MASTER_CLK>, +- <&gcc GCC_USB1_MOCK_UTMI_CLK>; +- assigned-clock-rates = <133330000>, +- <24000000>; +- resets = <&gcc GCC_USB1_BCR>; +- status = "disabled"; +- +- dwc_1: usb@7000000 { +- compatible = "snps,dwc3"; +- reg = <0x0 0x07000000 0x0 0xcd00>; +- interrupts = ; +- phys = <&qusb_phy_1>; +- phy-names = "usb2-phy"; +- tx-fifo-resize; +- snps,is-utmi-l1-suspend; +- snps,hird-threshold = /bits/ 8 <0x0>; +- snps,dis_u2_susphy_quirk; +- snps,dis_u3_susphy_quirk; +- dr_mode = "host"; +- }; +- }; ++ pcie0: pci@20000000 { ++ compatible = "qcom,pcie-ipq6018"; ++ reg = <0x0 0x20000000 0x0 0xf1d>, ++ <0x0 0x20000f20 0x0 0xa8>, ++ <0x0 0x20001000 0x0 0x1000>, ++ <0x0 0x80000 0x0 0x4000>, ++ <0x0 0x20100000 0x0 0x1000>; ++ reg-names = "dbi", "elbi", "atu", "parf", "config"; + +- ssphy_0: ssphy@78000 { +- compatible = "qcom,ipq6018-qmp-usb3-phy"; +- reg = <0x0 0x00078000 0x0 0x1c4>; +- #address-cells = <2>; ++ device_type = "pci"; ++ linux,pci-domain = <0>; ++ bus-range = <0x00 0xff>; ++ num-lanes = <1>; ++ max-link-speed = <3>; ++ #address-cells = <3>; + #size-cells = <2>; +- ranges; + +- clocks = <&gcc GCC_USB0_AUX_CLK>, +- <&gcc GCC_USB0_PHY_CFG_AHB_CLK>, <&xo>; +- clock-names = "aux", "cfg_ahb", "ref"; +- +- resets = <&gcc GCC_USB0_PHY_BCR>, +- <&gcc GCC_USB3PHY_0_PHY_BCR>; +- reset-names = "phy","common"; +- status = "disabled"; +- +- usb0_ssphy: phy@78200 { +- reg = <0x0 0x00078200 0x0 0x130>, /* Tx */ +- <0x0 0x00078400 0x0 0x200>, /* Rx */ +- <0x0 0x00078800 0x0 0x1f8>, /* PCS */ +- <0x0 0x00078600 0x0 0x044>; /* PCS misc */ +- #phy-cells = <0>; +- #clock-cells = <0>; +- clocks = <&gcc GCC_USB0_PIPE_CLK>; +- clock-names = "pipe0"; +- clock-output-names = "gcc_usb0_pipe_clk_src"; +- }; +- }; +- +- qusb_phy_0: qusb@79000 { +- compatible = "qcom,ipq6018-qusb2-phy"; +- reg = <0x0 0x00079000 0x0 0x180>; +- #phy-cells = <0>; ++ phys = <&pcie_phy0>; ++ phy-names = "pciephy"; + +- clocks = <&gcc GCC_USB0_PHY_CFG_AHB_CLK>, +- <&xo>; +- clock-names = "cfg_ahb", "ref"; ++ ranges = <0x81000000 0 0x20200000 0 0x20200000 ++ 0 0x10000>, /* downstream I/O */ ++ <0x82000000 0 0x20220000 0 0x20220000 ++ 0 0xfde0000>; /* non-prefetchable memory */ + +- resets = <&gcc GCC_QUSB2_0_PHY_BCR>; +- status = "disabled"; +- }; ++ interrupts = ; ++ interrupt-names = "msi"; + +- usb3: usb@8af8800 { +- compatible = "qcom,ipq6018-dwc3", "qcom,dwc3"; +- reg = <0x0 0x8af8800 0x0 0x400>; +- #address-cells = <2>; +- #size-cells = <2>; +- ranges; ++ #interrupt-cells = <1>; ++ interrupt-map-mask = <0 0 0 0x7>; ++ interrupt-map = <0 0 0 1 &intc 0 75 ++ IRQ_TYPE_LEVEL_HIGH>, /* int_a */ ++ <0 0 0 2 &intc 0 78 ++ IRQ_TYPE_LEVEL_HIGH>, /* int_b */ ++ <0 0 0 3 &intc 0 79 ++ IRQ_TYPE_LEVEL_HIGH>, /* int_c */ ++ <0 0 0 4 &intc 0 83 ++ IRQ_TYPE_LEVEL_HIGH>; /* int_d */ + +- clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>, +- <&gcc GCC_USB0_MASTER_CLK>, +- <&gcc GCC_USB0_SLEEP_CLK>, +- <&gcc GCC_USB0_MOCK_UTMI_CLK>; +- clock-names = "cfg_noc", +- "core", +- "sleep", +- "mock_utmi"; ++ clocks = <&gcc GCC_SYS_NOC_PCIE0_AXI_CLK>, ++ <&gcc GCC_PCIE0_AXI_M_CLK>, ++ <&gcc GCC_PCIE0_AXI_S_CLK>, ++ <&gcc GCC_PCIE0_AXI_S_BRIDGE_CLK>, ++ <&gcc PCIE0_RCHNG_CLK>; ++ clock-names = "iface", ++ "axi_m", ++ "axi_s", ++ "axi_bridge", ++ "rchng"; + +- assigned-clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>, +- <&gcc GCC_USB0_MASTER_CLK>, +- <&gcc GCC_USB0_MOCK_UTMI_CLK>; +- assigned-clock-rates = <133330000>, +- <133330000>, +- <24000000>; ++ resets = <&gcc GCC_PCIE0_PIPE_ARES>, ++ <&gcc GCC_PCIE0_SLEEP_ARES>, ++ <&gcc GCC_PCIE0_CORE_STICKY_ARES>, ++ <&gcc GCC_PCIE0_AXI_MASTER_ARES>, ++ <&gcc GCC_PCIE0_AXI_SLAVE_ARES>, ++ <&gcc GCC_PCIE0_AHB_ARES>, ++ <&gcc GCC_PCIE0_AXI_MASTER_STICKY_ARES>, ++ <&gcc GCC_PCIE0_AXI_SLAVE_STICKY_ARES>; ++ reset-names = "pipe", ++ "sleep", ++ "sticky", ++ "axi_m", ++ "axi_s", ++ "ahb", ++ "axi_m_sticky", ++ "axi_s_sticky"; + +- resets = <&gcc GCC_USB0_BCR>; + status = "disabled"; +- +- dwc_0: usb@8a00000 { +- compatible = "snps,dwc3"; +- reg = <0x0 0x8a00000 0x0 0xcd00>; +- interrupts = ; +- phys = <&qusb_phy_0>, <&usb0_ssphy>; +- phy-names = "usb2-phy", "usb3-phy"; +- clocks = <&xo>; +- clock-names = "ref"; +- tx-fifo-resize; +- snps,parkmode-disable-ss-quirk; +- snps,is-utmi-l1-suspend; +- snps,hird-threshold = /bits/ 8 <0x0>; +- snps,dis_u2_susphy_quirk; +- snps,dis_u3_susphy_quirk; +- dr_mode = "host"; +- }; + }; + }; + +@@ -793,26 +817,4 @@ + #interrupt-cells = <2>; + }; + }; +- +- rpm-glink { +- compatible = "qcom,glink-rpm"; +- interrupts = ; +- qcom,rpm-msg-ram = <&rpm_msg_ram>; +- mboxes = <&apcs_glb 0>; +- +- rpm_requests: glink-channel { +- compatible = "qcom,rpm-ipq6018"; +- qcom,glink-channels = "rpm_requests"; +- +- regulators { +- compatible = "qcom,rpm-mp5496-regulators"; +- +- ipq6018_s2: s2 { +- regulator-min-microvolt = <725000>; +- regulator-max-microvolt = <1062500>; +- regulator-always-on; +- }; +- }; +- }; +- }; + }; diff --git a/lede/target/linux/qualcommax/patches-6.1/0035-v6.3-arm64-dts-qcom-ipq6018-Add-remove-some-newlines.patch b/lede/target/linux/qualcommax/patches-6.1/0035-v6.3-arm64-dts-qcom-ipq6018-Add-remove-some-newlines.patch new file mode 100644 index 0000000000..1eb0419a55 --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0035-v6.3-arm64-dts-qcom-ipq6018-Add-remove-some-newlines.patch @@ -0,0 +1,92 @@ +From 6db9ed9a128cbae1423d043f3debd8bfa77783fd Mon Sep 17 00:00:00 2001 +From: Konrad Dybcio +Date: Mon, 2 Jan 2023 10:46:29 +0100 +Subject: [PATCH] arm64: dts: qcom: ipq6018: Add/remove some newlines + +Some lines were broken very aggresively, presumably to fit under 80 chars +and some places could have used a newline, particularly between subsequent +nodes. Address all that and remove redundant comments near PCIe ranges +while at it so as not to exceed 100 chars needlessly. + +Signed-off-by: Konrad Dybcio +Signed-off-by: Bjorn Andersson +Link: https://lore.kernel.org/r/20230102094642.74254-5-konrad.dybcio@linaro.org +--- + arch/arm64/boot/dts/qcom/ipq6018.dtsi | 26 ++++++++++++-------------- + 1 file changed, 12 insertions(+), 14 deletions(-) + +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -102,26 +102,31 @@ + opp-microvolt = <725000>; + clock-latency-ns = <200000>; + }; ++ + opp-1056000000 { + opp-hz = /bits/ 64 <1056000000>; + opp-microvolt = <787500>; + clock-latency-ns = <200000>; + }; ++ + opp-1320000000 { + opp-hz = /bits/ 64 <1320000000>; + opp-microvolt = <862500>; + clock-latency-ns = <200000>; + }; ++ + opp-1440000000 { + opp-hz = /bits/ 64 <1440000000>; + opp-microvolt = <925000>; + clock-latency-ns = <200000>; + }; ++ + opp-1608000000 { + opp-hz = /bits/ 64 <1608000000>; + opp-microvolt = <987500>; + clock-latency-ns = <200000>; + }; ++ + opp-1800000000 { + opp-hz = /bits/ 64 <1800000000>; + opp-microvolt = <1062500>; +@@ -131,8 +136,7 @@ + + pmuv8: pmu { + compatible = "arm,cortex-a53-pmu"; +- interrupts = ; ++ interrupts = ; + }; + + psci: psci { +@@ -735,24 +739,18 @@ + phys = <&pcie_phy0>; + phy-names = "pciephy"; + +- ranges = <0x81000000 0 0x20200000 0 0x20200000 +- 0 0x10000>, /* downstream I/O */ +- <0x82000000 0 0x20220000 0 0x20220000 +- 0 0xfde0000>; /* non-prefetchable memory */ ++ ranges = <0x81000000 0 0x20200000 0 0x20200000 0 0x10000>, ++ <0x82000000 0 0x20220000 0 0x20220000 0 0xfde0000>; + + interrupts = ; + interrupt-names = "msi"; + + #interrupt-cells = <1>; + interrupt-map-mask = <0 0 0 0x7>; +- interrupt-map = <0 0 0 1 &intc 0 75 +- IRQ_TYPE_LEVEL_HIGH>, /* int_a */ +- <0 0 0 2 &intc 0 78 +- IRQ_TYPE_LEVEL_HIGH>, /* int_b */ +- <0 0 0 3 &intc 0 79 +- IRQ_TYPE_LEVEL_HIGH>, /* int_c */ +- <0 0 0 4 &intc 0 83 +- IRQ_TYPE_LEVEL_HIGH>; /* int_d */ ++ interrupt-map = <0 0 0 1 &intc 0 75 IRQ_TYPE_LEVEL_HIGH>, /* int_a */ ++ <0 0 0 2 &intc 0 78 IRQ_TYPE_LEVEL_HIGH>, /* int_b */ ++ <0 0 0 3 &intc 0 79 IRQ_TYPE_LEVEL_HIGH>, /* int_c */ ++ <0 0 0 4 &intc 0 83 IRQ_TYPE_LEVEL_HIGH>; /* int_d */ + + clocks = <&gcc GCC_SYS_NOC_PCIE0_AXI_CLK>, + <&gcc GCC_PCIE0_AXI_M_CLK>, diff --git a/lede/target/linux/qualcommax/patches-6.1/0036-v6.3-arm64-dts-qcom-ipq6018-Use-lowercase-hex.patch b/lede/target/linux/qualcommax/patches-6.1/0036-v6.3-arm64-dts-qcom-ipq6018-Use-lowercase-hex.patch new file mode 100644 index 0000000000..35aa46bb10 --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0036-v6.3-arm64-dts-qcom-ipq6018-Use-lowercase-hex.patch @@ -0,0 +1,25 @@ +From 7356ae3e10abd1d71f06ff0b8a8e72aa7c955c57 Mon Sep 17 00:00:00 2001 +From: Konrad Dybcio +Date: Mon, 2 Jan 2023 10:46:30 +0100 +Subject: [PATCH] arm64: dts: qcom: ipq6018: Use lowercase hex + +One value escaped my previous lowercase hexification. Take care of it. + +Signed-off-by: Konrad Dybcio +Signed-off-by: Bjorn Andersson +Link: https://lore.kernel.org/r/20230102094642.74254-6-konrad.dybcio@linaro.org +--- + arch/arm64/boot/dts/qcom/ipq6018.dtsi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -381,7 +381,7 @@ + + usb2: usb@70f8800 { + compatible = "qcom,ipq6018-dwc3", "qcom,dwc3"; +- reg = <0x0 0x070F8800 0x0 0x400>; ++ reg = <0x0 0x070f8800 0x0 0x400>; + #address-cells = <2>; + #size-cells = <2>; + ranges; diff --git a/lede/target/linux/qualcommax/patches-6.1/0037-v6.3-arm64-dts-qcom-ipq6018-align-RPM-G-Link-node-with.patch b/lede/target/linux/qualcommax/patches-6.1/0037-v6.3-arm64-dts-qcom-ipq6018-align-RPM-G-Link-node-with.patch new file mode 100644 index 0000000000..c939d126bf --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0037-v6.3-arm64-dts-qcom-ipq6018-align-RPM-G-Link-node-with.patch @@ -0,0 +1,28 @@ +From 679ee73bbee28cab441008f8cca38160cc8f3d05 Mon Sep 17 00:00:00 2001 +From: Krzysztof Kozlowski +Date: Wed, 8 Feb 2023 11:15:39 +0100 +Subject: [PATCH] arm64: dts: qcom: ipq6018: align RPM G-Link node with + bindings + +Bindings expect (and most of DTS use) the RPM G-Link node name to be +"rpm-requests". + +Signed-off-by: Krzysztof Kozlowski +Reviewed-by: Dmitry Baryshkov +Signed-off-by: Bjorn Andersson +Link: https://lore.kernel.org/r/20230208101545.45711-1-krzysztof.kozlowski@linaro.org +--- + arch/arm64/boot/dts/qcom/ipq6018.dtsi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -176,7 +176,7 @@ + qcom,rpm-msg-ram = <&rpm_msg_ram>; + mboxes = <&apcs_glb 0>; + +- rpm_requests: glink-channel { ++ rpm_requests: rpm-requests { + compatible = "qcom,rpm-ipq6018"; + qcom,glink-channels = "rpm_requests"; + diff --git a/lede/target/linux/qualcommax/patches-6.1/0039-v6.5-arm64-dts-qcom-add-few-more-reserved-memory-region.patch b/lede/target/linux/qualcommax/patches-6.1/0039-v6.5-arm64-dts-qcom-add-few-more-reserved-memory-region.patch index ee25fe24c0..d1280b528b 100644 --- a/lede/target/linux/qualcommax/patches-6.1/0039-v6.5-arm64-dts-qcom-add-few-more-reserved-memory-region.patch +++ b/lede/target/linux/qualcommax/patches-6.1/0039-v6.5-arm64-dts-qcom-add-few-more-reserved-memory-region.patch @@ -24,6 +24,40 @@ Link: https://lore.kernel.org/r/20230526110653.27777-4-quic_viswanat@quicinc.com arch/arm64/boot/dts/qcom/ipq8074.dtsi | 14 ++++++++++++-- 2 files changed, 25 insertions(+), 5 deletions(-) +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -154,18 +154,28 @@ + no-map; + }; + ++ bootloader@4a100000 { ++ reg = <0x0 0x4a100000 0x0 0x400000>; ++ no-map; ++ }; ++ ++ sbl@4a500000 { ++ reg = <0x0 0x4a500000 0x0 0x100000>; ++ no-map; ++ }; ++ + tz: memory@4a600000 { +- reg = <0x0 0x4a600000 0x0 0x00400000>; ++ reg = <0x0 0x4a600000 0x0 0x400000>; + no-map; + }; + + smem_region: memory@4aa00000 { +- reg = <0x0 0x4aa00000 0x0 0x00100000>; ++ reg = <0x0 0x4aa00000 0x0 0x100000>; + no-map; + }; + + q6_region: memory@4ab00000 { +- reg = <0x0 0x4ab00000 0x0 0x05500000>; ++ reg = <0x0 0x4ab00000 0x0 0x5500000>; + no-map; + }; + }; --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi @@ -85,17 +85,27 @@ diff --git a/lede/target/linux/qualcommax/patches-6.1/0040-v6.5-arm64-dts-qcom-enable-the-download-mode-support.patch b/lede/target/linux/qualcommax/patches-6.1/0040-v6.5-arm64-dts-qcom-enable-the-download-mode-support.patch index 47378de313..6dd185f6e0 100644 --- a/lede/target/linux/qualcommax/patches-6.1/0040-v6.5-arm64-dts-qcom-enable-the-download-mode-support.patch +++ b/lede/target/linux/qualcommax/patches-6.1/0040-v6.5-arm64-dts-qcom-enable-the-download-mode-support.patch @@ -15,6 +15,16 @@ Link: https://lore.kernel.org/r/20230526110653.27777-3-quic_viswanat@quicinc.com arch/arm64/boot/dts/qcom/ipq8074.dtsi | 6 ++++++ 2 files changed, 7 insertions(+) +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -90,6 +90,7 @@ + firmware { + scm { + compatible = "qcom,scm-ipq6018", "qcom,scm"; ++ qcom,dload-mode = <&tcsr 0x6100>; + }; + }; + --- a/arch/arm64/boot/dts/qcom/ipq8074.dtsi +++ b/arch/arm64/boot/dts/qcom/ipq8074.dtsi @@ -112,6 +112,7 @@ diff --git a/lede/target/linux/qualcommax/patches-6.1/0041-v6.5-arm64-dts-qcom-ipq6018-correct-qrng-unit-address.patch b/lede/target/linux/qualcommax/patches-6.1/0041-v6.5-arm64-dts-qcom-ipq6018-correct-qrng-unit-address.patch new file mode 100644 index 0000000000..e9b92b596e --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0041-v6.5-arm64-dts-qcom-ipq6018-correct-qrng-unit-address.patch @@ -0,0 +1,29 @@ +From 085058786a7890dd44ec623fe5ac74db870f6b93 Mon Sep 17 00:00:00 2001 +From: Krzysztof Kozlowski +Date: Wed, 19 Apr 2023 23:18:39 +0200 +Subject: [PATCH] arm64: dts: qcom: ipq6018: correct qrng unit address + +Match unit-address to reg entry to fix dtbs W=1 warnings: + + Warning (simple_bus_reg): /soc/qrng@e1000: simple-bus unit address format error, expected "e3000" + +Fixes: 5bf635621245 ("arm64: dts: ipq6018: Add a few device nodes") +Signed-off-by: Krzysztof Kozlowski +Reviewed-by: Konrad Dybcio +Signed-off-by: Bjorn Andersson +Link: https://lore.kernel.org/r/20230419211856.79332-1-krzysztof.kozlowski@linaro.org +--- + arch/arm64/boot/dts/qcom/ipq6018.dtsi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -312,7 +312,7 @@ + status = "disabled"; + }; + +- prng: qrng@e1000 { ++ prng: qrng@e3000 { + compatible = "qcom,prng-ee"; + reg = <0x0 0x000e3000 0x0 0x1000>; + clocks = <&gcc GCC_PRNG_AHB_CLK>; diff --git a/lede/target/linux/qualcommax/patches-6.1/0042-v6.5-arm64-dts-qcom-ipq6018-add-unit-address-to-soc-node.patch b/lede/target/linux/qualcommax/patches-6.1/0042-v6.5-arm64-dts-qcom-ipq6018-add-unit-address-to-soc-node.patch new file mode 100644 index 0000000000..821c9890c6 --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0042-v6.5-arm64-dts-qcom-ipq6018-add-unit-address-to-soc-node.patch @@ -0,0 +1,28 @@ +From 393595d4ffbd0a1fafd5548f8de1b8487a037cf2 Mon Sep 17 00:00:00 2001 +From: Krzysztof Kozlowski +Date: Thu, 20 Apr 2023 08:36:04 +0200 +Subject: [PATCH] arm64: dts: qcom: ipq6018: add unit address to soc node + +"soc" node is supposed to have unit address: + + Warning (unit_address_vs_reg): /soc: node has a reg or ranges property, but no unit name + +Signed-off-by: Krzysztof Kozlowski +Reviewed-by: Konrad Dybcio +Signed-off-by: Bjorn Andersson +Link: https://lore.kernel.org/r/20230420063610.11068-1-krzysztof.kozlowski@linaro.org +--- + arch/arm64/boot/dts/qcom/ipq6018.dtsi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -209,7 +209,7 @@ + hwlocks = <&tcsr_mutex 3>; + }; + +- soc: soc { ++ soc: soc@0 { + #address-cells = <2>; + #size-cells = <2>; + ranges = <0 0 0 0 0x0 0xffffffff>; diff --git a/lede/target/linux/qualcommax/patches-6.1/0043-v6.5-arm64-dts-qcom-ipq6018-add-QFPROM-node.patch b/lede/target/linux/qualcommax/patches-6.1/0043-v6.5-arm64-dts-qcom-ipq6018-add-QFPROM-node.patch new file mode 100644 index 0000000000..68895c5c96 --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0043-v6.5-arm64-dts-qcom-ipq6018-add-QFPROM-node.patch @@ -0,0 +1,34 @@ +From 546f0617a22a481f3ca1f7e058aea0c40517c64e Mon Sep 17 00:00:00 2001 +From: Kathiravan T +Date: Fri, 26 May 2023 18:23:04 +0530 +Subject: [PATCH] arm64: dts: qcom: ipq6018: add QFPROM node + +IPQ6018 has efuse region to determine the various HW quirks. Lets +add the initial support and the individual fuses will be added as they +are required. + +Signed-off-by: Kathiravan T +Reviewed-by: Dmitry Baryshkov +Reviewed-by: Konrad Dybcio +Signed-off-by: Bjorn Andersson +Link: https://lore.kernel.org/r/20230526125305.19626-4-quic_kathirav@quicinc.com +--- + arch/arm64/boot/dts/qcom/ipq6018.dtsi | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -312,6 +312,13 @@ + status = "disabled"; + }; + ++ qfprom: efuse@a4000 { ++ compatible = "qcom,ipq6018-qfprom", "qcom,qfprom"; ++ reg = <0x0 0x000a4000 0x0 0x2000>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ }; ++ + prng: qrng@e3000 { + compatible = "qcom,prng-ee"; + reg = <0x0 0x000e3000 0x0 0x1000>; diff --git a/lede/target/linux/qualcommax/patches-6.1/0044-v6.5-arm64-dts-qcom-ipq6018-drop-incorrect-SPI-bus.patch b/lede/target/linux/qualcommax/patches-6.1/0044-v6.5-arm64-dts-qcom-ipq6018-drop-incorrect-SPI-bus.patch new file mode 100644 index 0000000000..b2057e588e --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0044-v6.5-arm64-dts-qcom-ipq6018-drop-incorrect-SPI-bus.patch @@ -0,0 +1,37 @@ +From b8420d478aa3fc739fcdba6b4b945850b356cb3b Mon Sep 17 00:00:00 2001 +From: Krzysztof Kozlowski +Date: Sun, 16 Apr 2023 14:37:25 +0200 +Subject: [PATCH] arm64: dts: qcom: ipq6018: drop incorrect SPI bus + spi-max-frequency + +The spi-max-frequency property belongs to SPI devices, not SPI +controller: + + ipq6018-cp01-c1.dtb: spi@78b5000: Unevaluated properties are not allowed ('spi-max-frequency' was unexpected) + +Signed-off-by: Krzysztof Kozlowski +Reviewed-by: Konrad Dybcio +Signed-off-by: Bjorn Andersson +Link: https://lore.kernel.org/r/20230416123730.300863-1-krzysztof.kozlowski@linaro.org +--- + arch/arm64/boot/dts/qcom/ipq6018.dtsi | 2 -- + 1 file changed, 2 deletions(-) + +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -458,7 +458,6 @@ + #size-cells = <0>; + reg = <0x0 0x078b5000 0x0 0x600>; + interrupts = ; +- spi-max-frequency = <50000000>; + clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>, + <&gcc GCC_BLSP1_AHB_CLK>; + clock-names = "core", "iface"; +@@ -473,7 +472,6 @@ + #size-cells = <0>; + reg = <0x0 0x078b6000 0x0 0x600>; + interrupts = ; +- spi-max-frequency = <50000000>; + clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>, + <&gcc GCC_BLSP1_AHB_CLK>; + clock-names = "core", "iface"; diff --git a/lede/target/linux/qualcommax/patches-6.1/0051-v6.6-arm64-dts-qcom-Add-rpm-proc-node-for-GLINK.patch b/lede/target/linux/qualcommax/patches-6.1/0051-v6.6-arm64-dts-qcom-Add-rpm-proc-node-for-GLINK.patch new file mode 100644 index 0000000000..746a391b42 --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0051-v6.6-arm64-dts-qcom-Add-rpm-proc-node-for-GLINK.patch @@ -0,0 +1,93 @@ +From 7e1acc8b92a3b67db1e5255adae2851d58d74434 Mon Sep 17 00:00:00 2001 +From: Stephan Gerhold +Date: Thu, 15 Jun 2023 18:50:44 +0200 +Subject: [PATCH] arm64: dts: qcom: Add rpm-proc node for GLINK gplatforms + +Rather than having the RPM GLINK channels as the only child of a dummy +top-level rpm-glink node, switch to representing the RPM as remoteproc +like all the other remoteprocs (modem DSP, ...). + +This allows assigning additional subdevices to it like the MPM +interrupt-controller or rpm-master-stats. + +Tested-by: Konrad Dybcio # SM6375 +Signed-off-by: Stephan Gerhold +Link: https://lore.kernel.org/r/20230531-rpm-rproc-v3-11-a07dcdefd918@gerhold.net +Signed-off-by: Bjorn Andersson +--- + arch/arm64/boot/dts/qcom/ipq6018.dtsi | 48 ++++---- + arch/arm64/boot/dts/qcom/ipq9574.dtsi | 28 +++-- + arch/arm64/boot/dts/qcom/msm8996.dtsi | 113 +++++++++---------- + arch/arm64/boot/dts/qcom/msm8998.dtsi | 102 ++++++++--------- + arch/arm64/boot/dts/qcom/qcm2290.dtsi | 126 ++++++++++----------- + arch/arm64/boot/dts/qcom/qcs404.dtsi | 152 +++++++++++++------------- + arch/arm64/boot/dts/qcom/sdm630.dtsi | 132 +++++++++++----------- + arch/arm64/boot/dts/qcom/sm6115.dtsi | 128 +++++++++++----------- + arch/arm64/boot/dts/qcom/sm6125.dtsi | 140 ++++++++++++------------ + arch/arm64/boot/dts/qcom/sm6375.dtsi | 126 ++++++++++----------- + 10 files changed, 566 insertions(+), 529 deletions(-) + +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -145,6 +145,32 @@ + method = "smc"; + }; + ++ rpm: remoteproc { ++ compatible = "qcom,ipq6018-rpm-proc", "qcom,rpm-proc"; ++ ++ glink-edge { ++ compatible = "qcom,glink-rpm"; ++ interrupts = ; ++ qcom,rpm-msg-ram = <&rpm_msg_ram>; ++ mboxes = <&apcs_glb 0>; ++ ++ rpm_requests: rpm-requests { ++ compatible = "qcom,rpm-ipq6018"; ++ qcom,glink-channels = "rpm_requests"; ++ ++ regulators { ++ compatible = "qcom,rpm-mp5496-regulators"; ++ ++ ipq6018_s2: s2 { ++ regulator-min-microvolt = <725000>; ++ regulator-max-microvolt = <1062500>; ++ regulator-always-on; ++ }; ++ }; ++ }; ++ }; ++ }; ++ + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; +@@ -181,28 +207,6 @@ + }; + }; + +- rpm-glink { +- compatible = "qcom,glink-rpm"; +- interrupts = ; +- qcom,rpm-msg-ram = <&rpm_msg_ram>; +- mboxes = <&apcs_glb 0>; +- +- rpm_requests: rpm-requests { +- compatible = "qcom,rpm-ipq6018"; +- qcom,glink-channels = "rpm_requests"; +- +- regulators { +- compatible = "qcom,rpm-mp5496-regulators"; +- +- ipq6018_s2: s2 { +- regulator-min-microvolt = <725000>; +- regulator-max-microvolt = <1062500>; +- regulator-always-on; +- }; +- }; +- }; +- }; +- + smem { + compatible = "qcom,smem"; + memory-region = <&smem_region>; diff --git a/lede/target/linux/qualcommax/patches-6.1/0052-v6.7-arm64-dts-qcom-ipq6018-include-the-GPLL0-as.patch b/lede/target/linux/qualcommax/patches-6.1/0052-v6.7-arm64-dts-qcom-ipq6018-include-the-GPLL0-as.patch new file mode 100644 index 0000000000..3239404977 --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0052-v6.7-arm64-dts-qcom-ipq6018-include-the-GPLL0-as.patch @@ -0,0 +1,35 @@ +From 0133c7af3aa0420778d106cb90db708cfa45f2c6 Mon Sep 17 00:00:00 2001 +From: Kathiravan Thirumoorthy +Date: Thu, 14 Sep 2023 12:29:59 +0530 +Subject: [PATCH] arm64: dts: qcom: ipq6018: include the GPLL0 as clock + provider for mailbox + +While the kernel is booting up, APSS clock / CPU clock will be running +at 800MHz with GPLL0 as source. Once the cpufreq driver is available, +APSS PLL will be configured to the rate based on the opp table and the +source also will be changed to APSS_PLL_EARLY. So allow the mailbox to +consume the GPLL0, with this inclusion, CPU Freq correctly reports that +CPU is running at 800MHz rather than 24MHz. + +Signed-off-by: Kathiravan Thirumoorthy +Reviewed-by: Konrad Dybcio +Link: https://lore.kernel.org/r/20230913-gpll_cleanup-v2-9-c8ceb1a37680@quicinc.com +[bjorn: Updated commit message, as requested by Kathiravan] +Signed-off-by: Bjorn Andersson +--- + arch/arm64/boot/dts/qcom/ipq6018.dtsi | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -619,8 +619,8 @@ + compatible = "qcom,ipq6018-apcs-apps-global"; + reg = <0x0 0x0b111000 0x0 0x1000>; + #clock-cells = <1>; +- clocks = <&a53pll>, <&xo>; +- clock-names = "pll", "xo"; ++ clocks = <&a53pll>, <&xo>, <&gcc GPLL0>; ++ clock-names = "pll", "xo", "gpll0"; + #mbox-cells = <1>; + }; + diff --git a/lede/target/linux/qualcommax/patches-6.1/0054-v6.8-arm64-dts-qcom-ipq6018-use-CPUFreq-NVMEM.patch b/lede/target/linux/qualcommax/patches-6.1/0054-v6.8-arm64-dts-qcom-ipq6018-use-CPUFreq-NVMEM.patch new file mode 100644 index 0000000000..1369a90a8a --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0054-v6.8-arm64-dts-qcom-ipq6018-use-CPUFreq-NVMEM.patch @@ -0,0 +1,85 @@ +From 83afcf14edb9217e58837eb119da96d734a4b3b1 Mon Sep 17 00:00:00 2001 +From: Robert Marko +Date: Sat, 21 Oct 2023 14:00:07 +0200 +Subject: [PATCH] arm64: dts: qcom: ipq6018: use CPUFreq NVMEM + +IPQ6018 comes in multiple SKU-s and some of them dont support all of the +OPP-s that are current set, so lets utilize CPUFreq NVMEM to allow only +supported OPP-s based on the SoC dynamically. + +As an example, IPQ6018 is generaly rated at 1.8GHz but some silicon only +goes up to 1.5GHz and is marked as such via an eFuse. + +Signed-off-by: Robert Marko +Reviewed-by: Konrad Dybcio +Link: https://lore.kernel.org/r/20231021120048.231239-1-robimarko@gmail.com +Signed-off-by: Bjorn Andersson +--- + arch/arm64/boot/dts/qcom/ipq6018.dtsi | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -95,42 +95,49 @@ + }; + + cpu_opp_table: opp-table-cpu { +- compatible = "operating-points-v2"; ++ compatible = "operating-points-v2-kryo-cpu"; ++ nvmem-cells = <&cpu_speed_bin>; + opp-shared; + + opp-864000000 { + opp-hz = /bits/ 64 <864000000>; + opp-microvolt = <725000>; ++ opp-supported-hw = <0xf>; + clock-latency-ns = <200000>; + }; + + opp-1056000000 { + opp-hz = /bits/ 64 <1056000000>; + opp-microvolt = <787500>; ++ opp-supported-hw = <0xf>; + clock-latency-ns = <200000>; + }; + + opp-1320000000 { + opp-hz = /bits/ 64 <1320000000>; + opp-microvolt = <862500>; ++ opp-supported-hw = <0x3>; + clock-latency-ns = <200000>; + }; + + opp-1440000000 { + opp-hz = /bits/ 64 <1440000000>; + opp-microvolt = <925000>; ++ opp-supported-hw = <0x3>; + clock-latency-ns = <200000>; + }; + + opp-1608000000 { + opp-hz = /bits/ 64 <1608000000>; + opp-microvolt = <987500>; ++ opp-supported-hw = <0x1>; + clock-latency-ns = <200000>; + }; + + opp-1800000000 { + opp-hz = /bits/ 64 <1800000000>; + opp-microvolt = <1062500>; ++ opp-supported-hw = <0x1>; + clock-latency-ns = <200000>; + }; + }; +@@ -321,6 +328,11 @@ + reg = <0x0 0x000a4000 0x0 0x2000>; + #address-cells = <1>; + #size-cells = <1>; ++ ++ cpu_speed_bin: cpu-speed-bin@135 { ++ reg = <0x135 0x1>; ++ bits = <7 1>; ++ }; + }; + + prng: qrng@e3000 { diff --git a/lede/target/linux/qualcommax/patches-6.1/0105-arm64-dts-qcom-ipq6018-add-pwm-node.patch b/lede/target/linux/qualcommax/patches-6.1/0105-arm64-dts-qcom-ipq6018-add-pwm-node.patch new file mode 100644 index 0000000000..66b41b8353 --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0105-arm64-dts-qcom-ipq6018-add-pwm-node.patch @@ -0,0 +1,45 @@ +From b4a32d218d424b81a58fbd419e1114b1c1f76168 Mon Sep 17 00:00:00 2001 +From: Devi Priya +Date: Thu, 5 Oct 2023 21:35:50 +0530 +Subject: [PATCH] pwm: driver for qualcomm ipq6018 pwm block + +Describe the PWM block on IPQ6018. + +The PWM is in the TCSR area. Make &tcsr "simple-mfd" compatible, and add +&pwm as child of &tcsr. + +Add also ipq6018 specific compatible string. + +Reviewed-by: Krzysztof Kozlowski +Co-developed-by: Baruch Siach +Signed-off-by: Baruch Siach +Signed-off-by: Devi Priya +--- + arch/arm64/boot/dts/qcom/ipq6018.dtsi | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -409,8 +409,21 @@ + }; + + tcsr: syscon@1937000 { +- compatible = "qcom,tcsr-ipq6018", "syscon"; ++ compatible = "qcom,tcsr-ipq6018", "syscon", "simple-mfd"; + reg = <0x0 0x01937000 0x0 0x21000>; ++ ranges = <0x0 0x0 0x01937000 0x21000>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ pwm: pwm@a010 { ++ compatible = "qcom,ipq6018-pwm"; ++ reg = <0xa010 0x20>; ++ clocks = <&gcc GCC_ADSS_PWM_CLK>; ++ assigned-clocks = <&gcc GCC_ADSS_PWM_CLK>; ++ assigned-clock-rates = <100000000>; ++ #pwm-cells = <2>; ++ status = "disabled"; ++ }; + }; + + usb2: usb@70f8800 { diff --git a/lede/target/linux/qualcommax/patches-6.1/0109-arm64-dts-ipq6018-Add-remaining-QUP-UART-node.patch b/lede/target/linux/qualcommax/patches-6.1/0109-arm64-dts-ipq6018-Add-remaining-QUP-UART-node.patch new file mode 100644 index 0000000000..0c958f0b56 --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0109-arm64-dts-ipq6018-Add-remaining-QUP-UART-node.patch @@ -0,0 +1,66 @@ +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -471,6 +471,26 @@ + qcom,ee = <0>; + }; + ++ blsp1_uart1: serial@78af000 { ++ compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; ++ reg = <0x0 0x78af000 0x0 0x200>; ++ interrupts = ; ++ clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, ++ <&gcc GCC_BLSP1_AHB_CLK>; ++ clock-names = "core", "iface"; ++ status = "disabled"; ++ }; ++ ++ blsp1_uart2: serial@78b0000 { ++ compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; ++ reg = <0x0 0x78b0000 0x0 0x200>; ++ interrupts = ; ++ clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, ++ <&gcc GCC_BLSP1_AHB_CLK>; ++ clock-names = "core", "iface"; ++ status = "disabled"; ++ }; ++ + blsp1_uart3: serial@78b1000 { + compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; + reg = <0x0 0x078b1000 0x0 0x200>; +@@ -479,6 +499,36 @@ + <&gcc GCC_BLSP1_AHB_CLK>; + clock-names = "core", "iface"; + status = "disabled"; ++ }; ++ ++ blsp1_uart4: serial@78b2000 { ++ compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; ++ reg = <0x0 0x078b2000 0x0 0x200>; ++ interrupts = ; ++ clocks = <&gcc GCC_BLSP1_UART4_APPS_CLK>, ++ <&gcc GCC_BLSP1_AHB_CLK>; ++ clock-names = "core", "iface"; ++ status = "disabled"; ++ }; ++ ++ blsp1_uart5: serial@78b3000 { ++ compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; ++ reg = <0x0 0x78b3000 0x0 0x200>; ++ interrupts = ; ++ clocks = <&gcc GCC_BLSP1_UART5_APPS_CLK>, ++ <&gcc GCC_BLSP1_AHB_CLK>; ++ clock-names = "core", "iface"; ++ status = "disabled"; ++ }; ++ ++ blsp1_uart6: serial@78b4000 { ++ compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; ++ reg = <0x0 0x078b4000 0x0 0x200>; ++ interrupts = ; ++ clocks = <&gcc GCC_BLSP1_UART6_APPS_CLK>, ++ <&gcc GCC_BLSP1_AHB_CLK>; ++ clock-names = "core", "iface"; ++ status = "disabled"; + }; + + blsp1_spi1: spi@78b5000 { diff --git a/lede/target/linux/qualcommax/patches-6.1/0132-ipq6018-rproc-Add-non-secure-Q6-bringup-sequence.patch b/lede/target/linux/qualcommax/patches-6.1/0132-ipq6018-rproc-Add-non-secure-Q6-bringup-sequence.patch index c72d50f3dd..8291c5f7a6 100644 --- a/lede/target/linux/qualcommax/patches-6.1/0132-ipq6018-rproc-Add-non-secure-Q6-bringup-sequence.patch +++ b/lede/target/linux/qualcommax/patches-6.1/0132-ipq6018-rproc-Add-non-secure-Q6-bringup-sequence.patch @@ -12,6 +12,35 @@ Signed-off-by: Manikanta Mylavarapu drivers/remoteproc/qcom_q6v5_wcss.c | 235 +++++++++++++++++++++++--- 2 files changed, 232 insertions(+), 23 deletions(-) +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -790,8 +790,24 @@ + "wcss_reset", + "wcss_q6_reset"; + +- clocks = <&gcc GCC_PRNG_AHB_CLK>; +- clock-names = "prng"; ++ clocks = <&gcc GCC_PRNG_AHB_CLK>, ++ <&gcc GCC_SYS_NOC_WCSS_AHB_CLK>, ++ <&gcc GCC_Q6SS_ATBM_CLK>, ++ <&gcc GCC_Q6SS_PCLKDBG_CLK>, ++ <&gcc GCC_Q6_TSCTR_1TO2_CLK>; ++ clock-names = "prng", ++ "gcc_sys_noc_wcss_ahb_clk", ++ "gcc_q6ss_atbm_clk", ++ "gcc_q6ss_pclkdbg_clk", ++ "gcc_q6_tsctr_1to2_clk"; ++ assigned-clocks = <&gcc GCC_SYS_NOC_WCSS_AHB_CLK>, ++ <&gcc GCC_Q6SS_PCLKDBG_CLK>, ++ <&gcc GCC_Q6_TSCTR_1TO2_CLK>, ++ <&gcc GCC_Q6SS_ATBM_CLK>; ++ assigned-clock-rates = <133333333>, ++ <600000000>, ++ <600000000>, ++ <240000000>; + + qcom,halt-regs = <&tcsr 0x18000 0x1b000 0xe000>; + --- a/drivers/remoteproc/qcom_q6v5_wcss.c +++ b/drivers/remoteproc/qcom_q6v5_wcss.c @@ -12,6 +12,7 @@ diff --git a/lede/target/linux/qualcommax/patches-6.1/0133-arm64-dts-ipq6018-Add-WLAN-node.patch b/lede/target/linux/qualcommax/patches-6.1/0133-arm64-dts-ipq6018-Add-WLAN-node.patch new file mode 100644 index 0000000000..85914e40e6 --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0133-arm64-dts-ipq6018-Add-WLAN-node.patch @@ -0,0 +1,122 @@ +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -765,6 +765,119 @@ + }; + }; + ++ wifi: wifi@c000000 { ++ compatible = "qcom,ipq6018-wifi"; ++ reg = <0x0 0xc000000 0x0 0x1000000>; ++ ++ interrupts = <0 320 IRQ_TYPE_EDGE_RISING>, ++ <0 319 IRQ_TYPE_EDGE_RISING>, ++ <0 318 IRQ_TYPE_EDGE_RISING>, ++ <0 316 IRQ_TYPE_EDGE_RISING>, ++ <0 315 IRQ_TYPE_EDGE_RISING>, ++ <0 314 IRQ_TYPE_EDGE_RISING>, ++ <0 311 IRQ_TYPE_EDGE_RISING>, ++ <0 310 IRQ_TYPE_EDGE_RISING>, ++ <0 411 IRQ_TYPE_EDGE_RISING>, ++ <0 410 IRQ_TYPE_EDGE_RISING>, ++ <0 40 IRQ_TYPE_EDGE_RISING>, ++ <0 39 IRQ_TYPE_EDGE_RISING>, ++ <0 302 IRQ_TYPE_EDGE_RISING>, ++ <0 301 IRQ_TYPE_EDGE_RISING>, ++ <0 37 IRQ_TYPE_EDGE_RISING>, ++ <0 36 IRQ_TYPE_EDGE_RISING>, ++ <0 296 IRQ_TYPE_EDGE_RISING>, ++ <0 295 IRQ_TYPE_EDGE_RISING>, ++ <0 294 IRQ_TYPE_EDGE_RISING>, ++ <0 293 IRQ_TYPE_EDGE_RISING>, ++ <0 292 IRQ_TYPE_EDGE_RISING>, ++ <0 291 IRQ_TYPE_EDGE_RISING>, ++ <0 290 IRQ_TYPE_EDGE_RISING>, ++ <0 289 IRQ_TYPE_EDGE_RISING>, ++ <0 288 IRQ_TYPE_EDGE_RISING>, ++ <0 239 IRQ_TYPE_EDGE_RISING>, ++ <0 236 IRQ_TYPE_EDGE_RISING>, ++ <0 235 IRQ_TYPE_EDGE_RISING>, ++ <0 234 IRQ_TYPE_EDGE_RISING>, ++ <0 233 IRQ_TYPE_EDGE_RISING>, ++ <0 232 IRQ_TYPE_EDGE_RISING>, ++ <0 231 IRQ_TYPE_EDGE_RISING>, ++ <0 230 IRQ_TYPE_EDGE_RISING>, ++ <0 229 IRQ_TYPE_EDGE_RISING>, ++ <0 228 IRQ_TYPE_EDGE_RISING>, ++ <0 224 IRQ_TYPE_EDGE_RISING>, ++ <0 223 IRQ_TYPE_EDGE_RISING>, ++ <0 203 IRQ_TYPE_EDGE_RISING>, ++ <0 183 IRQ_TYPE_EDGE_RISING>, ++ <0 180 IRQ_TYPE_EDGE_RISING>, ++ <0 179 IRQ_TYPE_EDGE_RISING>, ++ <0 178 IRQ_TYPE_EDGE_RISING>, ++ <0 177 IRQ_TYPE_EDGE_RISING>, ++ <0 176 IRQ_TYPE_EDGE_RISING>, ++ <0 163 IRQ_TYPE_EDGE_RISING>, ++ <0 162 IRQ_TYPE_EDGE_RISING>, ++ <0 160 IRQ_TYPE_EDGE_RISING>, ++ <0 414 IRQ_TYPE_EDGE_RISING>, ++ <0 159 IRQ_TYPE_EDGE_RISING>, ++ <0 158 IRQ_TYPE_EDGE_RISING>, ++ <0 157 IRQ_TYPE_EDGE_RISING>, ++ <0 156 IRQ_TYPE_EDGE_RISING>; ++ ++ interrupt-names = "misc-pulse1", ++ "misc-latch", ++ "sw-exception", ++ "ce0", ++ "ce1", ++ "ce2", ++ "ce3", ++ "ce4", ++ "ce5", ++ "ce6", ++ "ce7", ++ "ce8", ++ "ce9", ++ "ce10", ++ "ce11", ++ "host2wbm-desc-feed", ++ "host2reo-re-injection", ++ "host2reo-command", ++ "host2rxdma-monitor-ring3", ++ "host2rxdma-monitor-ring2", ++ "host2rxdma-monitor-ring1", ++ "reo2ost-exception", ++ "wbm2host-rx-release", ++ "reo2host-status", ++ "reo2host-destination-ring4", ++ "reo2host-destination-ring3", ++ "reo2host-destination-ring2", ++ "reo2host-destination-ring1", ++ "rxdma2host-monitor-destination-mac3", ++ "rxdma2host-monitor-destination-mac2", ++ "rxdma2host-monitor-destination-mac1", ++ "ppdu-end-interrupts-mac3", ++ "ppdu-end-interrupts-mac2", ++ "ppdu-end-interrupts-mac1", ++ "rxdma2host-monitor-status-ring-mac3", ++ "rxdma2host-monitor-status-ring-mac2", ++ "rxdma2host-monitor-status-ring-mac1", ++ "host2rxdma-host-buf-ring-mac3", ++ "host2rxdma-host-buf-ring-mac2", ++ "host2rxdma-host-buf-ring-mac1", ++ "rxdma2host-destination-ring-mac3", ++ "rxdma2host-destination-ring-mac2", ++ "rxdma2host-destination-ring-mac1", ++ "host2tcl-input-ring4", ++ "host2tcl-input-ring3", ++ "host2tcl-input-ring2", ++ "host2tcl-input-ring1", ++ "wbm2host-tx-completions-ring4", ++ "wbm2host-tx-completions-ring3", ++ "wbm2host-tx-completions-ring2", ++ "wbm2host-tx-completions-ring1", ++ "tcl2host-status-ring"; ++ qcom,rproc = <&q6v5_wcss>; ++ status = "disabled"; ++ }; ++ + q6v5_wcss: remoteproc@cd00000 { + compatible = "qcom,ipq6018-wcss-pil"; + reg = <0x0 0x0cd00000 0x0 0x4040>, diff --git a/lede/target/linux/qualcommax/patches-6.1/0133-arm64-dts-ipq6018-add-reserved-memory-nodes.patch b/lede/target/linux/qualcommax/patches-6.1/0133-arm64-dts-ipq6018-add-reserved-memory-nodes.patch new file mode 100644 index 0000000000..b6790f02e6 --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0133-arm64-dts-ipq6018-add-reserved-memory-nodes.patch @@ -0,0 +1,24 @@ +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -212,6 +212,21 @@ + reg = <0x0 0x4ab00000 0x0 0x5500000>; + no-map; + }; ++ ++ nss_region: nss@40000000 { ++ no-map; ++ reg = <0x0 0x40000000 0x0 0x01000000>; ++ }; ++ ++ q6_etr_region: q6_etr_dump@50000000 { ++ reg = <0x0 0x50000000 0x0 0x100000>; ++ no-map; ++ }; ++ ++ m3_dump_region: m3_dump@50100000 { ++ reg = <0x0 0x50100000 0x0 0x100000>; ++ no-map; ++ }; + }; + + smem { diff --git a/lede/target/linux/qualcommax/patches-6.1/0135-arm64-dts-qcom-ipq6018-enable-sdhci-node.patch b/lede/target/linux/qualcommax/patches-6.1/0135-arm64-dts-qcom-ipq6018-enable-sdhci-node.patch new file mode 100644 index 0000000000..8a2ed48d05 --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0135-arm64-dts-qcom-ipq6018-enable-sdhci-node.patch @@ -0,0 +1,29 @@ +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -476,6 +476,26 @@ + }; + }; + ++ sdhc: mmc@7804000 { ++ compatible = "qcom,ipq6018-sdhci", "qcom,sdhci-msm-v5"; ++ reg = <0x0 0x7804000 0x0 0x1000>, ++ <0x0 0x7805000 0x0 0x1000>; ++ reg-names = "hc", "cqhci"; ++ ++ interrupts = , ++ ; ++ interrupt-names = "hc_irq", "pwr_irq"; ++ ++ clocks = <&gcc GCC_SDCC1_AHB_CLK>, ++ <&gcc GCC_SDCC1_APPS_CLK>, ++ <&xo>; ++ clock-names = "iface", "core", "xo"; ++ resets = <&gcc GCC_SDCC1_BCR>; ++ max-frequency = <192000000>; ++ ++ status = "disabled"; ++ }; ++ + blsp_dma: dma-controller@7884000 { + compatible = "qcom,bam-v1.7.0"; + reg = <0x0 0x07884000 0x0 0x2b000>; diff --git a/lede/target/linux/qualcommax/patches-6.1/0136-arm64-dts-qcom-ipq6018-add-thermal-nodes.patch b/lede/target/linux/qualcommax/patches-6.1/0136-arm64-dts-qcom-ipq6018-add-thermal-nodes.patch new file mode 100644 index 0000000000..c263fbda6a --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0136-arm64-dts-qcom-ipq6018-add-thermal-nodes.patch @@ -0,0 +1,146 @@ +From d2e727bd0a259de2d6d329e3c659b8a1b6fbbc8b Mon Sep 17 00:00:00 2001 +From: Robert Marko +Date: Sun, 15 Oct 2023 22:55:43 +0200 +Subject: [PATCH] arm64: dts: qcom: ipq6018: add thermal nodes + +IPQ6018 has a tsens v2.3.1 peripheral which monitors temperatures around +the various subsystems on the die. + +Signed-off-by: Robert Marko +--- + arch/arm64/boot/dts/qcom/ipq6018.dtsi | 117 ++++++++++++++++++++++++++ + 1 file changed, 117 insertions(+) + +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -357,6 +357,16 @@ + clock-names = "core"; + }; + ++ tsens: thermal-sensor@4a9000 { ++ compatible = "qcom,ipq6018-tsens", "qcom,ipq8074-tsens"; ++ reg = <0x0 0x4a9000 0x0 0x1000>, /* TM */ ++ <0x0 0x4a8000 0x0 0x1000>; /* SROT */ ++ interrupts = ; ++ interrupt-names = "combined"; ++ #qcom,sensors = <16>; ++ #thermal-sensor-cells = <1>; ++ }; ++ + cryptobam: dma-controller@704000 { + compatible = "qcom,bam-v1.7.0"; + reg = <0x0 0x00704000 0x0 0x20000>; +@@ -1043,6 +1053,113 @@ + }; + }; + ++ thermal-zones { ++ nss-top-thermal { ++ polling-delay-passive = <250>; ++ polling-delay = <1000>; ++ ++ thermal-sensors = <&tsens 4>; ++ ++ trips { ++ nss-top-crit { ++ temperature = <110000>; ++ hysteresis = <1000>; ++ type = "critical"; ++ }; ++ }; ++ }; ++ ++ nss0-thermal { ++ polling-delay-passive = <250>; ++ polling-delay = <1000>; ++ ++ thermal-sensors = <&tsens 5>; ++ ++ trips { ++ nss-0-crit { ++ temperature = <110000>; ++ hysteresis = <1000>; ++ type = "critical"; ++ }; ++ }; ++ }; ++ ++ wcss-phya0-thermal { ++ polling-delay-passive = <250>; ++ polling-delay = <1000>; ++ ++ thermal-sensors = <&tsens 7>; ++ ++ trips { ++ wcss-phya0-crit { ++ temperature = <110000>; ++ hysteresis = <1000>; ++ type = "critical"; ++ }; ++ }; ++ }; ++ ++ wcss-phya1-thermal { ++ polling-delay-passive = <250>; ++ polling-delay = <1000>; ++ ++ thermal-sensors = <&tsens 8>; ++ ++ trips { ++ wcss-phya1-crit { ++ temperature = <110000>; ++ hysteresis = <1000>; ++ type = "critical"; ++ }; ++ }; ++ }; ++ ++ cluster_thermal: cluster-thermal { ++ polling-delay-passive = <250>; ++ polling-delay = <1000>; ++ ++ thermal-sensors = <&tsens 13>; ++ ++ trips { ++ cluster-crit { ++ temperature = <110000>; ++ hysteresis = <1000>; ++ type = "critical"; ++ }; ++ }; ++ }; ++ ++ lpass-qsdp6-thermal { ++ polling-delay-passive = <250>; ++ polling-delay = <1000>; ++ ++ thermal-sensors = <&tsens 14>; ++ ++ trips { ++ lpass-qsdp6-crit { ++ temperature = <110000>; ++ hysteresis = <1000>; ++ type = "critical"; ++ }; ++ }; ++ }; ++ ++ package-top-thermal { ++ polling-delay-passive = <250>; ++ polling-delay = <1000>; ++ ++ thermal-sensors = <&tsens 15>; ++ ++ trips { ++ package-top-crit { ++ temperature = <110000>; ++ hysteresis = <1000>; ++ type = "critical"; ++ }; ++ }; ++ }; ++ }; ++ + timer { + compatible = "arm,armv8-timer"; + interrupts = , diff --git a/lede/target/linux/qualcommax/patches-6.1/0137-arm64-dts-qcom-ipq6018-rework-cpufreq.patch b/lede/target/linux/qualcommax/patches-6.1/0137-arm64-dts-qcom-ipq6018-rework-cpufreq.patch index 9f7801ff42..667fdce2c3 100644 --- a/lede/target/linux/qualcommax/patches-6.1/0137-arm64-dts-qcom-ipq6018-rework-cpufreq.patch +++ b/lede/target/linux/qualcommax/patches-6.1/0137-arm64-dts-qcom-ipq6018-rework-cpufreq.patch @@ -1,3 +1,82 @@ +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -42,7 +42,6 @@ + clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>; + clock-names = "cpu"; + operating-points-v2 = <&cpu_opp_table>; +- cpu-supply = <&ipq6018_s2>; + }; + + CPU1: cpu@1 { +@@ -54,7 +53,6 @@ + clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>; + clock-names = "cpu"; + operating-points-v2 = <&cpu_opp_table>; +- cpu-supply = <&ipq6018_s2>; + }; + + CPU2: cpu@2 { +@@ -66,7 +64,6 @@ + clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>; + clock-names = "cpu"; + operating-points-v2 = <&cpu_opp_table>; +- cpu-supply = <&ipq6018_s2>; + }; + + CPU3: cpu@3 { +@@ -78,7 +75,6 @@ + clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>; + clock-names = "cpu"; + operating-points-v2 = <&cpu_opp_table>; +- cpu-supply = <&ipq6018_s2>; + }; + + L2_0: l2-cache { +@@ -113,6 +109,13 @@ + clock-latency-ns = <200000>; + }; + ++ opp-1200000000 { ++ opp-hz = /bits/ 64 <1200000000>; ++ opp-microvolt = <850000>; ++ opp-supported-hw = <0x4>; ++ clock-latency-ns = <200000>; ++ }; ++ + opp-1320000000 { + opp-hz = /bits/ 64 <1320000000>; + opp-microvolt = <862500>; +@@ -127,6 +130,13 @@ + clock-latency-ns = <200000>; + }; + ++ opp-1512000000 { ++ opp-hz = /bits/ 64 <1512000000>; ++ opp-microvolt = <937500>; ++ opp-supported-hw = <0x2>; ++ clock-latency-ns = <200000>; ++ }; ++ + opp-1608000000 { + opp-hz = /bits/ 64 <1608000000>; + opp-microvolt = <987500>; +@@ -164,16 +174,6 @@ + rpm_requests: rpm-requests { + compatible = "qcom,rpm-ipq6018"; + qcom,glink-channels = "rpm_requests"; +- +- regulators { +- compatible = "qcom,rpm-mp5496-regulators"; +- +- ipq6018_s2: s2 { +- regulator-min-microvolt = <725000>; +- regulator-max-microvolt = <1062500>; +- regulator-always-on; +- }; +- }; + }; + }; + }; --- /dev/null +++ b/arch/arm64/boot/dts/qcom/ipq6018-mp5496.dtsi @@ -0,0 +1,39 @@ diff --git a/lede/target/linux/qualcommax/patches-6.1/0604-qca-add-mcs-support.patch b/lede/target/linux/qualcommax/patches-6.1/0604-qca-add-mcs-support.patch index b419bc6f86..1d5f62376a 100644 --- a/lede/target/linux/qualcommax/patches-6.1/0604-qca-add-mcs-support.patch +++ b/lede/target/linux/qualcommax/patches-6.1/0604-qca-add-mcs-support.patch @@ -1,6 +1,6 @@ --- a/include/linux/if_bridge.h +++ b/include/linux/if_bridge.h -@@ -258,4 +258,17 @@ extern br_get_dst_hook_t __rcu *br_get_d +@@ -260,4 +260,17 @@ extern br_get_dst_hook_t __rcu *br_get_d extern struct net_device *br_fdb_bridge_dev_get_and_hold(struct net_bridge *br); /* QCA NSS bridge-mgr support - End */ @@ -20,7 +20,7 @@ #endif --- a/net/bridge/br_fdb.c +++ b/net/bridge/br_fdb.c -@@ -263,7 +263,8 @@ static void fdb_notify(struct net_bridge +@@ -259,7 +259,8 @@ static void fdb_notify(struct net_bridge kfree_skb(skb); goto errout; } @@ -30,7 +30,7 @@ return; errout: rtnl_set_sk_err(net, RTNLGRP_NEIGH, err); -@@ -329,6 +330,7 @@ struct net_bridge_fdb_entry *br_fdb_find +@@ -325,6 +326,7 @@ struct net_bridge_fdb_entry *br_fdb_find { return fdb_find_rcu(&br->fdb_hash_tbl, addr, vid); } @@ -40,7 +40,7 @@ * added to the bridge private HW address list and all required ports --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h -@@ -906,6 +906,7 @@ void br_manage_promisc(struct net_bridge +@@ -874,6 +874,7 @@ void br_manage_promisc(struct net_bridge int nbp_backup_change(struct net_bridge_port *p, struct net_device *backup_dev); /* br_input.c */ @@ -48,7 +48,7 @@ int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb); rx_handler_func_t *br_get_rx_handler(const struct net_device *dev); -@@ -2271,4 +2272,14 @@ bool br_is_neigh_suppress_enabled(const +@@ -2198,4 +2199,14 @@ struct nd_msg *br_is_nd_neigh_msg(struct #define __br_get(__hook, __default, __args ...) \ (__hook ? (__hook(__args)) : (__default)) /* QCA NSS ECM support - End */ @@ -65,7 +65,7 @@ #endif --- a/net/bridge/br_netlink.c +++ b/net/bridge/br_netlink.c -@@ -656,6 +656,7 @@ void br_info_notify(int event, const str +@@ -641,6 +641,7 @@ void br_info_notify(int event, const str kfree_skb(skb); goto errout; } @@ -75,7 +75,7 @@ errout: --- a/net/bridge/br.c +++ b/net/bridge/br.c -@@ -472,6 +472,12 @@ static void __exit br_deinit(void) +@@ -471,6 +471,12 @@ static void __exit br_deinit(void) br_fdb_fini(); } @@ -90,9 +90,9 @@ MODULE_LICENSE("GPL"); --- a/net/bridge/br_device.c +++ b/net/bridge/br_device.c -@@ -83,6 +83,12 @@ netdev_tx_t br_dev_xmit(struct sk_buff * +@@ -88,6 +88,12 @@ netdev_tx_t br_dev_xmit(struct sk_buff * if (is_broadcast_ether_addr(dest)) { - br_flood(br, skb, BR_PKT_BROADCAST, false, true, vid); + br_flood(br, skb, BR_PKT_BROADCAST, false, true); } else if (is_multicast_ether_addr(dest)) { + /* QCA qca-mcs support - Start */ + br_multicast_handle_hook_t *multicast_handle_hook = rcu_dereference(br_multicast_handle_hook); @@ -101,13 +101,13 @@ + /* QCA qca-mcs support - End */ + if (unlikely(netpoll_tx_running(dev))) { - br_flood(br, skb, BR_PKT_MULTICAST, false, true, vid); + br_flood(br, skb, BR_PKT_MULTICAST, false, true); goto out; --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c -@@ -23,6 +23,16 @@ - #include "br_private.h" +@@ -24,6 +24,16 @@ #include "br_private_tunnel.h" + #include "br_private_offload.h" +/* QCA qca-mcs support - Start */ +/* Hook for external Multicast handler */ @@ -122,7 +122,7 @@ static int br_netif_receive_skb(struct net *net, struct sock *sk, struct sk_buff *skb) { -@@ -30,7 +40,7 @@ br_netif_receive_skb(struct net *net, st +@@ -31,7 +41,7 @@ br_netif_receive_skb(struct net *net, st return netif_receive_skb(skb); } @@ -131,7 +131,7 @@ { struct net_device *indev, *brdev = BR_INPUT_SKB_CB(skb)->brdev; struct net_bridge *br = netdev_priv(brdev); -@@ -69,6 +79,7 @@ static int br_pass_frame_up(struct sk_bu +@@ -72,6 +82,7 @@ static int br_pass_frame_up(struct sk_bu dev_net(indev), NULL, skb, indev, NULL, br_netif_receive_skb); } @@ -139,7 +139,7 @@ /* note: already called with rcu_read_lock */ int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb) -@@ -84,6 +95,11 @@ int br_handle_frame_finish(struct net *n +@@ -88,6 +99,11 @@ int br_handle_frame_finish(struct net *n bool promisc; u16 vid = 0; u8 state; @@ -151,7 +151,7 @@ if (!p) goto drop; -@@ -175,6 +191,11 @@ int br_handle_frame_finish(struct net *n +@@ -164,6 +180,11 @@ int br_handle_frame_finish(struct net *n switch (pkt_type) { case BR_PKT_MULTICAST: @@ -163,7 +163,7 @@ mdst = br_mdb_get(brmctx, skb, vid); if ((mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) && br_multicast_querier_exists(brmctx, eth_hdr(skb), mdst)) { -@@ -190,8 +211,15 @@ int br_handle_frame_finish(struct net *n +@@ -179,8 +200,15 @@ int br_handle_frame_finish(struct net *n } break; case BR_PKT_UNICAST: @@ -181,7 +181,7 @@ default: break; } -@@ -206,6 +234,12 @@ int br_handle_frame_finish(struct net *n +@@ -195,6 +223,12 @@ int br_handle_frame_finish(struct net *n dst->used = now; br_forward(dst->dst, skb, local_rcv, false); } else { @@ -196,7 +196,7 @@ br_flood(br, skb, pkt_type, local_rcv, false); --- a/include/linux/mroute.h +++ b/include/linux/mroute.h -@@ -92,4 +92,44 @@ struct rtmsg; +@@ -85,4 +85,44 @@ struct rtmsg; int ipmr_get_route(struct net *net, struct sk_buff *skb, __be32 saddr, __be32 daddr, struct rtmsg *rtm, u32 portid); @@ -243,8 +243,8 @@ #endif --- a/include/linux/mroute6.h +++ b/include/linux/mroute6.h -@@ -137,4 +137,47 @@ static inline int ip6mr_sk_ioctl(struct - return 1; +@@ -110,4 +110,47 @@ static inline int ip6mr_sk_done(struct s + return 0; } #endif + diff --git a/lede/target/linux/qualcommax/patches-6.1/0903-arm64-dts-ipq6018-add-label-to-clocks.patch b/lede/target/linux/qualcommax/patches-6.1/0903-arm64-dts-ipq6018-add-label-to-clocks.patch new file mode 100644 index 0000000000..75c45a2ce3 --- /dev/null +++ b/lede/target/linux/qualcommax/patches-6.1/0903-arm64-dts-ipq6018-add-label-to-clocks.patch @@ -0,0 +1,11 @@ +--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -15,7 +15,7 @@ + #size-cells = <2>; + interrupt-parent = <&intc>; + +- clocks { ++ clocks: clocks { + sleep_clk: sleep-clk { + compatible = "fixed-clock"; + clock-frequency = <32000>; diff --git a/mieru/README.md b/mieru/README.md index 988a8e085c..e434cb3d6c 100644 --- a/mieru/README.md +++ b/mieru/README.md @@ -27,8 +27,8 @@ For an explanation of the mieru protocol, see [mieru Proxy Protocol](./docs/prot 1. Supports both IPv4 and IPv6. 1. The server software supports socks5 outbound (proxy chain). 1. The client software supports Windows, Mac OS, Linux and Android. Android clients include - - [NekoBox](https://github.com/MatsuriDayo/NekoBoxForAndroid) version 1.3.1 or above, with [mieru plugin](https://github.com/enfein/NekoBoxPlugins). - - [Exclave](https://github.com/dyhkwong/Exclave), with [mieru plugin](https://github.com/dyhkwong/Exclave/releases?q=mieru-plugin). + - [NekoBox](https://github.com/MatsuriDayo/NekoBoxForAndroid) with [mieru plugin](https://github.com/enfein/NekoBoxPlugins). + - [Exclave](https://github.com/dyhkwong/Exclave) with [mieru plugin](https://github.com/dyhkwong/Exclave/releases?q=mieru-plugin). - [husi](https://github.com/xchacha20-poly1305/husi) with [mieru plugin](https://github.com/xchacha20-poly1305/husi/releases?q=plugin-mieru). 1. If you need advanced features like global proxy or customized routing rules, you can use mieru as the backend of a proxy platform such as [Xray](https://github.com/XTLS/Xray-core) and [sing-box](https://github.com/SagerNet/sing-box). diff --git a/mieru/README.zh_CN.md b/mieru/README.zh_CN.md index 62b0320696..6fd004e949 100644 --- a/mieru/README.zh_CN.md +++ b/mieru/README.zh_CN.md @@ -25,7 +25,7 @@ mieru 的翻墙原理与 shadowsocks / v2ray 等软件类似,在客户端和 1. 支持 IPv4 和 IPv6。 1. 服务器软件支持 socks5 出站(链式代理)。 1. 客户端软件支持 Windows, Mac OS, Linux 和 Android 系统。Android 客户端包括 - - [NekoBox](https://github.com/MatsuriDayo/NekoBoxForAndroid) 1.3.1 及以上版本,并安装 [mieru 插件](https://github.com/enfein/NekoBoxPlugins)。 + - [NekoBox](https://github.com/MatsuriDayo/NekoBoxForAndroid) 并安装 [mieru 插件](https://github.com/enfein/NekoBoxPlugins)。 - [Exclave](https://github.com/dyhkwong/Exclave) 并安装 [mieru 插件](https://github.com/dyhkwong/Exclave/releases?q=mieru-plugin)。 - [husi](https://github.com/xchacha20-poly1305/husi) 并安装 [mieru 插件](https://github.com/xchacha20-poly1305/husi/releases?q=plugin-mieru)。 1. 如果需要全局代理或自定义路由规则等高级功能,可以将 mieru 作为 [Xray](https://github.com/XTLS/Xray-core) 和 [sing-box](https://github.com/SagerNet/sing-box) 等代理平台的后端。 diff --git a/mieru/apis/client/mieru.go b/mieru/apis/client/mieru.go index c78d70d306..58d6894288 100644 --- a/mieru/apis/client/mieru.go +++ b/mieru/apis/client/mieru.go @@ -147,7 +147,6 @@ func (mc *mieruClient) Start() error { return fmt.Errorf(stderror.ParseIPFailed) } } - ipVersion := common.GetIPVersion(proxyIP.String()) portBindings, err := appctl.FlatPortBindings(serverInfo.GetPortBindings()) if err != nil { return fmt.Errorf(stderror.InvalidPortBindingsErr, err) @@ -156,10 +155,10 @@ func (mc *mieruClient) Start() error { proxyPort := bindingInfo.GetPort() switch bindingInfo.GetProtocol() { case appctlpb.TransportProtocol_TCP: - endpoint := protocol.NewUnderlayProperties(mtu, ipVersion, common.TCPTransport, nil, &net.TCPAddr{IP: proxyIP, Port: int(proxyPort)}) + endpoint := protocol.NewUnderlayProperties(mtu, common.TCPTransport, nil, &net.TCPAddr{IP: proxyIP, Port: int(proxyPort)}) endpoints = append(endpoints, endpoint) case appctlpb.TransportProtocol_UDP: - endpoint := protocol.NewUnderlayProperties(mtu, ipVersion, common.UDPTransport, nil, &net.UDPAddr{IP: proxyIP, Port: int(proxyPort)}) + endpoint := protocol.NewUnderlayProperties(mtu, common.UDPTransport, nil, &net.UDPAddr{IP: proxyIP, Port: int(proxyPort)}) endpoints = append(endpoints, endpoint) default: return fmt.Errorf(stderror.InvalidTransportProtocol) diff --git a/mieru/pkg/appctl/server.go b/mieru/pkg/appctl/server.go index 0deb4edc72..7767520f1f 100644 --- a/mieru/pkg/appctl/server.go +++ b/mieru/pkg/appctl/server.go @@ -654,7 +654,6 @@ func ValidateFullServerConfig(config *pb.ServerConfig) error { func PortBindingsToUnderlayProperties(portBindings []*pb.PortBinding, mtu int) ([]protocol.UnderlayProperties, error) { endpoints := make([]protocol.UnderlayProperties, 0) listenIP := net.ParseIP(common.AllIPAddr()) - ipVersion := common.GetIPVersion(listenIP.String()) if listenIP == nil { return endpoints, fmt.Errorf(stderror.ParseIPFailed) } @@ -668,10 +667,10 @@ func PortBindingsToUnderlayProperties(portBindings []*pb.PortBinding, mtu int) ( port := portBindings[i].GetPort() switch proto { case pb.TransportProtocol_TCP: - endpoint := protocol.NewUnderlayProperties(mtu, ipVersion, common.TCPTransport, &net.TCPAddr{IP: listenIP, Port: int(port)}, nil) + endpoint := protocol.NewUnderlayProperties(mtu, common.TCPTransport, &net.TCPAddr{IP: listenIP, Port: int(port)}, nil) endpoints = append(endpoints, endpoint) case pb.TransportProtocol_UDP: - endpoint := protocol.NewUnderlayProperties(mtu, ipVersion, common.UDPTransport, &net.UDPAddr{IP: listenIP, Port: int(port)}, nil) + endpoint := protocol.NewUnderlayProperties(mtu, common.UDPTransport, &net.UDPAddr{IP: listenIP, Port: int(port)}, nil) endpoints = append(endpoints, endpoint) default: return []protocol.UnderlayProperties{}, fmt.Errorf(stderror.InvalidTransportProtocol) diff --git a/mieru/pkg/cli/client.go b/mieru/pkg/cli/client.go index 754fe2fdd8..79a7db614f 100644 --- a/mieru/pkg/cli/client.go +++ b/mieru/pkg/cli/client.go @@ -521,7 +521,6 @@ var clientRunFunc = func(s []string) error { return fmt.Errorf(stderror.ParseIPFailed) } } - ipVersion := common.GetIPVersion(proxyIP.String()) portBindings, err := appctl.FlatPortBindings(serverInfo.GetPortBindings()) if err != nil { return fmt.Errorf(stderror.InvalidPortBindingsErr, err) @@ -530,10 +529,10 @@ var clientRunFunc = func(s []string) error { proxyPort := bindingInfo.GetPort() switch bindingInfo.GetProtocol() { case appctlpb.TransportProtocol_TCP: - endpoint := protocol.NewUnderlayProperties(mtu, ipVersion, common.TCPTransport, nil, &net.TCPAddr{IP: proxyIP, Port: int(proxyPort)}) + endpoint := protocol.NewUnderlayProperties(mtu, common.TCPTransport, nil, &net.TCPAddr{IP: proxyIP, Port: int(proxyPort)}) endpoints = append(endpoints, endpoint) case appctlpb.TransportProtocol_UDP: - endpoint := protocol.NewUnderlayProperties(mtu, ipVersion, common.UDPTransport, nil, &net.UDPAddr{IP: proxyIP, Port: int(proxyPort)}) + endpoint := protocol.NewUnderlayProperties(mtu, common.UDPTransport, nil, &net.UDPAddr{IP: proxyIP, Port: int(proxyPort)}) endpoints = append(endpoints, endpoint) default: return fmt.Errorf(stderror.InvalidTransportProtocol) diff --git a/mieru/pkg/common/ipdualstack.go b/mieru/pkg/common/ipdualstack.go index 39e00b4150..39363fab85 100644 --- a/mieru/pkg/common/ipdualstack.go +++ b/mieru/pkg/common/ipdualstack.go @@ -23,27 +23,6 @@ import ( "strings" ) -type IPVersion uint8 - -const ( - IPVersionUnknown IPVersion = iota - IPVersion4 - IPVersion6 -) - -func (v IPVersion) String() string { - switch v { - case IPVersionUnknown: - return "UNKNOWN" - case IPVersion4: - return "IPV4" - case IPVersion6: - return "IPV6" - default: - return "UNSPECIFIED" - } -} - // IsIPDualStack returns true if an IPv6 socket is able to send and receive // both IPv4 and IPv6 packets. // @@ -86,8 +65,18 @@ func LocalIPAddr() string { return "127.0.0.1" } -// GetIPVersion returns the IP version of the given network address. -func GetIPVersion(addr string) IPVersion { +// MaybeDecorateIPv6 adds [ and ] before and after an IPv6 address. If the +// input string is a IPv4 address or not a valid IP address (e.g. is a domain name), +// the same string is returned. +func MaybeDecorateIPv6(addr string) string { + if isIPv6(addr) { + return "[" + addr + "]" + } + return addr +} + +// isIPv6 returns true if the given network address is IPv6. +func isIPv6(addr string) bool { host, _, err := net.SplitHostPort(addr) if err != nil { // Assume there is no port. @@ -95,21 +84,7 @@ func GetIPVersion(addr string) IPVersion { } ip := net.ParseIP(host) if ip == nil { - return IPVersionUnknown + return false } - ip4 := ip.To4() - if ip4 != nil { - return IPVersion4 - } - return IPVersion6 -} - -// MaybeDecorateIPv6 adds [ and ] before and after an IPv6 address. If the -// input string is a IPv4 address or not a valid IP address (e.g. is a domain), -// the same string is returned. -func MaybeDecorateIPv6(addr string) string { - if GetIPVersion(addr) == IPVersion6 { - return "[" + addr + "]" - } - return addr + return ip.To4() == nil } diff --git a/mieru/pkg/common/ipdualstack_test.go b/mieru/pkg/common/ipdualstack_test.go index ab1ba75c52..ca29ce4495 100644 --- a/mieru/pkg/common/ipdualstack_test.go +++ b/mieru/pkg/common/ipdualstack_test.go @@ -19,23 +19,6 @@ import ( "testing" ) -func TestGetIPVersion(t *testing.T) { - testcases := []struct { - input string - want IPVersion - }{ - {"google.com", IPVersionUnknown}, - {"127.0.0.1", IPVersion4}, - {"1234::0", IPVersion6}, - } - - for _, tc := range testcases { - if out := GetIPVersion(tc.input); out != tc.want { - t.Errorf("GetIPVersion(%v) = %v, want %v", tc.input, out, tc.want) - } - } -} - func TestMaybeDecorateIPv6(t *testing.T) { testcases := []struct { input string diff --git a/mieru/pkg/protocol/mux_test.go b/mieru/pkg/protocol/mux_test.go index 94805a192b..a62db141c1 100644 --- a/mieru/pkg/protocol/mux_test.go +++ b/mieru/pkg/protocol/mux_test.go @@ -99,7 +99,7 @@ func TestIPv4TCPUnderlay(t *testing.T) { if err != nil { t.Fatalf("common.UnusedTCPPort() failed: %v", err) } - serverProperties := NewUnderlayProperties(1500, common.IPVersion4, common.TCPTransport, &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: port}, nil) + serverProperties := NewUnderlayProperties(1400, common.TCPTransport, &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: port}, nil) serverMux := NewMux(false). SetServerUsers(users). SetEndpoints([]UnderlayProperties{serverProperties}) @@ -117,7 +117,7 @@ func TestIPv4TCPUnderlay(t *testing.T) { defer testServer.Close() time.Sleep(100 * time.Millisecond) - clientProperties := NewUnderlayProperties(1500, common.IPVersion4, common.TCPTransport, nil, &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: port}) + clientProperties := NewUnderlayProperties(1400, common.TCPTransport, nil, &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: port}) runClient(t, clientProperties, []byte("xiaochitang"), []byte("kuiranbudong"), 4) if err := serverMux.Close(); err != nil { t.Errorf("Server mux close failed: %v", err) @@ -131,7 +131,7 @@ func TestIPv6TCPUnderlay(t *testing.T) { if err != nil { t.Fatalf("common.UnusedTCPPort() failed: %v", err) } - serverProperties := NewUnderlayProperties(1500, common.IPVersion6, common.TCPTransport, &net.TCPAddr{IP: net.ParseIP("::1"), Port: port}, nil) + serverProperties := NewUnderlayProperties(1400, common.TCPTransport, &net.TCPAddr{IP: net.ParseIP("::1"), Port: port}, nil) serverMux := NewMux(false). SetServerUsers(users). SetEndpoints([]UnderlayProperties{serverProperties}) @@ -149,7 +149,7 @@ func TestIPv6TCPUnderlay(t *testing.T) { defer testServer.Close() time.Sleep(100 * time.Millisecond) - clientProperties := NewUnderlayProperties(1500, common.IPVersion6, common.TCPTransport, nil, &net.TCPAddr{IP: net.ParseIP("::1"), Port: port}) + clientProperties := NewUnderlayProperties(1400, common.TCPTransport, nil, &net.TCPAddr{IP: net.ParseIP("::1"), Port: port}) runClient(t, clientProperties, []byte("xiaochitang"), []byte("kuiranbudong"), 4) if err := serverMux.Close(); err != nil { t.Errorf("Server mux close failed: %v", err) @@ -163,7 +163,7 @@ func TestIPv4UDPUnderlay(t *testing.T) { if err != nil { t.Fatalf("common.UnusedUDPPort() failed: %v", err) } - serverProperties := NewUnderlayProperties(1500, common.IPVersion4, common.UDPTransport, &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: port}, nil) + serverProperties := NewUnderlayProperties(1400, common.UDPTransport, &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: port}, nil) serverMux := NewMux(false). SetServerUsers(users). SetEndpoints([]UnderlayProperties{serverProperties}) @@ -181,7 +181,7 @@ func TestIPv4UDPUnderlay(t *testing.T) { defer testServer.Close() time.Sleep(100 * time.Millisecond) - clientProperties := NewUnderlayProperties(1500, common.IPVersion4, common.UDPTransport, nil, &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: port}) + clientProperties := NewUnderlayProperties(1400, common.UDPTransport, nil, &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: port}) runClient(t, clientProperties, []byte("xiaochitang"), []byte("kuiranbudong"), 4) if err := serverMux.Close(); err != nil { t.Errorf("Server mux close failed: %v", err) @@ -195,7 +195,7 @@ func TestIPv6UDPUnderlay(t *testing.T) { if err != nil { t.Fatalf("common.UnusedUDPPort() failed: %v", err) } - serverProperties := NewUnderlayProperties(1500, common.IPVersion6, common.UDPTransport, &net.UDPAddr{IP: net.ParseIP("::1"), Port: port}, nil) + serverProperties := NewUnderlayProperties(1400, common.UDPTransport, &net.UDPAddr{IP: net.ParseIP("::1"), Port: port}, nil) serverMux := NewMux(false). SetServerUsers(users). SetEndpoints([]UnderlayProperties{serverProperties}) @@ -213,7 +213,7 @@ func TestIPv6UDPUnderlay(t *testing.T) { defer testServer.Close() time.Sleep(100 * time.Millisecond) - clientProperties := NewUnderlayProperties(1500, common.IPVersion6, common.UDPTransport, nil, &net.UDPAddr{IP: net.ParseIP("::1"), Port: port}) + clientProperties := NewUnderlayProperties(1400, common.UDPTransport, nil, &net.UDPAddr{IP: net.ParseIP("::1"), Port: port}) runClient(t, clientProperties, []byte("xiaochitang"), []byte("kuiranbudong"), 4) if err := serverMux.Close(); err != nil { t.Errorf("Server mux close failed: %v", err) @@ -234,30 +234,30 @@ func TestNewEndpoints(t *testing.T) { { nil, []UnderlayProperties{ - NewUnderlayProperties(1500, common.IPVersion4, common.TCPTransport, common.NilNetAddr(), common.NilNetAddr()), + NewUnderlayProperties(1400, common.TCPTransport, common.NilNetAddr(), common.NilNetAddr()), }, []UnderlayProperties{ - NewUnderlayProperties(1500, common.IPVersion4, common.TCPTransport, common.NilNetAddr(), common.NilNetAddr()), + NewUnderlayProperties(1400, common.TCPTransport, common.NilNetAddr(), common.NilNetAddr()), }, }, { []UnderlayProperties{ - NewUnderlayProperties(1500, common.IPVersion4, common.TCPTransport, common.NilNetAddr(), common.NilNetAddr()), + NewUnderlayProperties(1400, common.TCPTransport, common.NilNetAddr(), common.NilNetAddr()), }, nil, []UnderlayProperties{}, }, { []UnderlayProperties{ - NewUnderlayProperties(1500, common.IPVersion4, common.TCPTransport, common.NilNetAddr(), common.NilNetAddr()), - NewUnderlayProperties(1500, common.IPVersion6, common.TCPTransport, common.NilNetAddr(), common.NilNetAddr()), + NewUnderlayProperties(1400, common.TCPTransport, common.NilNetAddr(), common.NilNetAddr()), + NewUnderlayProperties(1400, common.TCPTransport, common.NilNetAddr(), common.NilNetAddr()), }, []UnderlayProperties{ - NewUnderlayProperties(1500, common.IPVersion6, common.TCPTransport, common.NilNetAddr(), common.NilNetAddr()), - NewUnderlayProperties(1500, common.IPVersion6, common.UDPTransport, common.NilNetAddr(), common.NilNetAddr()), + NewUnderlayProperties(1400, common.TCPTransport, common.NilNetAddr(), common.NilNetAddr()), + NewUnderlayProperties(1400, common.UDPTransport, common.NilNetAddr(), common.NilNetAddr()), }, []UnderlayProperties{ - NewUnderlayProperties(1500, common.IPVersion6, common.UDPTransport, common.NilNetAddr(), common.NilNetAddr()), + NewUnderlayProperties(1400, common.UDPTransport, common.NilNetAddr(), common.NilNetAddr()), }, }, } diff --git a/mieru/pkg/protocol/segment.go b/mieru/pkg/protocol/segment.go index 0d349619ea..f7bc1cf105 100644 --- a/mieru/pkg/protocol/segment.go +++ b/mieru/pkg/protocol/segment.go @@ -40,18 +40,13 @@ const ( ) // MaxFragmentSize returns the maximum payload size in a fragment. -func MaxFragmentSize(mtu int, ipVersion common.IPVersion, transport common.TransportProtocol) int { +func MaxFragmentSize(mtu int, transport common.TransportProtocol) int { if transport == common.TCPTransport { // No fragment needed. return maxPDU } res := mtu - udpOverhead - if ipVersion == common.IPVersion4 { - res -= 20 - } else { - res -= 40 - } if transport == common.UDPTransport { res -= 8 } else { @@ -61,18 +56,13 @@ func MaxFragmentSize(mtu int, ipVersion common.IPVersion, transport common.Trans } // MaxPaddingSize returns the maximum padding size of a segment. -func MaxPaddingSize(mtu int, ipVersion common.IPVersion, transport common.TransportProtocol, fragmentSize int, existingPaddingSize int) int { +func MaxPaddingSize(mtu int, transport common.TransportProtocol, fragmentSize int, existingPaddingSize int) int { if transport == common.TCPTransport { // No limit. return 255 } res := mtu - fragmentSize - udpOverhead - if ipVersion == common.IPVersion4 { - res -= 20 - } else { - res -= 40 - } if transport == common.UDPTransport { res -= 8 } else { diff --git a/mieru/pkg/protocol/segment_test.go b/mieru/pkg/protocol/segment_test.go index 49b6448433..63701b622e 100644 --- a/mieru/pkg/protocol/segment_test.go +++ b/mieru/pkg/protocol/segment_test.go @@ -28,31 +28,27 @@ import ( func TestMaxFragmentSize(t *testing.T) { testcases := []struct { mtu int - ipVersion common.IPVersion transport common.TransportProtocol want int }{ { 1500, - common.IPVersion6, common.TCPTransport, maxPDU, }, { 1500, - common.IPVersion4, common.UDPTransport, - 1472 - udpOverhead, + 1500 - 8 - udpOverhead, }, { 1500, - common.IPVersionUnknown, common.UnknownTransport, - 1440 - udpOverhead, + 1500 - 20 - udpOverhead, }, } for _, tc := range testcases { - got := MaxFragmentSize(tc.mtu, tc.ipVersion, tc.transport) + got := MaxFragmentSize(tc.mtu, tc.transport) if got != tc.want { t.Errorf("MaxFragmentSize() = %d, want %d", got, tc.want) } @@ -62,7 +58,6 @@ func TestMaxFragmentSize(t *testing.T) { func TestMaxPaddingSize(t *testing.T) { testcases := []struct { mtu int - ipVersion common.IPVersion transport common.TransportProtocol fragmentSize int existingPaddingSize int @@ -70,7 +65,6 @@ func TestMaxPaddingSize(t *testing.T) { }{ { 1500, - common.IPVersion6, common.TCPTransport, maxPDU, 255, @@ -78,15 +72,13 @@ func TestMaxPaddingSize(t *testing.T) { }, { 1500, - common.IPVersion4, common.UDPTransport, - 1472 - udpOverhead - 16, + 1500 - 8 - udpOverhead - 16, 12, 4, }, { 1500, - common.IPVersionUnknown, common.UnknownTransport, 0, 255, @@ -94,7 +86,7 @@ func TestMaxPaddingSize(t *testing.T) { }, } for _, tc := range testcases { - got := MaxPaddingSize(tc.mtu, tc.ipVersion, tc.transport, tc.fragmentSize, tc.existingPaddingSize) + got := MaxPaddingSize(tc.mtu, tc.transport, tc.fragmentSize, tc.existingPaddingSize) if got != tc.want { t.Errorf("MaxPaddingSize() = %d, want %d", got, tc.want) } diff --git a/mieru/pkg/protocol/session.go b/mieru/pkg/protocol/session.go index 6416721e42..cc6558be4d 100644 --- a/mieru/pkg/protocol/session.go +++ b/mieru/pkg/protocol/session.go @@ -481,7 +481,7 @@ func (s *Session) writeChunk(b []byte) (n int, err error) { // Determine number of fragments to write. nFragment := 1 - fragmentSize := MaxFragmentSize(s.mtu, s.conn.IPVersion(), s.conn.TransportProtocol()) + fragmentSize := MaxFragmentSize(s.mtu, s.conn.TransportProtocol()) if len(b) > fragmentSize { nFragment = (len(b)-1)/fragmentSize + 1 } diff --git a/mieru/pkg/protocol/underlay.go b/mieru/pkg/protocol/underlay.go index 972409d71e..5d872f9345 100644 --- a/mieru/pkg/protocol/underlay.go +++ b/mieru/pkg/protocol/underlay.go @@ -34,12 +34,10 @@ var ( // UnderlayProperties defines network properties of a underlay. type UnderlayProperties interface { - // Layer 2 MTU of this network connection. + // Maximum transission unit of this network connection + // in the current network layer. MTU() int - // The IP version used to establish the underlay. - IPVersion() common.IPVersion - // The transport protocol used to implement the underlay. TransportProtocol() common.TransportProtocol @@ -87,7 +85,6 @@ type Underlay interface { // underlayDescriptor implements UnderlayProperties. type underlayDescriptor struct { mtu int - ipVersion common.IPVersion transportProtocol common.TransportProtocol localAddr net.Addr remoteAddr net.Addr @@ -99,10 +96,6 @@ func (d *underlayDescriptor) MTU() int { return d.mtu } -func (d *underlayDescriptor) IPVersion() common.IPVersion { - return d.ipVersion -} - func (d *underlayDescriptor) TransportProtocol() common.TransportProtocol { return d.transportProtocol } @@ -116,10 +109,9 @@ func (d *underlayDescriptor) RemoteAddr() net.Addr { } // NewUnderlayProperties creates a new instance of UnderlayProperties. -func NewUnderlayProperties(mtu int, ipVersion common.IPVersion, transportProtocol common.TransportProtocol, localAddr net.Addr, remoteAddr net.Addr) UnderlayProperties { +func NewUnderlayProperties(mtu int, transportProtocol common.TransportProtocol, localAddr net.Addr, remoteAddr net.Addr) UnderlayProperties { d := &underlayDescriptor{ mtu: mtu, - ipVersion: ipVersion, transportProtocol: transportProtocol, localAddr: localAddr, remoteAddr: remoteAddr, diff --git a/mieru/pkg/protocol/underlay_base.go b/mieru/pkg/protocol/underlay_base.go index ee959effc7..a62dd10ba0 100644 --- a/mieru/pkg/protocol/underlay_base.go +++ b/mieru/pkg/protocol/underlay_base.go @@ -31,17 +31,15 @@ const sessionChanCapacity = 64 // baseUnderlay contains a partial implementation of underlay. type baseUnderlay struct { - isClient bool - mtu int - ipVersion common.IPVersion - done chan struct{} // if the underlay is closed + isClient bool + mtu int + done chan struct{} // if the underlay is closed sessionMap sync.Map // Map readySessions chan *Session // sessions that completed handshake and ready for consume - sendMutex sync.Mutex // protect writing data to the connection - closeMutex sync.Mutex // protect closing the connection - ipVersionMutex sync.Mutex // protect getting and setting IPVersion + sendMutex sync.Mutex // protect writing data to the connection + closeMutex sync.Mutex // protect closing the connection // ---- client fields ---- scheduler *ScheduleController @@ -55,7 +53,6 @@ func newBaseUnderlay(isClient bool, mtu int) *baseUnderlay { return &baseUnderlay{ isClient: isClient, mtu: mtu, - ipVersion: common.IPVersionUnknown, done: make(chan struct{}), readySessions: make(chan *Session, sessionChanCapacity), scheduler: &ScheduleController{}, @@ -103,10 +100,6 @@ func (b *baseUnderlay) MTU() int { return b.mtu } -func (b *baseUnderlay) IPVersion() common.IPVersion { - return b.ipVersion -} - func (b *baseUnderlay) TransportProtocol() common.TransportProtocol { return common.UnknownTransport } diff --git a/mieru/pkg/protocol/underlay_tcp.go b/mieru/pkg/protocol/underlay_tcp.go index 5b95a2ef61..2b6da155fe 100644 --- a/mieru/pkg/protocol/underlay_tcp.go +++ b/mieru/pkg/protocol/underlay_tcp.go @@ -95,7 +95,7 @@ func (t *TCPUnderlay) String() string { if t.conn == nil { return "TCPUnderlay{}" } - return fmt.Sprintf("TCPUnderlay{local=%v, remote=%v, mtu=%v, ipVersion=%v}", t.conn.LocalAddr(), t.conn.RemoteAddr(), t.mtu, t.IPVersion()) + return fmt.Sprintf("TCPUnderlay{local=%v, remote=%v, mtu=%v}", t.conn.LocalAddr(), t.conn.RemoteAddr(), t.mtu) } func (t *TCPUnderlay) Close() error { @@ -116,18 +116,6 @@ func (t *TCPUnderlay) Addr() net.Addr { return t.LocalAddr() } -func (t *TCPUnderlay) IPVersion() common.IPVersion { - t.ipVersionMutex.Lock() - defer t.ipVersionMutex.Unlock() - if t.conn == nil { - return common.IPVersionUnknown - } - if t.ipVersion == common.IPVersionUnknown { - t.ipVersion = common.GetIPVersion(t.conn.LocalAddr().String()) - } - return t.ipVersion -} - func (t *TCPUnderlay) TransportProtocol() common.TransportProtocol { return common.TCPTransport } @@ -510,7 +498,7 @@ func (t *TCPUnderlay) writeOneSegment(seg *segment) error { } if ss, ok := toSessionStruct(seg.metadata); ok { - maxPaddingSize := MaxPaddingSize(t.mtu, t.IPVersion(), t.TransportProtocol(), int(ss.payloadLen), 0) + maxPaddingSize := MaxPaddingSize(t.mtu, t.TransportProtocol(), int(ss.payloadLen), 0) padding := newPadding( buildRecommendedPaddingOpts(maxPaddingSize, tcpOverhead+int(ss.payloadLen), t.send.BlockContext().UserName), ) @@ -544,11 +532,11 @@ func (t *TCPUnderlay) writeOneSegment(seg *segment) error { metrics.OutputPaddingBytes.Add(int64(len(padding))) } else if das, ok := toDataAckStruct(seg.metadata); ok { padding1 := newPadding(paddingOpts{ - maxLen: MaxPaddingSize(t.mtu, t.IPVersion(), t.TransportProtocol(), int(das.payloadLen), 0), + maxLen: MaxPaddingSize(t.mtu, t.TransportProtocol(), int(das.payloadLen), 0), ascii: &asciiPaddingOpts{}, }) padding2 := newPadding(paddingOpts{ - maxLen: MaxPaddingSize(t.mtu, t.IPVersion(), t.TransportProtocol(), int(das.payloadLen), len(padding1)), + maxLen: MaxPaddingSize(t.mtu, t.TransportProtocol(), int(das.payloadLen), len(padding1)), ascii: &asciiPaddingOpts{}, }) das.prefixLen = uint8(len(padding1)) diff --git a/mieru/pkg/protocol/underlay_udp.go b/mieru/pkg/protocol/underlay_udp.go index 3b1321a9c9..e38d25546e 100644 --- a/mieru/pkg/protocol/underlay_udp.go +++ b/mieru/pkg/protocol/underlay_udp.go @@ -111,9 +111,9 @@ func (u *UDPUnderlay) String() string { return "UDPUnderlay{}" } if u.isClient { - return fmt.Sprintf("UDPUnderlay{local=%v, remote=%v, mtu=%v, ipVersion=%v}", u.LocalAddr(), u.RemoteAddr(), u.mtu, u.IPVersion()) + return fmt.Sprintf("UDPUnderlay{local=%v, remote=%v, mtu=%v}", u.LocalAddr(), u.RemoteAddr(), u.mtu) } else { - return fmt.Sprintf("UDPUnderlay{local=%v, mtu=%v, ipVersion=%v}", u.LocalAddr(), u.mtu, u.IPVersion()) + return fmt.Sprintf("UDPUnderlay{local=%v, mtu=%v}", u.LocalAddr(), u.mtu) } } @@ -132,18 +132,6 @@ func (u *UDPUnderlay) Close() error { return u.conn.Close() } -func (u *UDPUnderlay) IPVersion() common.IPVersion { - u.ipVersionMutex.Lock() - defer u.ipVersionMutex.Unlock() - if u.conn == nil { - return common.IPVersionUnknown - } - if u.ipVersion == common.IPVersionUnknown { - u.ipVersion = common.GetIPVersion(u.conn.LocalAddr().String()) - } - return u.ipVersion -} - func (u *UDPUnderlay) TransportProtocol() common.TransportProtocol { return common.UDPTransport } @@ -652,7 +640,7 @@ func (u *UDPUnderlay) writeOneSegment(seg *segment, addr *net.UDPAddr) error { } if ss, ok := toSessionStruct(seg.metadata); ok { - maxPaddingSize := MaxPaddingSize(u.mtu, u.IPVersion(), u.TransportProtocol(), int(ss.payloadLen), 0) + maxPaddingSize := MaxPaddingSize(u.mtu, u.TransportProtocol(), int(ss.payloadLen), 0) padding := newPadding( buildRecommendedPaddingOpts(maxPaddingSize, udpOverhead+int(ss.payloadLen), blockCipher.BlockContext().UserName), ) @@ -687,11 +675,11 @@ func (u *UDPUnderlay) writeOneSegment(seg *segment, addr *net.UDPAddr) error { metrics.OutputPaddingBytes.Add(int64(len(padding))) } else if das, ok := toDataAckStruct(seg.metadata); ok { padding1 := newPadding(paddingOpts{ - maxLen: MaxPaddingSize(u.mtu, u.IPVersion(), u.TransportProtocol(), int(das.payloadLen), 0), + maxLen: MaxPaddingSize(u.mtu, u.TransportProtocol(), int(das.payloadLen), 0), ascii: &asciiPaddingOpts{}, }) padding2 := newPadding(paddingOpts{ - maxLen: MaxPaddingSize(u.mtu, u.IPVersion(), u.TransportProtocol(), int(das.payloadLen), len(padding1)), + maxLen: MaxPaddingSize(u.mtu, u.TransportProtocol(), int(das.payloadLen), len(padding1)), ascii: &asciiPaddingOpts{}, }) das.prefixLen = uint8(len(padding1)) diff --git a/mieru/test/deploy/externalconnect/client_udp.json b/mieru/test/deploy/externalconnect/client_udp.json index d36088a113..4186802161 100644 --- a/mieru/test/deploy/externalconnect/client_udp.json +++ b/mieru/test/deploy/externalconnect/client_udp.json @@ -29,7 +29,7 @@ ] } ], - "mtu": 1500, + "mtu": 1400, "multiplexing": { "level": "MULTIPLEXING_HIGH" } diff --git a/mieru/test/deploy/externalconnect/server_udp.json b/mieru/test/deploy/externalconnect/server_udp.json index 92c70c4904..d6d18ceae2 100644 --- a/mieru/test/deploy/externalconnect/server_udp.json +++ b/mieru/test/deploy/externalconnect/server_udp.json @@ -27,5 +27,5 @@ "allowLocalDestination": true }, "loggingLevel": "INFO", - "mtu": 1500 + "mtu": 1400 } diff --git a/mieru/test/deploy/httptest/client_mix.json b/mieru/test/deploy/httptest/client_mix.json index 538342594b..786d790222 100644 --- a/mieru/test/deploy/httptest/client_mix.json +++ b/mieru/test/deploy/httptest/client_mix.json @@ -29,7 +29,7 @@ ] } ], - "mtu": 1460, + "mtu": 1400, "multiplexing": { "level": "MULTIPLEXING_HIGH" } diff --git a/mieru/test/deploy/httptest/client_udp.json b/mieru/test/deploy/httptest/client_udp.json index 8b37745684..d069052aad 100644 --- a/mieru/test/deploy/httptest/client_udp.json +++ b/mieru/test/deploy/httptest/client_udp.json @@ -29,7 +29,7 @@ ] } ], - "mtu": 1460, + "mtu": 1400, "multiplexing": { "level": "MULTIPLEXING_HIGH" } diff --git a/mieru/test/deploy/httptest/server_mix.json b/mieru/test/deploy/httptest/server_mix.json index 1e19c6e3ca..3ad6477897 100644 --- a/mieru/test/deploy/httptest/server_mix.json +++ b/mieru/test/deploy/httptest/server_mix.json @@ -27,5 +27,5 @@ "allowLocalDestination": true }, "loggingLevel": "DEBUG", - "mtu": 1460 + "mtu": 1400 } diff --git a/mieru/test/deploy/httptest/server_udp.json b/mieru/test/deploy/httptest/server_udp.json index d1059dec27..d6d18ceae2 100644 --- a/mieru/test/deploy/httptest/server_udp.json +++ b/mieru/test/deploy/httptest/server_udp.json @@ -27,5 +27,5 @@ "allowLocalDestination": true }, "loggingLevel": "INFO", - "mtu": 1480 + "mtu": 1400 } diff --git a/openwrt-packages/ddns-go/Makefile b/openwrt-packages/ddns-go/Makefile index c4d0eea23b..55cfec1082 100644 --- a/openwrt-packages/ddns-go/Makefile +++ b/openwrt-packages/ddns-go/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=ddns-go -PKG_VERSION:=6.7.2 +PKG_VERSION:=6.7.3 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/jeessy2/ddns-go/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=c583aa1dd160e1a87f4ed3a1ec4b7342c14a5c732f3929f435418a109d3a2a55 +PKG_HASH:=3edaf68505df7188e57ad89c1fc66fd7c2918e36017f357953fce4101e493424 PKG_LICENSE:=MIT PKG_LICENSE_FILES:=LICENSE diff --git a/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_client.rs b/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_client.rs index 275bf02378..3d52d1850a 100644 --- a/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_client.rs +++ b/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_client.rs @@ -141,7 +141,7 @@ where pub async fn send_request( &self, context: Arc, - mut req: Request, + req: Request, balancer: Option<&PingBalancer>, ) -> Result, HttpClientError> { let host = match host_addr(req.uri()) { @@ -150,16 +150,24 @@ where }; // Set Host header if it was missing in the Request - { - let headers = req.headers_mut(); + let (mut req_parts, req_body) = req.into_parts(); + if let Some(authority) = req_parts.uri.authority() { + let headers = &mut req_parts.headers; if !headers.contains_key("Host") { - let host_value = match host { - Address::DomainNameAddress(ref domain, _) => HeaderValue::from_str(domain)?, - Address::SocketAddress(ref saddr) => HeaderValue::from_str(saddr.ip().to_string().as_str())?, + let uri = &req_parts.uri; + let host_value = if (uri.scheme_str() == Some("http") + && matches!(authority.port_u16(), None | Some(80))) + || (uri.scheme_str() == Some("https") && matches!(authority.port_u16(), None | Some(443))) + { + HeaderValue::from_str(authority.host())? + } else { + HeaderValue::from_str(authority.as_str())? }; + headers.insert("Host", host_value); } } + let req = Request::from_parts(req_parts, req_body); // 1. Check if there is an available client // diff --git a/small/docker/Makefile b/small/docker/Makefile deleted file mode 100644 index 58b43334a0..0000000000 --- a/small/docker/Makefile +++ /dev/null @@ -1,75 +0,0 @@ -include $(TOPDIR)/rules.mk - -PKG_NAME:=docker -PKG_VERSION:=27.3.1 -PKG_RELEASE:=1 -PKG_LICENSE:=Apache-2.0 -PKG_LICENSE_FILES:=LICENSE - -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_GIT_URL:=github.com/docker/cli -PKG_GIT_REF:=v$(PKG_VERSION) -PKG_SOURCE_URL:=https://codeload.$(PKG_GIT_URL)/tar.gz/$(PKG_GIT_REF)? -PKG_HASH:=df7d44387166d90954e290dfbe0a278649bf71d0e89933615bdc0757580b68e4 -PKG_GIT_SHORT_COMMIT:=ce12230 # SHA1 used within the docker executables - -PKG_MAINTAINER:=Gerard Ryan - -PKG_BUILD_DEPENDS:=golang/host -PKG_BUILD_PARALLEL:=1 -PKG_BUILD_FLAGS:=no-mips16 - -GO_PKG:=$(PKG_GIT_URL) - -include $(INCLUDE_DIR)/package.mk -include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk - -define Package/docker - SECTION:=utils - CATEGORY:=Utilities - TITLE:=Docker Community Edition CLI - URL:=https://www.docker.com/ - DEPENDS:=$(GO_ARCH_DEPENDS) -endef - -define Package/docker/description -The CLI used in the Docker CE and Docker EE products. -endef - -GO_PKG_INSTALL_EXTRA:=\ - cli/compose/schema/data \ - vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb - -TAR_OPTIONS:=--strip-components 1 $(TAR_OPTIONS) -TAR_CMD=$(HOST_TAR) -C $(1) $(TAR_OPTIONS) -TARGET_LDFLAGS += $(if $(CONFIG_USE_GLIBC),-lc -lgcc_eh) - -define Build/Prepare - $(Build/Prepare/Default) - - # Verify PKG_GIT_SHORT_COMMIT - ( \ - EXPECTED_PKG_GIT_SHORT_COMMIT=$$$$( $(CURDIR)/../dockerd/git-short-commit.sh '$(PKG_GIT_URL)' '$(PKG_GIT_REF)' '$(TMP_DIR)/git-short-commit/$(PKG_NAME)-$(PKG_VERSION)' ); \ - if [ "$$$${EXPECTED_PKG_GIT_SHORT_COMMIT}" != "$(strip $(PKG_GIT_SHORT_COMMIT))" ]; then \ - echo "ERROR: Expected 'PKG_GIT_SHORT_COMMIT:=$$$${EXPECTED_PKG_GIT_SHORT_COMMIT}', found 'PKG_GIT_SHORT_COMMIT:=$(strip $(PKG_GIT_SHORT_COMMIT))'"; \ - exit 1; \ - fi \ - ) -endef - -define Build/Compile - ( \ - cd $(PKG_BUILD_DIR); \ - $(GO_PKG_VARS) \ - GITCOMMIT=$(PKG_GIT_SHORT_COMMIT) \ - VERSION=$(PKG_VERSION) \ - ./scripts/build/binary; \ - ) -endef - -define Package/docker/install - $(INSTALL_DIR) $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_BUILD_DIR)/build/docker $(1)/usr/bin/ -endef - -$(eval $(call BuildPackage,docker)) diff --git a/small/shadowsocks-rust/Makefile b/small/shadowsocks-rust/Makefile index 576426524e..320c2caba0 100644 --- a/small/shadowsocks-rust/Makefile +++ b/small/shadowsocks-rust/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=shadowsocks-rust -PKG_VERSION:=1.21.0 +PKG_VERSION:=1.21.2 PKG_RELEASE:=1 PKG_SOURCE_HEADER:=shadowsocks-v$(PKG_VERSION) @@ -21,29 +21,29 @@ endif ifeq ($(ARCH),aarch64) PKG_SOURCE:=$(PKG_SOURCE_HEADER).aarch64-$(PKG_SOURCE_BODY).$(PKG_SOURCE_FOOTER) - PKG_HASH:=936da15a164e3c8bab05de502b65b68923129ef53256a1012bd50a646a248ab4 + PKG_HASH:=19e11f39a1b1cd6f843d2d1b5e7759d557448bc82017ff87b9cfaeeff9814f8f else ifeq ($(ARCH),arm) # Referred to golang/golang-values.mk ARM_CPU_FEATURES:=$(word 2,$(subst +,$(space),$(call qstrip,$(CONFIG_CPU_TYPE)))) ifeq ($(ARM_CPU_FEATURES),) PKG_SOURCE:=$(PKG_SOURCE_HEADER).arm-$(PKG_SOURCE_BODY)eabi.$(PKG_SOURCE_FOOTER) - PKG_HASH:=3600d2499a24ea6555baaea50f596a625ca4b617cee9609ecc9ceffb2a46b31e + PKG_HASH:=2873f227ad710cb206df1671d483f49207b7b0c1f234fe12bc470dde1930b555 else PKG_SOURCE:=$(PKG_SOURCE_HEADER).arm-$(PKG_SOURCE_BODY)eabihf.$(PKG_SOURCE_FOOTER) - PKG_HASH:=c545a409a40d220f7cf9f96e8085bf7a6b3d84e69b018b9dc1d60e5da348f92e + PKG_HASH:=fc775890cfe614dad7a7dcb4185b30088d4ea327235513ad59ca799e410d0327 endif else ifeq ($(ARCH),i386) PKG_SOURCE:=$(PKG_SOURCE_HEADER).i686-$(PKG_SOURCE_BODY).$(PKG_SOURCE_FOOTER) - PKG_HASH:=9bcbb29f9278bfa414d0995ea7dcd028ea46dbad36b8232a1c9f569d5624e57b + PKG_HASH:=5f8e8ca7923f44087a14e2146be7264a11f000a3822a32feb163236d9ea1e9ef else ifeq ($(ARCH),x86_64) PKG_SOURCE:=$(PKG_SOURCE_HEADER).x86_64-$(PKG_SOURCE_BODY).$(PKG_SOURCE_FOOTER) - PKG_HASH:=9e1a1eea2971fc9f942f29624c6e06ee40ffafabab7eda122c64d68c1c976be0 + PKG_HASH:=53e6cc209ab9f925e5a59c9f43d75b8179551fc9e608846d7649b5e3aff22c16 else ifeq ($(ARCH),mips) PKG_SOURCE:=$(PKG_SOURCE_HEADER).mips-$(PKG_SOURCE_BODY).$(PKG_SOURCE_FOOTER) - PKG_HASH:=667a77f1a99f1ba06af6ac84af22c99eb6fbec9701907830f6cdfb12453b9b25 + PKG_HASH:=fa826d72de0c7713fe77570b56931f38e0bb575a370fd8de4e98b2bc29179e97 else ifeq ($(ARCH),mipsel) PKG_SOURCE:=$(PKG_SOURCE_HEADER).mipsel-$(PKG_SOURCE_BODY).$(PKG_SOURCE_FOOTER) - PKG_HASH:=a5eaf6c780bc3a5ed4479f4c2219c40da76fc0290b4e30a3acd1596db1c92e7b + PKG_HASH:=bb34a5fec2c7c3ae22a1bef06d8caf3cb5f06368e311d69189b713d3876dda43 # Set the default value to make OpenWrt Package Checker happy else PKG_SOURCE:=dummy diff --git a/v2raya/gui/src/components/modalServer.vue b/v2raya/gui/src/components/modalServer.vue index 557d1a326c..a9126e7f9d 100644 --- a/v2raya/gui/src/components/modalServer.vue +++ b/v2raya/gui/src/components/modalServer.vue @@ -1410,16 +1410,8 @@ export default { o.ssCipher = fields[1]; o.ssPassword = fields[2]; } - const obfsMap = { - original: "none", - "": "none", - ws: "websocket", - }; - o.obfs = obfsMap[u.params.type || ""]; - if (o.obfs === "ws") { + if (u.params.type === "ws") { o.obfs = "websocket"; - } - if (o.obfs === "websocket") { o.host = u.params.host || ""; o.path = u.params.path || "/"; } diff --git a/v2rayn/v2rayN/AmazTool/UpgradeApp.cs b/v2rayn/v2rayN/AmazTool/UpgradeApp.cs index c5189a3310..92c4b1531e 100644 --- a/v2rayn/v2rayN/AmazTool/UpgradeApp.cs +++ b/v2rayn/v2rayN/AmazTool/UpgradeApp.cs @@ -1,6 +1,5 @@ using System.Diagnostics; using System.IO.Compression; -using System.Runtime.InteropServices; using System.Text; namespace AmazTool @@ -22,11 +21,11 @@ namespace AmazTool try { - Process[] existing = Process.GetProcessesByName(V2rayN()); + Process[] existing = Process.GetProcessesByName(V2rayN); foreach (Process p in existing) { var path = p.MainModule?.FileName ?? ""; - if (path.StartsWith(GetPath(V2rayN()))) + if (path.StartsWith(GetPath(V2rayN))) { p.Kill(); p.WaitForExit(100); @@ -96,7 +95,7 @@ namespace AmazTool { StartInfo = new() { - FileName = V2rayN(), + FileName = V2rayN, WorkingDirectory = StartupPath() } }; @@ -123,19 +122,6 @@ namespace AmazTool return Path.Combine(startupPath, fileName); } - private static string V2rayN() - { - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - if (File.Exists(GetPath("v2rayN.exe"))) - return "v2rayN"; - else - return "v2rayN.Desktop"; - } - else - { - return "v2rayN.Desktop"; - } - } + private static string V2rayN => "v2rayN"; } } \ No newline at end of file diff --git a/v2rayn/v2rayN/ServiceLib/Common/Utils.cs b/v2rayn/v2rayN/ServiceLib/Common/Utils.cs index cf24296346..cf57718194 100644 --- a/v2rayn/v2rayN/ServiceLib/Common/Utils.cs +++ b/v2rayn/v2rayN/ServiceLib/Common/Utils.cs @@ -720,7 +720,7 @@ namespace ServiceLib.Common } if (coreType != null) { - tempPath = Path.Combine(tempPath, coreType.ToString()); + tempPath = Path.Combine(tempPath, coreType.ToLower().ToString()); if (!Directory.Exists(tempPath)) { Directory.CreateDirectory(tempPath); diff --git a/v2rayn/v2rayN/ServiceLib/Handler/AppHandler.cs b/v2rayn/v2rayN/ServiceLib/Handler/AppHandler.cs index c5b438506c..e27634faa5 100644 --- a/v2rayn/v2rayN/ServiceLib/Handler/AppHandler.cs +++ b/v2rayn/v2rayN/ServiceLib/Handler/AppHandler.cs @@ -159,7 +159,7 @@ await ConfigHandler.SetDefaultServer(_config, lstModel); var lstServerStat = (_config.GuiItem.EnableStatistics ? StatisticsHandler.Instance.ServerStat : null) ?? []; - var lstProfileExs = ProfileExHandler.Instance.ProfileExs; + var lstProfileExs = await ProfileExHandler.Instance.GetProfileExs(); lstModel = (from t in lstModel join t2 in lstServerStat on t.IndexId equals t2.IndexId into t2b from t22 in t2b.DefaultIfEmpty() diff --git a/v2rayn/v2rayN/ServiceLib/Handler/ConfigHandler.cs b/v2rayn/v2rayN/ServiceLib/Handler/ConfigHandler.cs index 62c51ceb21..baf50c296f 100644 --- a/v2rayn/v2rayN/ServiceLib/Handler/ConfigHandler.cs +++ b/v2rayn/v2rayN/ServiceLib/Handler/ConfigHandler.cs @@ -746,7 +746,7 @@ namespace ServiceLib.Handler { return -1; } - var lstProfileExs = ProfileExHandler.Instance.ProfileExs; + var lstProfileExs = await ProfileExHandler.Instance.GetProfileExs(); var lstProfile = (from t in lstModel join t3 in lstProfileExs on t.IndexId equals t3.IndexId into t3b from t33 in t3b.DefaultIfEmpty() @@ -1340,7 +1340,9 @@ namespace ServiceLib.Handler //Do not allow http protocol if (url.StartsWith(Global.HttpProtocol) && !Utils.IsPrivateNetwork(uri.IdnHost)) { - return -1; + //TODO Temporary reminder to be removed later + NoticeHandler.Instance.Enqueue(ResUI.InsecureUrlProtocol); + //return -1; } var queryVars = Utils.ParseQueryString(uri.Query); diff --git a/v2rayn/v2rayN/ServiceLib/Handler/CoreHandler.cs b/v2rayn/v2rayN/ServiceLib/Handler/CoreHandler.cs index e39b111b7f..33d78f740d 100644 --- a/v2rayn/v2rayN/ServiceLib/Handler/CoreHandler.cs +++ b/v2rayn/v2rayN/ServiceLib/Handler/CoreHandler.cs @@ -15,13 +15,34 @@ namespace ServiceLib.Handler private Process? _processPre; private Action? _updateFunc; - public void Init(Config config, Action updateFunc) + public async Task Init(Config config, Action updateFunc) { _config = config; _updateFunc = updateFunc; - Environment.SetEnvironmentVariable("v2ray.location.asset", Utils.GetBinPath(""), EnvironmentVariableTarget.Process); - Environment.SetEnvironmentVariable("xray.location.asset", Utils.GetBinPath(""), EnvironmentVariableTarget.Process); + Environment.SetEnvironmentVariable("V2RAY_LOCATION_ASSET", Utils.GetBinPath(""), EnvironmentVariableTarget.Process); + Environment.SetEnvironmentVariable("XRAY_LOCATION_ASSET", Utils.GetBinPath(""), EnvironmentVariableTarget.Process); + + if (Utils.IsLinux()) + { + var coreInfo = CoreInfoHandler.Instance.GetCoreInfo(); + foreach (var it in coreInfo) + { + if (it.CoreType == ECoreType.v2rayN) + { + continue; + } + + foreach (var vName in it.CoreExes) + { + var exe = Utils.GetExeName(Utils.GetBinPath(vName, it.CoreType.ToString())); + if (File.Exists(exe)) + { + await Utils.SetLinuxChmod(exe); + } + } + } + } } public async Task LoadCore(ProfileItem? node) diff --git a/v2rayn/v2rayN/ServiceLib/Handler/ProfileExHandler.cs b/v2rayn/v2rayN/ServiceLib/Handler/ProfileExHandler.cs index 3d52f930ee..1eee755883 100644 --- a/v2rayn/v2rayN/ServiceLib/Handler/ProfileExHandler.cs +++ b/v2rayn/v2rayN/ServiceLib/Handler/ProfileExHandler.cs @@ -9,27 +9,31 @@ namespace ServiceLib.Handler private static readonly Lazy _instance = new(() => new()); private ConcurrentBag _lstProfileEx = []; private Queue _queIndexIds = new(); - public ConcurrentBag ProfileExs => _lstProfileEx; public static ProfileExHandler Instance => _instance.Value; public ProfileExHandler() { - Init(); + //Init(); } - private async Task Init() + public async Task Init() { await InitData(); - await Task.Run(async () => + Task.Run(async () => { while (true) { - await SaveQueueIndexIds(); await Task.Delay(1000 * 600); + await SaveQueueIndexIds(); } }); } + public async Task> GetProfileExs() + { + return _lstProfileEx; + } + private async Task InitData() { await SQLiteHelper.Instance.ExecuteAsync($"delete from ProfileExItem where indexId not in ( select indexId from ProfileItem )"); diff --git a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.Designer.cs b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.Designer.cs index b5508c7101..fdbef24106 100644 --- a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.Designer.cs +++ b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.Designer.cs @@ -294,6 +294,24 @@ namespace ServiceLib.Resx { } } + /// + /// 查找类似 Please do not use the insecure HTTP protocol subscription address 的本地化字符串。 + /// + public static string InsecureUrlProtocol { + get { + return ResourceManager.GetString("InsecureUrlProtocol", resourceCulture); + } + } + + /// + /// 查找类似 Invalid address (Url) 的本地化字符串。 + /// + public static string InvalidUrlTip { + get { + return ResourceManager.GetString("InvalidUrlTip", resourceCulture); + } + } + /// /// 查找类似 {0} {1} already up to date. 的本地化字符串。 /// diff --git a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.resx b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.resx index 636ad52725..9eeaac0c25 100644 --- a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.resx +++ b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.resx @@ -1354,4 +1354,10 @@ Scan QR code in the image + + Invalid address (Url) + + + Please do not use the insecure HTTP protocol subscription address + \ No newline at end of file diff --git a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx index f6ba0dc5ae..a4f565e962 100644 --- a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx +++ b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx @@ -1351,4 +1351,10 @@ 扫描图片中的二维码 + + 地址(Url)无效 + + + 请不要使用不安全的HTTP协议订阅地址 + \ No newline at end of file diff --git a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx index 08c31baa9d..ebc9be177c 100644 --- a/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx +++ b/v2rayn/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx @@ -1231,4 +1231,10 @@ 掃描圖片中的二維碼 + + 地址(Url)無效 + + + 請不要使用不安全的HTTP協定訂閱位址 + \ No newline at end of file diff --git a/v2rayn/v2rayN/ServiceLib/ServiceLib.csproj b/v2rayn/v2rayN/ServiceLib/ServiceLib.csproj index 24761d76ef..6c48805569 100644 --- a/v2rayn/v2rayN/ServiceLib/ServiceLib.csproj +++ b/v2rayn/v2rayN/ServiceLib/ServiceLib.csproj @@ -4,7 +4,7 @@ net8.0 enable enable - 7.0.0 + 7.0.1 diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs index efedf556df..b75cda3d88 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs @@ -208,7 +208,8 @@ namespace ServiceLib.ViewModels await ConfigHandler.InitBuiltinRouting(_config); await ConfigHandler.InitBuiltinDNS(_config); - CoreHandler.Instance.Init(_config, UpdateHandler); + await ProfileExHandler.Instance.Init(); + await CoreHandler.Instance.Init(_config, UpdateHandler); TaskHandler.Instance.RegUpdateTask(_config, UpdateTaskHandler); if (_config.GuiItem.EnableStatistics) @@ -389,6 +390,10 @@ namespace ServiceLib.ViewModels RefreshServers(); NoticeHandler.Instance.Enqueue(string.Format(ResUI.SuccessfullyImportedServerViaClipboard, ret)); } + else + { + NoticeHandler.Instance.Enqueue(ResUI.OperationFailed); + } } public async Task AddServerViaScanAsync() @@ -433,6 +438,10 @@ namespace ServiceLib.ViewModels RefreshServers(); NoticeHandler.Instance.Enqueue(ResUI.SuccessfullyImportedServerViaScan); } + else + { + NoticeHandler.Instance.Enqueue(ResUI.OperationFailed); + } } } diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/RoutingRuleSettingViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/RoutingRuleSettingViewModel.cs index 6e452d8245..1e678776ec 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/RoutingRuleSettingViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/RoutingRuleSettingViewModel.cs @@ -176,13 +176,14 @@ namespace ServiceLib.ViewModels return; } - var lst = new List(); + var lst = new List(); foreach (var it in SelectedSources ?? [SelectedSource]) { var item = _rules.FirstOrDefault(t => t.Id == it?.Id); if (item != null) { - var item2 = JsonUtils.Deserialize(JsonUtils.Serialize(item)); + var item2 = JsonUtils.DeepCopy(item); //JsonUtils.Deserialize(JsonUtils.Serialize(item)); + item2.Id = null; lst.Add(item2 ?? new()); } } diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/StatusBarViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/StatusBarViewModel.cs index e0af705d5c..70de9685af 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/StatusBarViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/StatusBarViewModel.cs @@ -104,6 +104,18 @@ namespace ServiceLib.ViewModels public StatusBarViewModel(Func>? updateView) { _config = AppHandler.Instance.Config; + SelectedRouting = new(); + SelectedServer = new(); + RunningServerToolTipText = "-"; + + if (_config.TunModeItem.EnableTun && AppHandler.Instance.IsAdministrator) + { + EnableTun = true; + } + else + { + _config.TunModeItem.EnableTun = EnableTun = false; + } #region WhenAnyValue && ReactiveCommand @@ -179,19 +191,6 @@ namespace ServiceLib.ViewModels private async Task Init() { - SelectedRouting = new(); - SelectedServer = new(); - RunningServerToolTipText = "-"; - - if (_config.TunModeItem.EnableTun && AppHandler.Instance.IsAdministrator) - { - EnableTun = true; - } - else - { - _config.TunModeItem.EnableTun = EnableTun = false; - } - await RefreshRoutingsMenu(); await InboundDisplayStatus(); await ChangeSystemProxyAsync(_config.SystemProxyItem.SysProxyType, true); diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/SubEditViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/SubEditViewModel.cs index 5ef396cb63..03588adc10 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/SubEditViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/SubEditViewModel.cs @@ -39,14 +39,14 @@ namespace ServiceLib.ViewModels var uri = Utils.TryUri(url); if (uri == null) { - NoticeHandler.Instance.Enqueue(ResUI.LvUrl); + NoticeHandler.Instance.Enqueue(ResUI.InvalidUrlTip); return; } //Do not allow http protocol if (url.StartsWith(Global.HttpProtocol) && !Utils.IsPrivateNetwork(uri.IdnHost)) { - NoticeHandler.Instance.Enqueue(ResUI.LvUrl); - return; + NoticeHandler.Instance.Enqueue(ResUI.InsecureUrlProtocol); + //return; } } diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt index 34e4402ac6..ec00d80a2b 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt @@ -321,8 +321,8 @@ data class V2rayConfig( tcpSetting.header.type = HTTP if (!TextUtils.isEmpty(host) || !TextUtils.isEmpty(path)) { val requestObj = TcpSettingsBean.HeaderBean.RequestBean() - requestObj.headers.Host = (host.orEmpty()).split(",").map { it.trim() }.filter { it.isNotEmpty() } - requestObj.path = (path.orEmpty()).split(",").map { it.trim() }.filter { it.isNotEmpty() } + requestObj.headers.Host = host.orEmpty().split(",").map { it.trim() }.filter { it.isNotEmpty() } + requestObj.path = path.orEmpty().split(",").map { it.trim() }.filter { it.isNotEmpty() } tcpSetting.header.request = requestObj sni = requestObj.headers.Host?.getOrNull(0) ?: sni } @@ -371,7 +371,7 @@ data class V2rayConfig( "h2", "http" -> { network = "h2" val h2Setting = HttpSettingsBean() - h2Setting.host = (host.orEmpty()).split(",").map { it.trim() }.filter { it.isNotEmpty() } + h2Setting.host = host.orEmpty().split(",").map { it.trim() }.filter { it.isNotEmpty() } sni = h2Setting.host.getOrNull(0) ?: sni h2Setting.path = path ?: "/" httpSettings = h2Setting diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt index 3c3b211628..9c9ca259df 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt @@ -428,10 +428,11 @@ object V2RayServiceManager { } private fun stopSpeedNotification() { - if (mDisposable != null) { - mDisposable?.dispose() //stop queryStats + mDisposable?.let { + it.dispose() //stop queryStats mDisposable = null updateNotification(currentConfig?.remarks, 0, 0) } } + } diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/AboutActivity.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/AboutActivity.kt index 8f0f1bf0d6..612de540f1 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/AboutActivity.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/AboutActivity.kt @@ -4,6 +4,7 @@ import android.Manifest import android.content.Intent import android.os.Build import android.os.Bundle +import android.util.Log import androidx.activity.result.contract.ActivityResultContracts import androidx.core.content.FileProvider import com.tbruyelle.rxpermissions3.RxPermissions @@ -133,13 +134,15 @@ class AboutActivity : BaseActivity() { } private fun showFileChooser() { - val intent = Intent(Intent.ACTION_GET_CONTENT) - intent.type = "*/*" - intent.addCategory(Intent.CATEGORY_OPENABLE) + val intent = Intent(Intent.ACTION_GET_CONTENT).apply { + type = "*/*" + addCategory(Intent.CATEGORY_OPENABLE) + } try { chooseFile.launch(Intent.createChooser(intent, getString(R.string.title_file_chooser))) } catch (ex: android.content.ActivityNotFoundException) { + Log.e(AppConfig.ANG_PACKAGE, "File chooser activity not found: ${ex.message}", ex) toast(R.string.toast_require_file_manager) } } @@ -149,27 +152,23 @@ class AboutActivity : BaseActivity() { val uri = it.data?.data if (it.resultCode == RESULT_OK && uri != null) { try { - try { - val targetFile = - File(this.cacheDir.absolutePath, "${System.currentTimeMillis()}.zip") - contentResolver.openInputStream(uri).use { input -> - targetFile.outputStream().use { fileOut -> - input?.copyTo(fileOut) - } + val targetFile = + File(this.cacheDir.absolutePath, "${System.currentTimeMillis()}.zip") + contentResolver.openInputStream(uri).use { input -> + targetFile.outputStream().use { fileOut -> + input?.copyTo(fileOut) } - if (restoreConfiguration(targetFile)) { - toast(R.string.toast_success) - } else { - toast(R.string.toast_failure) - } - } catch (e: Exception) { - e.printStackTrace() } - + if (restoreConfiguration(targetFile)) { + toast(R.string.toast_success) + } else { + toast(R.string.toast_failure) + } } catch (e: Exception) { - e.printStackTrace() - toast(e.message.toString()) + Log.e(AppConfig.ANG_PACKAGE, "Error during file restore: ${e.message}", e) + toast(R.string.toast_failure) } } } + } \ No newline at end of file diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/BaseActivity.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/BaseActivity.kt index 8a2c7fda8b..f2d4ba9411 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/BaseActivity.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/BaseActivity.kt @@ -34,9 +34,6 @@ abstract class BaseActivity : AppCompatActivity() { @RequiresApi(Build.VERSION_CODES.N) override fun attachBaseContext(newBase: Context?) { - val context = newBase?.let { - MyContextWrapper.wrap(newBase, Utils.getLocale()) - } - super.attachBaseContext(context) + super.attachBaseContext(MyContextWrapper.wrap(newBase ?: return, Utils.getLocale())) } } diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/LogcatActivity.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/LogcatActivity.kt index c71294eb04..7e424efc53 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/LogcatActivity.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/LogcatActivity.kt @@ -33,46 +33,42 @@ class LogcatActivity : BaseActivity() { } private fun logcat(shouldFlushLog: Boolean) { + binding.pbWaiting.visibility = View.VISIBLE - try { - binding.pbWaiting.visibility = View.VISIBLE - - lifecycleScope.launch(Dispatchers.Default) { + lifecycleScope.launch(Dispatchers.Default) { + try { if (shouldFlushLog) { - val lst = LinkedHashSet() - lst.add("logcat") - lst.add("-c") + val lst = linkedSetOf("logcat", "-c") withContext(Dispatchers.IO) { val process = Runtime.getRuntime().exec(lst.toTypedArray()) process.waitFor() } } - val lst = LinkedHashSet() - lst.add("logcat") - lst.add("-d") - lst.add("-v") - lst.add("time") - lst.add("-s") - lst.add("GoLog,tun2socks,${ANG_PACKAGE},AndroidRuntime,System.err") + val lst = linkedSetOf( + "logcat", "-d", "-v", "time", "-s", + "GoLog,tun2socks,$ANG_PACKAGE,AndroidRuntime,System.err" + ) val process = withContext(Dispatchers.IO) { Runtime.getRuntime().exec(lst.toTypedArray()) } -// val bufferedReader = BufferedReader( -// InputStreamReader(process.inputStream)) -// val allText = bufferedReader.use(BufferedReader::readText) val allText = process.inputStream.bufferedReader().use { it.readText() } - launch(Dispatchers.Main) { + withContext(Dispatchers.Main) { binding.tvLogcat.text = allText binding.tvLogcat.movementMethod = ScrollingMovementMethod() binding.pbWaiting.visibility = View.GONE Handler(Looper.getMainLooper()).post { binding.svLogcat.fullScroll(View.FOCUS_DOWN) } } + } catch (e: IOException) { + withContext(Dispatchers.Main) { + binding.pbWaiting.visibility = View.GONE + toast(R.string.toast_failure) + } + e.printStackTrace() } - } catch (e: IOException) { - e.printStackTrace() } } + override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_logcat, menu) return super.onCreateOptionsMenu(menu) diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt index 880a382204..35cbaed3e4 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt @@ -46,6 +46,7 @@ import io.reactivex.rxjava3.core.Observable import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import me.drakeet.support.toast.ToastCompat import java.util.concurrent.TimeUnit @@ -489,30 +490,34 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList } private fun importBatchConfig(server: String?) { -// val dialog = AlertDialog.Builder(this) -// .setView(LayoutProgressBinding.inflate(layoutInflater).root) -// .setCancelable(false) -// .show() binding.pbWaiting.show() lifecycleScope.launch(Dispatchers.IO) { - val (count, countSub) = AngConfigManager.importBatchConfig(server, mainViewModel.subscriptionId, true) - delay(500L) - launch(Dispatchers.Main) { - if (count > 0) { - toast(R.string.toast_success) - mainViewModel.reloadServerList() - } else if (countSub > 0) { - initGroupTab() - } else { - toast(R.string.toast_failure) + try { + val (count, countSub) = AngConfigManager.importBatchConfig(server, mainViewModel.subscriptionId, true) + delay(500L) + withContext(Dispatchers.Main) { + when { + count > 0 -> { + toast(R.string.toast_success) + mainViewModel.reloadServerList() + } + countSub > 0 -> initGroupTab() + else -> toast(R.string.toast_failure) + } + binding.pbWaiting.hide() } - //dialog.dismiss() - binding.pbWaiting.hide() + } catch (e: Exception) { + withContext(Dispatchers.Main) { + toast(R.string.toast_failure) + binding.pbWaiting.hide() + } + e.printStackTrace() } } } + private fun importConfigCustomClipboard() : Boolean { try { diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/PerAppProxyAdapter.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/PerAppProxyAdapter.kt index 7e5dcddde7..deb585fea7 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/PerAppProxyAdapter.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/PerAppProxyAdapter.kt @@ -59,22 +59,23 @@ class PerAppProxyAdapter(val activity: BaseActivity, val apps: List, bl fun bind(appInfo: AppInfo) { this.appInfo = appInfo + // Set app icon and name itemBypassBinding.icon.setImageDrawable(appInfo.appIcon) -// name.text = appInfo.appName - - itemBypassBinding.checkBox.isChecked = inBlacklist - itemBypassBinding.packageName.text = appInfo.packageName - if (appInfo.isSystemApp) { - itemBypassBinding.name.text = String.format("** %1s", appInfo.appName) - //name.textColor = Color.RED + itemBypassBinding.name.text = if (appInfo.isSystemApp) { + String.format("** %s", appInfo.appName) } else { - itemBypassBinding.name.text = appInfo.appName - //name.textColor = Color.DKGRAY + appInfo.appName } + // Set package name and checkbox state + itemBypassBinding.packageName.text = appInfo.packageName + itemBypassBinding.checkBox.isChecked = inBlacklist + + // Handle item click to toggle blacklist status itemView.setOnClickListener(this) } + override fun onClick(v: View?) { if (inBlacklist) { blacklist.remove(appInfo.packageName) diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingEditActivity.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingEditActivity.kt index f8a64e174f..22986f3ef9 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingEditActivity.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingEditActivity.kt @@ -59,16 +59,21 @@ class RoutingEditActivity : BaseActivity() { private fun saveServer(): Boolean { val rulesetItem = SettingsManager.getRoutingRuleset(position) ?: RulesetItem() - rulesetItem.remarks = binding.etRemarks.text.toString() - rulesetItem.looked = binding.chkLocked.isChecked - binding.etDomain.text.toString().let { rulesetItem.domain = if (it.isEmpty()) null else it.split(",").map { itt -> itt.trim() }.filter { itt -> itt.isNotEmpty() } } - binding.etIp.text.toString().let { rulesetItem.ip = if (it.isEmpty()) null else it.split(",").map { itt -> itt.trim() }.filter { itt -> itt.isNotEmpty() } } - binding.etProtocol.text.toString().let { rulesetItem.protocol = if (it.isEmpty()) null else it.split(",").map { itt -> itt.trim() }.filter { itt -> itt.isNotEmpty() } } - binding.etPort.text.toString().let { rulesetItem.port = it.ifEmpty { null } } - binding.etNetwork.text.toString().let { rulesetItem.network = it.ifEmpty { null } } - rulesetItem.outboundTag = outbound_tag[binding.spOutboundTag.selectedItemPosition] + rulesetItem.apply { + remarks = binding.etRemarks.text.toString() + looked = binding.chkLocked.isChecked + domain = binding.etDomain.text.toString().takeIf { it.isNotEmpty() } + ?.split(",")?.map { it.trim() }?.filter { it.isNotEmpty() } + ip = binding.etIp.text.toString().takeIf { it.isNotEmpty() } + ?.split(",")?.map { it.trim() }?.filter { it.isNotEmpty() } + protocol = binding.etProtocol.text.toString().takeIf { it.isNotEmpty() } + ?.split(",")?.map { it.trim() }?.filter { it.isNotEmpty() } + port = binding.etPort.text.toString().takeIf { it.isNotEmpty() } + network = binding.etNetwork.text.toString().takeIf { it.isNotEmpty() } + outboundTag = outbound_tag[binding.spOutboundTag.selectedItemPosition] + } - if (TextUtils.isEmpty(rulesetItem.remarks)) { + if (rulesetItem.remarks.isNullOrEmpty()) { toast(R.string.sub_setting_remarks) return false } @@ -79,6 +84,7 @@ class RoutingEditActivity : BaseActivity() { return true } + private fun deleteServer(): Boolean { if (position >= 0) { AlertDialog.Builder(this).setMessage(R.string.del_config_comfirm) diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingActivity.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingActivity.kt index f6c12a96ed..488c535330 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingActivity.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingActivity.kt @@ -24,6 +24,7 @@ import com.v2ray.ang.util.SettingsManager import com.v2ray.ang.util.Utils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext class RoutingSettingActivity : BaseActivity() { private val binding by lazy { ActivityRoutingSettingBinding.inflate(layoutInflater) } @@ -113,30 +114,33 @@ class RoutingSettingActivity : BaseActivity() { R.id.import_rulesets_from_clipboard -> { AlertDialog.Builder(this).setMessage(R.string.routing_settings_import_rulesets_tip) .setPositiveButton(android.R.string.ok) { _, _ -> - try { - val clipboard = Utils.getClipboard(this) - lifecycleScope.launch(Dispatchers.IO) { - val ret = SettingsManager.resetRoutingRulesetsFromClipboard(clipboard) - launch(Dispatchers.Main) { - if (ret) { - refreshData() - toast(R.string.toast_success) - } else { - toast(R.string.toast_failure) - } - } - } + val clipboard = try { + Utils.getClipboard(this) } catch (e: Exception) { e.printStackTrace() + toast(R.string.toast_failure) + return@setPositiveButton + } + lifecycleScope.launch(Dispatchers.IO) { + val result = SettingsManager.resetRoutingRulesetsFromClipboard(clipboard) + withContext(Dispatchers.Main) { + if (result) { + refreshData() + toast(R.string.toast_success) + } else { + toast(R.string.toast_failure) + } + } } } .setNegativeButton(android.R.string.no) { _, _ -> - //do noting + //do nothing } .show() true } + R.id.export_rulesets_to_clipboard -> { val rulesetList = MmkvManager.decodeRoutingRulesets() if (rulesetList.isNullOrEmpty()) { @@ -152,7 +156,9 @@ class RoutingSettingActivity : BaseActivity() { } fun refreshData() { - rulesets = MmkvManager.decodeRoutingRulesets() ?: mutableListOf() + rulesets.clear() + rulesets.addAll(MmkvManager.decodeRoutingRulesets() ?: mutableListOf()) adapter.notifyDataSetChanged() } + } diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ScScannerActivity.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ScScannerActivity.kt index 17090b75d2..03a9fd3473 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ScScannerActivity.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ScScannerActivity.kt @@ -20,26 +20,31 @@ class ScScannerActivity : BaseActivity() { fun importQRcode(): Boolean { RxPermissions(this) .request(Manifest.permission.CAMERA) - .subscribe { - if (it) + .subscribe { granted -> + if (granted) { scanQRCode.launch(Intent(this, ScannerActivity::class.java)) - else + } else { toast(R.string.toast_permission_denied) + } } - return true } + private val scanQRCode = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { if (it.resultCode == RESULT_OK) { - val (count, countSub) = AngConfigManager.importBatchConfig(it.data?.getStringExtra("SCAN_RESULT"), "", false) + val scanResult = it.data?.getStringExtra("SCAN_RESULT").orEmpty() + val (count, countSub) = AngConfigManager.importBatchConfig(scanResult, "", false) + if (count + countSub > 0) { toast(R.string.toast_success) } else { toast(R.string.toast_failure) } + startActivity(Intent(this, MainActivity::class.java)) } finish() } + } diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ScannerActivity.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ScannerActivity.kt index e0053b4b32..5c7e3f1b65 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ScannerActivity.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ScannerActivity.kt @@ -74,19 +74,17 @@ class ScannerActivity : BaseActivity() { } RxPermissions(this) .request(permission) - .subscribe { - if (it) { - try { - showFileChooser() - } catch (e: Exception) { - e.printStackTrace() - } - } else + .subscribe { granted -> + if (granted) { + showFileChooser() + } else { toast(R.string.toast_permission_denied) + } } true } + else -> super.onOptionsItemSelected(item) } @@ -107,13 +105,21 @@ class ScannerActivity : BaseActivity() { val uri = it.data?.data if (it.resultCode == RESULT_OK && uri != null) { try { - val bitmap = BitmapFactory.decodeStream(contentResolver.openInputStream(uri)) + val inputStream = contentResolver.openInputStream(uri) + val bitmap = BitmapFactory.decodeStream(inputStream) + inputStream?.close() + val text = QRCodeDecoder.syncDecodeQRCode(bitmap) - finished(text.orEmpty()) + if (text.isNullOrEmpty()) { + toast(R.string.toast_decoding_failed) + } else { + finished(text) + } } catch (e: Exception) { e.printStackTrace() - toast(e.message.toString()) + toast(R.string.toast_decoding_failed) } } } + } diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerActivity.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerActivity.kt index bc1ea3aff1..50f2874061 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerActivity.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerActivity.kt @@ -201,31 +201,49 @@ class ServerActivity : BaseActivity() { position: Int, id: Long ) { - if (streamSecuritys[position].isBlank()) { - container_sni?.visibility = View.GONE - container_fingerprint?.visibility = View.GONE - container_alpn?.visibility = View.GONE - container_allow_insecure?.visibility = View.GONE - container_public_key?.visibility = View.GONE - container_short_id?.visibility = View.GONE - container_spider_x?.visibility = View.GONE - } else { - container_sni?.visibility = View.VISIBLE - container_fingerprint?.visibility = View.VISIBLE - container_alpn?.visibility = View.VISIBLE - if (streamSecuritys[position] == TLS) { + val isBlank = streamSecuritys[position].isBlank() + val isTLS = streamSecuritys[position] == TLS + + when { + // Case 1: Null or blank + isBlank -> { + listOf( + container_sni, container_fingerprint, container_alpn, + container_allow_insecure, container_public_key, + container_short_id, container_spider_x + ).forEach { it?.visibility = View.GONE } + } + + // Case 2: TLS value + isTLS -> { + listOf( + container_sni, + container_fingerprint, + container_alpn + ).forEach { it?.visibility = View.VISIBLE } container_allow_insecure?.visibility = View.VISIBLE - container_public_key?.visibility = View.GONE - container_short_id?.visibility = View.GONE - container_spider_x?.visibility = View.GONE - } else { - container_allow_insecure?.visibility = View.GONE + listOf( + container_public_key, + container_short_id, + container_spider_x + ).forEach { it?.visibility = View.GONE } + } + + // Case 3: Other reality values + else -> { + listOf(container_sni, container_fingerprint).forEach { + it?.visibility = View.VISIBLE + } container_alpn?.visibility = View.GONE - container_public_key?.visibility = View.VISIBLE - container_short_id?.visibility = View.VISIBLE - container_spider_x?.visibility = View.VISIBLE + container_allow_insecure?.visibility = View.GONE + listOf( + container_public_key, + container_short_id, + container_spider_x + ).forEach { it?.visibility = View.VISIBLE } } } + } override fun onNothingSelected(p0: AdapterView<*>?) { @@ -560,11 +578,12 @@ class ServerActivity : BaseActivity() { val shortId = et_short_id?.text?.toString() val spiderX = et_spider_x?.text?.toString() - val allowInsecure = if (allowInsecureField == null || allowinsecures[allowInsecureField].isBlank()) { - settingsStorage?.decodeBool(PREF_ALLOW_INSECURE) ?: false - } else { - allowinsecures[allowInsecureField].toBoolean() - } + val allowInsecure = + if (allowInsecureField == null || allowinsecures[allowInsecureField].isBlank()) { + settingsStorage?.decodeBool(PREF_ALLOW_INSECURE) ?: false + } else { + allowinsecures[allowInsecureField].toBoolean() + } streamSetting.populateTlsSettings( streamSecurity = streamSecuritys[streamSecurity], diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerCustomConfigActivity.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerCustomConfigActivity.kt index d6891270a8..226058921a 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerCustomConfigActivity.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerCustomConfigActivity.kt @@ -48,16 +48,14 @@ class ServerCustomConfigActivity : BaseActivity() { } /** - * bingding seleced server config + * Binding selected server config */ private fun bindingServer(config: ServerConfig): Boolean { binding.etRemarks.text = Utils.getEditable(config.remarks) val raw = MmkvManager.decodeServerRaw(editGuid) - if (raw.isNullOrBlank()) { - binding.editor.setTextContent(Utils.getEditable(config.fullConfig?.toPrettyPrinting().orEmpty())) - } else { - binding.editor.setTextContent(Utils.getEditable(raw)) - } + val configContent = raw ?: config.fullConfig?.toPrettyPrinting().orEmpty() + + binding.editor.setTextContent(Utils.getEditable(configContent)) return true } diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SettingsActivity.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SettingsActivity.kt index 803b413055..84c115b4fa 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SettingsActivity.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SettingsActivity.kt @@ -316,13 +316,11 @@ class SettingsActivity : BaseActivity() { } private fun updateMuxConcurrency(value: String?) { - if (value == null) { - } else { - val concurrency = value.toIntOrNull() ?: 8 - muxConcurrency?.summary = concurrency.toString() - } + val concurrency = value?.toIntOrNull() ?: 8 + muxConcurrency?.summary = concurrency.toString() } + private fun updateMuxXudpConcurrency(value: String?) { if (value == null) { muxXudpQuic?.isEnabled = true diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetActivity.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetActivity.kt index 82ab0d88c5..d2e317c536 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetActivity.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetActivity.kt @@ -71,23 +71,11 @@ class UserAssetActivity : BaseActivity() { return super.onCreateOptionsMenu(menu) } - override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) { - R.id.add_file -> { - showFileChooser() - true - } - - R.id.add_url -> { - val intent = Intent(this, UserAssetUrlActivity::class.java) - startActivity(intent) - true - } - - R.id.download_file -> { - downloadGeoFiles() - true - } - + // Use when to streamline the option selection + override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) { + R.id.add_file -> showFileChooser().let { true } + R.id.add_url -> startActivity(Intent(this, UserAssetUrlActivity::class.java)).let { true } + R.id.download_file -> downloadGeoFiles().let { true } else -> super.onOptionsItemSelected(item) } @@ -120,31 +108,29 @@ class UserAssetActivity : BaseActivity() { } } - private val chooseFile = - registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { it -> - val uri = it.data?.data - if (it.resultCode == RESULT_OK && uri != null) { - val assetId = Utils.getUuid() - try { - val assetItem = AssetUrlItem( - getCursorName(uri) ?: uri.toString(), - "file" - ) + val chooseFile = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> + val uri = result.data?.data + if (result.resultCode == RESULT_OK && uri != null) { + val assetId = Utils.getUuid() + runCatching { + val assetItem = AssetUrlItem( + getCursorName(uri) ?: uri.toString(), + "file" + ) - // check remarks unique - val assetList = MmkvManager.decodeAssetUrls() - if (assetList.any { it.second.remarks == assetItem.remarks && it.first != assetId }) { - toast(R.string.msg_remark_is_duplicate) - return@registerForActivityResult - } + val assetList = MmkvManager.decodeAssetUrls() + if (assetList.any { it.second.remarks == assetItem.remarks && it.first != assetId }) { + toast(R.string.msg_remark_is_duplicate) + } else { MmkvManager.encodeAsset(assetId, assetItem) copyFile(uri) - } catch (e: Exception) { - toast(R.string.toast_asset_copy_failed) - MmkvManager.removeAssetUrl(assetId) } + }.onFailure { + toast(R.string.toast_asset_copy_failed) + MmkvManager.removeAssetUrl(assetId) } } + } private fun copyFile(uri: Uri): String { val targetFile = File(extDir, getCursorName(uri) ?: uri.toString()) diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/QRCodeDecoder.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/QRCodeDecoder.kt index fb0643da65..fb6b2f68a7 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/QRCodeDecoder.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/QRCodeDecoder.kt @@ -23,36 +23,19 @@ object QRCodeDecoder { * create qrcode using zxing */ fun createQRCode(text: String, size: Int = 800): Bitmap? { - try { - val hints = HashMap() - hints[EncodeHintType.CHARACTER_SET] = "utf-8" - val bitMatrix = QRCodeWriter().encode( - text, - BarcodeFormat.QR_CODE, size, size, hints - ) - val pixels = IntArray(size * size) - for (y in 0 until size) { - for (x in 0 until size) { - if (bitMatrix.get(x, y)) { - pixels[y * size + x] = 0xff000000.toInt() - } else { - pixels[y * size + x] = 0xffffffff.toInt() - } - - } + return runCatching { + val hints = mapOf(EncodeHintType.CHARACTER_SET to Charsets.UTF_8) + val bitMatrix = QRCodeWriter().encode(text, BarcodeFormat.QR_CODE, size, size, hints) + val pixels = IntArray(size * size) { i -> + if (bitMatrix.get(i % size, i / size)) 0xff000000.toInt() else 0xffffffff.toInt() } - val bitmap = Bitmap.createBitmap( - size, size, - Bitmap.Config.ARGB_8888 - ) - bitmap.setPixels(pixels, 0, size, 0, 0, size, size) - return bitmap - } catch (e: Exception) { - e.printStackTrace() - return null - } + Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888).apply { + setPixels(pixels, 0, size, 0, 0, size, size) + } + }.getOrNull() } + /** * 同步解析本地图片二维码。该方法是耗时操作,请在子线程中调用。 * @@ -70,40 +53,24 @@ object QRCodeDecoder { * @return 返回二维码图片里的内容 或 null */ fun syncDecodeQRCode(bitmap: Bitmap?): String? { - if (bitmap == null) { - return null - } - var source: RGBLuminanceSource? = null - try { - val width = bitmap.width - val height = bitmap.height - val pixels = IntArray(width * height) - bitmap.getPixels(pixels, 0, width, 0, 0, width, height) - source = RGBLuminanceSource(width, height, pixels) - val qrReader = QRCodeReader() - try { - val result = try { - qrReader.decode( - BinaryBitmap(GlobalHistogramBinarizer(source)), - mapOf(DecodeHintType.TRY_HARDER to true) - ) - } catch (e: NotFoundException) { - qrReader.decode( - BinaryBitmap(GlobalHistogramBinarizer(source.invert())), - mapOf(DecodeHintType.TRY_HARDER to true) - ) + return bitmap?.let { + runCatching { + val pixels = IntArray(it.width * it.height).also { array -> + it.getPixels(array, 0, it.width, 0, 0, it.width, it.height) } - return result.text - } catch (e: Exception) { - e.printStackTrace() - } - } catch (e: Exception) { - e.printStackTrace() - } + val source = RGBLuminanceSource(it.width, it.height, pixels) + val qrReader = QRCodeReader() - return null + try { + qrReader.decode(BinaryBitmap(GlobalHistogramBinarizer(source)), mapOf(DecodeHintType.TRY_HARDER to true)).text + } catch (e: NotFoundException) { + qrReader.decode(BinaryBitmap(GlobalHistogramBinarizer(source.invert())), mapOf(DecodeHintType.TRY_HARDER to true)).text + } + }.getOrNull() + } } + /** * 将本地图片文件转换成可解码二维码的 Bitmap。为了避免图片太大,这里对图片进行了压缩。感谢 https://github.com/devilsen 提的 PR * @@ -149,6 +116,6 @@ object QRCodeDecoder { ) HINTS[DecodeHintType.TRY_HARDER] = BarcodeFormat.QR_CODE HINTS[DecodeHintType.POSSIBLE_FORMATS] = allFormats - HINTS[DecodeHintType.CHARACTER_SET] = "utf-8" + HINTS[DecodeHintType.CHARACTER_SET] = Charsets.UTF_8 } } diff --git a/yass/.github/workflows/releases-rpm.yml b/yass/.github/workflows/releases-rpm.yml index 72a8741efb..965b4fd32f 100644 --- a/yass/.github/workflows/releases-rpm.yml +++ b/yass/.github/workflows/releases-rpm.yml @@ -45,7 +45,7 @@ jobs: container: - 'centos8' - 'centos9' - - 'fedora39' + - 'fedora40' - 'alpine320' - 'i386-alpine320' - 'armhf-alpine320' @@ -95,16 +95,15 @@ jobs: # - container: 'centos9' # gui_variant: qt6 # use_cet: true - # - container: 'fedora39' + # - container: 'fedora40' # gui_variant: gtk3 # use_cet: true - # - container: 'fedora39' + # - container: 'fedora40' # gui_variant: gtk4 # use_cet: true # https://rpmfind.net/linux/rpm2html/search.php?query=glibc-devel&submit=Search+...&system=&arch= - # glibc: 2.38 for fedora39 # glibc: 2.39 for fedora40 - # - container: 'fedora39' + # - container: 'fedora40' # gui_variant: qt6 # use_cet: true # for opensuse users, you can use centos7's rpm packages diff --git a/yass/docker/fedora39.Dockerfile b/yass/docker/fedora40.Dockerfile similarity index 98% rename from yass/docker/fedora39.Dockerfile rename to yass/docker/fedora40.Dockerfile index 13d62ba272..b913ffaba7 100644 --- a/yass/docker/fedora39.Dockerfile +++ b/yass/docker/fedora40.Dockerfile @@ -1,4 +1,4 @@ -FROM fedora:39 +FROM fedora:40 # Install requirements : update repo and install all requirements RUN yum clean all && \ diff --git a/yt-dlp/README.md b/yt-dlp/README.md index 70bbf3da19..418203eea9 100644 --- a/yt-dlp/README.md +++ b/yt-dlp/README.md @@ -1791,7 +1791,7 @@ The following extractors use this feature: * `key_query`: Passthrough the master m3u8 URL query to its HLS AES-128 decryption key URI if no value is provided, or else apply the query string given as `key_query=VALUE`. Note that this will have no effect if the key URI is provided via the `hls_key` extractor-arg. Does not apply to ffmpeg * `hls_key`: An HLS AES-128 key URI *or* key (as hex), and optionally the IV (as hex), in the form of `(URI|KEY)[,IV]`; e.g. `generic:hls_key=ABCDEF1234567980,0xFEDCBA0987654321`. Passing any of these values will force usage of the native HLS downloader and override the corresponding values found in the m3u8 playlist * `is_live`: Bypass live HLS detection and manually set `live_status` - a value of `false` will set `not_live`, any other value (or no value) will set `is_live` -* `impersonate`: Target(s) to try and impersonate with the initial webpage request; e.g. `safari,chrome-110`. By default any available target will be used. Use `false` to disable impersonation +* `impersonate`: Target(s) to try and impersonate with the initial webpage request; e.g. `generic:impersonate=safari,chrome-110`. Use `generic:impersonate` to impersonate any available target, and use `generic:impersonate=false` to disable impersonation (default) #### funimation * `language`: Audio languages to extract, e.g. `funimation:language=english,japanese` diff --git a/yt-dlp/yt_dlp/extractor/generic.py b/yt-dlp/yt_dlp/extractor/generic.py index 9b5421e41d..320a47772b 100644 --- a/yt-dlp/yt_dlp/extractor/generic.py +++ b/yt-dlp/yt_dlp/extractor/generic.py @@ -8,6 +8,8 @@ from .common import InfoExtractor from .commonprotocols import RtmpIE from .youtube import YoutubeIE from ..compat import compat_etree_fromstring +from ..cookies import LenientSimpleCookie +from ..networking.exceptions import HTTPError from ..networking.impersonate import ImpersonateTarget from ..utils import ( KNOWN_EXTENSIONS, @@ -2374,10 +2376,9 @@ class GenericIE(InfoExtractor): else: video_id = self._generic_id(url) - # Try to impersonate a web-browser by default if possible - # Skip impersonation if not available to omit the warning - impersonate = self._configuration_arg('impersonate', ['']) - if 'false' in impersonate or not self._downloader._impersonate_target_available(ImpersonateTarget()): + # Do not impersonate by default; see https://github.com/yt-dlp/yt-dlp/issues/11335 + impersonate = self._configuration_arg('impersonate', ['false']) + if 'false' in impersonate: impersonate = None # Some webservers may serve compressed content of rather big size (e.g. gzipped flac) @@ -2388,10 +2389,29 @@ class GenericIE(InfoExtractor): # to accept raw bytes and being able to download only a chunk. # It may probably better to solve this by checking Content-Type for application/octet-stream # after a HEAD request, but not sure if we can rely on this. - full_response = self._request_webpage(url, video_id, headers=filter_dict({ - 'Accept-Encoding': 'identity', - 'Referer': smuggled_data.get('referer'), - }), impersonate=impersonate) + try: + full_response = self._request_webpage(url, video_id, headers=filter_dict({ + 'Accept-Encoding': 'identity', + 'Referer': smuggled_data.get('referer'), + }), impersonate=impersonate) + except ExtractorError as e: + if not (isinstance(e.cause, HTTPError) and e.cause.status == 403 + and e.cause.response.get_header('cf-mitigated') == 'challenge' + and e.cause.response.extensions.get('impersonate') is None): + raise + cf_cookie_domain = traverse_obj( + LenientSimpleCookie(e.cause.response.get_header('set-cookie')), + ('__cf_bm', 'domain')) + if cf_cookie_domain: + self.write_debug(f'Clearing __cf_bm cookie for {cf_cookie_domain}') + self.cookiejar.clear(domain=cf_cookie_domain, path='/', name='__cf_bm') + msg = 'Got HTTP Error 403 caused by Cloudflare anti-bot challenge; ' + if not self._downloader._impersonate_target_available(ImpersonateTarget()): + msg += ('see https://github.com/yt-dlp/yt-dlp#impersonation for ' + 'how to install the required impersonation dependency, and ') + raise ExtractorError( + f'{msg}try again with --extractor-args "generic:impersonate"', expected=True) + new_url = full_response.url if new_url != extract_basic_auth(url)[0]: self.report_following_redirect(new_url)