diff --git a/AppConfig.json b/AppConfig.json index 36ca5bd..dcffe46 100644 --- a/AppConfig.json +++ b/AppConfig.json @@ -1,5 +1,5 @@ { - "APP_VERSION": "10.0.0", + "APP_VERSION": "10.0.1", "APP_NAME": "X Prober", "APP_URL": "https://github.com/kmvan/x-prober", "AUTHOR_URL": "https://inn-studio.com/prober", diff --git a/CHANGELOG.md b/CHANGELOG.md index 028306c..ef4015b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,1135 +1,1712 @@ -# Changelog +# Changelog / 更新日志 -All Notable changes to `X-Prober` will be documented in this file +`X-Prober` 的所有重要变更都将记录在此文件中 All Notable changes to `X-Prober` +will be documented in this file + +--- + +## 10.0.1 - 2026-07-14 + +### Fix / 修复 + +- 修复因 CSS Module 隔离导致的样式部分失效问题 +- Fixed partial style failure caused by CSS Module isolation + +### Optimize / 优化 + +- 优化 Ping 功能在某些情况下无法停止的问题 +- Improved the Ping feature to ensure it can be stopped reliably in all cases + +--- ## 10.0.0 - 2026-07-13 -### Breaking changes +### Breaking changes / 破坏性变更 -- Use toml instead of json for `xconfig.toml` config file -- Re-design UI and color +- 配置文件由 `xconfig.toml` 替代原有的 `xconfig.json` +- 重新设计了用户界面及配色方案 +- Use `xconfig.toml` instead of `xconfig.json` for configuration +- Completely redesigned UI and color palette -### Add +### Add / 新增 -- Add LiangYe(dark) and XiGuang(light) color scheme +- 新增“良夜”(深色)与“曦光”(浅色)两套配色主题 +- Added "LiangYe" (dark) and "XiGuang" (light) color schemes -### Fix +### Fix / 修复 -- Fix str_ function error in PHP5 -- Fix deprecated in filter_input function -- Fix COUNTINE keyword error in PHP5 +- 修复 PHP5 中 `str_*` 系列函数的兼容性错误 +- 修复 `filter_input` 函数在 PHP 中已弃用的警告 +- 修复 PHP5 中 `COUNTINE` 关键字错误 +- Fixed `str_*` function errors in PHP5 +- Fixed deprecated warnings in `filter_input` function +- Fixed `COUNTINE` keyword error in PHP5 -### Optimize +### Optimize / 优化 -- Use Zustand instead of MobX -- Update package -- Performance and UI +- 使用 Zustand 替代 MobX 作为状态管理库 +- 更新项目依赖包 +- 提升性能与界面交互体验 +- Replaced MobX with Zustand for state management +- Updated dependencies +- Improved performance and UI polish + +--- ## 9.1.1 - 2025-12-21 -### Fix +### Fix / 修复 -- Fix mb_ function error in PHP7/PHP5 +- 修复 PHP7/PHP5 中 `mb_*` 函数的兼容性错误 +- Fixed `mb_*` function errors in PHP7/PHP5 -### Optimize +### Optimize / 优化 -- Optimize interval data +- 优化数据刷新间隔逻辑 +- Optimized interval data fetching logic + +--- ## 9.1.0 - 2025-09-05 -### Add +### Add / 新增 -- Add Browser bechmark +- 新增浏览器性能测试(Browser Benchmark) +- Added Browser Benchmark feature + +--- ## 9.0.8 - 2025-09-01 -### Add +### Add / 新增 -- Add Browser bechmark placeholder +- 增加浏览器性能测试的占位界面 +- Added placeholder UI for Browser Benchmark -### Fix +### Fix / 修复 -- Fix Nginx auth_basic error +- 修复 Nginx `auth_basic` 认证错误 +- Fixed Nginx `auth_basic` authentication error -### Optimize +### Optimize / 优化 -- Fix font style +- 调整字体样式 +- Adjusted font styles + +--- ## 9.0.7 - 2025-08-16 -### Add +### Add / 新增 -- Add "Ping" feature +- 新增「Ping」检测功能 +- Added "Ping" feature -### Optimize +### Optimize / 优化 -- Optimize languages -- Optimize toast style +- 优化多语言文案 +- 优化 Toast 提示样式 +- Improved language translations +- Refined toast notification styles + +--- ## 9.0.6 - 2025-08-16 -### Optimize +### Optimize / 优化 -- Optimize nav item text -- Optimize languages text\ -- Optimize style +- 优化导航栏文字内容 +- 优化多语言文案 +- 优化整体样式细节 +- Improved navigation item text +- Refined language translations +- Polished UI styles + +--- ## 9.0.5 - 2025-08-14 -### Fix +### Fix / 修复 -- Fix nodes error +- 修复节点信息获取错误 +- Fixed nodes data fetching error + +--- ## 9.0.4 - 2025-08-14 -### Fix +### Fix / 修复 -- Fix array_find function in PHP5.4 error +- 修复 PHP5.4 中 `array_find` 函数不存在的问题 +- Fixed `array_find` function not available in PHP5.4 + +--- ## 9.0.3 - 2025-08-14 -### Fix +### Fix / 修复 -- Fix nodes API error -- Fix footer style -- Adjust php version text +- 修复节点 API 请求错误 +- 修复页脚样式异常 +- 调整 PHP 版本显示文案 +- Fixed nodes API error +- Fixed footer styling issue +- Adjusted PHP version display text + +--- ## 9.0.2 - 2025-08-14 -### Fix +### Fix / 修复 -- Fix update version error +- 修复版本更新检测错误 +- Fixed version update detection error + +--- ## 9.0.1 - 2025-08-14 -### Fix +### Fix / 修复 -- Fix footer not showing app name error +- 修复页脚未正确显示应用名称的问题 +- Fixed footer not showing application name + +--- ## 9.0.0 - 2025-08-13 -### Rewrite +### Rewrite / 重写 -- Redesign UI -- Recode all features -- Remove Webpack -- Add Vite -- Add React 19 +- 重新设计用户界面 +- 重构所有功能模块 +- 移除 Webpack,改用 Vite +- 升级至 React 19 +- Redesigned UI from scratch +- Rewrote all feature modules +- Replaced Webpack with Vite +- Upgraded to React 19 + +--- ## 8.20.0 - 2025-03-23 -### Fix +### Fix / 修复 -- Fix #224 +- 修复 #224 反馈的问题 +- Fixed issue #224 + +--- ## 8.19.0 - 2024-08-18 -### Optimize +### Optimize / 优化 -- Adjust is_readable function warning +- 调整 `is_readable` 函数调用时的警告处理 +- Adjusted warning handling for `is_readable` function + +--- ## 8.18.0 - 2024-07-27 -### Add +### Add / 新增 -- Add ARM CPU detection +- 增加 ARM 架构 CPU 检测 +- Added ARM CPU detection -### Optimize +### Optimize / 优化 -- Optimize disk usage detection +- 优化磁盘使用率检测逻辑 +- Optimized disk usage detection + +--- ## 8.17.0 - 2023-12-31 -### Add +### Add / 新增 -- Add detail disk usage +- 增加磁盘使用详情展示 +- Added detailed disk usage information -### Optimize +### Optimize / 优化 -- Optimize style +- 优化界面样式 +- Optimized UI styles + +--- ## 8.16.0 - 2022-12-14 -### Add +### Add / 新增 -- Add server benchmark cooldown config +- 增加服务器性能测试冷却时间配置项 +- Added configurable cooldown for server benchmark + +--- ## 8.15.0 - 2022-12-08 -### Optimize +### Optimize / 优化 -- Optimize style +- 优化界面样式 +- Optimized UI styles + +--- ## 8.14.0 - 2022-11-14 -### Add +### Add / 新增 -- Add dark mode +- 新增深色模式 +- Added dark mode + +--- ## 8.13.0 - 2022-11-14 -### Fix +### Fix / 修复 -- Fix body color +- 修复页面背景色异常 +- Fixed body color issue + +--- ## 8.12.0 - 2022-11-14 -### Remove +### Remove / 移除 -- Remove `styled-components` -- Remove dark mode (soming soon) +- 移除 `styled-components` 依赖 +- 移除深色模式(即将回归) +- Removed `styled-components` +- Removed dark mode (coming back soon) -### Remove +### Remove / 移除 -- Remove PHP5.3 compatibility +- 移除对 PHP5.3 的兼容支持 +- Dropped PHP5.3 compatibility + +--- ## 8.11.0 - 2022-10-22 -### Remove +### Remove / 移除 -- Remove PHP5.3 compatibility +- 移除对 PHP5.3 的兼容支持 +- Dropped PHP5.3 compatibility -### Optimize +### Optimize / 优化 -- Update packages +- 更新项目依赖包 +- Updated dependencies + +--- ## 8.10.0 - 2022-06-19 -### Add +### Add / 新增 -- Add PDO database driver detector +- 新增 PDO 数据库驱动检测 +- Added PDO database driver detector + +--- ## 8.9.0 - 2022-04-02 -### Optimize +### Optimize / 优化 -- Remove babel-loader -- Upgrade to React 18 -- Optimize file update logic +- 移除 babel-loader +- 升级至 React 18 +- 优化文件更新逻辑 +- Removed babel-loader +- Upgraded to React 18 +- Optimized file update logic + +--- ## 8.8.0 - 2022-01-08 -### Fix +### Fix / 修复 -- Fix `ping` feature error +- 修复 `ping` 功能报错 +- Fixed `ping` feature error -### Optimize +### Optimize / 优化 -- Optimize bold font style +- 优化粗体字体样式 +- Optimized bold font style + +--- ## 8.7.0 - 2021-12-05 -### Fix +### Fix / 修复 -- Fix `pow` function in php5.4 +- 修复 PHP5.4 中 `pow` 函数的兼容性错误 +- Fixed `pow` function error in PHP5.4 + +--- ## 8.6.0 - 2021-10-25 -### Fix +### Fix / 修复 -- Fix my server benchmark button error +- 修复“我的服务器性能测试”按钮点击错误 +- Fixed "My Server Benchmark" button error + +--- ## 8.5.0 - 2021-10-19 -### Fix +### Fix / 修复 -- Fix FILTER_SANITIZE_STRING error in PHP8.1 +- 修复 PHP8.1 中 `FILTER_SANITIZE_STRING` 已弃用的问题 +- Fixed `FILTER_SANITIZE_STRING` deprecation in PHP8.1 -### Optimize +### Optimize / 优化 + +- 内部优化 +- Internal improvements + +--- ## 8.4.0 - 2021-10-18 -### Optimize +### Optimize / 优化 -- Optimize store for Mobx6 -- Update packages +- 优化 MobX 6 状态存储层 +- 更新项目依赖包 +- Optimized store for MobX 6 +- Updated dependencies + +--- ## 8.3.0 - 2021-08-16 -### Fix +### Fix / 修复 -- Fix `mb_substr_count` function +- 修复 `mb_substr_count` 函数兼容性问题 +- Fixed `mb_substr_count` function issue + +--- ## 8.2.0 - 2021-08-14 -### Fix +### Fix / 修复 -- Fix progress bar color error +- 修复进度条颜色显示错误 +- Fixed progress bar color error + +--- ## 8.1.0 - 2021-08-14 -### Optimize +### Optimize / 优化 -- Optimize page max width -- ESlint fix +- 优化页面最大宽度 +- ESLint 代码规范修复 +- Optimized page max width +- Fixed ESLint warnings + +--- ## 8.0.0 - 2021-07-13 -### Add +### Add / 新增 -- New server benchmarks +- 全新服务器性能测试功能 +- Brand new server benchmarks + +--- ## 7.7.0 - 2021-06-30 -### Fix +### Fix / 修复 -- Fix duplicate IPv4/IPv6 items +- 修复 IPv4/IPv6 信息项重复显示问题 +- Fixed duplicate IPv4/IPv6 items + +--- ## 7.6.0 - 2021-06-28 -### Optimize +### Optimize / 优化 -- Optimize server info view performance -- Update packages -- Update eslint +- 优化服务器信息视图渲染性能 +- 更新项目依赖包 +- 更新 ESLint 配置 +- Optimized server info view performance +- Updated dependencies +- Updated ESLint config + +--- ## 7.5.0 - 2021-04-10 -### Fix +### Fix / 修复 -- Fix system load update error +- 修复系统负载更新错误 +- Fixed system load update error + +--- ## 7.4.0 - 2021-02-25 -### Add +### Add / 新增 -- Add PHP8 Opcache JIT detector +- 新增 PHP8 Opcache JIT 检测器 +- Added PHP8 Opcache JIT detector -### Fix +### Fix / 修复 -- Fix `build-lang.js` script lodash error -- Fix Japanese translation errors +- 修复 `build-lang.js` 脚本中 lodash 报错 +- 修复日语翻译错误 +- Fixed lodash error in `build-lang.js` script +- Fixed Japanese translation errors + +--- ## 7.3.0 - 2021-02-24 -### Fix +### Fix / 修复 -- Fix null coalescing operator in PHP5 +- 修复 PHP5 中 null 合并运算符的兼容问题 +- Fixed null coalescing operator in PHP5 -### Optimize +### Optimize / 优化 -- Optimize nav module -- Optimize IP text display -- Optimize location text display -- Use PNPM instead of npm +- 优化导航模块 +- 优化 IP 地址显示文本 +- 优化地理位置显示文本 +- 使用 PNPM 替代 npm +- Optimized nav module +- Improved IP text display +- Improved location text display +- Switched to PNPM instead of npm + +--- ## 7.2.0 - 2021-02-18 -### Optimize +### Optimize / 优化 -- Optimize IPv4/v6 text description -- Optimize nav style -- Optimize title style -- Optimize progress bar style -- Adjust js to ES2016 scheme +- 优化 IPv4/v6 文字描述 +- 优化导航栏样式 +- 优化标题样式 +- 优化进度条样式 +- 调整 JS 至 ES2016 规范 +- Improved IPv4/v6 text descriptions +- Refined nav styles +- Refined title styles +- Refined progress bar styles +- Adjusted JS to ES2016 scheme + +--- ## 7.1.0 - 2021-02-17 -### Fix +### Fix / 修复 -- Fix Zend "Optimizer" typo (by Jack Cherng) +- 修复 Zend "Optimizer" 拼写错误(感谢 Jack Cherng) +- Fixed typo in Zend "Optimizer" (thanks Jack Cherng) -### Optimize +### Optimize / 优化 -- Optimize default color scheme, make it more refined -- Optimize dark color scheme, make it more dark +- 优化默认配色,使其更精致 +- 优化深色配色,使其更深邃 +- Refined default color scheme +- Enhanced dark color scheme + +--- ## 7.0.0 - 2021-02-13 -### Add +### Add / 新增 -- Add dark mode -- Add server IPv4/IPv6 information -- Add server IPv4 location information -- Add my IPv4/IPv6 information -- Add my IPv4 location information +- 新增深色模式 +- 新增服务器 IPv4/IPv6 信息 +- 新增服务器 IPv4 地理位置信息 +- 新增本机 IPv4/IPv6 信息 +- 新增本机 IPv4 地理位置信息 +- Added dark mode +- Added server IPv4/IPv6 information +- Added server IPv4 location information +- Added my IPv4/IPv6 information +- Added my IPv4 location information -### Adjust +### Adjust / 调整 -- Adjust color schemes +- 调整整体配色方案 +- Adjusted color schemes + +--- ## 6.7.0 - 2021-01-28 -### Add +### Add / 新增 -- Add server benchmarks copy feature +- 增加服务器性能测试结果复制功能 +- Added copy feature for server benchmark results -### Optimize +### Optimize / 优化 -- Optimize style color -- Optimize HTML structure +- 优化颜色样式 +- 优化 HTML 结构 +- Optimized color styles +- Optimized HTML structure + +--- ## 6.6.0 - 2020-12-31 -### Update +### Update / 更新 -- Rewrite fetch action -- Update PHP stable version +- 重构数据获取逻辑 +- 更新 PHP 稳定版本号 +- Rewrote fetch actions +- Updated PHP stable version + +--- ## 6.5.0 - 2020-10-29 -### Update +### Update / 更新 -- Code with React hooks +- 使用 React Hooks 重构代码 +- Refactored with React Hooks + +--- ## 6.3.0 - 2020-10-18 -### Update +### Update / 更新 -- Update webpack to 5.1 and re-configure -- Update packages +- 升级 Webpack 至 5.1 并重新配置 +- 更新项目依赖包 +- Upgraded Webpack to 5.1 and re-configured +- Updated dependencies -### Fix +### Fix / 修复 -- Fix `mysqli_get_client_version()` should have no args in PHP 8 (Jack Cherng - #104) +- 修复 PHP 8 中 `mysqli_get_client_version()` 不应带参数的问题(感谢 Jack Cherng + #104) +- Fixed `mysqli_get_client_version()` should not have arguments in PHP 8 (thanks + Jack Cherng #104) + +--- ## 6.2.0 - 2020-09-18 -### Add +### Add / 新增 -- Add server IP feature switch +- 增加服务器 IP 显示开关 +- Added server IP feature toggle -### Update +### Update / 更新 -- Update npm packages +- 更新 npm 依赖包 +- Updated npm packages + +--- ## 6.1.0 - 2020-08-20 -### Fix +### Fix / 修复 -- Fix nodes networks speed error +- 修复节点网络速率显示错误 +- Fixed nodes network speed display error + +--- ## 6.0.0 - 2020-08-19 -### Add +### Add / 新增 -- Add Nodes feature +- 新增节点(Nodes)功能 +- Added Nodes feature + +--- ## 5.0.0 - 2020-08-11 -### Add +### Add / 新增 -- Add color schemes +- 新增多套配色方案 +- Added color schemes + +--- ## 4.10.0 - 2020-08-11 -### Add +### Add / 新增 -- Add `xconfig.json` for probe config settings -- Add disable features config settings -- Add more script for development +- 新增 `xconfig.json` 配置文件,用于探针设置 +- 添加功能禁用配置项 +- 增加更多开发脚本 +- Added `xconfig.json` for probe configuration +- Added feature disable settings +- Added more development scripts + +--- ## 4.9.0 - 2020-06-06 -### Optimize +### Optimize / 优化 -- Optimize network stat for some devices +- 优化部分设备的网络统计显示 +- Optimized network stats for some devices + +--- ## 4.8.0 - 2020-05-04 -### Add +### Add / 新增 -- Add start up animation +- 添加启动动画 +- Added startup animation -### Update +### Update / 更新 -- Update GPL2.0 to GPL3.0 +- 许可证由 GPL2.0 升级至 GPL3.0 +- Updated license from GPL2.0 to GPL3.0 -### Optimize +### Optimize / 优化 -- Micro style optimization +- 微小的样式优化 +- Minor style tweaks + +--- ## 4.7.0 - 2020-04-25 -### Fix +### Fix / 修复 -- Fix memory refresh error +- 修复内存刷新错误 +- Fixed memory refresh error -### Update +### Update / 更新 -- Update Nginx stable version -- Update SQLite3 stable version -- Update MySQLi client version +- 更新 Nginx 稳定版版本号 +- 更新 SQLite3 稳定版版本号 +- 更新 MySQLi 客户端版本号 +- Updated Nginx stable version +- Updated SQLite3 stable version +- Updated MySQLi client version -### Optimize +### Optimize / 优化 -- Remove lodash lib, reduce js size +- 移除 lodash 库,减小 JS 文件体积 +- Removed lodash to reduce JS bundle size + +--- ## 4.6.0 - 2020-04-22 -### Fix +### Fix / 修复 -- Fix large number error on 32bit OS +- 修复 32 位操作系统下大数字显示错误 +- Fixed large number error on 32-bit OS + +--- ## 4.5.0 - 2020-04-10 -### Optimize +### Optimize / 优化 -- Optimize language display +- 优化语言显示效果 +- Optimized language display + +--- ## 4.4.0 - 2020-04-08 -### Update +### Update / 更新 -- Update package +- 更新项目依赖包 +- Updated packages + +--- ## 4.3.0 - 2020-02-22 -### Add +### Add / 新增 -- Add memory usage description +- 增加内存使用情况说明 +- Added memory usage description -### Optimize +### Optimize / 优化 -- Optimize UI color -- Optimize Ping button style +- 优化界面颜色 +- 优化 Ping 按钮样式 +- Optimized UI colors +- Refined Ping button style + +--- ## 4.2.0 - 2020-02-06 -### Optimize +### Optimize / 优化 -- Reduce JS file size +- 减小 JS 文件体积 +- Reduced JS file size -### Add +### Add / 新增 -- Add `php-dev.sh` for dev -- Add babel loader for prod +- 新增 `php-dev.sh` 开发辅助脚本 +- 生产环境增加 babel-loader +- Added `php-dev.sh` for development +- Added babel-loader for production -### Update +### Update / 更新 -- Update package +- 更新项目依赖包 +- Updated packages + +--- ## 4.1.0 - 2020-01-30 -### Add +### Add / 新增 -- Add disk real-time usage +- 增加磁盘实时使用率展示 +- Added real-time disk usage -### Optimize +### Optimize / 优化 -- Optimize system load description -- Remove babel -- Adjust interface name rule +- 优化系统负载描述 +- 移除 babel +- 调整接口命名规范 +- Optimized system load description +- Removed babel +- Adjusted interface naming convention + +--- ## 4.0.0 - 2020-01-13 -### Add +### Add / 新增 +- 全新模块可排序功能 - New module sortability -### Optimize +### Optimize / 优化 -- Optimize progress performance -- Optimize text case +- 优化进度条性能 +- 优化文本大小写 +- Optimized progress performance +- Optimized text case + +--- ## 3.11.0 - 2020-01-12 -### Add +### Add / 新增 -- Add `extensions` dir for future extensions +- 增加 `extensions` 目录以备未来扩展 +- Added `extensions` directory for future extensions -### Optimize +### Optimize / 优化 -- Optimize temperature sensor display +- 优化温度传感器显示 +- Optimized temperature sensor display + +--- ## 3.10.0 - 2020-01-10 -### Fix +### Fix / 修复 -- Fix bottom nav item switch +- 修复底部导航项切换问题 +- Fixed bottom nav item switch -### Optimize +### Optimize / 优化 -- Adjust colors +- 调整颜色搭配 +- Adjusted colors + +--- ## 3.9.0 - 2020-01-09 -### Add +### Add / 新增 -- Add Temperature sensor feature (#7) -- Add Navbar scrollable on mobile view +- 新增温度传感器功能 (#7) +- 导航栏在移动端可滚动 +- Added temperature sensor feature (#7) +- Navbar scrollable on mobile view -### Fix +### Fix / 修复 -- Fix language json file path error (for dev) +- 修复开发环境下语言 JSON 文件路径错误 +- Fixed language JSON file path error (for dev) + +--- ## 3.8.0 - 2020-01-06 -### Optimize +### Optimize / 优化 -- Optimize bootstrap code +- 优化引导加载代码 +- Optimized bootstrap code -### Update +### Update / 更新 -- Update benchmarks -- Update package +- 更新性能测试基准数据 +- 更新项目依赖包 +- Updated benchmarks +- Updated packages + +--- ## 3.7.0 - 2019-12-03 -### Add +### Add / 新增 -- Add multi update check sources +- 增加多个更新检查源 +- Added multiple update check sources + +--- ## 3.6.0 - 2019-11-20 -### Fix +### Fix / 修复 -- Fix mbstring extension detection +- 修复 mbstring 扩展检测问题 +- Fixed mbstring extension detection -### Update +### Update / 更新 -- Update translation: zh_TW +- 更新繁体中文(zh_TW)翻译 +- Updated zh_TW translation + +--- ## 3.5.0 - 2019-11-20 -### Add +### Add / 新增 -- Add http authorization +- 增加 HTTP 认证支持 +- Added HTTP authorization -### Update +### Update / 更新 -- Update SQLite3 version +- 更新 SQLite3 版本号 +- Updated SQLite3 version + +--- ## 3.4.0 - 2019-10-21 -### Optimize +### Optimize / 优化 -- Rename components of styled-components +- 重命名 styled-components 组件 +- Renamed styled-components components + +--- ## 3.3.0 - 2019-09-19 -### Optimize +### Optimize / 优化 -- Optimize notch position -- Optimize languages generation tool +- 优化缺口位置 +- 优化语言生成工具 +- Optimized notch position +- Optimized language generation tool -### Update +### Update / 更新 -- Update Nginx version to 1.16.1 +- 更新 Nginx 版本至 1.16.1 +- Updated Nginx version to 1.16.1 + +--- ## 3.2 - 2019-08-03 -### Fix +### Fix / 修复 -- Fix progress bar color error in old browser +- 修复旧版浏览器中进度条颜色错误 +- Fixed progress bar color error in older browsers + +--- ## 3.1 - 2019-08-01 -### Optimize +### Optimize / 优化 -- Optimize page scroller -- Optimize viewer size +- 优化页面滚动体验 +- 优化视图显示尺寸 +- Optimized page scroller +- Optimized viewer size + +--- ## 3.0 - 2019-08-31 -### Add +### Add / 新增 +- 独立的 PING 功能 +- 纯 JS 渲染信息 +- 支持 2K/4K 分辨率 +- 增加 Windows 下 CPU 使用率 - Independent PING feature -- Only JS to render information -- Support 2k/4k resolution -- Add CPU usage for Windows +- Pure JS rendering +- Support for 2K/4K resolution +- Added CPU usage for Windows -### Optimize +### Optimize / 优化 -- Optimize languages -- Tiny server benchmarks items +- 优化多语言文案 +- 精简服务器性能测试项目 +- Optimized language translations +- Trimmed server benchmark items + +--- ## 2.4.5 - 2019-08-04 -### Update +### Update / 更新 -- Update lastest PHP version to 7.3.8 +- 更新最新 PHP 版本至 7.3.8 +- Updated latest PHP version to 7.3.8 + +--- ## 2.4.4 - 2019-07-11 -### Fix +### Fix / 修复 -- Fix lodash security vulnerabilities +- 修复 lodash 安全漏洞 +- Fixed lodash security vulnerabilities + +--- ## 2.4.3 - 2019-07-06 -### Fix +### Fix / 修复 -- Fix #31 division by zero error +- 修复 #31 除零错误 +- Fixed #31 division by zero error -### Update +### Update / 更新 -- Update PHP lastest version 7.3.7 +- 更新最新 PHP 版本至 7.3.7 +- Updated latest PHP version to 7.3.7 + +--- ## 2.4.2 - 2019-06-10 -### Update +### Update / 更新 -- Update PHP lastest version 7.3.6 -- Update SpartanHost benchmarks +- 更新最新 PHP 版本至 7.3.6 +- 更新 SpartanHost 性能测试数据 +- Updated latest PHP version to 7.3.6 +- Updated SpartanHost benchmarks -### Fix +### Fix / 修复 -- Fix `tar` package +- 修复 `tar` 包问题 +- Fixed `tar` package + +--- ## 2.4.1 - 2019-05-24 -### Optimize +### Optimize / 优化 -- Optimize `position:fixed` performance +- 优化 `position:fixed` 性能 +- Optimized `position:fixed` performance + +--- ## 2.4.0 - 2019-05-14 -### Add +### Add / 新增 -- Add Ping Server feature +- 新增 Ping 服务器功能 +- Added Ping Server feature -### Update +### Update / 更新 -- Update PHP version to 7.3.5 -- Update NGINX version to 1.16.0 -- Update SQLite version to 3.28.0 +- 更新 PHP 版本至 7.3.5 +- 更新 NGINX 版本至 1.16.0 +- 更新 SQLite 版本至 3.28.0 +- Updated PHP version to 7.3.5 +- Updated NGINX version to 1.16.0 +- Updated SQLite version to 3.28.0 + +--- ## 2.3.2 - 2019-04-07 -### Update +### Update / 更新 -- Update PHP version to 7.3.4 +- 更新 PHP 版本至 7.3.4 +- Updated PHP version to 7.3.4 + +--- ## 2.3.1 - 2019-03-16 -### Optimize +### Optimize / 优化 -- Change fork me image to HTML text -- Remove Microsoft YaHei/YaHei UI fonts -- Adjust vscode settings profile -- Adjust php-cs-fixer config +- 将“Fork me”图片改为 HTML 文字 +- 移除 Microsoft YaHei/YaHei UI 字体 +- 调整 VSCode 配置 +- 调整 php-cs-fixer 配置 +- Changed "Fork me" image to HTML text +- Removed Microsoft YaHei/YaHei UI fonts +- Adjusted VSCode settings +- Adjusted php-cs-fixer config + +--- ## 2.3.0 - 2019-03-15 -### Add +### Add / 新增 -- Add multi update sources -- Add NGINX latest version tip +- 增加多个更新源 +- 增加 NGINX 最新版本提示 +- Added multiple update sources +- Added NGINX latest version tip + +--- ## 2.2.2 - 2019-03-14 -### Fix +### Fix / 修复 -- Fix error on Windows +- 修复 Windows 下的错误 +- Fixed error on Windows + +--- ## 2.2.1 - 2019-03-13 -### Optimize +### Optimize / 优化 -- Optimize class name HTML +- 优化 HTML class 命名 +- Optimized HTML class names + +--- ## 2.2.0 - 2019-03-09 -### Add +### Add / 新增 -- Add debug mode for compiler -- Add bin download for network speed testing (server benchmark) -- Add prober page (server benchmark) -- Add sleep operating when doing server benchmark -- Add latest PHP version 7.3.3 -- Add 1Gbits server benchmark +- 编译增加调试模式 +- 网络测速(服务器性能测试)增加二进制下载 +- 增加探针页面(服务器性能测试) +- 执行服务器性能测试时增加休眠操作 +- 增加最新 PHP 版本 7.3.3 +- 增加 1Gbits 服务器性能测试 +- Added debug mode for compiler +- Added binary download for network speed testing (server benchmark) +- Added prober page (server benchmark) +- Added sleep operation during server benchmark +- Added latest PHP version 7.3.3 +- Added 1Gbits server benchmark -### Optimize +### Optimize / 优化 -- Change `seconds` to `s` +- 将 `seconds` 简写为 `s` +- Changed `seconds` to `s` + +--- ## 2.1.8 - 2019-03-05 -### Add +### Add / 新增 -- Disable cache for fetch request +- 对 fetch 请求禁用缓存 +- Disable cache for fetch requests + +--- ## 2.1.7 - 2019-03-02 -### Optimize +### Optimize / 优化 -- Optimize clean opcache operation after update +- 优化更新后清理 OPCACHE 缓存的操作 +- Optimized OPCACHE cache clearing after update + +--- ## 2.1.6 - 2019-03-01 -### Add +### Add / 新增 -- Add server benchmark date -- Add APP config file -- Add progress high light style -- add SQLite3 ext detection -- add SimpleXML ext detection +- 增加服务器性能测试日期 +- 增加 APP 配置文件 +- 增加进度条高亮样式 +- 增加 SQLite3 扩展检测 +- 增加 SimpleXML 扩展检测 +- Added server benchmark date +- Added APP config file +- Added progress highlight style +- Added SQLite3 extension detection +- Added SimpleXML extension detection -### Optimize +### Optimize / 优化 -- Optimize server benchmark style -- Optimize module title style for firefox +- 优化服务器性能测试样式 +- 优化 Firefox 下模块标题样式 +- Optimized server benchmark style +- Optimized module title style for Firefox + +--- ## 2.1.5 - 2019-02-20 -### Add +### Add / 新增 -- Add detail information benchmark -- Add Monovm benchmark result +- 增加详细信息性能测试 +- 增加 Monovm 性能测试结果 +- Added detailed benchmark information +- Added Monovm benchmark results -### Fix +### Fix / 修复 -- Fix zero value text description error in progress +- 修复进度条中零值文字描述错误 +- Fixed zero value text description error in progress + +--- ## 2.1.4 - 2019-02-19 -### Add +### Add / 新增 -- Add memory real usage +- 增加内存真实使用率 +- Added real memory usage -### Optimize +### Optimize / 优化 -- Optimize memory cache/buffers usage information +- 优化内存 cache/buffers 使用信息 +- Optimized memory cache/buffers usage information + +--- ## 2.1.3 - 2019-02-14 -### Add +### Add / 新增 -- Add Google search keyword +- 增加 Google 搜索关键字 +- Added Google search keyword + +--- ## 2.1.2 - 2019-02-11 -### Update +### Update / 更新 -- Update latest version to PHP 7.3.2 +- 更新最新 PHP 版本至 7.3.2 +- Updated latest PHP version to 7.3.2 + +--- ## 2.1.1 - 2019-02-09 -### Add +### Add / 新增 -- Add Vultr PHP7.3 benchmarks -- Update package assets +- 增加 Vultr PHP7.3 性能测试数据 +- 更新资源文件 +- Added Vultr PHP7.3 benchmarks +- Updated package assets + +--- ## 2.1.0 - 2019-01-29 -### Add +### Add / 新增 -- Add Memory cached/buffers info -- Add Swap cached info +- 增加内存 cached/buffers 信息 +- 增加 Swap cached 信息 +- Added memory cached/buffers info +- Added swap cached info + +--- ## 2.0.9 - 2019-01-28 -### Add +### Add / 新增 -- Add assets file cache header +- 增加资源文件缓存头 +- Added assets file cache header -### Fix +### Fix / 修复 -- Fix #14 (disk usage) +- 修复 #14(磁盘使用率) +- Fixed #14 (disk usage) -### Optimize +### Optimize / 优化 -- Optimize item lists style +- 优化条目列表样式 +- Optimized item list styles + +--- ## 2.0.8 - 2019-01-27 -### Optimize +### Optimize / 优化 -- Optimize style, looks nore comfortable -- Adjust PHP loaded extensions position +- 优化样式,视觉更舒适 +- 调整 PHP 已加载扩展的位置 +- Optimized styles for better comfort +- Adjusted PHP loaded extensions position -### Add +### Add / 新增 -- Add Japanese language +- 增加日语翻译 +- Added Japanese language + +--- ## 2.0.7 - 2019-01-22 -### Fix +### Fix / 修复 -- Fix disk progress error +- 修复磁盘进度条显示错误 +- Fixed disk progress error + +--- ## 2.0.6 - 2019-01-22 -### Fix +### Fix / 修复 -- Fix incorrect total memory +- 修复总内存显示不正确的问题 +- Fixed incorrect total memory -### Optimize +### Optimize / 优化 -- Optimize progress logic +- 优化进度条逻辑 +- Optimized progress logic + +--- ## 2.0.5 - 2019-01-21 -### Add +### Add / 新增 -- Add tooltip style -- Add detail benchmark tooltip -- Add cURL extension detection item -- Add LDAP extension detection item +- 增加工具提示样式 +- 增加详细性能测试工具提示 +- 增加 cURL 扩展检测项 +- 增加 LDAP 扩展检测项 +- 无 SWAP 时自动隐藏 SWAP 进度条 +- Added tooltip style +- Added detailed benchmark tooltip +- Added cURL extension detection +- Added LDAP extension detection - Hide SWAP progress when no SWAP -### Optimize +### Optimize / 优化 -- Optimize notch position -- Optimize fetch bootstrap -- Optimize CPU progress display -- Optimize style +- 优化缺口位置 +- 优化 fetch 引导逻辑 +- 优化 CPU 进度显示 +- 优化样式细节 +- Optimized notch position +- Optimized fetch bootstrap +- Optimized CPU progress display +- Refined styles + +--- ## 2.0.4 - 2019-01-19 -### Optimize +### Optimize / 优化 -- Remove warning for `is_readable()` function -- Remove HTML minify +- 移除 `is_readable()` 函数的警告信息 +- 移除 HTML 压缩 +- Removed warning for `is_readable()` function +- Removed HTML minification + +--- ## 2.0.3 - 2019-01-14 -### Add +### Add / 新增 -- Add debug mode +- 增加调试模式 +- Added debug mode -### Fix +### Fix / 修复 -- Fix compatibility for PHP5.6- +- 修复 PHP5.6- 兼容性问题 +- Fixed compatibility for PHP5.6- -### Adjust +### Adjust / 调整 -- Adjust fix-cs config +- 调整代码规范配置 +- Adjusted fix-cs config + +--- ## 2.0.2 - 2019-01-14 -### Fix +### Fix / 修复 -- Fix #10 error reporting warning +- 修复 #10 错误报告警告 +- Fixed #10 error reporting warning -### Optimize +### Optimize / 优化 -- Optimize notch style +- 优化缺口样式 +- Optimized notch style + +--- ## 2.0.1 - 2019-01-13 -### Optimize +### Optimize / 优化 -- Optimize progress style -- Optimize notch style -- Optimize footer style +- 优化进度条样式 +- 优化缺口样式 +- 优化页脚样式 +- Optimized progress style +- Optimized notch style +- Optimized footer style + +--- ## 2.0.0 - 2019-01-13 -### Add +### Add / 新增 -- Add PHP latest version 7.3.1 -- Add PHP ionCube extension checker -- Add PHP SourceGuardian extension checker -- Add PHP Phalcon extension checker -- Add PHP FileInfo extension checker -- Add PHP Graphics Magick extension checker -- Add React + Mobx for developer environment -- Update new developer doc +- 增加最新 PHP 版本 7.3.1 +- 增加 ionCube 扩展检测 +- 增加 SourceGuardian 扩展检测 +- 增加 Phalcon 扩展检测 +- 增加 FileInfo 扩展检测 +- 增加 Graphics Magick 扩展检测 +- 引入 React + Mobx 开发环境 +- 更新开发者文档 +- Added latest PHP version 7.3.1 +- Added ionCube extension checker +- Added SourceGuardian extension checker +- Added Phalcon extension checker +- Added FileInfo extension checker +- Added Graphics Magick extension checker +- Added React + MobX for developer environment +- Updated developer documentation -### Optimize +### Optimize / 优化 -- Re-code all HTML code -- Re-design UI +- 重写所有 HTML 代码 +- 重新设计用户界面 +- Rewrote all HTML code +- Redesigned UI -### Remove +### Remove / 移除 -- Remove IE browser support +- 放弃对 IE 浏览器的支持 +- Dropped IE browser support + +--- ## 1.7.5 - 2018-12-20 -### Add +### Add / 新增 -- Add PHP latest version 7.3.0 -- Add clear OPCACHE cache operation after self-update +- 增加最新 PHP 版本 7.3.0 +- 自更新后自动清理 OPCACHE 缓存 +- Added latest PHP version 7.3.0 +- Auto clear OPCACHE after self-update + +--- ## 1.7.4 - 2018-11-22 -### Fix +### Fix / 修复 -- Fix errors on PHP5.3~5.6 +- 修复 PHP5.3~5.6 下的错误 +- Fixed errors on PHP5.3~5.6 + +--- ## 1.7.3 - 2018-11-18 -### Optimize +### Optimize / 优化 -- Optimize language text -- Optimize moudles output method -- Optimize API interface name -- Optimize events system -- Rename compiler file name +- 优化多语言文案 +- 优化模块输出方式 +- 优化 API 接口命名 +- 优化事件系统 +- 重命名编译器文件 +- Optimized language translations +- Optimized module output method +- Optimized API interface names +- Optimized events system +- Renamed compiler file -### Add +### Add / 新增 -- Add PHP disable_classes item -- Add prober builtin latest PHP version notification +- 增加 `disable_classes` 检测项 +- 内置最新 PHP 版本通知 +- Added `disable_classes` item +- Added built-in latest PHP version notification -### Remove +### Remove / 移除 -- Remove awesome icon +- 移除 awesome 图标 +- Removed awesome icon + +--- ## 1.7.2 - 2018-10-02 -### Optimize +### Optimize / 优化 -- Optimize free disk space getting method on Windows (contribute by @jfcherng) -- Add php-cs-fixer 5.3/7.2 (contribute by @jfcherng) -- Add missing type hint for compiler (contribute by @jfcherng) +- 优化 Windows 下获取空闲磁盘空间的方法(感谢 @jfcherng) +- 增加 php-cs-fixer 对 PHP5.3/7.2 的支持(感谢 @jfcherng) +- 为编译器补充缺失的类型提示(感谢 @jfcherng) +- Optimized free disk space retrieval on Windows (contributed by @jfcherng) +- Added php-cs-fixer support for PHP5.3/7.2 (contributed by @jfcherng) +- Added missing type hints for compiler (contributed by @jfcherng) -### Fixed +### Fix / 修复 -- Fix code abnormal indentation (contribute by @jfcherng) +- 修复代码缩进异常(感谢 @jfcherng) +- Fixed abnormal code indentation (contributed by @jfcherng) + +--- ## 1.7.1 - 2018-09-18 -### Optimize +### Optimize / 优化 -- Re-design I18n module -- Use Poedit to translate -- Optimize PHP error reporting display -- Optimize CPU load text format +- 重新设计 I18n 模块 +- 使用 Poedit 进行翻译 +- 优化 PHP 错误报告显示 +- 优化 CPU 负载文本格式 +- Redesigned I18n module +- Used Poedit for translation +- Optimized PHP error reporting display +- Optimized CPU load text format + +--- ## 1.7.0 - 2018-09-05 -### Add +### Add / 新增 -- Add zh-HK language -- Add browser language information -- Add SpartanHost benchmark +- 增加 zh-HK 语言 +- 增加浏览器语言信息 +- 增加 SpartanHost 性能测试数据 +- Added zh-HK language +- Added browser language information +- Added SpartanHost benchmarks -### Optimize +### Optimize / 优化 -- Optimize benchmark description text +- 优化性能测试描述文本 +- Optimized benchmark description text + +--- ## 1.6.1 - 2018-09-03 -### Fix +### Fix / 修复 -- Fix a typo and remove unnecessary trailing spaces (contribute by @jfcherng) +- 修正拼写错误并移除多余尾部空格(感谢 @jfcherng) +- Fixed a typo and removed unnecessary trailing spaces (contributed by + @jfcherng) + +--- ## 1.6.0 - 2018-09-03 -### Add +### Add / 新增 -- Add new row of PHP loaded extensions (contribute by @jfcherng) -- Add zh-TW language (contribute by @jfcherng) +- 新增 PHP 已加载扩展行(感谢 @jfcherng) +- 新增 zh-TW 语言(感谢 @jfcherng) +- Added a new row for PHP loaded extensions (contributed by @jfcherng) +- Added zh-TW language (contributed by @jfcherng) -### Fix +### Fix / 修复 -- Fix Swoole extension checker condition error (contribute by @jfcherng) +- 修复 Swoole 扩展检测条件错误(感谢 @jfcherng) +- Fixed Swoole extension checker condition error (contributed by @jfcherng) + +--- ## 1.5.2 - 2018-09-02 -### Add +### Add / 新增 -- Add VPSSERVER server benchmark -- Add Amazon server benchmark +- 增加 VPSSERVER 性能测试数据 +- 增加 Amazon 性能测试数据 +- Added VPSSERVER server benchmark +- Added Amazon server benchmark + +--- ## 1.5.1 - 2018-07-11 -### Fixed +### Fix / 修复 -- Fix title JS error +- 修复标题 JS 错误 +- Fixed title JS error + +--- ## 1.5.0 - 2018-07-11 -### Add +### Add / 新增 -- Add swap memory dynamic display -- Add bandwagon HOST benchmark -- Add more extension checker +- 增加 Swap 内存动态显示 +- 增加 Bandwagon HOST 性能测试数据 +- 增加更多扩展检测 +- Added swap memory dynamic display +- Added Bandwagon HOST benchmark +- Added more extension checkers -### Fixed +### Fix / 修复 -- Fix update version error +- 修复版本更新错误 +- Fixed update version error -### Optimization +### Optimize / 优化 -- Optimize progress high value style -- Optimize link style +- 优化进度条高值样式 +- 优化链接样式 +- Optimized progress high value style +- Optimized link style + +--- ## 1.4.0 - 2018-06-13 -### Add +### Add / 新增 -- Add auto-update -- Add RamNode VPS benchmark points +- 增加自动更新功能 +- 增加 RamNode VPS 性能测试数据 +- Added auto-update +- Added RamNode VPS benchmark points -### Fixed +### Fix / 修复 -- Fix disk space checker override error +- 修复磁盘检测覆盖错误 +- Fixed disk space checker override error -### Optimization +### Optimize / 优化 -- Optimize header title style +- 优化头部标题样式 +- Optimized header title style + +--- ## 1.3.3 - 2018-03-18 -### Fixed +### Fix / 修复 -- Fix benchmark unlimited bug +- 修复性能测试无限循环的问题 +- Fixed benchmark unlimited loop bug + +--- ## 1.3.2 - 2018-03-17 -### Fixed +### Fix / 修复 +- 修复 Apache2.2 时区错误 +- 修复 PHP5.3 中数据库错误 - Fixed Apache2.2 timezone error - Fixed database error in PHP5.3 +--- + ## 1.3.1 - 2018-03-01 -### Fixed +### Fix / 修复 -- Fixed disk display error in some OS +- 修复部分系统磁盘显示错误 +- 修复翻译问题 +- Fixed disk display error on some OS - Fixed translation +--- + ## 1.3.0 - 2017-12-11 -### Added +### Add / 新增 -- Add CPU usage on Windows OS -- Add Tencent and Vultr server benchmark results -- Add Emoji tip for server benchmark -- Optimize nav style -- Fix error on Windows OS +- 增加 Windows 操作系统下的 CPU 使用率 +- 增加腾讯云和 Vultr 服务器性能测试结果 +- 增加性能测试的表情符号提示 +- 优化导航样式 +- 修复 Windows 下的错误 +- Added CPU usage on Windows OS +- Added Tencent and Vultr server benchmark results +- Added emoji tips for server benchmark +- Optimized nav style +- Fixed error on Windows OS + +--- ## 1.2.0 - 2017-11-22 -### Added +### Add / 新增 +- 增加服务器性能测试功能 - Added server performance benchmark -### Optimized +### Optimize / 优化 -- Optimized icon +- 优化图标 +- Optimized icons + +--- ## 1.1.1 - 2017-11-10 -### Fixed +### Fix / 修复 +- 修复 PHP5.3 下的错误 - Fixed errors in PHP5.3 +--- + ## 1.1.0 - 2017-11-09 -### Added +### Add / 新增 +- 增加绝大多数 PHP 数据库扩展检测 - Added most PHP database checkers -### Optimized +### Optimize / 优化 -- Changed Build.php to compile.php +- 将 Build.php 更名为 compile.php +- 优化编译器代码 +- Renamed Build.php to compile.php - Optimized compiler code -### Fixed +### Fix / 修复 -- Fixed PHP `display_errors` shows empty status when Off +- 修复 `display_errors` 关闭时状态显示为空的问题 +- Fixed PHP `display_errors` showing empty when Off + +--- ## 1.0.2 - 2017-10-28 -### Fixed +### Fix / 修复 -- Fixed cpu load avg error on Windows +- 修复 Windows 下 CPU 负载平均值显示错误 +- Fixed CPU load average error on Windows + +--- ## 1.0.1 - 2017-10-27 -### Fixed +### Fix / 修复 +- 修复网络统计 TX 数据错误 - Fixed network stats TX data error +--- + ## 1.0.0 - 2017-10-25 -### Added +### Add / 新增 +- 发布第一个版本 1.0.0 - Published first version 1.0.0 diff --git a/README.md b/README.md index a374083..ec30b1b 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,14 @@ [![X Prober preview](screenshots/preview.webp)](screenshots/preview.webp) - [简体中文](README-zh_CN.md) -- [繁体體中文(中國臺灣)](README-zh_TW.md) -- [繁体體中文(中國香港)](README-zh_HK.md) +- [繁體中文(中國臺灣)](README-zh_TW.md) +- [繁體中文(中國香港)](README-zh_HK.md) - [日本語](README-jp.md) # 😎 X Prober, Notch Prober -> A PHP environment probe program that not only displays server information intuitively. +> A PHP environment probe program that not only displays server information +> intuitively. [![Backers on Open Collective](https://opencollective.com/x-prober/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/x-prober/sponsors/badge.svg)](#sponsors) @@ -23,7 +24,9 @@ ## Download & Usage -- Click [INN Download Node](https://api.inn-studio.com/download?id=xprober) or [GitHub Node](https://github.com/kmvan/x-prober/raw/master/dist/prober.php) to download the probe file +- Click [INN Download Node](https://api.inn-studio.com/download?id=xprober) or + [GitHub Node](https://github.com/kmvan/x-prober/raw/master/dist/prober.php) to + download the probe file - You'll get a single file. Rename it to `x.php` and upload to your server - Access via browser: `your-domain/x.php` @@ -44,7 +47,8 @@ 2. Fetch your repository 3. Install npm modules: `$ npx pnpm i` 4. Install composer: `$ composer install && composer dumpautoload -o` -5. Generate multilingual files: `$ npm run lang` to rebuild `./languages/lang.pot` template +5. Generate multilingual files: `$ npm run lang` to rebuild + `./languages/lang.pot` template 6. Start PHP backend: `$ npx pnpm dev:php` 7. Start Vite frontend: `$ npx pnpm dev` 8. Access: `http://localhost:5173/` @@ -73,15 +77,19 @@ ## Backers -Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/x-prober#backer)] +Thank you to all our backers! 🙏 +[[Become a backer](https://opencollective.com/x-prober#backer)] ## Sponsors -Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/x-prober#sponsor)] +Support this project by becoming a sponsor. Your logo will show up here with a +link to your website. +[[Become a sponsor](https://opencollective.com/x-prober#sponsor)] -- Thanks to [VPSPlayer.com](https://vpsplayer.com/aff.php?aff=50) - Jan 16, 2021 - ¥199 +- Thanks to [VPSPlayer.com](https://vpsplayer.com/aff.php?aff=50) - Jan 16, + 2021 - ¥199 - Thanks to 1529\*\*\*576 - Apr 4, 2019 – ¥150 - Thanks to [Vultr.com](https://www.vultr.com/?ref=7256513) - Mar 13, 2019 - $50 diff --git a/dev/AppConfig.json b/dev/AppConfig.json index 36ca5bd..dcffe46 100644 --- a/dev/AppConfig.json +++ b/dev/AppConfig.json @@ -1,5 +1,5 @@ { - "APP_VERSION": "10.0.0", + "APP_VERSION": "10.0.1", "APP_NAME": "X Prober", "APP_URL": "https://github.com/kmvan/x-prober", "AUTHOR_URL": "https://inn-studio.com/prober", diff --git a/dist/prober.php b/dist/prober.php index 14a973b..21e108e 100644 --- a/dist/prober.php +++ b/dist/prober.php @@ -128,7 +128,7 @@ final class StyleAction UtilsApi::setFileCacheHeader(); header('Content-type: text/css'); echo <<<'CODE' -:root{--x-max-width:1680px;--x-radius:.5rem;--x-fg:oklch(20% 0 0);--x-bg:oklch(95% 0 0);--x-text-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, "PingFang SC", "PingFang TC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", sans-serif;--x-code-font-family:"SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", "PingFang SC", "Microsoft YaHei", monospace}:root[data-theme=dark]{--x-fg:oklch(95% 0 0);--x-bg:oklch(0% 0 0)}:root{--x-gutter:1rem;--x-gutter-sm:.5rem;--x-footer-fg:oklch(10% 0 0/.5)}[data-theme=dark]{--x-footer-fg:oklch(90% 0 0/.5)}.BxnxNW_main{width:100%;color:var(--x-footer-fg);text-align:center;word-break:normal}.BxnxNW_main a,.BxnxNW_main a:hover{color:var(--x-footer-fg)}[data-theme=light]{--x-theme-switch-light-fg:oklch(20% 0 0/.85);--x-theme-switch-light-fg-hover:oklch(15% 0 0/.9);--x-theme-switch-light-fg-active:oklch(10% 0 0/.95);--x-theme-switch-light-bg:oklch(98% 0 0/.9);--x-theme-switch-light-bg-hover:oklch(100% 0 0/.9);--x-theme-switch-light-bg-active:oklch(93% 0 0/.9);--x-theme-switch-dark-fg:oklch(95% 0 0/.9);--x-theme-switch-dark-fg-hover:oklch(100% 0 0/.9);--x-theme-switch-dark-fg-active:oklch(90% 0 0/.9);--x-theme-switch-dark-bg:oklch(30% 0 0/.9);--x-theme-switch-dark-bg-hover:oklch(35% 0 0/.9);--x-theme-switch-dark-bg-active:oklch(25% 0 0/.9)}[data-theme=dark]{--x-theme-switch-light-fg:oklch(90% 0 0/.9);--x-theme-switch-light-fg-hover:oklch(95% 0 0/.9);--x-theme-switch-light-fg-active:oklch(85% 0 0/.9);--x-theme-switch-light-bg:oklch(38.5% 0 0/.9);--x-theme-switch-light-bg-hover:oklch(43% 0 0/.9);--x-theme-switch-light-bg-active:oklch(33% 0 0/.9);--x-theme-switch-dark-fg:oklch(90% 0 0/.9);--x-theme-switch-dark-fg-hover:oklch(95% 0 0/.9);--x-theme-switch-dark-fg-active:oklch(85% 0 0/.9);--x-theme-switch-dark-bg:oklch(30% 0 0/.9);--x-theme-switch-dark-bg-hover:oklch(35% 0 0/.9);--x-theme-switch-dark-bg-active:oklch(25% 0 0/.9)}.wCyg_G_main{justify-content:center;display:flex}.wCyg_G_button{all:unset;cursor:pointer;padding:calc(var(--x-gutter-sm) * .5) var(--x-gutter);color:var(--xthtmesw)}.wCyg_G_button:first-child{border-top-left-radius:10rem;border-bottom-left-radius:10rem}.wCyg_G_button:last-child{border-top-right-radius:10rem;border-bottom-right-radius:10rem}.wCyg_G_button[data-active]{pointer-events:none;position:relative}.wCyg_G_button[data-active]:after{content:"";border-radius:2px;width:30%;height:3px;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.wCyg_G_button[data-id=light]{background:var(--x-theme-switch-light-bg);color:var(--x-theme-switch-light-fg)}.wCyg_G_button[data-id=light]:hover{background:var(--x-theme-switch-light-bg-hover);color:var(--x-theme-switch-light-fg-hover)}.wCyg_G_button[data-id=light]:active{background:var(--x-theme-switch-light-bg-active);color:var(--x-theme-switch-light-fg-active)}.wCyg_G_button[data-id=light][data-active]:after{background-color:var(--x-theme-switch-light-fg)}.wCyg_G_button[data-id=dark]{background:var(--x-theme-switch-dark-bg);color:var(--x-theme-switch-dark-fg)}.wCyg_G_button[data-id=dark]:hover{background:var(--x-theme-switch-dark-bg-hover);color:var(--x-theme-switch-dark-fg-hover)}.wCyg_G_button[data-id=dark]:active{background:var(--x-theme-switch-dark-bg-active);color:var(--x-theme-switch-dark-fg-active)}.wCyg_G_button[data-id=dark][data-active]:after{background-color:var(--x-theme-switch-dark-fg)}.hm3F5W_main{justify-content:center;gap:var(--x-gutter-sm);padding-top:var(--x-gutter);flex-wrap:wrap;display:flex}:root,[data-theme=dark]{--x-header-link-fg:oklch(90% 0 0);--x-header-link-fg-hover:oklch(100% 0 0);--x-header-link-fg-active:oklch(85% 0 0);--x-header-link-bg:oklch(30% 0 0/.9);--x-header-link-bg-hover:oklch(35% 0 0/.9);--x-header-link-bg-active:oklch(25% 0 0/.9)}.zVLxCa_main{align-items:center;gap:var(--x-gutter-sm);cursor:pointer;background:var(--x-header-link-bg);padding:var(--x-gutter-sm) var(--x-gutter);color:var(--x-header-link-fg);border:none;border-radius:10rem;text-decoration:none;display:flex}.zVLxCa_main:hover{background:var(--x-header-link-bg-hover);color:var(--x-header-link-fg-hover);text-decoration:none}.zVLxCa_main:active{background:var(--x-header-link-bg-active);color:var(--x-header-link-fg-active);text-decoration:none}.ASx8aW_main{font-size:1rem;font-weight:400}.ASx8aW_name{font-weight:700}.ASx8aW_version{opacity:.75;font-size:.8em;font-weight:400}:root{--x-toast-fg:oklch(100% 0 0/.9);--x-toast-bg:oklch(0% 0 0/.8)}:root[data-theme=dark]{--x-toast-fg:oklch(0% 0 0/.9);--x-toast-bg:oklch(100% 0 0/.8)}.drTdla_main{all:unset;z-index:20;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);cursor:pointer;border-radius:var(--x-gutter);background:var(--x-toast-bg);padding:var(--x-gutter-sm) var(--x-gutter);max-width:80vw;color:var(--x-toast-fg);border:none;position:fixed;bottom:4rem;left:50%;transform:translate(-50%)}:root{--x-line-height:1.25;--x-column-min-width:280px;--x-text-fg:oklch(10% 0 0);--x-link-fg:oklch(5% 0 0);--x-link-fg-hover:oklch(1% 0 0);--x-link-fg-active:oklch(0% 0 0);--x-link-bg:oklch(0% 0 0/.1);--x-link-bg-hover:oklch(0% 0 0/.15);--x-link-bg-active:oklch(0% 0 0/.2);--x-body-fg:oklch(10% 0 0);--x-body-bg:oklch(90% 0 0)}:root[data-theme=dark]{--x-text-fg:oklch(90% 0 0);--x-link-fg:oklch(90% 0 0);--x-link-fg-hover:oklch(100% 0 0);--x-link-fg-active:oklch(85% 0 0);--x-link-bg:oklch(100% 0 0/.1);--x-link-bg-hover:oklch(100% 0 0/.15);--x-link-bg-active:oklch(100% 0 0/.05);--x-body-fg:oklch(90% 0 0);--x-body-bg:oklch(15% 0 0)}*{box-sizing:border-box;word-break:break-word;margin:0;padding:0}html{scroll-behavior:smooth;font-size:85%}body{place-content:safe center;gap:var(--x-gutter);background:var(--x-body-bg);color:var(--x-body-fg);line-height:var(--x-line-height);font-family:var(--x-code-font-family);margin:0;padding:0;display:grid}a{cursor:pointer;color:var(--x-text-fg);text-decoration:none}a:hover,a:active{color:var(--x-text-fg);text-decoration:underline}.hVPwkW_container{gap:var(--x-gutter);max-width:1200px;display:grid}:root{--x-card-legend-arrow-fg:var(--x-card-legend-fg);--x-card-legend-arrow-bg-hover:oklch(0% 0 0/.1);--x-card-legend-arrow-bg-active:oklch(0% 0 0/.15)}[data-theme=dark]{--x-card-legend-arrow-fg:var(--x-card-legend-fg);--x-card-legend-arrow-bg-hover:oklch(0% 0 0/.1);--x-card-legend-arrow-bg-active:oklch(0% 0 0/.05)}._2mRR7G_arrow{cursor:pointer;border-radius:var(--x-radius);padding:var(--x-gutter-sm);color:var(--x-card-legend-arrow-fg);background:0 0;border:none;align-items:center;display:flex}._2mRR7G_arrow:hover{background:var(--x-card-legend-arrow-bg-hover);color:var(--x-card-legend-arrow-fg)}._2mRR7G_arrow:active{background:var(--x-card-legend-arrow-bg-active);color:var(--x-card-legend-arrow-fg)}._2mRR7G_arrow[data-disabled],._2mRR7G_arrow[data-disabled]:hover{opacity:.3;pointer-events:none}._2mRR7G_arrow svg{width:1rem;height:1rem}:root{--x-module-header-bg:oklch(100% 0 0/.75);--x-module-header-fg:oklch(0% 0 0);--x-module-header-title-fg:oklch(0% 0 0/.7);--x-module-header-title-bg:oklch(0% 0 0/.1);--x-module-body-bg:var(--x-module-header-bg)}[data-theme=dark]{--x-module-header-bg:oklch(100% 0 0/.1);--x-module-header-fg:oklch(100% 0 0/.7);--x-module-header-title-fg:oklch(100% 0 0/.7);--x-module-header-title-bg:oklch(100% 0 0/.1);--x-module-body-bg:var(--x-module-header-bg)}._99K0oW_main{flex-grow:1;scroll-margin-top:0;position:relative}._99K0oW_header{border-radius:var(--x-radius) var(--x-radius) 0 0;background:var(--x-module-header-bg);width:fit-content;color:var(--x-module-header-fg);white-space:nowrap;align-items:center;padding:1px;font-size:1rem;display:flex}._99K0oW_title{font-weight:400}._99K0oW_body{gap:var(--x-gutter-sm);border-radius:0 var(--x-radius) var(--x-radius) var(--x-radius);background:var(--x-module-body-bg);padding:var(--x-gutter);display:grid}:root,[data-theme=dark]{--x-des-fg:var(--x-text-fg);--x-des-accent:oklch(70.344% .16156 249.935)}.D8MIUq_main{border-radius:var(--x-radius);color:var(--x-des-fg);font-family:var(--x-text-font-family);list-style-type:none;display:grid}.D8MIUq_item{align-items:center;gap:var(--x-gutter-sm);opacity:.65;display:flex}.D8MIUq_item svg{width:1em;height:1em}:root{--x-placeholder-bg:linear-gradient(to right, oklch(0% 0 0/.1) 46%, oklch(0% 0 0/.15) 50%, oklch(0% 0 0/.1) 54%) 50% 50%}[data-theme=dark]{--x-placeholder-bg:linear-gradient(to right, oklch(100% 0 0/.1) 46%, oklch(100% 0 0/.15) 50%, oklch(100% 0 0/.1) 54%) 50% 50%}@keyframes US6Sia_animation{0%{transform:translate(-30%)}to{transform:translate(30%)}}.US6Sia_main{border-radius:var(--x-radius);position:relative;overflow:hidden}.US6Sia_main:before{z-index:1;background:var(--x-placeholder-bg);pointer-events:none;content:" ";width:500%;margin-left:-250%;animation:1s linear infinite US6Sia_animation;position:absolute;inset:0 0 0 50%}:root{--x-error-fg:oklch(53% .2 25);--x-error-bg:oklch(53% .2 25/.1);--x-error-icon-fg:oklch(53% .2 25)}[data-theme=dark]{--x-error-fg:oklch(70% .13 20);--x-error-bg:oklch(70% .13 20/.1);--x-error-icon-fg:oklch(70% .13 20)}._5qa1Ia_main{align-items:center;gap:var(--x-gutter-sm);border-radius:var(--x-radius);background:var(--x-error-bg);padding:var(--x-gutter-sm) var(--x-gutter);color:var(--x-error-fg);display:flex;position:relative}._5qa1Ia_main svg{width:1em;height:1em;color:var(--x-error-icon-fg)}.iUP8dq_main{grid-template-columns:repeat(auto-fill, minmax(var(--x-column-min-width), 1fr));column-gap:var(--x-gutter-sm);row-gap:var(--x-gutter);display:grid}.iUP8dq_link{border-radius:var(--x-radius);padding:0 var(--x-gutter-sm);color:var(--x-link-fg)}.iUP8dq_link:hover{background:var(--x-link-bg-hover);color:var(--x-link-fg-hover)}.iUP8dq_link:active{background:var(--x-link-bg-active);color:var(--x-link-fg-active)}.iUP8dq_link svg{width:1em;height:1em}.xbws0G_main rt{opacity:.5;font-size:1rem;font-weight:400}.xbws0G_main[data-is-result]{font-weight:700}:root{--x-browser-benchmark-link-fg:oklch(0% 0 0/.9);--x-browser-benchmark-link-fg-hover:oklch(0% 0 0/.9);--x-browser-benchmark-link-fg-active:oklch(0% 0 0/.9);--x-browser-benchmark-link-bg:oklch(0% 0 0/.05);--x-browser-benchmark-link-bg-hover:oklch(0% 0 0/.1);--x-browser-benchmark-link-bg-active:oklch(0% 0 0/.15)}[data-theme=dark]{--x-browser-benchmark-link-fg:oklch(95% 0 0/.9);--x-browser-benchmark-link-fg-hover:oklch(100% 0 0/.9);--x-browser-benchmark-link-fg-active:oklch(90% 0 0/.9);--x-browser-benchmark-link-bg:oklch(100% 0 0/.05);--x-browser-benchmark-link-bg-hover:oklch(100% 0 0/.1);--x-browser-benchmark-link-bg-active:oklch(100% 0 0/.01)}.cZ14Ea_main{gap:calc(var(--x-gutter-sm) * .5);text-align:center;display:grid}.cZ14Ea_header{justify-content:center;align-items:center;display:flex}.cZ14Ea_marks{all:unset;justify-content:center;align-items:center;gap:calc(var(--x-gutter-sm) * .5);cursor:pointer;border-radius:var(--x-radius);background:var(--x-browser-benchmark-link-bg);color:var(--x-browser-benchmark-link-fg);flex-wrap:wrap;font-size:1.15rem;display:flex}.cZ14Ea_marks:hover{background:var(--x-browser-benchmark-link-bg-hover);color:var(--x-browser-benchmark-link-fg-hover)}.cZ14Ea_marks:active{background:var(--x-browser-benchmark-link-bg-active);color:var(--x-browser-benchmark-link-fg-active)}.cZ14Ea_marks [data-is-detail]{opacity:.7}.cZ14Ea_sign{opacity:.5}:root{--x-meter-height:5px;--x-meter-bg:linear-gradient(to bottom, oklch(0% 0 0/.1), oklch(0% 0 0/.05));--x-meter-bar-bg:oklch(0% 0 0/.1);--x-meter-value-bg:oklch(79% .25 142);--x-meter-value-optimum-bg:oklch(63% .22 142);--x-meter-value-suboptimum-bg:oklch(76% .14 72);--x-meter-value-even-less-good-bg:oklch(49% .19 28);--x-meter-filter:none;--x-meter-percent-bg:oklch(0% 0 0/.1)}[data-theme=dark]{--x-meter-bg:linear-gradient(to bottom, oklch(100% 0 0/.15), oklch(100% 0 0/.1));--x-meter-bar-bg:oklch(100% 0 0/.1);--x-meter-value-optimum-bg:oklch(63% .22 142);--x-meter-value-suboptimum-bg:oklch(68% .14 70);--x-meter-value-even-less-good-bg:oklch(49% .19 28);--x-meter-filter:brightness(.5);--x-meter-percent-bg:oklch(100% 0 0/.1)}.xO-m2q_main{gap:var(--x-gutter-sm);grid-template-columns:1fr auto;grid-template-areas:"xO-m2q_x-meter-name xO-m2q_x-meter-percent""xO-m2q_x-meter-name xO-m2q_x-meter-overview""xO-m2q_x-meter-core xO-m2q_x-meter-core";display:grid}.xO-m2q_percent{text-align:right;grid-area:xO-m2q_x-meter-percent}.xO-m2q_percentText{border-radius:var(--x-radius);background-color:var(--x-meter-percent-bg);padding:0 var(--x-gutter)}.xO-m2q_name{all:unset;color:var(--x-bg-fg);background:0 0;border:none;grid-area:xO-m2q_x-meter-name;align-items:center;display:flex}.xO-m2q_nameText{line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:15rem;display:-webkit-box;overflow:hidden}.xO-m2q_overview{grid-area:xO-m2q_x-meter-overview}.xO-m2q_core{appearance:none;border-radius:var(--x-meter-height);background:var(--x-meter-bg);width:100%;height:var(--x-meter-height);border:none;grid-area:xO-m2q_x-meter-core}.xO-m2q_core::-webkit-meter-bar{border-radius:var(--x-meter-height);background:unset;height:var(--x-meter-height)}.xO-m2q_core::-webkit-meter-optimum-value{border-radius:var(--x-meter-height);background:var(--x-meter-value-optimum-bg)}.xO-m2q_core::-webkit-meter-suboptimum-value{border-radius:var(--x-meter-height);background:var(--x-meter-value-suboptimum-bg)}.xO-m2q_core::-webkit-meter-even-less-good-value{border-radius:var(--x-meter-height);background:var(--x-meter-value-even-less-good-bg)}.cgiaLG_main{display:flex}:root{--x-button-fg:var(--x-text-fg);--x-button-fg-hover:var(--x-text-fg);--x-button-fg-active:var(--x-text-fg);--x-button-bg:oklch(0% 0 0/.1);--x-button-bg-hover:oklch(0% 0 0/.15);--x-button-bg-active:oklch(0% 0 0/.2)}[data-theme=dark]{--x-button-fg:var(--x-text-fg);--x-button-fg-hover:var(--x-text-fg-hover);--x-button-fg-active:var(--x-text-fg-active);--x-button-bg:oklch(100% 0 0/.15);--x-button-bg-hover:oklch(100% 0 0/.2);--x-button-bg-active:oklch(100% 0 0/.1)}@keyframes CPYSBq_spin{to{transform:rotate(360deg)}}.CPYSBq_button{cursor:pointer;border-radius:var(--x-radius);background:var(--x-button-bg);padding:2px var(--x-gutter-sm);color:var(--x-button-fg);font-family:var(--x-text-font-family);border:none;align-items:center;gap:.25em;text-decoration:none;display:flex}.CPYSBq_button:hover{background:var(--x-button-bg-hover);color:var(--x-button-fg-hover);text-decoration:none}.CPYSBq_button:active{background:var(--x-button-bg-active);color:var(--x-button-fg-active);text-decoration:none}.CPYSBq_icon{aspect-ratio:1;place-content:center;width:1rem;display:grid}.CPYSBq_icon svg{width:1rem;height:1rem}.CPYSBq_icon[data-status=loading]{animation:1s linear infinite CPYSBq_spin}:root{--x-nav-fg:oklch(0% 0 0/.9);--x-nav-bg:oklch(100% 0 0/.9);--x-nav-bg-hover:oklch(0% 0 0/.05);--x-nav-bg-active:oklch(0% 0 0/.1);--x-nav-border-color:linear-gradient(to bottom, transparent, oklch(0% 0 0/.1), transparent);--x-nav-text-shadow:0 1px 2px oklch(100% 0 0/.3);--x-nav-box-shadow:0 0 3px oklch(0% 0 0/.1)}[data-theme=dark]{--x-nav-fg:oklch(100% 0 0/.9);--x-nav-bg:oklch(100% 0 0/.15);--x-nav-bg-hover:oklch(100% 0 0/.1);--x-nav-bg-active:oklch(100% 0 0/.15);--x-nav-border-color:linear-gradient(to bottom, transparent, oklch(100% 0 0/.1), transparent);--x-nav-text-shadow:0 1px 2px oklch(0% 0 0/.3)}.xgN-Ca_wrap{z-index:10;justify-content:center;padding:0;display:flex;position:sticky;bottom:0;left:0;right:0;overflow:hidden}@media (width>=768px){.xgN-Ca_wrap{bottom:var(--x-gutter-sm);padding:5px}}.xgN-Ca_main{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:var(--x-nav-bg);align-items:center;display:flex;overflow-x:auto}@media (width>=768px){.xgN-Ca_main{box-shadow:var(--x-nav-box-shadow);padding:0 var(--x-gutter);border-radius:10rem}}.xgN-Ca_link{padding:var(--x-gutter);color:var(--x-nav-fg);text-shadow:var(--x-nav-text-shadow);white-space:nowrap;position:relative}.xgN-Ca_link:after{background:var(--x-nav-border-color);pointer-events:none;content:"";width:1px;height:80%;position:absolute;top:20%;right:0;transform:translateY(-20%)}.xgN-Ca_link:last-child:after{display:none}.xgN-Ca_link:hover{background:var(--x-nav-bg-hover);color:var(--x-nav-fg);text-decoration:none}.xgN-Ca_link:focus,.xgN-Ca_link:active,.xgN-Ca_link[data-active]{background:var(--x-nav-bg-active);color:var(--x-nav-fg);text-decoration:none}@media (width>=768px){.xgN-Ca_link{padding:var(--x-gutter-sm) var(--x-gutter)}}:root{--x-card-group-label-fg:var(--x-text-fg);--x-card-group-split-color:oklch(0% 0 0/.1);--x-card-group-bg-hover:oklch(0% 0 0/.05)}[data-theme=dark]{--x-card-group-label-fg:var(--x-text-fg);--x-card-group-split-color:oklch(100% 0 0/.1);--x-card-group-bg-hover:oklch(100% 0 0/.05)}.QTvV3a_main{grid-template-columns:minmax(var(--min-width), var(--max-width)) 1fr;gap:var(--x-gutter-sm);border-radius:var(--x-radius);display:grid}.QTvV3a_main:hover{background:var(--x-card-group-bg-hover)}.QTvV3a_label{color:var(--x-card-group-label-fg);font-family:var(--x-text-font-family);text-align:right;word-break:normal}.QTvV3a_label:after{content:":"}.QTvV3a_content{align-items:flex-start;gap:var(--x-gutter-sm);flex-wrap:wrap;display:flex}.LMcw6W_main{grid-template-columns:repeat(auto-fill, minmax(var(--min-width), 1fr));gap:var(--x-gutter-sm);display:grid}:root{--x-status-ok-fg:oklch(100% 0 0/.95);--x-status-ok-bg:linear-gradient(oklch(60% .22 142), oklch(70% .24 142));--x-status-error-fg:oklch(100% 0 0/.95);--x-status-error-bg:linear-gradient(oklch(56% 0 0), oklch(77% 0 0));--x-status-text-shadow:0 1px 1px oklch(0% 0 0/.3)}[data-theme=dark]{--x-status-ok-fg:oklch(100% 0 0/.9);--x-status-ok-bg:linear-gradient(oklch(30% .22 142), oklch(35% .23 142));--x-status-error-fg:oklch(100% 0 0/.9);--x-status-error-bg:linear-gradient(oklch(30% 0 0), oklch(35% 0 0))}.flIsmG_main{border-radius:var(--x-radius);min-width:2em;text-shadow:var(--x-status-text-shadow);white-space:nowrap;justify-content:center;align-items:center;padding:0 .5rem;font-family:Arial Black,sans-serif;font-weight:bolder;display:inline-flex}.flIsmG_main[data-ok]{background:var(--x-status-ok-bg);color:var(--x-status-ok-fg)}.flIsmG_main[data-error]{background:var(--x-status-error-bg);color:var(--x-status-error-fg)}.flIsmG_main[data-ok][data-icon]:before{content:"✓"}.flIsmG_main[data-error][data-icon]:before{content:"×"}.PXKbea_main{grid-template-columns:repeat(auto-fill, minmax(var(--x-column-min-width), 1fr));gap:var(--x-gutter);display:grid}.WalEhG_main{gap:var(--x-gutter-sm);display:grid}.h_aOXq_container{gap:var(--x-gutter-sm);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.h_aOXq_item{display:grid}.h_aOXq_id{text-align:center;text-decoration:underline}.h_aOXq_idRow{align-items:center;display:grid}.h_aOXq_dataContainer{text-align:center;justify-content:center;align-items:center;display:flex}.h_aOXq_data{flex:0 0 50%}.h_aOXq_data[data-rx]{color:var(--x-network-stats-rx-fg)}.h_aOXq_data[data-tx]{color:var(--x-network-stats-tx-fg)}.h_aOXq_rate{font-family:"Arial Black", var(--x-code-font-family)}.h_aOXq_rate:before{margin-right:.5rem}.h_aOXq_rateRx:before{content:"▼"}.h_aOXq_rateTx:before{content:"▲"}:root{--x-network-stats-tx-fg:oklch(58% .17 36);--x-network-stats-tx-bg:oklch(53% .21 44/.1);--x-network-stats-rx-fg:oklch(55% .18 142);--x-network-stats-rx-bg:oklch(44% .18 142/.1)}[data-theme=dark]{--x-network-stats-tx-fg:oklch(72% .15 51);--x-network-stats-tx-bg:oklch(70% .21 46/.15);--x-network-stats-rx-fg:oklch(70% .2 142);--x-network-stats-rx-bg:oklch(70% .2 142/.15)}._3rNAXW_main{grid-template-areas:"_3rNAXW_network-stats-item-id _3rNAXW_network-stats-item-id""_3rNAXW_network-stats-item-rx _3rNAXW_network-stats-item-tx";gap:1px;display:grid}._3rNAXW_id{text-align:center;grid-area:_3rNAXW_network-stats-item-id}._3rNAXW_label{opacity:.95}._3rNAXW_total{opacity:.95;font-weight:700}._3rNAXW_rx,._3rNAXW_tx{padding:var(--x-gutter-sm);font-family:"Tahoma", var(--x-code-font-family);text-align:center;display:grid;position:relative}._3rNAXW_rx{border-radius:var(--x-radius) 0 0 var(--x-radius);background:var(--x-network-stats-rx-bg);color:var(--x-network-stats-rx-fg);grid-area:_3rNAXW_network-stats-item-rx}._3rNAXW_tx{border-radius:0 var(--x-radius) var(--x-radius) 0;background:var(--x-network-stats-tx-bg);color:var(--x-network-stats-tx-fg);grid-area:_3rNAXW_network-stats-item-tx}._3rNAXW_rateRx,._3rNAXW_rateTx{font-size:1.5rem;font-weight:700}.LhFvzW_main{grid-template-columns:repeat(auto-fill, minmax(var(--x-column-min-width), 1fr));column-gap:var(--x-gutter-sm);row-gap:var(--x-gutter);display:grid}:root{--x-sys-load-fg:var(--x-text-fg);--x-sys-load-bg:transparent;--x-sys-load-interval-bg:oklch(0% 0 0/.1)}[data-theme=dark]{--x-sys-load-fg:var(--x-text-fg);--x-sys-load-interval-bg:oklch(100% 0 0/.1)}.sJulDa_main{gap:var(--x-gutter-sm);grid-template-columns:1fr auto;grid-template-areas:"sJulDa_x-server-stats-system-load-label sJulDa_x-server-stats-system-load-usage""sJulDa_x-server-stats-system-load-label sJulDa_x-server-stats-system-load-group""sJulDa_x-server-stats-system-load-meter sJulDa_x-server-stats-system-load-meter";display:grid}.sJulDa_label{grid-area:sJulDa_x-server-stats-system-load-label;align-items:center;display:grid}.sJulDa_meter{grid-area:sJulDa_x-server-stats-system-load-meter;grid-template-areas:"sJulDa_x-meter-core";display:grid}.sJulDa_usage{text-align:right;grid-area:sJulDa_x-server-stats-system-load-usage}.sJulDa_group{align-items:center;gap:var(--x-gutter-sm);grid-area:sJulDa_x-server-stats-system-load-group;display:flex}.sJulDa_groupItem{border-radius:var(--x-radius);background:var(--x-sys-load-interval-bg);padding:0 var(--x-gutter);color:var(--x-sys-load-fg);font-family:var(--x-code-font-family)}._6Zg-La_sysLoad{gap:var(--x-gutter-sm);display:flex}:root{--x-nodes-usage-percent-bg:oklch(0% 0 0/.1)}[data-theme=dark]{--x-nodes-usage-percent-bg:oklch(100% 0 0/.1)}.gnBhFq_main{column-gap:var(--x-gutter-sm);row-gap:0;gap:var(--x-gutter-sm);grid-template-columns:1fr auto;grid-template-areas:"gnBhFq_x-nodes-usage-label gnBhFq_x-nodes-usage-label""gnBhFq_x-nodes-usage-overview gnBhFq_x-nodes-usage-percent""gnBhFq_x-nodes-usage-meter gnBhFq_x-nodes-usage-meter";display:grid}.gnBhFq_meter{height:var(--x-meter-height);grid-area:gnBhFq_x-nodes-usage-meter;display:flex}.gnBhFq_label{align-items:center;gap:var(--x-gutter-sm);grid-area:gnBhFq_x-nodes-usage-label;display:flex}.gnBhFq_label svg{width:1em;height:1em}.gnBhFq_overview{gap:var(--x-gutter-sm);grid-area:gnBhFq_x-nodes-usage-overview;display:flex}.gnBhFq_chart{grid-area:gnBhFq_x-nodes-usage-chart;display:none}.gnBhFq_percent{border-radius:var(--x-radius);background:var(--x-nodes-usage-percent-bg);padding:0 var(--x-gutter);grid-area:gnBhFq_x-nodes-usage-percent}.mpZdYW_main{gap:var(--x-gutter-sm);max-height:calc(100px + var(--x-gutter-sm));overscroll-behavior:contain;scroll-snap-type:y mandatory;scrollbar-color:oklch(50% 0 0/.5) transparent;display:grid;position:relative;overflow-y:scroll;container-type:inline-size}.mpZdYW_item{scroll-snap-align:start}.UbpXca_main,.Bw9FBW_main{gap:var(--x-gutter-sm);display:grid}.Bw9FBW_name{text-align:center}.Bw9FBW_loading{place-content:center;height:10rem;display:grid}:root{--x-search-fg:var(--x-link-fg);--x-search-fg-hover:var(--x-link-fg-hover);--x-search-fg-active:var(--x-link-fg-active);--x-search-bg:var(--x-link-bg);--x-search-bg-hover:var(--x-link-bg-hover);--x-search-bg-active:var(--x-link-bg-active)}.Ve0JZG_container{gap:var(--x-gutter-sm);opacity:.7;flex-wrap:wrap;line-height:1;display:flex}.Ve0JZG_container:empty:after{opacity:.5;content:"⊘";line-height:var(--x-line-height)}.Ve0JZG_button{all:unset;cursor:pointer;border-radius:var(--x-radius);background:var(--x-search-bg);padding:calc(var(--x-gutter-sm) * .5) var(--x-gutter-sm);color:var(--x-search-fg);font-family:var(--x-code-font-family)}.Ve0JZG_button:hover{background:var(--x-search-bg-hover);color:var(--x-search-fg-hover)}.Ve0JZG_button:active{background:var(--x-search-bg-active);color:var(--x-search-fg-active)}:root{--x-ping-result-scrollbar-bg:oklch(0% 0 0/.5);--x-ping-item-bg:oklch(0% 0 0/.1)}[data-theme=dark]{--x-ping-result-scrollbar-bg:oklch(100% 0 0/.5);--x-ping-item-bg:oklch(100% 0 0/.1)}._7skjLq_itemContainer{border-radius:var(--x-radius);background:var(--x-ping-item-bg);padding:var(--x-gutter-sm) var(--x-gutter);scrollbar-color:var(--x-ping-result-scrollbar-bg) transparent;flex-grow:1;grid-template-columns:repeat(auto-fill,minmax(5rem,1fr));grid-auto-flow:row;gap:.15em;height:7rem;list-style-type:none;display:grid;overflow-y:auto}._7skjLq_resultContainer{gap:var(--x-gutter-sm);flex-grow:1;display:grid}._7skjLq_result{flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}.nM1-Ea_main{display:flex}:root{--x-server-benchmark-marks-fg:oklch(15% 0 0/.9);--x-server-benchmark-marks-fg-hover:oklch(10% 0 0/.9);--x-server-benchmark-marks-fg-active:oklch(20% 0 0/.9);--x-server-benchmark-marks-bg:oklch(0% 0 0/.05);--x-server-benchmark-marks-bg-hover:oklch(0% 0 0/.1);--x-server-benchmark-marks-bg-active:oklch(0% 0 0/.15)}[data-theme=dark]{--x-server-benchmark-marks-fg:oklch(95% 0 0/.9);--x-server-benchmark-marks-fg-hover:oklch(100% 0 0/.9);--x-server-benchmark-marks-fg-active:oklch(90% 0 0/.9);--x-server-benchmark-marks-bg:oklch(100% 0 0/.05);--x-server-benchmark-marks-bg-hover:oklch(100% 0 0/.1);--x-server-benchmark-marks-bg-active:oklch(100% 0 0/.01)}._8Yh7Cq_main{gap:calc(var(--x-gutter-sm) * .5);text-align:center;display:grid}._8Yh7Cq_header{justify-content:center;align-items:center;display:flex}._8Yh7Cq_marks{all:unset;justify-content:center;align-items:center;gap:calc(var(--x-gutter-sm) * .5);cursor:pointer;border-radius:var(--x-radius);background:var(--x-server-benchmark-marks-bg);color:var(--x-server-benchmark-marks-fg);flex-wrap:wrap;font-size:1.15rem;display:flex}._8Yh7Cq_marks:hover{background:var(--x-server-benchmark-marks-bg-hover);color:var(--x-server-benchmark-marks-fg-hover)}._8Yh7Cq_marks:active{background:var(--x-server-benchmark-marks-bg-active);color:var(--x-server-benchmark-marks-fg-active)}._8Yh7Cq_marks [data-is-detail]{opacity:.7}._8Yh7Cq_sign{opacity:.5}.JRQGAG_main{grid-template-columns:repeat(auto-fill, minmax(var(--x-column-min-width), 1fr));column-gap:var(--x-gutter-sm);row-gap:var(--x-gutter);display:grid}.JRQGAG_title,.JRQGAG_link{border-radius:var(--x-radius);padding:0 var(--x-gutter-sm);color:var(--x-link-fg)}.JRQGAG_title:hover,.JRQGAG_link:hover{background:var(--x-link-bg-hover);color:var(--x-link-fg-hover)}.JRQGAG_title:active,.JRQGAG_link:active{background:var(--x-link-bg-active);color:var(--x-link-fg-active)}.JRQGAG_title svg,.JRQGAG_link svg{width:1em;height:1em}.JRQGAG_title{text-decoration:underline}._7cGBpa_main{gap:var(--x-gutter-sm);display:grid}._7cGBpa_modules{grid-template-columns:repeat(auto-fill, minmax(var(--x-column-min-width), 1fr));gap:var(--x-gutter);display:grid}@keyframes bf54NG_spin{to{transform:rotate(360deg)}}.bf54NG_main{flex-wrap:wrap;justify-content:center;align-items:center;gap:.5em;height:100svh;display:flex}.bf54NG_main:before{box-sizing:border-box;border:1px solid var(--x-button-bg);border-top-color:var(--x-button-fg);content:"";border-radius:50%;width:16px;height:16px;animation:1s linear infinite bf54NG_spin} +:root{--x-max-width:1680px;--x-radius:.5rem;--x-fg:oklch(20% 0 0);--x-bg:oklch(95% 0 0);--x-text-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, "PingFang SC", "PingFang TC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", sans-serif;--x-code-font-family:"SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", "PingFang SC", "Microsoft YaHei", monospace}:root[data-theme=dark]{--x-fg:oklch(95% 0 0);--x-bg:oklch(0% 0 0)}:root{--x-gutter:1rem;--x-gutter-sm:.5rem;--x-footer-fg:oklch(10% 0 0/.5)}[data-theme=dark]{--x-footer-fg:oklch(90% 0 0/.5)}._main_bc4zy_9{width:100%;color:var(--x-footer-fg);text-align:center;word-break:normal}._main_bc4zy_9 a,._main_bc4zy_9 a:hover{color:var(--x-footer-fg)}[data-theme=light]{--x-theme-switch-light-fg:oklch(20% 0 0/.85);--x-theme-switch-light-fg-hover:oklch(15% 0 0/.9);--x-theme-switch-light-fg-active:oklch(10% 0 0/.95);--x-theme-switch-light-bg:oklch(98% 0 0/.9);--x-theme-switch-light-bg-hover:oklch(100% 0 0/.9);--x-theme-switch-light-bg-active:oklch(93% 0 0/.9);--x-theme-switch-dark-fg:oklch(95% 0 0/.9);--x-theme-switch-dark-fg-hover:oklch(100% 0 0/.9);--x-theme-switch-dark-fg-active:oklch(90% 0 0/.9);--x-theme-switch-dark-bg:oklch(30% 0 0/.9);--x-theme-switch-dark-bg-hover:oklch(35% 0 0/.9);--x-theme-switch-dark-bg-active:oklch(25% 0 0/.9)}[data-theme=dark]{--x-theme-switch-light-fg:oklch(90% 0 0/.9);--x-theme-switch-light-fg-hover:oklch(95% 0 0/.9);--x-theme-switch-light-fg-active:oklch(85% 0 0/.9);--x-theme-switch-light-bg:oklch(38.5% 0 0/.9);--x-theme-switch-light-bg-hover:oklch(43% 0 0/.9);--x-theme-switch-light-bg-active:oklch(33% 0 0/.9);--x-theme-switch-dark-fg:oklch(90% 0 0/.9);--x-theme-switch-dark-fg-hover:oklch(95% 0 0/.9);--x-theme-switch-dark-fg-active:oklch(85% 0 0/.9);--x-theme-switch-dark-bg:oklch(30% 0 0/.9);--x-theme-switch-dark-bg-hover:oklch(35% 0 0/.9);--x-theme-switch-dark-bg-active:oklch(25% 0 0/.9)}._main_j7pyp_31{justify-content:center;display:flex}._button_j7pyp_36{all:unset;cursor:pointer;padding:calc(var(--x-gutter-sm) * .5) var(--x-gutter);color:var(--xthtmesw)}._button_j7pyp_36:first-child{border-top-left-radius:10rem;border-bottom-left-radius:10rem}._button_j7pyp_36:last-child{border-top-right-radius:10rem;border-bottom-right-radius:10rem}._button_j7pyp_36[data-active]{pointer-events:none;position:relative}._button_j7pyp_36[data-active]:after{content:"";border-radius:2px;width:30%;height:3px;position:absolute;bottom:0;left:50%;transform:translate(-50%)}._button_j7pyp_36[data-id=light]{background:var(--x-theme-switch-light-bg);color:var(--x-theme-switch-light-fg)}._button_j7pyp_36[data-id=light]:hover{background:var(--x-theme-switch-light-bg-hover);color:var(--x-theme-switch-light-fg-hover)}._button_j7pyp_36[data-id=light]:active{background:var(--x-theme-switch-light-bg-active);color:var(--x-theme-switch-light-fg-active)}._button_j7pyp_36[data-id=light][data-active]:after{background-color:var(--x-theme-switch-light-fg)}._button_j7pyp_36[data-id=dark]{background:var(--x-theme-switch-dark-bg);color:var(--x-theme-switch-dark-fg)}._button_j7pyp_36[data-id=dark]:hover{background:var(--x-theme-switch-dark-bg-hover);color:var(--x-theme-switch-dark-fg-hover)}._button_j7pyp_36[data-id=dark]:active{background:var(--x-theme-switch-dark-bg-active);color:var(--x-theme-switch-dark-fg-active)}._button_j7pyp_36[data-id=dark][data-active]:after{background-color:var(--x-theme-switch-dark-fg)}._main_mb04g_1{justify-content:center;gap:var(--x-gutter-sm);padding-top:var(--x-gutter);flex-wrap:wrap;display:flex}:root,[data-theme=dark]{--x-header-link-fg:oklch(90% 0 0);--x-header-link-fg-hover:oklch(100% 0 0);--x-header-link-fg-active:oklch(85% 0 0);--x-header-link-bg:oklch(30% 0 0/.9);--x-header-link-bg-hover:oklch(35% 0 0/.9);--x-header-link-bg-active:oklch(25% 0 0/.9)}._main_uzbg7_19{align-items:center;gap:var(--x-gutter-sm);cursor:pointer;background:var(--x-header-link-bg);padding:var(--x-gutter-sm) var(--x-gutter);color:var(--x-header-link-fg);border:none;border-radius:10rem;text-decoration:none;display:flex}._main_uzbg7_19:hover{background:var(--x-header-link-bg-hover);color:var(--x-header-link-fg-hover);text-decoration:none}._main_uzbg7_19:active{background:var(--x-header-link-bg-active);color:var(--x-header-link-fg-active);text-decoration:none}._main_1k8xz_1{font-size:1rem;font-weight:400}._name_1k8xz_6{font-weight:700}._version_1k8xz_10{opacity:.75;font-size:.8em;font-weight:400}:root{--x-toast-fg:oklch(100% 0 0/.9);--x-toast-bg:oklch(0% 0 0/.8)}:root[data-theme=dark]{--x-toast-fg:oklch(0% 0 0/.9);--x-toast-bg:oklch(100% 0 0/.8)}._main_setjm_10{all:unset;z-index:20;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);cursor:pointer;border-radius:var(--x-gutter);background:var(--x-toast-bg);padding:var(--x-gutter-sm) var(--x-gutter);max-width:80vw;color:var(--x-toast-fg);border:none;position:fixed;bottom:4rem;left:50%;transform:translate(-50%)}:root{--x-line-height:1.25;--x-column-min-width:280px;--x-text-fg:oklch(10% 0 0);--x-link-fg:oklch(5% 0 0);--x-link-fg-hover:oklch(1% 0 0);--x-link-fg-active:oklch(0% 0 0);--x-link-bg:oklch(0% 0 0/.1);--x-link-bg-hover:oklch(0% 0 0/.15);--x-link-bg-active:oklch(0% 0 0/.2);--x-body-fg:oklch(10% 0 0);--x-body-bg:oklch(90% 0 0)}:root[data-theme=dark]{--x-text-fg:oklch(90% 0 0);--x-link-fg:oklch(90% 0 0);--x-link-fg-hover:oklch(100% 0 0);--x-link-fg-active:oklch(85% 0 0);--x-link-bg:oklch(100% 0 0/.1);--x-link-bg-hover:oklch(100% 0 0/.15);--x-link-bg-active:oklch(100% 0 0/.05);--x-body-fg:oklch(90% 0 0);--x-body-bg:oklch(15% 0 0)}*{box-sizing:border-box;word-break:break-word;margin:0;padding:0}html{scroll-behavior:smooth;font-size:85%}body{place-content:safe center;gap:var(--x-gutter);background:var(--x-body-bg);color:var(--x-body-fg);line-height:var(--x-line-height);font-family:var(--x-code-font-family);margin:0;padding:0;display:grid}a{cursor:pointer;color:var(--x-text-fg);text-decoration:none}a:hover,a:active{color:var(--x-text-fg);text-decoration:underline}._container_30sck_1{gap:var(--x-gutter);max-width:1200px;display:grid}:root{--x-card-legend-arrow-fg:var(--x-card-legend-fg);--x-card-legend-arrow-bg-hover:oklch(0% 0 0/.1);--x-card-legend-arrow-bg-active:oklch(0% 0 0/.15)}[data-theme=dark]{--x-card-legend-arrow-fg:var(--x-card-legend-fg);--x-card-legend-arrow-bg-hover:oklch(0% 0 0/.1);--x-card-legend-arrow-bg-active:oklch(0% 0 0/.05)}._arrow_19b9q_13{cursor:pointer;border-radius:var(--x-radius);padding:var(--x-gutter-sm);color:var(--x-card-legend-arrow-fg);background:0 0;border:none;align-items:center;display:flex}._arrow_19b9q_13:hover{background:var(--x-card-legend-arrow-bg-hover);color:var(--x-card-legend-arrow-fg)}._arrow_19b9q_13:active{background:var(--x-card-legend-arrow-bg-active);color:var(--x-card-legend-arrow-fg)}._arrow_19b9q_13[data-disabled],._arrow_19b9q_13[data-disabled]:hover{opacity:.3;pointer-events:none}._arrow_19b9q_13 svg{width:1rem;height:1rem}:root{--x-module-header-bg:oklch(100% 0 0/.75);--x-module-header-fg:oklch(0% 0 0);--x-module-header-title-fg:oklch(0% 0 0/.7);--x-module-header-title-bg:oklch(0% 0 0/.1);--x-module-body-bg:var(--x-module-header-bg)}[data-theme=dark]{--x-module-header-bg:oklch(100% 0 0/.1);--x-module-header-fg:oklch(100% 0 0/.7);--x-module-header-title-fg:oklch(100% 0 0/.7);--x-module-header-title-bg:oklch(100% 0 0/.1);--x-module-body-bg:var(--x-module-header-bg)}._main_15ko2_17{flex-grow:1;scroll-margin-top:0;position:relative}._header_15ko2_23{border-radius:var(--x-radius) var(--x-radius) 0 0;background:var(--x-module-header-bg);width:fit-content;color:var(--x-module-header-fg);white-space:nowrap;align-items:center;padding:1px;font-size:1rem;display:flex}._title_15ko2_35{font-weight:400}._body_15ko2_39{gap:var(--x-gutter-sm);border-radius:0 var(--x-radius) var(--x-radius) var(--x-radius);background:var(--x-module-body-bg);padding:var(--x-gutter);display:grid}:root,[data-theme=dark]{--x-des-fg:var(--x-text-fg);--x-des-accent:oklch(70.344% .16156 249.935)}._main_11kiv_11{border-radius:var(--x-radius);color:var(--x-des-fg);font-family:var(--x-text-font-family);list-style-type:none;display:grid}._item_11kiv_19{align-items:center;gap:var(--x-gutter-sm);opacity:.65;display:flex}._item_11kiv_19 svg{width:1em;height:1em}:root{--x-placeholder-bg:linear-gradient(to right, oklch(0% 0 0/.1) 46%, oklch(0% 0 0/.15) 50%, oklch(0% 0 0/.1) 54%) 50% 50%}[data-theme=dark]{--x-placeholder-bg:linear-gradient(to right, oklch(100% 0 0/.1) 46%, oklch(100% 0 0/.15) 50%, oklch(100% 0 0/.1) 54%) 50% 50%}@keyframes _animation_u2qvm_1{0%{transform:translate(-30%)}to{transform:translate(30%)}}._main_u2qvm_19{border-radius:var(--x-radius);position:relative;overflow:hidden}._main_u2qvm_19:before{z-index:1;background:var(--x-placeholder-bg);pointer-events:none;content:" ";width:500%;margin-left:-250%;animation:1s linear infinite _animation_u2qvm_1;position:absolute;inset:0 0 0 50%}:root{--x-error-fg:oklch(53% .2 25);--x-error-bg:oklch(53% .2 25/.1);--x-error-icon-fg:oklch(53% .2 25)}[data-theme=dark]{--x-error-fg:oklch(70% .13 20);--x-error-bg:oklch(70% .13 20/.1);--x-error-icon-fg:oklch(70% .13 20)}._main_ndt5n_13{align-items:center;gap:var(--x-gutter-sm);border-radius:var(--x-radius);background:var(--x-error-bg);padding:var(--x-gutter-sm) var(--x-gutter);color:var(--x-error-fg);display:flex;position:relative}._main_ndt5n_13 svg{width:1em;height:1em;color:var(--x-error-icon-fg)}._main_ky93m_1{grid-template-columns:repeat(auto-fill, minmax(var(--x-column-min-width), 1fr));column-gap:var(--x-gutter-sm);row-gap:var(--x-gutter);display:grid}._link_ky93m_8{border-radius:var(--x-radius);padding:0 var(--x-gutter-sm);color:var(--x-link-fg)}._link_ky93m_8:hover{background:var(--x-link-bg-hover);color:var(--x-link-fg-hover)}._link_ky93m_8:active{background:var(--x-link-bg-active);color:var(--x-link-fg-active)}._link_ky93m_8 svg{width:1em;height:1em}._main_xx7cp_1 rt{opacity:.5;font-size:1rem;font-weight:400}._main_xx7cp_1[data-is-result]{font-weight:700}:root{--x-browser-benchmark-link-fg:oklch(0% 0 0/.9);--x-browser-benchmark-link-fg-hover:oklch(0% 0 0/.9);--x-browser-benchmark-link-fg-active:oklch(0% 0 0/.9);--x-browser-benchmark-link-bg:oklch(0% 0 0/.05);--x-browser-benchmark-link-bg-hover:oklch(0% 0 0/.1);--x-browser-benchmark-link-bg-active:oklch(0% 0 0/.15)}[data-theme=dark]{--x-browser-benchmark-link-fg:oklch(95% 0 0/.9);--x-browser-benchmark-link-fg-hover:oklch(100% 0 0/.9);--x-browser-benchmark-link-fg-active:oklch(90% 0 0/.9);--x-browser-benchmark-link-bg:oklch(100% 0 0/.05);--x-browser-benchmark-link-bg-hover:oklch(100% 0 0/.1);--x-browser-benchmark-link-bg-active:oklch(100% 0 0/.01)}._main_7f4z3_19{gap:calc(var(--x-gutter-sm) * .5);text-align:center;display:grid}._header_7f4z3_25{justify-content:center;align-items:center;display:flex}._marks_7f4z3_31{all:unset;justify-content:center;align-items:center;gap:calc(var(--x-gutter-sm) * .5);cursor:pointer;border-radius:var(--x-radius);background:var(--x-browser-benchmark-link-bg);color:var(--x-browser-benchmark-link-fg);flex-wrap:wrap;font-size:1.15rem;display:flex}._marks_7f4z3_31:hover{background:var(--x-browser-benchmark-link-bg-hover);color:var(--x-browser-benchmark-link-fg-hover)}._marks_7f4z3_31:active{background:var(--x-browser-benchmark-link-bg-active);color:var(--x-browser-benchmark-link-fg-active)}._marks_7f4z3_31 [data-is-detail]{opacity:.7}._sign_7f4z3_56{opacity:.5}:root{--x-meter-height:5px;--x-meter-bg:linear-gradient(to bottom, oklch(0% 0 0/.1), oklch(0% 0 0/.05));--x-meter-bar-bg:oklch(0% 0 0/.1);--x-meter-value-bg:oklch(79% .25 142);--x-meter-value-optimum-bg:oklch(63% .22 142);--x-meter-value-suboptimum-bg:oklch(76% .14 72);--x-meter-value-even-less-good-bg:oklch(49% .19 28);--x-meter-filter:none;--x-meter-percent-bg:oklch(0% 0 0/.1)}[data-theme=dark]{--x-meter-bg:linear-gradient(to bottom, oklch(100% 0 0/.15), oklch(100% 0 0/.1));--x-meter-bar-bg:oklch(100% 0 0/.1);--x-meter-value-optimum-bg:oklch(63% .22 142);--x-meter-value-suboptimum-bg:oklch(68% .14 70);--x-meter-value-even-less-good-bg:oklch(49% .19 28);--x-meter-filter:brightness(.5);--x-meter-percent-bg:oklch(100% 0 0/.1)}._main_yr5so_23{gap:var(--x-gutter-sm);grid-template-columns:1fr auto;grid-template-areas:"x-meter-name x-meter-percent""x-meter-name x-meter-overview""x-meter-core x-meter-core";display:grid}._percent_yr5so_30{text-align:right;grid-area:x-meter-percent}._percentText_yr5so_35{border-radius:var(--x-radius);background-color:var(--x-meter-percent-bg);padding:0 var(--x-gutter)}._name_yr5so_41{all:unset;color:var(--x-bg-fg);background:0 0;border:none;grid-area:x-meter-name;align-items:center;display:flex}._nameText_yr5so_51{line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:15rem;display:-webkit-box;overflow:hidden}._overview_yr5so_60{grid-area:x-meter-overview}._core_yr5so_64{appearance:none;border-radius:var(--x-meter-height);background:var(--x-meter-bg);width:100%;height:var(--x-meter-height);border:none;grid-area:x-meter-core}._core_yr5so_64::-webkit-meter-bar{border-radius:var(--x-meter-height);background:unset;height:var(--x-meter-height)}._core_yr5so_64::-webkit-meter-optimum-value{border-radius:var(--x-meter-height);background:var(--x-meter-value-optimum-bg)}._core_yr5so_64::-webkit-meter-suboptimum-value{border-radius:var(--x-meter-height);background:var(--x-meter-value-suboptimum-bg)}._core_yr5so_64::-webkit-meter-even-less-good-value{border-radius:var(--x-meter-height);background:var(--x-meter-value-even-less-good-bg)}:root{--x-button-fg:var(--x-text-fg);--x-button-fg-hover:var(--x-text-fg);--x-button-fg-active:var(--x-text-fg);--x-button-bg:oklch(0% 0 0/.1);--x-button-bg-hover:oklch(0% 0 0/.15);--x-button-bg-active:oklch(0% 0 0/.2)}[data-theme=dark]{--x-button-fg:var(--x-text-fg);--x-button-fg-hover:var(--x-text-fg-hover);--x-button-fg-active:var(--x-text-fg-active);--x-button-bg:oklch(100% 0 0/.15);--x-button-bg-hover:oklch(100% 0 0/.2);--x-button-bg-active:oklch(100% 0 0/.1)}@keyframes _spin_i7kkm_1{to{transform:rotate(360deg)}}._button_i7kkm_24{cursor:pointer;border-radius:var(--x-radius);background:var(--x-button-bg);padding:2px var(--x-gutter-sm);color:var(--x-button-fg);font-family:var(--x-text-font-family);border:none;align-items:center;gap:.25em;text-decoration:none;display:flex}._button_i7kkm_24:hover{background:var(--x-button-bg-hover);color:var(--x-button-fg-hover);text-decoration:none}._button_i7kkm_24:active{background:var(--x-button-bg-active);color:var(--x-button-fg-active);text-decoration:none}._icon_i7kkm_48{aspect-ratio:1;place-content:center;width:1rem;display:grid}._icon_i7kkm_48 svg{width:1rem;height:1rem}._icon_i7kkm_48[data-status=loading]{animation:1s linear infinite _spin_i7kkm_1}:root{--x-nav-fg:oklch(0% 0 0/.9);--x-nav-bg:oklch(100% 0 0/.9);--x-nav-bg-hover:oklch(0% 0 0/.05);--x-nav-bg-active:oklch(0% 0 0/.1);--x-nav-border-color:linear-gradient(to bottom, transparent, oklch(0% 0 0/.1), transparent);--x-nav-text-shadow:0 1px 2px oklch(100% 0 0/.3);--x-nav-box-shadow:0 0 3px oklch(0% 0 0/.1)}[data-theme=dark]{--x-nav-fg:oklch(100% 0 0/.9);--x-nav-bg:oklch(100% 0 0/.15);--x-nav-bg-hover:oklch(100% 0 0/.1);--x-nav-bg-active:oklch(100% 0 0/.15);--x-nav-border-color:linear-gradient(to bottom, transparent, oklch(100% 0 0/.1), transparent);--x-nav-text-shadow:0 1px 2px oklch(0% 0 0/.3)}._wrap_1hhzt_20{z-index:10;justify-content:center;padding:0;display:flex;position:sticky;bottom:0;left:0;right:0;overflow:hidden}@media (width>=768px){._wrap_1hhzt_20{bottom:var(--x-gutter-sm);padding:5px}}._main_1hhzt_38{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:var(--x-nav-bg);align-items:center;display:flex;overflow-x:auto}@media (width>=768px){._main_1hhzt_38{box-shadow:var(--x-nav-box-shadow);padding:0 var(--x-gutter);border-radius:10rem}}._link_1hhzt_53{padding:var(--x-gutter);color:var(--x-nav-fg);text-shadow:var(--x-nav-text-shadow);white-space:nowrap;position:relative}._link_1hhzt_53:after{background:var(--x-nav-border-color);pointer-events:none;content:"";width:1px;height:80%;position:absolute;top:20%;right:0;transform:translateY(-20%)}._link_1hhzt_53:last-child:after{display:none}._link_1hhzt_53:hover{background:var(--x-nav-bg-hover);color:var(--x-nav-fg);text-decoration:none}._link_1hhzt_53:focus,._link_1hhzt_53:active,._link_1hhzt_53[data-active]{background:var(--x-nav-bg-active);color:var(--x-nav-fg);text-decoration:none}@media (width>=768px){._link_1hhzt_53{padding:var(--x-gutter-sm) var(--x-gutter)}}:root{--x-card-group-label-fg:var(--x-text-fg);--x-card-group-split-color:oklch(0% 0 0/.1);--x-card-group-bg-hover:oklch(0% 0 0/.05)}[data-theme=dark]{--x-card-group-label-fg:var(--x-text-fg);--x-card-group-split-color:oklch(100% 0 0/.1);--x-card-group-bg-hover:oklch(100% 0 0/.05)}._main_1kdvx_13{grid-template-columns:minmax(var(--min-width), var(--max-width)) 1fr;gap:var(--x-gutter-sm);border-radius:var(--x-radius);display:grid}._main_1kdvx_13:hover{background:var(--x-card-group-bg-hover)}._label_1kdvx_23{color:var(--x-card-group-label-fg);font-family:var(--x-text-font-family);text-align:right;word-break:normal}._label_1kdvx_23:after{content:":"}._content_1kdvx_33{align-items:flex-start;gap:var(--x-gutter-sm);flex-wrap:wrap;display:flex}._main_z8p86_1{grid-template-columns:repeat(auto-fill, minmax(var(--min-width), 1fr));gap:var(--x-gutter-sm);display:grid}:root{--x-status-ok-fg:oklch(100% 0 0/.95);--x-status-ok-bg:linear-gradient(oklch(60% .22 142), oklch(70% .24 142));--x-status-error-fg:oklch(100% 0 0/.95);--x-status-error-bg:linear-gradient(oklch(56% 0 0), oklch(77% 0 0));--x-status-text-shadow:0 1px 1px oklch(0% 0 0/.3)}[data-theme=dark]{--x-status-ok-fg:oklch(100% 0 0/.9);--x-status-ok-bg:linear-gradient(oklch(30% .22 142), oklch(35% .23 142));--x-status-error-fg:oklch(100% 0 0/.9);--x-status-error-bg:linear-gradient(oklch(30% 0 0), oklch(35% 0 0))}._main_17jwg_17{border-radius:var(--x-radius);min-width:2em;text-shadow:var(--x-status-text-shadow);white-space:nowrap;justify-content:center;align-items:center;padding:0 .5rem;font-family:Arial Black,sans-serif;font-weight:bolder;display:inline-flex}._main_17jwg_17[data-ok]{background:var(--x-status-ok-bg);color:var(--x-status-ok-fg)}._main_17jwg_17[data-error]{background:var(--x-status-error-bg);color:var(--x-status-error-fg)}._main_17jwg_17[data-ok][data-icon]:before{content:"✓"}._main_17jwg_17[data-error][data-icon]:before{content:"×"}._main_1n0a8_1{grid-template-columns:repeat(auto-fill, minmax(var(--x-column-min-width), 1fr));gap:var(--x-gutter);display:grid}._container_1bb8j_2{gap:var(--x-gutter-sm);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}._item_1bb8j_8{display:grid}._id_1bb8j_12{text-align:center;text-decoration:underline}._idRow_1bb8j_17{align-items:center;display:grid}._dataContainer_1bb8j_22{text-align:center;justify-content:center;align-items:center;display:flex}._data_1bb8j_22{flex:0 0 50%}._data_1bb8j_22[data-rx]{color:var(--x-network-stats-rx-fg)}._data_1bb8j_22[data-tx]{color:var(--x-network-stats-tx-fg)}._rate_1bb8j_39{font-family:"Arial Black", var(--x-code-font-family)}._rate_1bb8j_39:before{margin-right:.5rem}._rateRx_1bb8j_46:before{content:"▼"}._rateTx_1bb8j_50:before{content:"▲"}:root{--x-network-stats-tx-fg:oklch(58% .17 36);--x-network-stats-tx-bg:oklch(53% .21 44/.1);--x-network-stats-rx-fg:oklch(55% .18 142);--x-network-stats-rx-bg:oklch(44% .18 142/.1)}[data-theme=dark]{--x-network-stats-tx-fg:oklch(72% .15 51);--x-network-stats-tx-bg:oklch(70% .21 46/.15);--x-network-stats-rx-fg:oklch(70% .2 142);--x-network-stats-rx-bg:oklch(70% .2 142/.15)}._main_j131p_15{grid-template-areas:"network-stats-item-id network-stats-item-id""network-stats-item-rx network-stats-item-tx";gap:1px;display:grid}._id_j131p_21{text-align:center;grid-area:network-stats-item-id}._label_j131p_26{opacity:.95}._total_j131p_30{opacity:.95;font-weight:700}._rx_j131p_35,._tx_j131p_36{padding:var(--x-gutter-sm);font-family:"Tahoma", var(--x-code-font-family);text-align:center;display:grid;position:relative}._rx_j131p_35{border-radius:var(--x-radius) 0 0 var(--x-radius);background:var(--x-network-stats-rx-bg);color:var(--x-network-stats-rx-fg);grid-area:network-stats-item-rx}._tx_j131p_36{border-radius:0 var(--x-radius) var(--x-radius) 0;background:var(--x-network-stats-tx-bg);color:var(--x-network-stats-tx-fg);grid-area:network-stats-item-tx}._rateRx_j131p_58,._rateTx_j131p_59{font-size:1.5rem;font-weight:700}._main_6ky1o_1{grid-template-columns:repeat(auto-fill, minmax(var(--x-column-min-width), 1fr));column-gap:var(--x-gutter-sm);row-gap:var(--x-gutter);display:grid}:root{--x-sys-load-fg:var(--x-text-fg);--x-sys-load-bg:transparent;--x-sys-load-interval-bg:oklch(0% 0 0/.1)}[data-theme=dark]{--x-sys-load-fg:var(--x-text-fg);--x-sys-load-interval-bg:oklch(100% 0 0/.1)}._main_1pjeu_12{gap:var(--x-gutter-sm);grid-template-columns:1fr auto;grid-template-areas:"x-server-stats-system-load-label x-server-stats-system-load-usage""x-server-stats-system-load-label x-server-stats-system-load-group""x-server-stats-system-load-meter x-server-stats-system-load-meter";display:grid}._label_1pjeu_19{grid-area:x-server-stats-system-load-label;align-items:center;display:grid}._meter_1pjeu_25{grid-area:x-server-stats-system-load-meter;grid-template-areas:"x-meter-core";display:grid}._usage_1pjeu_31{text-align:right;grid-area:x-server-stats-system-load-usage}._group_1pjeu_36{align-items:center;gap:var(--x-gutter-sm);grid-area:x-server-stats-system-load-group;display:flex}._groupItem_1pjeu_43{border-radius:var(--x-radius);background:var(--x-sys-load-interval-bg);padding:0 var(--x-gutter);color:var(--x-sys-load-fg);font-family:var(--x-code-font-family)}._sysLoad_mqy5s_1{gap:var(--x-gutter-sm);display:flex}:root{--x-nodes-usage-percent-bg:oklch(0% 0 0/.1)}[data-theme=dark]{--x-nodes-usage-percent-bg:oklch(100% 0 0/.1)}._main_8nrrw_9{column-gap:var(--x-gutter-sm);row-gap:0;gap:var(--x-gutter-sm);grid-template-columns:1fr auto;grid-template-areas:"x-nodes-usage-label x-nodes-usage-label""x-nodes-usage-overview x-nodes-usage-percent""x-nodes-usage-meter x-nodes-usage-meter";display:grid}._meter_8nrrw_18{height:var(--x-meter-height);grid-area:x-nodes-usage-meter;display:flex}._label_8nrrw_24{align-items:center;gap:var(--x-gutter-sm);grid-area:x-nodes-usage-label;display:flex}._label_8nrrw_24 svg{width:1em;height:1em}._overview_8nrrw_35{gap:var(--x-gutter-sm);grid-area:x-nodes-usage-overview;display:flex}._chart_8nrrw_41{grid-area:x-nodes-usage-chart;display:none}._percent_8nrrw_46{border-radius:var(--x-radius);background:var(--x-nodes-usage-percent-bg);padding:0 var(--x-gutter);grid-area:x-nodes-usage-percent}._main_1pxno_1{gap:var(--x-gutter-sm);max-height:calc(100px + var(--x-gutter-sm));overscroll-behavior:contain;scroll-snap-type:y mandatory;scrollbar-color:oklch(50% 0 0/.5) transparent;display:grid;position:relative;overflow-y:scroll;container-type:inline-size}._item_1pxno_13{scroll-snap-align:start}._main_mc2kq_1,._main_18siw_1{gap:var(--x-gutter-sm);display:grid}._name_18siw_6{text-align:center}._loading_18siw_10{place-content:center;height:10rem;display:grid}:root{--x-search-fg:var(--x-link-fg);--x-search-fg-hover:var(--x-link-fg-hover);--x-search-fg-active:var(--x-link-fg-active);--x-search-bg:var(--x-link-bg);--x-search-bg-hover:var(--x-link-bg-hover);--x-search-bg-active:var(--x-link-bg-active)}._container_roz84_11{gap:var(--x-gutter-sm);opacity:.7;flex-wrap:wrap;line-height:1;display:flex}._container_roz84_11:empty:after{opacity:.5;content:"⊘";line-height:var(--x-line-height)}._button_roz84_24{all:unset;cursor:pointer;border-radius:var(--x-radius);background:var(--x-search-bg);padding:calc(var(--x-gutter-sm) * .5) var(--x-gutter-sm);color:var(--x-search-fg);font-family:var(--x-code-font-family)}._button_roz84_24:hover{background:var(--x-search-bg-hover);color:var(--x-search-fg-hover)}._button_roz84_24:active{background:var(--x-search-bg-active);color:var(--x-search-fg-active)}:root{--x-ping-result-scrollbar-bg:oklch(0% 0 0/.5);--x-ping-item-bg:oklch(0% 0 0/.1)}[data-theme=dark]{--x-ping-result-scrollbar-bg:oklch(100% 0 0/.5);--x-ping-item-bg:oklch(100% 0 0/.1)}._itemContainer_386ei_11{border-radius:var(--x-radius);background:var(--x-ping-item-bg);padding:var(--x-gutter-sm) var(--x-gutter);scrollbar-color:var(--x-ping-result-scrollbar-bg) transparent;flex-grow:1;grid-template-columns:repeat(auto-fill,minmax(5rem,1fr));grid-auto-flow:row;gap:.15em;height:7rem;list-style-type:none;display:grid;overflow-y:auto}._resultContainer_386ei_26{gap:var(--x-gutter-sm);flex-grow:1;display:grid}._result_386ei_26{flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}._main_fajqi_1{display:flex}:root{--x-server-benchmark-marks-fg:oklch(15% 0 0/.9);--x-server-benchmark-marks-fg-hover:oklch(10% 0 0/.9);--x-server-benchmark-marks-fg-active:oklch(20% 0 0/.9);--x-server-benchmark-marks-bg:oklch(0% 0 0/.05);--x-server-benchmark-marks-bg-hover:oklch(0% 0 0/.1);--x-server-benchmark-marks-bg-active:oklch(0% 0 0/.15)}[data-theme=dark]{--x-server-benchmark-marks-fg:oklch(95% 0 0/.9);--x-server-benchmark-marks-fg-hover:oklch(100% 0 0/.9);--x-server-benchmark-marks-fg-active:oklch(90% 0 0/.9);--x-server-benchmark-marks-bg:oklch(100% 0 0/.05);--x-server-benchmark-marks-bg-hover:oklch(100% 0 0/.1);--x-server-benchmark-marks-bg-active:oklch(100% 0 0/.01)}._main_110il_19{gap:calc(var(--x-gutter-sm) * .5);text-align:center;display:grid}._header_110il_25{justify-content:center;align-items:center;display:flex}._marks_110il_31{all:unset;justify-content:center;align-items:center;gap:calc(var(--x-gutter-sm) * .5);cursor:pointer;border-radius:var(--x-radius);background:var(--x-server-benchmark-marks-bg);color:var(--x-server-benchmark-marks-fg);flex-wrap:wrap;font-size:1.15rem;display:flex}._marks_110il_31:hover{background:var(--x-server-benchmark-marks-bg-hover);color:var(--x-server-benchmark-marks-fg-hover)}._marks_110il_31:active{background:var(--x-server-benchmark-marks-bg-active);color:var(--x-server-benchmark-marks-fg-active)}._marks_110il_31 [data-is-detail]{opacity:.7}._sign_110il_56{opacity:.5}._main_11z09_1{grid-template-columns:repeat(auto-fill, minmax(var(--x-column-min-width), 1fr));column-gap:var(--x-gutter-sm);row-gap:var(--x-gutter);display:grid}._title_11z09_8,._link_11z09_9{border-radius:var(--x-radius);padding:0 var(--x-gutter-sm);color:var(--x-link-fg)}._title_11z09_8:hover,._link_11z09_9:hover{background:var(--x-link-bg-hover);color:var(--x-link-fg-hover)}._title_11z09_8:active,._link_11z09_9:active{background:var(--x-link-bg-active);color:var(--x-link-fg-active)}._title_11z09_8 svg,._link_11z09_9 svg{width:1em;height:1em}._title_11z09_8{text-decoration:underline}._main_128cz_1{gap:var(--x-gutter-sm);display:grid}._modules_128cz_6{grid-template-columns:repeat(auto-fill, minmax(var(--x-column-min-width), 1fr));gap:var(--x-gutter);display:grid}@keyframes _spin_nuyl9_1{to{transform:rotate(360deg)}}._main_nuyl9_6{flex-wrap:wrap;justify-content:center;align-items:center;gap:.5em;height:100svh;display:flex}._main_nuyl9_6:before{box-sizing:border-box;border:1px solid var(--x-button-bg);border-top-color:var(--x-button-fg);content:"";border-radius:50%;width:16px;height:16px;animation:1s linear infinite _spin_nuyl9_1} /*$vite$:1*/ CODE; exit; @@ -1218,21 +1218,21 @@ X-Poedit-SourceCharset: UTF-8 X-Generator: Poedit 3.7 X-ZhConverter: 繁化姬 dict-b76338ce-r665 @ 2019/11/20 14:24:08 | https://zhconvert.org X-Poedit-Flags-xgettext: --add-comments -`},"{{days}}d {{hours}}h {{mins}}min {{secs}}s":{ja:`{{days}}日 {{hours}}時間 {{mins}}分 {{secs}}秒`,zh:`{{days}} 天 {{hours}} 时 {{mins}} 分 {{secs}} 秒`,zhcn:`{{days}} 天 {{hours}} 时 {{mins}} 分 {{secs}} 秒`,zhhk:`{{days}}天 {{hours}}小時 {{mins}}分鐘 {{secs}}秒`,zhtw:`{{days}}天 {{hours}}小時 {{mins}}分鐘 {{secs}}秒`},"{{minute}} minute average":{ja:`{{minute}}分平均負荷`,zh:`{{minute}} 分钟平均负载`,zhcn:`{{minute}} 分钟平均负载`,zhhk:`{{minute}} 分鐘平均`,zhtw:`{{minute}} 分鐘平均`},"{{oldVersion}} (Latest: {{latestPhpVersion}})":{ja:`{{oldVersion}} (最新: {{latestPhpVersion}})`,zh:`{{oldVersion}}(最新版:{{latestPhpVersion}})`,zhcn:`{{oldVersion}}(最新版:{{latestPhpVersion}})`,zhhk:`{{oldVersion}}(最新版:{{latestPhpVersion}})`,zhtw:`{{oldVersion}}(最新版:{{latestPhpVersion}})`},"{{sensor}} temperature":{ja:`{{sensor}} 温度`,zh:`{{sensor}} 温度`,zhcn:`{{sensor}} 温度`,zhhk:`{{sensor}} 溫度`,zhtw:`{{sensor}} 溫度`},"{{times}} times, min/avg/max/mdev = {{min}}/{{avg}}/{{max}}/{{mdev}} ms":{ja:`{{times}}回実行: 最小/平均/最大/偏差 = {{min}}/{{avg}}/{{max}}/{{mdev}} ms`,zh:`{{times}}次, 最小/平均/最大/偏差 = {{min}}/{{avg}}/{{max}}/{{mdev}} 毫秒`,zhcn:`{{times}}次, 最小/平均/最大/偏差 = {{min}}/{{avg}}/{{max}}/{{mdev}} 毫秒`,zhhk:`{{times}} 次,最小/平均/最大/偏差 = {{min}}/{{avg}}/{{max}}/{{mdev}} 毫秒`,zhtw:`{{times}} 次,最小/平均/最大/偏差 = {{min}}/{{avg}}/{{max}}/{{mdev}} 毫秒`},"{{usage}}% CPU usage":{ja:`CPU使用率: {{usage}}%`,zh:`{{usage}}% CPU 使用率`,zhcn:`{{usage}}% CPU 使用率`,zhhk:`CPU 使用率 {{usage}}%`,zhtw:`CPU 使用率 {{usage}}%`},"⏳ Updating, please wait a second...":{ja:`⏳ 更新中...`,zh:`⏳ 更新中,请稍等……`,zhcn:`⏳ 更新中,请稍等……`,zhhk:`⏳ 更新中,請稍候...`,zhtw:`⏳ 更新中,請稍候...`},"✨ Found new version: {{oldVersion}} ⇢ {{newVersion}}":{ja:`✨ 新版検出: {{oldVersion}} → {{newVersion}}`,zh:`✨ 发现新版本: {{oldVersion}} → {{newVersion}}`,zhcn:`✨ 发现新版本: {{oldVersion}} → {{newVersion}}`,zhhk:`✨ 發現新版本:{{oldVersion}} → {{newVersion}}`,zhtw:`✨ 發現新版本:{{oldVersion}} → {{newVersion}}`},"❌ Update error, click here to try again?":{ja:`❌ 更新エラー [再試行]`,zh:`❌ 更新错误,点击此处再试一次?`,zhcn:`❌ 更新错误,点击此处再试一次?`,zhhk:`❌ 更新錯誤,點此重試?`,zhtw:`❌ 更新錯誤,點此重試?`},"Benchmark my browser":{ja:`ブラウザのベンチマーク`,zh:`测试我的浏览器`,zhcn:`测试我的浏览器`,zhhk:`測試我的瀏覽器`,zhtw:`測試我的瀏覽器`},"Benchmark my server":{ja:`ベンチマーク実行`,zh:`测试我的服务器`,zhcn:`测试我的服务器`,zhhk:`測試我的伺服器`,zhtw:`測試我的伺服器`},"Browser bench":{ja:`ブラウザベンチ`,zh:`浏览器测试`,zhcn:`浏览器测试`,zhhk:`瀏覽器跑分`,zhtw:`瀏覽器跑分`},"Browser Benchmark":{ja:`ブラウザベンチマーク`,zh:`浏览器跑分`,zhcn:`浏览器跑分`,zhhk:`瀏覽器跑分測試`,zhtw:`客戶端跑分測試`},"Browser UA":{ja:`ブラウザユーザーエージェント`,zh:`浏览器 UA`,zhcn:`浏览器 UA`,zhhk:`瀏覽器 UA`,zhtw:`瀏覽器 UA`},"Buffers are in-memory block I/O buffers. They are relatively short-lived. Prior to Linux kernel version 2.4, Linux had separate page and buffer caches. Since 2.4, the page and buffer cache are unified and Buffers is raw disk blocks not represented in the page cache—i.e., not file data.":{ja:`バッファはメモリ内のブロックI/O用一時領域です。Linuxカーネル2.4以前ではページキャッシュとバッファキャッシュが分離されていましたが、2.4以降は統合され、バッファはページキャッシュに含まれない生ディスクブロック(非ファイルデータ)を指します。`,zh:`缓冲区是内存中的块 I/O 缓冲区,生命周期较短。Linux 内核 2.4 版本前,页面缓存和缓冲区缓存是分离的。2.4 版本后两者统一,缓冲区指不在页面缓存中的原始磁盘块(即非文件数据)。`,zhcn:`缓冲区是内存中的块 I/O 缓冲区,生命周期较短。Linux 内核 2.4 版本前,页面缓存和缓冲区缓存是分离的。2.4 版本后两者统一,缓冲区指不在页面缓存中的原始磁盘块(即非文件数据)。`,zhhk:`緩衝區是記憶體中的區塊 I/O 緩衝,生命週期較短。在 Linux 核心 2.4 版之前,頁面快取和緩衝區快取是分開的。自 2.4 版起,兩者已統一,緩衝區代表未存入頁面快取的原始磁碟區塊(即非檔案資料)。`,zhtw:`緩衝區是記憶體中的區塊 I/O 緩衝,生命週期較短。在 Linux 核心 2.4 版之前,頁面快取和緩衝區快取是分開的。自 2.4 版起,兩者已統一,緩衝區代表未存入頁面快取的原始磁碟區塊(即非檔案資料)。`},'Cached memory is memory that Linux uses for disk caching. However, this does not count as "used" memory, since it will be freed when applications require it. Hence you do not have to worry if a large amount is being used.':{ja:`キャッシュメモリはディスクキャッシュ用に確保された領域です。アプリケーションが必要時に解放されるため「使用中」メモリにはカウントされず、使用量が多くても問題ありません。`,zh:`缓存内存是 Linux 用于磁盘缓存的内存空间,不计入“已用”内存,因为应用程序需要时会自动释放。因此即使使用量较大也无需担心。`,zhcn:`缓存内存是 Linux 用于磁盘缓存的内存空间,不计入“已用”内存,因为应用程序需要时会自动释放。因此即使使用量较大也无需担心。`,zhhk:`快取記憶體是 Linux 用於磁碟快取的空間,不計入「已用」記憶體,因應用程式需要時會自動釋放。故即使使用量較大亦無需擔心。`,zhtw:`快取記憶體是 Linux 用於磁碟快取的空間,不計入「已用」記憶體,因應用程式需要時會自動釋放。故即使使用量較大亦無需擔心。`},"Can not fetch IP":{ja:`IP取得失敗`,zh:`无法获取 IP`,zhcn:`无法获取 IP`,zhhk:`無法取得 IP`,zhtw:`無法取得 IP`},"Can not fetch location.":{ja:`位置情報を取得できません。`,zh:`无法获取地理位置。`,zhcn:`无法获取地理位置。`,zhhk:`無法取得地理位置。`,zhtw:`無法取得地理位置。`},"Can not fetch marks data from GitHub.":{ja:`GitHubからスコアデータを取得できません。`,zh:`无法从 GitHub 中获取跑分数据。`,zhcn:`无法从 GitHub 中获取跑分数据。`,zhhk:`無法從 GitHub 取得跑分數據。`,zhtw:`無法從 GitHub 取得跑分資料。`},"Can not update file, please check the server permissions and space.":{ja:`ファイル更新失敗 サーバーの権限/空き容量を確認してください。`,zh:`无法更新文件,请检查服务器权限和空间。`,zhcn:`无法更新文件,请检查服务器权限和空间。`,zhhk:`無法更新檔案,請檢查伺服器權限及空間。`,zhtw:`無法更新檔案,請檢查伺服器權限及空間。`},"Click to close":{ja:`クリックで閉じる`,zh:`点击关闭`,zhcn:`点击关闭`,zhhk:`點擊關閉`,zhtw:`點擊關閉`},"Click to fetch":{ja:`クリックして取得`,zh:`点击获取`,zhcn:`点击获取`,zhhk:`點擊獲取`,zhtw:`點擊獲取`},"Click to update":{ja:`クリックで更新`,zh:`点击更新`,zhcn:`点击更新`,zhhk:`點擊更新`,zhtw:`點擊更新`},CPU:{ja:`CPU`,zh:`CPU`,zhcn:`CPU`,zhhk:`中央處理器`,zhtw:`中央處理器`},"CPU model":{ja:`CPUモデル`,zh:`CPU 型号`,zhcn:`CPU 型号`,zhhk:`CPU 型號`,zhtw:`CPU 型號`},"CPU usage":{ja:`CPU使用率`,zh:`CPU 占用`,zhcn:`CPU 占用`,zhhk:`CPU 使用率`,zhtw:`CPU 使用率`},Dark:{zhhk:`暗黑模式`},Database:{ja:`データベース`,zh:`数据库`,zhcn:`数据库`,zhhk:`資料庫`,zhtw:`資料庫`},DB:{ja:`データベース`,zh:`数据库`,zhcn:`数据库`,zhhk:`資料庫`,zhtw:`資料庫`},Default:{zhhk:`預設`},Detail:{ja:`詳細`,zh:`详细`,zhcn:`详细`,zhhk:`詳細資料`,zhtw:`詳細資料`},"Different versions cannot be compared, and different time clients have different loads, just for reference.":{ja:`異なるバージョンを比較することはできません。また、異なる時間のクライアントには異なる負荷がかかりますが、これはあくまで参考値です。`,zh:`不同版本的不能比较,不同的时间服务器存在不同的负载,仅作参考。`,zhcn:`不同版本的不能比较,不同的时间服务器存在不同的负载,仅作参考。`,zhhk:`不同版本無法直接比較,且不同時間瀏覽器負載各異,結果僅供參考。`,zhtw:`不同版本無法比較,不同時間客戶端負載不同,僅供參考。`},"Different versions cannot be compared, and different time servers have different loads, just for reference.":{ja:`異なるバージョン間の比較は不可。タイムサーバーの負荷状態により結果が変動します(参考値)`,zh:`不同版本的不能比较,不同的时间服务器存在不同的负载,仅作参考。`,zhcn:`不同版本的不能比较,不同的时间服务器存在不同的负载,仅作参考。`,zhhk:`不同版本無法直接比較,且不同時間伺服器負載各異,結果僅供參考。`,zhtw:`不同版本無法直接比較,且不同時間伺服器負載各異,結果僅供參考。`},"Disabled classes":{ja:`無効化クラス`,zh:`已禁用的类`,zhcn:`已禁用的类`,zhhk:`已停用類別`,zhtw:`已停用類別`},"Disabled functions":{ja:`無効化関数`,zh:`已禁用的函数`,zhcn:`已禁用的函数`,zhhk:`已停用函式`,zhtw:`已停用函式`},Disk:{ja:`ディスク`,zh:`磁盘`,zhcn:`磁盘`,zhhk:`磁碟`,zhtw:`磁碟`},"Disk Usage":{ja:`ディスク使用量`,zh:`磁盘用量`,zhcn:`磁盘用量`,zhhk:`磁碟用量`,zhtw:`磁碟使用量`},"Display errors":{ja:`エラー表示設定`,zh:`显示错误`,zhcn:`显示错误`,zhhk:`顯示錯誤`,zhtw:`顯示錯誤`},"Download speed test":{ja:`ダウンロード速度テスト`,zh:`下载速度测试`,zhcn:`下载速度测试`,zhhk:`下載速度測試`,zhtw:`下載速度測試`},"Error reporting":{ja:`エラーレポート設定`,zh:`错误报告`,zhcn:`错误报告`,zhhk:`錯誤報告`,zhtw:`錯誤報告`},"Error: {{error}}":{ja:`エラー: {{error}}`,zh:`错误:{{error}}`,zhcn:`错误:{{error}}`,zhhk:`錯誤: {{error}}`,zhtw:`錯誤: {{error}}`},"Failed to fetch data. Please try again later.":{ja:`データの取得に失敗しました。しばらくしてからもう一度お試しください。`,zh:`无法获取数据,请稍后再试。`,zhcn:`无法获取数据,请稍后再试。`,zhhk:`無法獲取數據,請稍後重試。`,zhtw:`無法獲取資料,請稍後重試。`},"Generate by {{appName}} and developed by {{authorName}}":{ja:`{{appName}} によって生成され、{{authorName}} によって開発されました`,zh:`由 {{appName}} 生成,由 {{authorName}} 开发`,zhcn:`由 {{appName}} 生成,由 {{authorName}} 开发`,zhhk:`由{{appName}}生成並由{{authorName}}開發`,zhtw:`由{{appName}}生成並由{{authorName}}開發`},"idle: {{idle}} \\nnice: {{nice}} \\nsys: {{sys}} \\nuser: {{user}}":{ja:`アイドル: {{idle}} \\n低優先: {{nice}} \\nシステム: {{sys}} \\nユーザー: {{user}}`,zh:`空闲: {{idle}} \\n低优先级: {{nice}} \\n系统: {{sys}} \\n用户: {{user}}`,zhcn:`空闲: {{idle}} \\n低优先级: {{nice}} \\n系统: {{sys}} \\n用户: {{user}}`,zhhk:`閒置: {{idle}} \\n優先: {{nice}} \\n系統: {{sys}} \\n用戶: {{user}}`,zhtw:`閒置: {{idle}} \\n優先: {{nice}} \\n系統: {{sys}} \\n使用者: {{user}}`},Info:{ja:`情報`,zh:`信息`,zhcn:`信息`,zhhk:`資訊`,zhtw:`資訊`},IPv4:{ja:`IPv4`,zh:`IPv4`,zhcn:`IPv4`,zhhk:`IPv4`,zhtw:`IPv4`},IPv6:{ja:`IPv6`,zh:`IPv6`,zhcn:`IPv6`,zhhk:`IPv6`,zhtw:`IPv6`},"JS Browser languages":{ja:`JS ブラウザ言語`,zh:`JS 浏览器语言`,zhcn:`JS 浏览器语言`,zhhk:`JS 瀏覽器語言`,zhtw:`JS瀏覽器語言`},LiangYe:{ja:`良夜`,zh:`良夜`,zhcn:`良夜`,zhtw:`良夜`},'Linux comes with many commands to check memory usage. The "free" command usually displays the total amount of free and used physical and swap memory in the system, as well as the buffers used by the kernel. The "top" command provides a dynamic real-time view of a running system.':{ja:`Linuxにはメモリ使用量確認コマンドが複数存在します。「free」コマンドは物理メモリ/スワップの使用状況とカーネルバッファを表示し、「top」コマンドはシステムのリアルタイム状態を動的に表示します。`,zh:`Linux 提供多种内存检测命令:“free”命令显示系统物理内存和交换空间的总用量及内核缓冲区;“top”命令提供运行中系统的实时动态视图。`,zhcn:`Linux 提供多种内存检测命令:“free”命令显示系统物理内存和交换空间的总用量及内核缓冲区;“top”命令提供运行中系统的实时动态视图。`,zhhk:`Linux 提供多種記憶體檢測指令:「free」指令顯示系統實體記憶體及交換區的總用量與緩衝區使用情況;「top」指令則提供運行中系統的即時動態檢視。`,zhtw:`Linux 提供多種記憶體檢測指令:「free」指令顯示系統實體記憶體及交換區的總用量與緩衝區使用情況;「top」指令則提供運行中系統的即時動態檢視。`},"Loaded extensions":{ja:`ロード済み拡張機能`,zh:`已加载的扩展`,zhcn:`已加载的扩展`,zhhk:`已載入擴充功能`,zhtw:`已載入擴充功能`},"Loading...":{ja:`読込中...`,zh:`加载中……`,zhcn:`加载中……`,zhhk:`載入中...`,zhtw:`載入中...`},"Local IPv4":{ja:`ネイティブ IPv4`,zh:`本地 IPv4`,zhcn:`本地 IPv4`,zhhk:`本地 IPv4`,zhtw:`本地 IPv4`},"Local IPv6":{ja:`ネイティブ IPv6`,zh:`本地 IPv6`,zhcn:`本地 IPv6`,zhhk:`本地 IPv6`,zhtw:`本地 IPv6`},"Location (IPv4)":{ja:`位置情報 (IPv4)`,zh:`位置(IPv4)`,zhcn:`位置(IPv4)`,zhhk:`位置 (IPv4)`,zhtw:`位置 (IPv4)`},"Max execution time":{ja:`最大実行時間`,zh:`运行超时秒数`,zhcn:`运行超时秒数`,zhhk:`最長執行時間`,zhtw:`最長執行時間`},"Max input variables":{ja:`最大入力変数`,zh:`提交表单限制`,zhcn:`提交表单限制`,zhhk:`最大輸入變數`,zhtw:`最大輸入變數`},"Max memory limit":{ja:`最大メモリ制限`,zh:`运行内存限制`,zhcn:`运行内存限制`,zhhk:`最大記憶體限制`,zhtw:`最大記憶體限制`},"Max POST size":{ja:`最大POSTサイズ`,zh:`POST 提交限制`,zhcn:`POST 提交限制`,zhhk:`最大 POST 容量`,zhtw:`最大 POST 容量`},"Max upload size":{ja:`最大アップロードサイズ`,zh:`上传文件限制`,zhcn:`上传文件限制`,zhhk:`最大上載容量`,zhtw:`最大上傳容量`},"Memory buffers":{ja:`メモリバッファ`,zh:`内存缓冲`,zhcn:`内存缓冲`,zhhk:`記憶體緩衝區`,zhtw:`記憶體緩衝區`},"Memory cached":{ja:`キャッシュメモリ`,zh:`内存缓存`,zhcn:`内存缓存`,zhhk:`記憶體快取`,zhtw:`記憶體快取`},"Memory real usage":{ja:`実メモリ使用量`,zh:`真实内存占用`,zhcn:`真实内存占用`,zhhk:`實際記憶體用量`,zhtw:`實際記憶體用量`},Mine:{ja:`マイデータ`,zh:`我的`,zhcn:`我的`,zhhk:`我的`,zhtw:`我的`},"Move down":{ja:`下へ移動`,zh:`下移`,zhcn:`下移`,zhhk:`下移`,zhtw:`下移`},"Move up":{ja:`上へ移動`,zh:`上移`,zhcn:`上移`,zhhk:`上移`,zhtw:`上移`},"My Info":{ja:`マイ情報`,zh:`我的信息`,zhcn:`我的信息`,zhhk:`我的資訊`,zhtw:`我的資訊`},Name:{ja:`名称`,zh:`名称`,zhcn:`名称`,zhhk:`名稱`,zhtw:`名稱`},Network:{ja:`ネットワーク`,zh:`网络`,zhcn:`网络`,zhhk:`網絡`,zhtw:`網路`},"Network error, please try again later.":{ja:`ネットワークエラー。後ほど再試行してください。`,zh:`网络错误,请稍候重试。`,zhcn:`网络错误,请稍候重试。`,zhhk:`網絡錯誤,請稍後重試。`,zhtw:`網路錯誤,請稍後重試。`},"Network error. Please check your connection.":{ja:`ネットワークエラー。接続を確認してください。`,zh:`网络错误,请检查您的网络链接。`,zhcn:`网络错误,请检查您的网络链接。`,zhtw:`網路錯誤,請檢查您與服務器的網路。`},"Network Stats":{ja:`ネットワーク統計`,zh:`流量统计`,zhcn:`流量统计`,zhhk:`網絡統計`,zhtw:`網路統計`},Nodes:{ja:`ノード`,zh:`节点`,zhcn:`节点`,zhhk:`節點`,zhtw:`節點`},"Not support":{ja:`非対応`,zh:`不支持`,zhcn:`不支持`,zhhk:`不支援`,zhtw:`不支援`},"Opcache enabled":{ja:`Opcache 有効`,zh:`OPcache 已启用`,zhcn:`OPcache 已启用`,zhhk:`Opcache 已啟用`,zhtw:`Opcache 已啟用`},"Opcache JIT enabled":{ja:`Opcache JIT 有効`,zh:`OPcache JIT 已启用`,zhcn:`OPcache JIT 已启用`,zhhk:`Opcache JIT 已啟用`,zhtw:`Opcache JIT 已啟用`},OS:{ja:`OS`,zh:`操作系统`,zhcn:`操作系统`,zhhk:`作業系統`,zhtw:`作業系統`},"PHP Browser languages":{ja:`PHP ブラウザ言語`,zh:`PHP 浏览器语言`,zhcn:`PHP 浏览器语言`,zhhk:`PHP 瀏覽器語言`,zhtw:`PHP瀏覽器語言`},"PHP Ext":{ja:`PHP拡張`,zh:`PHP 扩展`,zhcn:`PHP 扩展`,zhhk:`PHP擴充`,zhtw:`PHP擴充`},"PHP Extensions":{ja:`PHP拡張機能`,zh:`PHP 扩展`,zhcn:`PHP 扩展`,zhhk:`PHP 擴充功能`,zhtw:`PHP 擴充功能`},"PHP Info":{ja:`PHP情報`,zh:`PHP 信息`,zhcn:`PHP 信息`,zhhk:`PHP資訊`,zhtw:`PHP資訊`},"PHP Information":{ja:`PHP情報`,zh:`PHP 信息`,zhcn:`PHP 信息`,zhhk:`PHP 資訊`,zhtw:`PHP 資訊`},Ping:{ja:`ネットワーク診断`,zh:`Ping`,zhcn:`Ping`,zhhk:`網絡檢測`,zhtw:`網路檢測`},"Please wait {{seconds}}s":{ja:`{{seconds}}秒お待ちください`,zh:`请等待 {{seconds}} 秒`,zhcn:`请等待 {{seconds}} 秒`,zhhk:`請等候 {{seconds}} 秒`,zhtw:`請等候 {{seconds}} 秒`},"Public IPv4":{ja:`パブリック IPv4`,zh:`公网 IPv4`,zhcn:`公网 IPv4`,zhhk:`公眾 IPv4`,zhtw:`公開 IPv4`},"Public IPv6":{ja:`パブリック IPv6`,zh:`公网 IPv6`,zhcn:`公网 IPv6`,zhhk:`公眾 IPv6`,zhtw:`公開 IPv6`},Ram:{ja:`RAM`,zh:`内存`,zhcn:`内存`,zhhk:`記憶體`,zhtw:`記憶體`},Read:{ja:`読取`,zh:`读`,zhcn:`读`,zhhk:`讀取`,zhtw:`讀取`},"Recived: {{total}}":{ja:`受信: {{total}}`,zh:`接收:{{total}}`,zhcn:`接收:{{total}}`,zhhk:`接收: {{total}}`,zhtw:`接收: {{total}}`},Results:{ja:`診断結果`,zh:`结果`,zhcn:`结果`,zhhk:`結果`,zhtw:`結果`},"Running the benchmark may freeze the browser interface for a few seconds. Do you want to continue?":{ja:`ベンチマークを実行すると、ブラウザインターフェースが数秒間フリーズする場合があります。続行しますか?`,zh:`执行性能测试可能会冻结浏览器界面数秒,是否继续?`,zhcn:`执行性能测试可能会冻结浏览器界面数秒,是否继续?`,zhhk:`執行基準測試可能會導致瀏覽器介面凍結幾秒鐘。是否繼續?`,zhtw:`執行基準測試可能會導致瀏覽器介面凍結幾秒鐘。是否繼續?`},"SAPI interface":{ja:`SAPIインターフェース`,zh:`SAPI 接口`,zhcn:`SAPI 接口`,zhhk:`SAPI 介面`,zhtw:`SAPI 介面`},"Script path":{ja:`スクリプトパス`,zh:`脚本路径`,zhcn:`脚本路径`,zhhk:`腳本路徑`,zhtw:`腳本路徑`},"Sent: {{total}}":{ja:`送信: {{total}}`,zh:`发送:{{total}}`,zhcn:`发送:{{total}}`,zhhk:`傳送: {{total}}`,zhtw:`傳送: {{total}}`},"Server ⇄ Browser":{ja:`サーバー ⇄ ブラウザー`,zh:`服务器 ⇄ 浏览器`,zhcn:`服务器 ⇄ 浏览器`,zhhk:`伺服器 ⇄ 瀏覽器`,zhtw:`伺服器 ⇄ 瀏覽器`},"Server bench":{ja:`サーバーベンチ`,zh:`服务器测试`,zhcn:`服务器测试`,zhhk:`伺服器跑分`,zhtw:`伺服器跑分`},"Server Benchmark":{ja:`サーバーベンチマーク`,zh:`服务器跑分`,zhcn:`服务器跑分`,zhhk:`伺服器跑分測試`,zhtw:`伺服器跑分測試`},"Server Info":{ja:`サーバー情報`,zh:`服务器信息`,zhcn:`服务器信息`,zhhk:`伺服器資訊`,zhtw:`伺服器資訊`},"Server Status":{ja:`サーバー状態`,zh:`服务器状态`,zhcn:`服务器状态`,zhhk:`伺服器狀態`,zhtw:`伺服器狀態`},"SMTP support":{ja:`SMTPサポート`,zh:`SMTP 支持`,zhcn:`SMTP 支持`,zhhk:`SMTP 支援`,zhtw:`SMTP 支援`},"Start ping":{ja:`Ping 開始`,zh:`开始 Ping`,zhcn:`开始 Ping`,zhhk:`開始 Ping`,zhtw:`開始 Ping`},"Stop ping":{ja:`Ping 停止`,zh:`停止 Ping`,zhcn:`停止 Ping`,zhhk:`停止 Ping`,zhtw:`停止 Ping`},Swap:{ja:`スワップ`,zh:`Swap`,zhcn:`Swap`,zhhk:`交換區`,zhtw:`交換區`},"Swap cached":{ja:`スワップキャッシュ`,zh:`SWAP 缓存`,zhcn:`SWAP 缓存`,zhhk:`交換區快取`,zhtw:`交換區快取`},"Swap usage":{ja:`スワップ使用量`,zh:`SWAP 占用`,zhcn:`SWAP 占用`,zhhk:`交換區用量`,zhtw:`交換區用量`},"System load":{ja:`システム負荷`,zh:`系统负载`,zhcn:`系统负载`,zhhk:`系統負載`,zhtw:`系統負載`},Temperature:{ja:`温度`,zh:`温度传感器`,zhcn:`温度传感器`,zhhk:`溫度`,zhtw:`溫度`},"Temperature sensor":{ja:`温度センサー`,zh:`温度传感器`,zhcn:`温度传感器`,zhhk:`溫度感測器`,zhtw:`溫度感測器`},"Testing, please wait...":{zhhk:`測試中,請稍候...`},Time:{ja:`時間`,zh:`时间`,zhcn:`时间`,zhhk:`時間`,zhtw:`時間`},"Timeout for socket":{ja:`ソケットタイムアウト`,zh:`Socket 超时秒数`,zhcn:`Socket 超时秒数`,zhhk:`Socket 逾時時間`,zhtw:`Socket 逾時時間`},"Touch to copy marks":{ja:`タップでスコアをコピー`,zh:`复制分数`,zhcn:`复制分数`,zhhk:`點擊複製跑分數據`,zhtw:`點擊複製跑分數據`},"Treatment URLs file":{ja:`リモートファイル処理`,zh:`文件远端打开`,zhcn:`文件远端打开`,zhhk:`檔案遠端開啟功能`,zhtw:`檔案遠端開啟功能`},Unavailable:{ja:`取得不可`,zh:`不可用`,zhcn:`不可用`,zhhk:`無法取得`,zhtw:`無法取得`},"Update is disabled in dev mode.":{ja:`開発モードでは更新不可。`,zh:`在开发模式中,更新被禁用。`,zhcn:`在开发模式中,更新被禁用。`,zhhk:`開發模式下停用更新功能。`,zhtw:`開發模式下停用更新功能。`},"Update success, refreshing...":{ja:`更新成功 再読込中...`,zh:`更新成功,正在刷新……`,zhcn:`更新成功,正在刷新……`,zhhk:`更新成功,重新整理中...`,zhtw:`更新成功,重新整理中...`},Uptime:{ja:`稼働時間`,zh:`运行时间`,zhcn:`运行时间`,zhhk:`運行時間`,zhtw:`運行時間`},Version:{ja:`バージョン`,zh:`版本`,zhcn:`版本`,zhhk:`版本`,zhtw:`版本`},"Visit PHP.net Official website":{ja:`PHP.net公式サイトへ`,zh:`访问 PHP.net 官网`,zhcn:`访问 PHP.net 官网`,zhhk:`瀏覽 PHP.net 官方網站`,zhtw:`瀏覽 PHP.net 官方網站`},"Visit probe page":{ja:`プローブページへ`,zh:`查看探针页面`,zhcn:`查看探针页面`,zhhk:`瀏覽檢測頁面`,zhtw:`瀏覽檢測頁面`},"Visit the official website":{ja:`公式サイトへ`,zh:`访问官网`,zhcn:`访问官网`,zhhk:`瀏覽官方網站`,zhtw:`瀏覽官方網站`},"Web server":{ja:`ウェブサーバー`,zh:`Web 服务器`,zhcn:`Web 服务器`,zhhk:`Web伺服器`,zhtw:`Web伺服器`},Write:{ja:`書込`,zh:`写`,zhcn:`写`,zhhk:`寫入`,zhtw:`寫入`},XiGuang:{ja:`曦光`,zh:`曦光`,zhcn:`曦光`,zhtw:`曦光`}},ie=navigator.language.replace(`-`,``).replace(`_`,``).toLowerCase(),w=(e,t=``)=>{let n=`${t?`${t}|`:``}${e}`;return re?.[n]?.[ie]??e},ae=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},oe=(e=>e?ae(e):ae),se=e=>e;function ce(e,t=se){let n=_.useSyncExternalStore(e.subscribe,_.useCallback(()=>t(e.getState()),[e,t]),_.useCallback(()=>t(e.getInitialState()),[e,t]));return _.useDebugValue(n),n}var le=e=>{let t=oe(e),n=e=>ce(t,e);return Object.assign(n,t),n},T=(e=>e?le(e):le),E=Symbol.for(`immer-nothing`),D=Symbol.for(`immer-draftable`),O=Symbol.for(`immer-state`);function ue(e,...t){throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var de=Object,fe=de.getPrototypeOf,k=`constructor`,A=`prototype`,pe=`configurable`,me=`enumerable`,he=`writable`,ge=`value`,_e=e=>!!e&&!!e[O];function ve(e){return e?xe(e)||Oe(e)||!!e[D]||!!e[k]?.[D]||ke(e)||Ae(e):!1}var ye=de[A][k].toString(),be=new WeakMap;function xe(e){if(!e||!je(e))return!1;let t=fe(e);if(t===null||t===de[A])return!0;let n=de.hasOwnProperty.call(t,k)&&t[k];if(n===Object)return!0;if(!Me(n))return!1;let r=be.get(n);return r===void 0&&(r=Function.toString.call(n),be.set(n,r)),r===ye}function Se(e,t,n=!0){Ce(e)===0?(n?Reflect.ownKeys(e):de.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function Ce(e){let t=e[O];return t?t.type_:Oe(e)?1:ke(e)?2:Ae(e)?3:0}var we=(e,t,n=Ce(e))=>n===2?e.has(t):de[A].hasOwnProperty.call(e,t),Te=(e,t,n=Ce(e))=>n===2?e.get(t):e[t],Ee=(e,t,n,r=Ce(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function De(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var Oe=Array.isArray,ke=e=>e instanceof Map,Ae=e=>e instanceof Set,je=e=>typeof e==`object`,Me=e=>typeof e==`function`,Ne=e=>typeof e==`boolean`;function Pe(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var Fe=e=>e.copy_||e.base_,Ie=e=>e.modified_?e.copy_:e.base_;function Le(e,t){if(ke(e))return new Map(e);if(Ae(e))return new Set(e);if(Oe(e))return Array[A].slice.call(e);let n=xe(e);if(t===!0||t===`class_only`&&!n){let t=de.getOwnPropertyDescriptors(e);delete t[O];let n=Reflect.ownKeys(t);for(let r=0;r1&&de.defineProperties(e,{set:Be,add:Be,clear:Be,delete:Be}),de.freeze(e),t&&Se(e,(e,t)=>{Re(t,!0)},!1),e)}function ze(){ue(2)}var Be={[ge]:ze};function Ve(e){return e===null||!je(e)?!0:de.isFrozen(e)}var He=`MapSet`,Ue=`Patches`,We=`ArrayMethods`,Ge={};function Ke(e){let t=Ge[e];return t||ue(0,e),t}var qe=e=>!!Ge[e],Je,Ye=()=>Je,Xe=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:qe(He)?Ke(He):void 0,arrayMethodsPlugin_:qe(We)?Ke(We):void 0});function Ze(e,t){t&&(e.patchPlugin_=Ke(Ue),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Qe(e){$e(e),e.drafts_.forEach(tt),e.drafts_=null}function $e(e){e===Je&&(Je=e.parent_)}var et=e=>Je=Xe(Je,e);function tt(e){let t=e[O];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function nt(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[O].modified_&&(Qe(t),ue(4)),ve(e)&&(e=rt(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[O].base_,e,t)}else e=rt(t,n);return it(t,e,!0),Qe(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===E?void 0:e}function rt(e,t){if(Ve(t))return t;let n=t[O];if(!n)return ft(t,e.handledSet_,e);if(!ot(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);ut(n,e)}return n.copy_}function it(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Re(t,n)}function at(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var ot=(e,t)=>e.scope_===t,st=[];function ct(e,t,n,r){let i=Fe(e),a=e.type_;if(r!==void 0&&Te(i,r,a)===t){Ee(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;Se(i,(e,n)=>{if(_e(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??st;for(let e of o)Ee(i,e,n,a)}function lt(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!ot(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=Ie(i);ct(e,i.draft_??i,a,n),ut(i,r)})}function ut(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}at(e)}}function dt(e,t,n){let{scope_:r}=e;if(_e(n)){let i=n[O];ot(i,r)&&i.callbacks_.push(function(){yt(e),ct(e,n,Ie(i),t)})}else ve(n)&&e.callbacks_.push(function(){let i=Fe(e);e.type_===3?i.has(n)&&ft(n,r.handledSet_,r):Te(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&ft(Te(e.copy_,t,e.type_),r.handledSet_,r)})}function ft(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||_e(e)||t.has(e)||!ve(e)||Ve(e)?e:(t.add(e),Se(e,(r,i)=>{if(_e(i)){let t=i[O];ot(t,n)&&(Ee(e,r,Ie(t),e.type_),at(t))}else ve(i)&&ft(i,t,n)}),e)}function pt(e,t){let n=Oe(e),r={type_:+!!n,scope_:t?t.scope_:Ye(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=j;n&&(i=[r],a=mt);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var j={get(e,t){if(t===O)return e;if(t===`constructor`||t===`__proto__`){let n=Fe(e)[t];return new Proxy(n||{},{get:(e,t)=>t===`__proto__`||t===`prototype`?Object.freeze(Object.create(null)):Reflect.get(e,t),set:()=>!0,apply:(e,t,n)=>Reflect.apply(e,t,n)})}let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=Fe(e);if(!we(i,t,e.type_))return gt(e,i,t);let a=i[t];if(e.finalized_||!ve(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Pe(t))return a;if(a===ht(e.base_,t)){yt(e);let n=e.type_===1?+t:t,r=xt(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t===`constructor`||t===`__proto__`||t===`prototype`?!1:t in Fe(e)},ownKeys(e){return Reflect.ownKeys(Fe(e))},set(e,t,n){if(t===`constructor`||t===`__proto__`||t===`prototype`)return!0;let r=_t(Fe(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=ht(Fe(e),t),i=r?.[O];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(De(n,r)&&(n!==void 0||we(e.base_,t,e.type_)))return!0;yt(e),vt(e)}return e.copy_[t]===n&&(n!==void 0||we(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),dt(e,t,n),!0)},deleteProperty(e,t){return yt(e),ht(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),vt(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=Fe(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[he]:!0,[pe]:e.type_!==1||t!==`length`,[me]:r[me],[ge]:n[t]}},defineProperty(){ue(11)},getPrototypeOf(e){return fe(e.base_)},setPrototypeOf(){ue(12)}},mt={};for(let e in j){let t=j[e];mt[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}mt.deleteProperty=function(e,t){return mt.set.call(this,e,t,void 0)},mt.set=function(e,t,n){return j.set.call(this,e[0],t,n,e[0])};function ht(e,t){let n=e[O];return(n?Fe(n):e)[t]}function gt(e,t,n){let r=_t(t,n);return r?ge in r?r[ge]:r.get?.call(e.draft_):void 0}function _t(e,t){if(!(t in e))return;let n=fe(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=fe(n)}}function vt(e){e.modified_||(e.modified_=!0,e.parent_&&vt(e.parent_))}function yt(e){e.copy_||=(e.assigned_=new Map,Le(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var bt=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(Me(e)&&!Me(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}Me(t)||ue(6),n!==void 0&&!Me(n)&&ue(7);let r;if(ve(e)){let i=et(this),a=xt(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?Qe(i):$e(i)}return Ze(i,n),nt(r,i)}else if(!e||!je(e)){if(r=t(e),r===void 0&&(r=e),r===E&&(r=void 0),this.autoFreeze_&&Re(r,!0),n){let t=[],i=[];Ke(Ue).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}else ue(1,e)},this.produceWithPatches=(e,t)=>{if(Me(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},Ne(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Ne(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Ne(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){ve(e)||ue(8),_e(e)&&(e=St(e));let t=et(this),n=xt(t,e,void 0);return n[O].isManual_=!0,$e(t),n}finishDraft(e,t){let n=e&&e[O];(!n||!n.isManual_)&&ue(9);let{scope_:r}=n;return Ze(r,t),nt(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=Ke(Ue).applyPatches_;return _e(e)?r(e,t):this.produce(e,e=>r(e,t))}};function xt(e,t,n,r){let[i,a]=ke(t)?Ke(He).proxyMap_(t,n):Ae(t)?Ke(He).proxySet_(t,n):pt(t,n);return(n?.scope_??Ye()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?lt(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function St(e){return _e(e)||ue(10,e),Ct(e)}function Ct(e){if(!ve(e)||Ve(e))return e;let t=e[O],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Le(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Le(e,!0);return Se(n,(e,t)=>{Ee(n,e,Ct(t))},r),t&&(t.finalized_=!1),n}var wt=new bt().produce,M=e=>(t,n,r)=>(r.setState=(e,n,...r)=>t(typeof e==`function`?wt(e):e,n,...r),e(r.setState,n,r));function Tt(e,t){return Et(e,t,new Map)}function Et(e,t,n){if(e===t||Number.isNaN(e)&&Number.isNaN(t))return!0;let r=typeof e;if(r!==typeof t)return!1;if(e===null||t===null||r!==`object`)return e===t;if(n.has(e)&&n.get(e)===t)return!0;if(n.set(e,t),e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp&&t instanceof RegExp)return e.toString()===t.toString();if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[r,i]of e)if(!t.has(r)||!Et(i,t.get(r),n))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let r of e){let e=!1;for(let i of t)if(Et(r,i,n)){e=!0;break}if(!e)return!1}return!0}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let r=0;r({pollData:null,setPollData:t=>{e(e=>{Tt(t,e.pollData)||(e.pollData=t)})}}))),Ot=T()(M(e=>({pollData:null,setPollData:t=>e(e=>{e.pollData=t})}))),kt=T()(M(e=>({pollData:null,setPollData:t=>e(e=>{e.pollData=t})}))),At=T()(M(e=>({pollData:null,setPollData:t=>e(e=>{e.pollData=t})}))),jt=T()(M(e=>({pollData:null,setPollData:t=>e(e=>{e.pollData=t})}))),Mt=T()(M(e=>({items:[],pollData:null,setItem:({id:t,...n})=>{e(e=>{let r=e.items.find(e=>e.id===t);r&&Object.assign(r,n)})},setItems:t=>e({items:t}),setPollData:t=>{e(e=>{Tt(t,e.pollData)||(e.pollData=t)})}}))),Nt=T()(M(e=>({latestPhpVersion:``,pollData:null,setPollData:t=>e(e=>{e.pollData=t})}))),Pt=T()(M(e=>({latestPhpVersion:``,pollData:null,setLatestPhpVersion:t=>e(e=>{e.latestPhpVersion=t}),setPollData:t=>e(e=>{e.pollData=t})}))),Ft=T()(M(e=>({pollData:null,publicIpv4:``,publicIpv6:``,setPollData:t=>e(e=>{e.pollData=t}),setPublicIpv4:t=>e(e=>{e.publicIpv4=t}),setPublicIpv6:t=>e(e=>{e.publicIpv6=t})}))),It={cpuUsage:{idle:100,sys:0,usage:0,user:0},memBuffers:{max:0,value:0},memCached:{max:0,value:0},memRealUsage:{max:0,value:0},swapCached:{max:0,value:0},swapUsage:{max:0,value:0},sysLoad:[0,0,0]},Lt=T()(M(e=>({pollData:It,setPollData:t=>e(e=>{e.pollData=t})}))),Rt=T()(M(e=>({latestPhpVersion:``,pollData:null,setLatestPhpVersion:t=>e(e=>{e.latestPhpVersion=t}),setPollData:t=>e(e=>{Tt(t,e.pollData)||(e.pollData=t)})}))),zt=T()(M(e=>({pollData:null,setPollData:t=>e(e=>{e.pollData=t})}))),Bt=T()(M(e=>({pollData:null,setPollData:t=>{e(e=>{e.pollData=t}),Dt.getState().setPollData(t?.config??null),zt.getState().setPollData(t?.userConfig??null),Ot.getState().setPollData(t?.database??null),At.getState().setPollData(t?.myInfo??null),Pt.getState().setPollData(t?.phpInfo??null),kt.getState().setPollData(t?.diskUsage??null),Nt.getState().setPollData(t?.phpExtensions??null),jt.getState().setPollData(t?.networkStats??null),Lt.getState().setPollData(t?.serverStatus??null),Ft.getState().setPollData(t?.serverInfo??null),Mt.getState().setPollData(t?.nodes??null),Rt.getState().setPollData(t?.temperatureSensor??null)}})));function Vt(e,t){let n=e;for(let[e,r]of Object.entries(t)){let t=RegExp(`\\{\\{${e}\\}\\}`,`g`);n=n.replace(t,String(r))}return n}var Ht={main:`BxnxNW_main`},Ut=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),N=o(((e,t)=>{t.exports=Ut()}))(),Wt=()=>{let{hasConfig:e,APP_NAME:t,APP_URL:n,AUTHOR_NAME:r,AUTHOR_URL:i}=Bt(C(e=>({APP_NAME:e.pollData?.config?.APP_NAME,APP_URL:e.pollData?.config?.APP_URL,AUTHOR_NAME:e.pollData?.config?.AUTHOR_NAME,AUTHOR_URL:e.pollData?.config?.AUTHOR_URL,hasConfig:!!e.pollData?.config})));return e?(0,N.jsx)(`div`,{className:Ht.main,dangerouslySetInnerHTML:{__html:Vt(w(`Generate by {{appName}} and developed by {{authorName}}`),{appName:`${t}`,authorName:`${r}`})}}):null},Gt=[{id:`dark`,name:w(`LiangYe`)},{id:`light`,name:w(`XiGuang`)}],Kt={button:`wCyg_G_button`,main:`wCyg_G_main`},qt=e=>{document.documentElement.setAttribute(`data-theme`,e)},Jt=()=>window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`,Yt=()=>{let[e,t]=(0,_.useState)(v.THEME||`system`),[n,r]=(0,_.useState)(Jt);(0,_.useEffect)(()=>{let e=window.matchMedia(`(prefers-color-scheme: dark)`),t=e=>{r(e.matches?`dark`:`light`)};return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]),(0,_.useEffect)(()=>{qt(e===`system`||!e?n:e)},[e,n]);let i=(0,_.useCallback)(e=>{let{id:n}=e.currentTarget.dataset;n&&(t(n),localStorage.setItem(`x-theme:v1`,n))},[]),a=e===`system`||!e?n:e;return(0,N.jsx)(`div`,{className:Kt.main,children:Gt.map(({id:t,name:n})=>{let r=t===e||e===`system`&&t===a;return(0,N.jsx)(`button`,{className:Kt.button,"data-active":r||void 0,"data-id":t,onClick:i,title:n,type:`button`,children:n},t)})})},Xt={main:`hm3F5W_main`},Zt=T()(M(e=>({hasUpdateError:!1,isUpdating:!1,setHasUpdateError:t=>{e(e=>{e.hasUpdateError=t})},setIsUpdating:t=>{e(e=>{e.isUpdating=t})},setTargetVersion:t=>{e(e=>{e.targetVersion=t})},targetVersion:``}))),Qt={main:`zVLxCa_main`},$t=e=>(0,N.jsx)(`a`,{className:Qt.main,...e}),en=e=>(0,N.jsx)(`button`,{className:Qt.main,...e}),tn=T()(M((e,t)=>({close:(n=0)=>{let r=t().timerId;if(r&&clearTimeout(r),n===0){e(e=>{e.isOpen=!1,e.timerId=null});return}let i=setTimeout(()=>{e(e=>{e.isOpen=!1,e.timerId=null})},n*1e3);e(e=>{e.timerId=i})},isOpen:!1,msg:``,open:t=>e(e=>{e.timerId&&clearTimeout(e.timerId),e.isOpen=!0,e.msg=t??``,e.timerId=null}),setMsg:t=>e(e=>{e.msg=t}),timerId:null}))),nn=()=>{let{isUpdating:e,hasUpdateError:t,targetVersion:n}=Zt(C(e=>({hasUpdateError:e.hasUpdateError,isUpdating:e.isUpdating,targetVersion:e.targetVersion}))),r=Dt(e=>e?.pollData?.APP_VERSION??`-`);return e?w(`⏳ Updating, please wait a second...`):t?w(`❌ Update error, click here to try again?`):n?Vt(w(`✨ Found new version: {{oldVersion}} ⇢ {{newVersion}}`),{newVersion:n,oldVersion:r}):``},rn=()=>{let e=nn(),t=Zt(e=>e.isUpdating),n=Zt(e=>e.setIsUpdating),r=Zt(e=>e.setHasUpdateError),i=tn(e=>e.open);return(0,N.jsx)(en,{onClick:(0,_.useCallback)(async e=>{if(e.preventDefault(),e.stopPropagation(),t)return;n(!0);let{status:a}=await b(`update`);switch(a){case 201:i(w(`Update success, refreshing...`)),window.location.reload();return;case 403:i(w(`Update is disabled in dev mode.`)),n(!1),r(!0);return;case 507:case 500:i(w(`Can not update file, please check the server permissions and space.`)),n(!1),r(!0);return;default:}i(w(`Network error, please try again later.`)),n(!1),r(!0)},[t,n,r,i]),title:w(`Click to update`),children:e})},an=/^\d+$/,on={"#":-2,a:-5,alpha:-5,any:-7,b:-4,beta:-4,p:-6,patch:-6,pl:-1,pr:-6,rc:-3};function sn(e,t){let n=e=>{let t=e.indexOf(`+`);return t===-1?e:e.slice(0,t)},r=e=>n(e).trim().replace(/[-_]/g,`.`).replace(/([0-9]+)([a-zA-Z]+)/g,`$1.$2`).replace(/([a-zA-Z]+)([0-9]+)/g,`$1.$2`).split(`.`).filter(e=>e.length>0),i=r(e),a=r(t),o=e=>{if(e===void 0||e===``)return{isNum:!0,val:0,weight:0};if(an.test(e))return{isNum:!0,val:Number.parseInt(e,10),weight:0};let t=e.toLowerCase();return{isNum:!1,val:t,weight:t in on?on[t]:0}},s=Math.max(i.length,a.length);for(let e=0;en.val?1:-1}else if(t.isNum||n.isNum)return t.isNum?n.weight<0?1:-1:t.weight>0?1:-1;else{if(t.weight!==n.weight)return t.weight>n.weight?1:-1;if(t.val!==n.val)return t.val>n.val?1:-1}}return 0}var cn={main:`ASx8aW_main`,name:`ASx8aW_name`,version:`ASx8aW_version`},ln=()=>{let{hasPollData:e,APP_NAME:t,APP_URL:n,APP_VERSION:r}=Dt(C(e=>({APP_NAME:e.pollData?.APP_NAME,APP_URL:e.pollData?.APP_URL,APP_VERSION:e.pollData?.APP_VERSION,hasPollData:!!e.pollData}))),{setTargetVersion:i,targetVersion:a}=Zt(C(e=>({setTargetVersion:e.setTargetVersion,targetVersion:e.targetVersion})));return(0,_.useEffect)(()=>{e&&(async()=>{let{data:e,status:t}=await b(`latestVersion`);!e?.version||t!==200||i(e.version)})()},[e,i]),e?(0,N.jsx)(`h1`,{className:cn.main,children:a&&r&&sn(r,a)<0?(0,N.jsx)(rn,{}):(0,N.jsxs)($t,{href:n,rel:`noreferrer`,target:`_blank`,children:[(0,N.jsx)(`span`,{className:cn.name,children:t}),(0,N.jsx)(`span`,{className:cn.version,children:r})]})}):null},un=()=>(0,N.jsxs)(`div`,{className:Xt.main,children:[(0,N.jsx)(ln,{}),(0,N.jsx)(Yt,{})]}),dn=m(),fn=e=>{let t=(0,_.useRef)(document.createElement(`div`));return(0,_.useEffect)(()=>{if(e){let n=document.getElementById(e);if(!n)return;n.innerHTML=``,n.appendChild(t.current)}else document.body.appendChild(t.current);return()=>{t.current.remove()}},[e]),t.current},pn=({children:e})=>(0,dn.createPortal)(e,fn()),mn={main:`drTdla_main`},hn=()=>{let e=tn(e=>e.isOpen),t=tn(e=>e.msg),n=tn(e=>e.close),r=(0,_.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),n()},[n]);return e?(0,N.jsx)(pn,{children:(0,N.jsx)(`button`,{className:mn.main,onClick:r,title:w(`Click to close`),type:`button`,children:t})}):null},gn={container:`hVPwkW_container`},_n=`browserBenchmark`,vn=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),yn=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),bn=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),xn=e=>{let t=bn(e);return t.charAt(0).toUpperCase()+t.slice(1)},Sn={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},Cn=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},wn=(0,_.createContext)({}),Tn=()=>(0,_.useContext)(wn),En=(0,_.forwardRef)(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>{let{size:l=24,strokeWidth:u=2,absoluteStrokeWidth:d=!1,color:f=`currentColor`,className:p=``}=Tn()??{},m=r??d?Number(n??u)*24/Number(t??l):n??u;return(0,_.createElement)(`svg`,{ref:c,...Sn,width:t??l??Sn.width,height:t??l??Sn.height,stroke:e??f,strokeWidth:m,className:vn(`lucide`,p,i),...!a&&!Cn(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>(0,_.createElement)(e,t)),...Array.isArray(a)?a:[a]])}),Dn=(e,t)=>{let n=(0,_.forwardRef)(({className:n,...r},i)=>(0,_.createElement)(En,{ref:i,iconNode:t,className:vn(`lucide-${yn(xn(e))}`,`lucide-${e}`,n),...r}));return n.displayName=xn(e),n},On=Dn(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),kn=Dn(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),An=Dn(`cloud-download`,[[`path`,{d:`M12 13v8l-4-4`,key:`1f5nwf`}],[`path`,{d:`m12 21 4-4`,key:`1lfcce`}],[`path`,{d:`M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284`,key:`ui1hmy`}]]),jn=Dn(`cpu`,[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]),Mn=Dn(`hard-drive`,[[`path`,{d:`M10 16h.01`,key:`1bzywj`}],[`path`,{d:`M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`18tbho`}],[`path`,{d:`M21.946 12.013H2.054`,key:`zqlbp7`}],[`path`,{d:`M6 16h.01`,key:`1pmjb7`}]]),Nn=Dn(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),Pn=Dn(`link`,[[`path`,{d:`M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71`,key:`1cjeqo`}],[`path`,{d:`M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71`,key:`19qd67`}]]),Fn=Dn(`loader-pinwheel`,[[`path`,{d:`M22 12a1 1 0 0 1-10 0 1 1 0 0 0-10 0`,key:`1lzz15`}],[`path`,{d:`M7 20.7a1 1 0 1 1 5-8.7 1 1 0 1 0 5-8.6`,key:`1gnrpi`}],[`path`,{d:`M7 3.3a1 1 0 1 1 5 8.6 1 1 0 1 0 5 8.6`,key:`u9yy5q`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),In=Dn(`memory-stick`,[[`path`,{d:`M12 12v-2`,key:`fwoke6`}],[`path`,{d:`M12 18v-2`,key:`qj6yno`}],[`path`,{d:`M16 12v-2`,key:`heuere`}],[`path`,{d:`M16 18v-2`,key:`s1ct0w`}],[`path`,{d:`M2 11h1.5`,key:`15p63e`}],[`path`,{d:`M20 18v-2`,key:`12ehxp`}],[`path`,{d:`M20.5 11H22`,key:`khsy7a`}],[`path`,{d:`M4 18v-2`,key:`1c3oqr`}],[`path`,{d:`M8 12v-2`,key:`1mwtfd`}],[`path`,{d:`M8 18v-2`,key:`qcmpov`}],[`rect`,{x:`2`,y:`6`,width:`20`,height:`10`,rx:`2`,key:`1qcswk`}]]),Ln=Dn(`pointer`,[[`path`,{d:`M22 14a8 8 0 0 1-8 8`,key:`56vcr3`}],[`path`,{d:`M18 11v-1a2 2 0 0 0-2-2a2 2 0 0 0-2 2`,key:`1agjmk`}],[`path`,{d:`M14 10V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1`,key:`wdbh2u`}],[`path`,{d:`M10 9.5V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v10`,key:`1ibuk9`}],[`path`,{d:`M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15`,key:`g6ys72`}]]),Rn=Dn(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),zn=Dn(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),Bn={arrow:`_2mRR7G_arrow`},Vn=`database`,Hn=`diskUsage`,Un=`myInfo`,Wn=`networkStats`,Gn=`nodes`,Kn=`phpExtensions`,qn=`phpInfo`,Jn=`ping`,Yn=`serverBenchmark`,Xn=`serverInfo`,Zn=`serverStatus`,Qn=`temperatureSensor`,$n=`x-module-priority:v1`,er=[Gn,Qn,Zn,Wn,Hn,Jn,Xn,qn,Kn,Vn,Yn,_n,Un],tr=()=>{let e=localStorage.getItem($n);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}},nr=e=>{localStorage.setItem($n,JSON.stringify(e))},rr=T()(M(e=>{let t=tr();return{moveDown:t=>{e(e=>{let n=e.priorities.indexOf(t);n<0||n===e.priorities.length-1||([e.priorities[n],e.priorities[n+1]]=[e.priorities[n+1],e.priorities[n]],nr(e.priorities))})},moveUp:t=>{e(e=>{let n=e.priorities.indexOf(t);n<=0||([e.priorities[n],e.priorities[n-1]]=[e.priorities[n-1],e.priorities[n]],nr(e.priorities))})},priorities:er.toSorted((e,n)=>{let r=t.indexOf(e),i=t.indexOf(n);return(r<0?0:r)-(i<0?0:i)}),setPriorities:t=>e(e=>{e.priorities=t,nr(t)})}})),ir=({isDown:e,moduleId:t})=>{let n=wa(),{moveUp:r,moveDown:i}=rr(C(e=>({moveDown:e.moveDown,moveUp:e.moveUp}))),a=e?(e=>n.at(-1)?.id===e)(t):(e=>n.at(0)?.id===e)(t),o=(0,_.useCallback)(n=>{if(n.preventDefault(),n.stopPropagation(),e){i(t);return}r(t)},[e,i,r,t]);return(0,N.jsx)(`button`,{className:Bn.arrow,"data-disabled":a||void 0,disabled:a,onClick:o,title:w(e?`Move down`:`Move up`),type:`button`,children:e?(0,N.jsx)(On,{}):(0,N.jsx)(kn,{})})},ar={body:`_99K0oW_body`,header:`_99K0oW_header`,main:`_99K0oW_main`,title:`_99K0oW_title`},or=(0,_.memo)(({id:e,title:t})=>(0,N.jsxs)(`h2`,{className:ar.header,children:[(0,N.jsx)(ir,{isDown:!1,moduleId:e}),(0,N.jsx)(`span`,{className:ar.title,children:t}),(0,N.jsx)(ir,{isDown:!0,moduleId:e})]})),sr=({id:e,title:t,children:n,...r})=>(0,N.jsxs)(`div`,{className:ar.main,id:e,...r,children:[(0,N.jsx)(or,{id:e,title:t}),(0,N.jsx)(`div`,{className:ar.body,children:n})]}),cr={item:`D8MIUq_item`,main:`D8MIUq_main`},lr=({items:e})=>(0,N.jsx)(`ul`,{className:cr.main,children:e.map(({id:e,text:t})=>(0,N.jsxs)(`li`,{className:cr.item,children:[(0,N.jsx)(Nn,{}),t]},e))}),ur={animation:`US6Sia_animation`,main:`US6Sia_main`},dr=({height:e=5})=>(0,N.jsx)(`div`,{className:ur.main,style:{height:`${e}rem`}}),fr={main:`_5qa1Ia_main`},pr=({children:e})=>(0,N.jsxs)(`div`,{className:fr.main,role:`alert`,children:[(0,N.jsx)(zn,{}),e]}),mr={link:`iUP8dq_link`,main:`iUP8dq_main`},hr=Object.create,gr=Object.defineProperty,_r=Object.getOwnPropertyDescriptor,vr=Object.getOwnPropertyNames,yr=Object.getPrototypeOf,br=Object.prototype.hasOwnProperty,xr=(e,t)=>function(){return t||(0,e[vr(e)[0]])((t={exports:{}}).exports,t),t.exports},Sr=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of vr(t))!br.call(e,i)&&i!==n&&gr(e,i,{get:()=>t[i],enumerable:!(r=_r(t,i))||r.enumerable});return e},Cr=((e,t,n)=>(n=e==null?{}:hr(yr(e)),Sr(t||!e||!e.__esModule?gr(n,`default`,{value:e,enumerable:!0}):n,e)))(xr({"node_modules/toggle-selection/index.js"(e,t){"use strict";t.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],r=0;r(0,N.jsxs)(`ruby`,{className:Nr.main,"data-is-result":n||void 0,...r,children:[e,(0,N.jsx)(`rp`,{children:`(`}),(0,N.jsx)(`rt`,{children:t}),(0,N.jsx)(`rp`,{children:`)`})]}),Fr={header:`cZ14Ea_header`,main:`cZ14Ea_main`,marks:`cZ14Ea_marks`,sign:`cZ14Ea_sign`},Ir=(e,t=2)=>{if(e===0)return`0`;let n=1024,r=[`B`,`K`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`],i=Math.floor(Math.log(e)/Math.log(n));i=i<0?0:i;let a=Number.parseFloat((e/n**i).toFixed(t));return a?`${a.toFixed(2)} ${r[i]}`:`0`},Lr={core:`xO-m2q_core`,main:`xO-m2q_main`,name:`xO-m2q_name`,nameText:`xO-m2q_nameText`,overview:`xO-m2q_overview`,percent:`xO-m2q_percent`,percentText:`xO-m2q_percentText`,"x-meter-core":`xO-m2q_x-meter-core`,"x-meter-name":`xO-m2q_x-meter-name`,"x-meter-overview":`xO-m2q_x-meter-overview`,"x-meter-percent":`xO-m2q_x-meter-percent`},Rr=(0,_.memo)(({value:e,max:t=100,low:n=60,optimum:r,high:i=80})=>(0,N.jsx)(`meter`,{className:Lr.core,high:i,low:n,max:t,optimum:r,value:e})),zr=(0,_.memo)(({title:e,name:t=``,value:n,max:r,isCapacity:i,percentTag:a=`%`,percent:o,percentRender:s,progressPercent:c})=>{let l=tn(e=>e.open),u=(0,_.useCallback)(n=>{n.preventDefault(),n.stopPropagation(),l(e||t),!(e?.length??!1)&&navigator.clipboard.writeText(t)},[t,e,l]),d=r===0||n===0?0:n/r*100,f=i?`${Ir(n)} / ${Ir(r)}`:`${n.toFixed(1)}${a} / ${r}${a}`;return(0,N.jsxs)(`div`,{className:Lr.main,title:e,children:[(0,N.jsx)(`button`,{className:Lr.name,onClick:u,title:t,type:`button`,children:(0,N.jsx)(`div`,{className:Lr.nameText,children:t})}),(0,N.jsx)(`div`,{className:Lr.percent,children:(0,N.jsx)(`span`,{className:Lr.percentText,children:s??`${(o??d).toFixed(1)}%`})}),(0,N.jsx)(`div`,{className:Lr.overview,children:f}),(0,N.jsx)(Rr,{value:c??d})]})}),Br={main:`cgiaLG_main`},Vr=({totalMarks:e,total:t})=>(0,N.jsx)(`div`,{className:Br.main,children:(0,N.jsx)(Rr,{high:e*.7,low:e*.5,max:e,optimum:e,value:t})}),Hr=({js:e,dom:t,canvas:n,date:r})=>{let i=e+t+n,a=e.toLocaleString(),o=t.toLocaleString(),s=n.toLocaleString(),c=i.toLocaleString(),l=Vt(`{{js}} (JS) + {{dom}} (DOM) + {{canvas}} (Canvas) = {{total}}`,{canvas:s,dom:o,js:a,total:c}),u=(0,N.jsx)(`span`,{className:Fr.sign,children:`+`});return(0,N.jsxs)(`button`,{className:Fr.marks,onClick:e=>{e.preventDefault(),e.stopPropagation(),Mr(l)},title:w(`Touch to copy marks`),type:`button`,children:[(0,N.jsx)(Pr,{"data-is-detail":!0,rt:`JS`,ruby:a}),u,(0,N.jsx)(Pr,{"data-is-detail":!0,rt:`DOM`,ruby:o}),u,(0,N.jsx)(Pr,{"data-is-detail":!0,rt:`Canvas`,ruby:s}),(0,N.jsx)(`span`,{className:Fr.sign,children:`=`}),(0,N.jsx)(Pr,{"data-total":!0,isResult:!0,rt:r||``,ruby:c})]})},Ur=({ua:e,header:t,marks:n,maxMarks:r,date:i})=>{let{js:a,dom:o,canvas:s}=n;return(0,N.jsxs)(`div`,{className:Fr.main,children:[(0,N.jsx)(`div`,{className:Fr.header,title:e,children:t}),(0,N.jsx)(Hr,{canvas:s,date:i,dom:o,js:a}),(0,N.jsx)(Vr,{total:a+o+s,totalMarks:r})]})},Wr={button:`CPYSBq_button`,icon:`CPYSBq_icon`,spin:`CPYSBq_spin`},Gr={Error:`error`,Loading:`loading`,Pointer:`pointer`,Warning:`warning`},Kr=({status:e})=>(0,N.jsx)(`span`,{className:Wr.icon,"data-status":e,children:{[Gr.Error]:(0,N.jsx)(zn,{}),[Gr.Loading]:(0,N.jsx)(Fn,{}),[Gr.Warning]:(0,N.jsx)(Rn,{}),[Gr.Pointer]:(0,N.jsx)(Ln,{})}[e]??null}),qr=({status:e=Gr.Pointer,children:t,...n})=>(0,N.jsxs)(`button`,{className:Wr.button,type:`button`,...n,children:[(0,N.jsx)(Kr,{status:e}),t]}),Jr=({status:e=Gr.Pointer,children:t,href:n,...r})=>(0,N.jsxs)(`a`,{className:Wr.button,"data-link":!0,href:n,...r,children:[(0,N.jsx)(Kr,{status:e}),t]}),Yr=T()(M(e=>({benchmarking:!1,browsers:[],maxMarks:0,setBenchmarking:t=>e(e=>{e.benchmarking=t}),setBrowser:(t,n)=>e(e=>{let r=e.browsers.findIndex(e=>e.id===t);r!==-1&&(e.browsers[r]=n)}),setBrowsers:t=>e(e=>{e.browsers=t}),setMaxMarks:t=>e(e=>{e.maxMarks=t})}))),Xr=class{getRndint=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;runJs=()=>{let e=0,t=performance.now();for(;;){for(let e=0;e<1e4;e++)Math.sqrt(e)*Math.sin(e)/Math.tan(e+1);let n=Array(1e3).fill(0).map((e,t)=>t);if(n.sort(()=>Math.random()-.5),n.sort((e,t)=>e-t),e++,performance.now()-t>1e3)break}return e};runDom=()=>{let e=0,t=window.innerWidth,n=window.innerHeight,r=performance.now(),i=document.createElement(`div`);for(i.style.cssText=` +`},"{{days}}d {{hours}}h {{mins}}min {{secs}}s":{ja:`{{days}}日 {{hours}}時間 {{mins}}分 {{secs}}秒`,zh:`{{days}} 天 {{hours}} 时 {{mins}} 分 {{secs}} 秒`,zhcn:`{{days}} 天 {{hours}} 时 {{mins}} 分 {{secs}} 秒`,zhhk:`{{days}}天 {{hours}}小時 {{mins}}分鐘 {{secs}}秒`,zhtw:`{{days}}天 {{hours}}小時 {{mins}}分鐘 {{secs}}秒`},"{{minute}} minute average":{ja:`{{minute}}分平均負荷`,zh:`{{minute}} 分钟平均负载`,zhcn:`{{minute}} 分钟平均负载`,zhhk:`{{minute}} 分鐘平均`,zhtw:`{{minute}} 分鐘平均`},"{{oldVersion}} (Latest: {{latestPhpVersion}})":{ja:`{{oldVersion}} (最新: {{latestPhpVersion}})`,zh:`{{oldVersion}}(最新版:{{latestPhpVersion}})`,zhcn:`{{oldVersion}}(最新版:{{latestPhpVersion}})`,zhhk:`{{oldVersion}}(最新版:{{latestPhpVersion}})`,zhtw:`{{oldVersion}}(最新版:{{latestPhpVersion}})`},"{{sensor}} temperature":{ja:`{{sensor}} 温度`,zh:`{{sensor}} 温度`,zhcn:`{{sensor}} 温度`,zhhk:`{{sensor}} 溫度`,zhtw:`{{sensor}} 溫度`},"{{times}} times, min/avg/max/mdev = {{min}}/{{avg}}/{{max}}/{{mdev}} ms":{ja:`{{times}}回実行: 最小/平均/最大/偏差 = {{min}}/{{avg}}/{{max}}/{{mdev}} ms`,zh:`{{times}}次, 最小/平均/最大/偏差 = {{min}}/{{avg}}/{{max}}/{{mdev}} 毫秒`,zhcn:`{{times}}次, 最小/平均/最大/偏差 = {{min}}/{{avg}}/{{max}}/{{mdev}} 毫秒`,zhhk:`{{times}} 次,最小/平均/最大/偏差 = {{min}}/{{avg}}/{{max}}/{{mdev}} 毫秒`,zhtw:`{{times}} 次,最小/平均/最大/偏差 = {{min}}/{{avg}}/{{max}}/{{mdev}} 毫秒`},"{{usage}}% CPU usage":{ja:`CPU使用率: {{usage}}%`,zh:`{{usage}}% CPU 使用率`,zhcn:`{{usage}}% CPU 使用率`,zhhk:`CPU 使用率 {{usage}}%`,zhtw:`CPU 使用率 {{usage}}%`},"⏳ Updating, please wait a second...":{ja:`⏳ 更新中...`,zh:`⏳ 更新中,请稍等……`,zhcn:`⏳ 更新中,请稍等……`,zhhk:`⏳ 更新中,請稍候...`,zhtw:`⏳ 更新中,請稍候...`},"✨ Found new version: {{oldVersion}} ⇢ {{newVersion}}":{ja:`✨ 新版検出: {{oldVersion}} → {{newVersion}}`,zh:`✨ 发现新版本: {{oldVersion}} → {{newVersion}}`,zhcn:`✨ 发现新版本: {{oldVersion}} → {{newVersion}}`,zhhk:`✨ 發現新版本:{{oldVersion}} → {{newVersion}}`,zhtw:`✨ 發現新版本:{{oldVersion}} → {{newVersion}}`},"❌ Update error, click here to try again?":{ja:`❌ 更新エラー [再試行]`,zh:`❌ 更新错误,点击此处再试一次?`,zhcn:`❌ 更新错误,点击此处再试一次?`,zhhk:`❌ 更新錯誤,點此重試?`,zhtw:`❌ 更新錯誤,點此重試?`},"Benchmark my browser":{ja:`ブラウザのベンチマーク`,zh:`测试我的浏览器`,zhcn:`测试我的浏览器`,zhhk:`測試我的瀏覽器`,zhtw:`測試我的瀏覽器`},"Benchmark my server":{ja:`ベンチマーク実行`,zh:`测试我的服务器`,zhcn:`测试我的服务器`,zhhk:`測試我的伺服器`,zhtw:`測試我的伺服器`},"Browser bench":{ja:`ブラウザベンチ`,zh:`浏览器测试`,zhcn:`浏览器测试`,zhhk:`瀏覽器跑分`,zhtw:`瀏覽器跑分`},"Browser Benchmark":{ja:`ブラウザベンチマーク`,zh:`浏览器跑分`,zhcn:`浏览器跑分`,zhhk:`瀏覽器跑分測試`,zhtw:`客戶端跑分測試`},"Browser UA":{ja:`ブラウザユーザーエージェント`,zh:`浏览器 UA`,zhcn:`浏览器 UA`,zhhk:`瀏覽器 UA`,zhtw:`瀏覽器 UA`},"Buffers are in-memory block I/O buffers. They are relatively short-lived. Prior to Linux kernel version 2.4, Linux had separate page and buffer caches. Since 2.4, the page and buffer cache are unified and Buffers is raw disk blocks not represented in the page cache—i.e., not file data.":{ja:`バッファはメモリ内のブロックI/O用一時領域です。Linuxカーネル2.4以前ではページキャッシュとバッファキャッシュが分離されていましたが、2.4以降は統合され、バッファはページキャッシュに含まれない生ディスクブロック(非ファイルデータ)を指します。`,zh:`缓冲区是内存中的块 I/O 缓冲区,生命周期较短。Linux 内核 2.4 版本前,页面缓存和缓冲区缓存是分离的。2.4 版本后两者统一,缓冲区指不在页面缓存中的原始磁盘块(即非文件数据)。`,zhcn:`缓冲区是内存中的块 I/O 缓冲区,生命周期较短。Linux 内核 2.4 版本前,页面缓存和缓冲区缓存是分离的。2.4 版本后两者统一,缓冲区指不在页面缓存中的原始磁盘块(即非文件数据)。`,zhhk:`緩衝區是記憶體中的區塊 I/O 緩衝,生命週期較短。在 Linux 核心 2.4 版之前,頁面快取和緩衝區快取是分開的。自 2.4 版起,兩者已統一,緩衝區代表未存入頁面快取的原始磁碟區塊(即非檔案資料)。`,zhtw:`緩衝區是記憶體中的區塊 I/O 緩衝,生命週期較短。在 Linux 核心 2.4 版之前,頁面快取和緩衝區快取是分開的。自 2.4 版起,兩者已統一,緩衝區代表未存入頁面快取的原始磁碟區塊(即非檔案資料)。`},'Cached memory is memory that Linux uses for disk caching. However, this does not count as "used" memory, since it will be freed when applications require it. Hence you do not have to worry if a large amount is being used.':{ja:`キャッシュメモリはディスクキャッシュ用に確保された領域です。アプリケーションが必要時に解放されるため「使用中」メモリにはカウントされず、使用量が多くても問題ありません。`,zh:`缓存内存是 Linux 用于磁盘缓存的内存空间,不计入“已用”内存,因为应用程序需要时会自动释放。因此即使使用量较大也无需担心。`,zhcn:`缓存内存是 Linux 用于磁盘缓存的内存空间,不计入“已用”内存,因为应用程序需要时会自动释放。因此即使使用量较大也无需担心。`,zhhk:`快取記憶體是 Linux 用於磁碟快取的空間,不計入「已用」記憶體,因應用程式需要時會自動釋放。故即使使用量較大亦無需擔心。`,zhtw:`快取記憶體是 Linux 用於磁碟快取的空間,不計入「已用」記憶體,因應用程式需要時會自動釋放。故即使使用量較大亦無需擔心。`},"Can not fetch IP":{ja:`IP取得失敗`,zh:`无法获取 IP`,zhcn:`无法获取 IP`,zhhk:`無法取得 IP`,zhtw:`無法取得 IP`},"Can not fetch location.":{ja:`位置情報を取得できません。`,zh:`无法获取地理位置。`,zhcn:`无法获取地理位置。`,zhhk:`無法取得地理位置。`,zhtw:`無法取得地理位置。`},"Can not fetch marks data from GitHub.":{ja:`GitHubからスコアデータを取得できません。`,zh:`无法从 GitHub 中获取跑分数据。`,zhcn:`无法从 GitHub 中获取跑分数据。`,zhhk:`無法從 GitHub 取得跑分數據。`,zhtw:`無法從 GitHub 取得跑分資料。`},"Can not update file, please check the server permissions and space.":{ja:`ファイル更新失敗 サーバーの権限/空き容量を確認してください。`,zh:`无法更新文件,请检查服务器权限和空间。`,zhcn:`无法更新文件,请检查服务器权限和空间。`,zhhk:`無法更新檔案,請檢查伺服器權限及空間。`,zhtw:`無法更新檔案,請檢查伺服器權限及空間。`},"Click to close":{ja:`クリックで閉じる`,zh:`点击关闭`,zhcn:`点击关闭`,zhhk:`點擊關閉`,zhtw:`點擊關閉`},"Click to fetch":{ja:`クリックして取得`,zh:`点击获取`,zhcn:`点击获取`,zhhk:`點擊獲取`,zhtw:`點擊獲取`},"Click to update":{ja:`クリックで更新`,zh:`点击更新`,zhcn:`点击更新`,zhhk:`點擊更新`,zhtw:`點擊更新`},CPU:{ja:`CPU`,zh:`CPU`,zhcn:`CPU`,zhhk:`中央處理器`,zhtw:`中央處理器`},"CPU model":{ja:`CPUモデル`,zh:`CPU 型号`,zhcn:`CPU 型号`,zhhk:`CPU 型號`,zhtw:`CPU 型號`},"CPU usage":{ja:`CPU使用率`,zh:`CPU 占用`,zhcn:`CPU 占用`,zhhk:`CPU 使用率`,zhtw:`CPU 使用率`},Dark:{zhhk:`暗黑模式`},Database:{ja:`データベース`,zh:`数据库`,zhcn:`数据库`,zhhk:`資料庫`,zhtw:`資料庫`},DB:{ja:`データベース`,zh:`数据库`,zhcn:`数据库`,zhhk:`資料庫`,zhtw:`資料庫`},Default:{zhhk:`預設`},Detail:{ja:`詳細`,zh:`详细`,zhcn:`详细`,zhhk:`詳細資料`,zhtw:`詳細資料`},"Different versions cannot be compared, and different time clients have different loads, just for reference.":{ja:`異なるバージョンを比較することはできません。また、異なる時間のクライアントには異なる負荷がかかりますが、これはあくまで参考値です。`,zh:`不同版本的不能比较,不同的时间服务器存在不同的负载,仅作参考。`,zhcn:`不同版本的不能比较,不同的时间服务器存在不同的负载,仅作参考。`,zhhk:`不同版本無法直接比較,且不同時間瀏覽器負載各異,結果僅供參考。`,zhtw:`不同版本無法比較,不同時間客戶端負載不同,僅供參考。`},"Different versions cannot be compared, and different time servers have different loads, just for reference.":{ja:`異なるバージョン間の比較は不可。タイムサーバーの負荷状態により結果が変動します(参考値)`,zh:`不同版本的不能比较,不同的时间服务器存在不同的负载,仅作参考。`,zhcn:`不同版本的不能比较,不同的时间服务器存在不同的负载,仅作参考。`,zhhk:`不同版本無法直接比較,且不同時間伺服器負載各異,結果僅供參考。`,zhtw:`不同版本無法直接比較,且不同時間伺服器負載各異,結果僅供參考。`},"Disabled classes":{ja:`無効化クラス`,zh:`已禁用的类`,zhcn:`已禁用的类`,zhhk:`已停用類別`,zhtw:`已停用類別`},"Disabled functions":{ja:`無効化関数`,zh:`已禁用的函数`,zhcn:`已禁用的函数`,zhhk:`已停用函式`,zhtw:`已停用函式`},Disk:{ja:`ディスク`,zh:`磁盘`,zhcn:`磁盘`,zhhk:`磁碟`,zhtw:`磁碟`},"Disk Usage":{ja:`ディスク使用量`,zh:`磁盘用量`,zhcn:`磁盘用量`,zhhk:`磁碟用量`,zhtw:`磁碟使用量`},"Display errors":{ja:`エラー表示設定`,zh:`显示错误`,zhcn:`显示错误`,zhhk:`顯示錯誤`,zhtw:`顯示錯誤`},"Download speed test":{ja:`ダウンロード速度テスト`,zh:`下载速度测试`,zhcn:`下载速度测试`,zhhk:`下載速度測試`,zhtw:`下載速度測試`},"Error reporting":{ja:`エラーレポート設定`,zh:`错误报告`,zhcn:`错误报告`,zhhk:`錯誤報告`,zhtw:`錯誤報告`},"Error: {{error}}":{ja:`エラー: {{error}}`,zh:`错误:{{error}}`,zhcn:`错误:{{error}}`,zhhk:`錯誤: {{error}}`,zhtw:`錯誤: {{error}}`},"Failed to fetch data. Please try again later.":{ja:`データの取得に失敗しました。しばらくしてからもう一度お試しください。`,zh:`无法获取数据,请稍后再试。`,zhcn:`无法获取数据,请稍后再试。`,zhhk:`無法獲取數據,請稍後重試。`,zhtw:`無法獲取資料,請稍後重試。`},"Generate by {{appName}} and developed by {{authorName}}":{ja:`{{appName}} によって生成され、{{authorName}} によって開発されました`,zh:`由 {{appName}} 生成,由 {{authorName}} 开发`,zhcn:`由 {{appName}} 生成,由 {{authorName}} 开发`,zhhk:`由{{appName}}生成並由{{authorName}}開發`,zhtw:`由{{appName}}生成並由{{authorName}}開發`},"idle: {{idle}} \\nnice: {{nice}} \\nsys: {{sys}} \\nuser: {{user}}":{ja:`アイドル: {{idle}} \\n低優先: {{nice}} \\nシステム: {{sys}} \\nユーザー: {{user}}`,zh:`空闲: {{idle}} \\n低优先级: {{nice}} \\n系统: {{sys}} \\n用户: {{user}}`,zhcn:`空闲: {{idle}} \\n低优先级: {{nice}} \\n系统: {{sys}} \\n用户: {{user}}`,zhhk:`閒置: {{idle}} \\n優先: {{nice}} \\n系統: {{sys}} \\n用戶: {{user}}`,zhtw:`閒置: {{idle}} \\n優先: {{nice}} \\n系統: {{sys}} \\n使用者: {{user}}`},Info:{ja:`情報`,zh:`信息`,zhcn:`信息`,zhhk:`資訊`,zhtw:`資訊`},IPv4:{ja:`IPv4`,zh:`IPv4`,zhcn:`IPv4`,zhhk:`IPv4`,zhtw:`IPv4`},IPv6:{ja:`IPv6`,zh:`IPv6`,zhcn:`IPv6`,zhhk:`IPv6`,zhtw:`IPv6`},"JS Browser languages":{ja:`JS ブラウザ言語`,zh:`JS 浏览器语言`,zhcn:`JS 浏览器语言`,zhhk:`JS 瀏覽器語言`,zhtw:`JS瀏覽器語言`},LiangYe:{ja:`良夜`,zh:`良夜`,zhcn:`良夜`,zhtw:`良夜`},'Linux comes with many commands to check memory usage. The "free" command usually displays the total amount of free and used physical and swap memory in the system, as well as the buffers used by the kernel. The "top" command provides a dynamic real-time view of a running system.':{ja:`Linuxにはメモリ使用量確認コマンドが複数存在します。「free」コマンドは物理メモリ/スワップの使用状況とカーネルバッファを表示し、「top」コマンドはシステムのリアルタイム状態を動的に表示します。`,zh:`Linux 提供多种内存检测命令:“free”命令显示系统物理内存和交换空间的总用量及内核缓冲区;“top”命令提供运行中系统的实时动态视图。`,zhcn:`Linux 提供多种内存检测命令:“free”命令显示系统物理内存和交换空间的总用量及内核缓冲区;“top”命令提供运行中系统的实时动态视图。`,zhhk:`Linux 提供多種記憶體檢測指令:「free」指令顯示系統實體記憶體及交換區的總用量與緩衝區使用情況;「top」指令則提供運行中系統的即時動態檢視。`,zhtw:`Linux 提供多種記憶體檢測指令:「free」指令顯示系統實體記憶體及交換區的總用量與緩衝區使用情況;「top」指令則提供運行中系統的即時動態檢視。`},"Loaded extensions":{ja:`ロード済み拡張機能`,zh:`已加载的扩展`,zhcn:`已加载的扩展`,zhhk:`已載入擴充功能`,zhtw:`已載入擴充功能`},"Loading...":{ja:`読込中...`,zh:`加载中……`,zhcn:`加载中……`,zhhk:`載入中...`,zhtw:`載入中...`},"Local IPv4":{ja:`ネイティブ IPv4`,zh:`本地 IPv4`,zhcn:`本地 IPv4`,zhhk:`本地 IPv4`,zhtw:`本地 IPv4`},"Local IPv6":{ja:`ネイティブ IPv6`,zh:`本地 IPv6`,zhcn:`本地 IPv6`,zhhk:`本地 IPv6`,zhtw:`本地 IPv6`},"Location (IPv4)":{ja:`位置情報 (IPv4)`,zh:`位置(IPv4)`,zhcn:`位置(IPv4)`,zhhk:`位置 (IPv4)`,zhtw:`位置 (IPv4)`},"Max execution time":{ja:`最大実行時間`,zh:`运行超时秒数`,zhcn:`运行超时秒数`,zhhk:`最長執行時間`,zhtw:`最長執行時間`},"Max input variables":{ja:`最大入力変数`,zh:`提交表单限制`,zhcn:`提交表单限制`,zhhk:`最大輸入變數`,zhtw:`最大輸入變數`},"Max memory limit":{ja:`最大メモリ制限`,zh:`运行内存限制`,zhcn:`运行内存限制`,zhhk:`最大記憶體限制`,zhtw:`最大記憶體限制`},"Max POST size":{ja:`最大POSTサイズ`,zh:`POST 提交限制`,zhcn:`POST 提交限制`,zhhk:`最大 POST 容量`,zhtw:`最大 POST 容量`},"Max upload size":{ja:`最大アップロードサイズ`,zh:`上传文件限制`,zhcn:`上传文件限制`,zhhk:`最大上載容量`,zhtw:`最大上傳容量`},"Memory buffers":{ja:`メモリバッファ`,zh:`内存缓冲`,zhcn:`内存缓冲`,zhhk:`記憶體緩衝區`,zhtw:`記憶體緩衝區`},"Memory cached":{ja:`キャッシュメモリ`,zh:`内存缓存`,zhcn:`内存缓存`,zhhk:`記憶體快取`,zhtw:`記憶體快取`},"Memory real usage":{ja:`実メモリ使用量`,zh:`真实内存占用`,zhcn:`真实内存占用`,zhhk:`實際記憶體用量`,zhtw:`實際記憶體用量`},Mine:{ja:`マイデータ`,zh:`我的`,zhcn:`我的`,zhhk:`我的`,zhtw:`我的`},"Move down":{ja:`下へ移動`,zh:`下移`,zhcn:`下移`,zhhk:`下移`,zhtw:`下移`},"Move up":{ja:`上へ移動`,zh:`上移`,zhcn:`上移`,zhhk:`上移`,zhtw:`上移`},"My Info":{ja:`マイ情報`,zh:`我的信息`,zhcn:`我的信息`,zhhk:`我的資訊`,zhtw:`我的資訊`},Name:{ja:`名称`,zh:`名称`,zhcn:`名称`,zhhk:`名稱`,zhtw:`名稱`},Network:{ja:`ネットワーク`,zh:`网络`,zhcn:`网络`,zhhk:`網絡`,zhtw:`網路`},"Network error, please try again later.":{ja:`ネットワークエラー。後ほど再試行してください。`,zh:`网络错误,请稍候重试。`,zhcn:`网络错误,请稍候重试。`,zhhk:`網絡錯誤,請稍後重試。`,zhtw:`網路錯誤,請稍後重試。`},"Network error. Please check your connection.":{ja:`ネットワークエラー。接続を確認してください。`,zh:`网络错误,请检查您的网络链接。`,zhcn:`网络错误,请检查您的网络链接。`,zhtw:`網路錯誤,請檢查您與服務器的網路。`},"Network Stats":{ja:`ネットワーク統計`,zh:`流量统计`,zhcn:`流量统计`,zhhk:`網絡統計`,zhtw:`網路統計`},Nodes:{ja:`ノード`,zh:`节点`,zhcn:`节点`,zhhk:`節點`,zhtw:`節點`},"Not support":{ja:`非対応`,zh:`不支持`,zhcn:`不支持`,zhhk:`不支援`,zhtw:`不支援`},"Opcache enabled":{ja:`Opcache 有効`,zh:`OPcache 已启用`,zhcn:`OPcache 已启用`,zhhk:`Opcache 已啟用`,zhtw:`Opcache 已啟用`},"Opcache JIT enabled":{ja:`Opcache JIT 有効`,zh:`OPcache JIT 已启用`,zhcn:`OPcache JIT 已启用`,zhhk:`Opcache JIT 已啟用`,zhtw:`Opcache JIT 已啟用`},OS:{ja:`OS`,zh:`操作系统`,zhcn:`操作系统`,zhhk:`作業系統`,zhtw:`作業系統`},"PHP Browser languages":{ja:`PHP ブラウザ言語`,zh:`PHP 浏览器语言`,zhcn:`PHP 浏览器语言`,zhhk:`PHP 瀏覽器語言`,zhtw:`PHP瀏覽器語言`},"PHP Ext":{ja:`PHP拡張`,zh:`PHP 扩展`,zhcn:`PHP 扩展`,zhhk:`PHP擴充`,zhtw:`PHP擴充`},"PHP Extensions":{ja:`PHP拡張機能`,zh:`PHP 扩展`,zhcn:`PHP 扩展`,zhhk:`PHP 擴充功能`,zhtw:`PHP 擴充功能`},"PHP Info":{ja:`PHP情報`,zh:`PHP 信息`,zhcn:`PHP 信息`,zhhk:`PHP資訊`,zhtw:`PHP資訊`},"PHP Information":{ja:`PHP情報`,zh:`PHP 信息`,zhcn:`PHP 信息`,zhhk:`PHP 資訊`,zhtw:`PHP 資訊`},Ping:{ja:`ネットワーク診断`,zh:`Ping`,zhcn:`Ping`,zhhk:`網絡檢測`,zhtw:`網路檢測`},"Please wait {{seconds}}s":{ja:`{{seconds}}秒お待ちください`,zh:`请等待 {{seconds}} 秒`,zhcn:`请等待 {{seconds}} 秒`,zhhk:`請等候 {{seconds}} 秒`,zhtw:`請等候 {{seconds}} 秒`},"Public IPv4":{ja:`パブリック IPv4`,zh:`公网 IPv4`,zhcn:`公网 IPv4`,zhhk:`公眾 IPv4`,zhtw:`公開 IPv4`},"Public IPv6":{ja:`パブリック IPv6`,zh:`公网 IPv6`,zhcn:`公网 IPv6`,zhhk:`公眾 IPv6`,zhtw:`公開 IPv6`},Ram:{ja:`RAM`,zh:`内存`,zhcn:`内存`,zhhk:`記憶體`,zhtw:`記憶體`},Read:{ja:`読取`,zh:`读`,zhcn:`读`,zhhk:`讀取`,zhtw:`讀取`},"Recived: {{total}}":{ja:`受信: {{total}}`,zh:`接收:{{total}}`,zhcn:`接收:{{total}}`,zhhk:`接收: {{total}}`,zhtw:`接收: {{total}}`},Results:{ja:`診断結果`,zh:`结果`,zhcn:`结果`,zhhk:`結果`,zhtw:`結果`},"Running the benchmark may freeze the browser interface for a few seconds. Do you want to continue?":{ja:`ベンチマークを実行すると、ブラウザインターフェースが数秒間フリーズする場合があります。続行しますか?`,zh:`执行性能测试可能会冻结浏览器界面数秒,是否继续?`,zhcn:`执行性能测试可能会冻结浏览器界面数秒,是否继续?`,zhhk:`執行基準測試可能會導致瀏覽器介面凍結幾秒鐘。是否繼續?`,zhtw:`執行基準測試可能會導致瀏覽器介面凍結幾秒鐘。是否繼續?`},"SAPI interface":{ja:`SAPIインターフェース`,zh:`SAPI 接口`,zhcn:`SAPI 接口`,zhhk:`SAPI 介面`,zhtw:`SAPI 介面`},"Script path":{ja:`スクリプトパス`,zh:`脚本路径`,zhcn:`脚本路径`,zhhk:`腳本路徑`,zhtw:`腳本路徑`},"Sent: {{total}}":{ja:`送信: {{total}}`,zh:`发送:{{total}}`,zhcn:`发送:{{total}}`,zhhk:`傳送: {{total}}`,zhtw:`傳送: {{total}}`},"Server ⇄ Browser":{ja:`サーバー ⇄ ブラウザー`,zh:`服务器 ⇄ 浏览器`,zhcn:`服务器 ⇄ 浏览器`,zhhk:`伺服器 ⇄ 瀏覽器`,zhtw:`伺服器 ⇄ 瀏覽器`},"Server bench":{ja:`サーバーベンチ`,zh:`服务器测试`,zhcn:`服务器测试`,zhhk:`伺服器跑分`,zhtw:`伺服器跑分`},"Server Benchmark":{ja:`サーバーベンチマーク`,zh:`服务器跑分`,zhcn:`服务器跑分`,zhhk:`伺服器跑分測試`,zhtw:`伺服器跑分測試`},"Server Info":{ja:`サーバー情報`,zh:`服务器信息`,zhcn:`服务器信息`,zhhk:`伺服器資訊`,zhtw:`伺服器資訊`},"Server Status":{ja:`サーバー状態`,zh:`服务器状态`,zhcn:`服务器状态`,zhhk:`伺服器狀態`,zhtw:`伺服器狀態`},"SMTP support":{ja:`SMTPサポート`,zh:`SMTP 支持`,zhcn:`SMTP 支持`,zhhk:`SMTP 支援`,zhtw:`SMTP 支援`},"Start ping":{ja:`Ping 開始`,zh:`开始 Ping`,zhcn:`开始 Ping`,zhhk:`開始 Ping`,zhtw:`開始 Ping`},"Stop ping":{ja:`Ping 停止`,zh:`停止 Ping`,zhcn:`停止 Ping`,zhhk:`停止 Ping`,zhtw:`停止 Ping`},Swap:{ja:`スワップ`,zh:`Swap`,zhcn:`Swap`,zhhk:`交換區`,zhtw:`交換區`},"Swap cached":{ja:`スワップキャッシュ`,zh:`SWAP 缓存`,zhcn:`SWAP 缓存`,zhhk:`交換區快取`,zhtw:`交換區快取`},"Swap usage":{ja:`スワップ使用量`,zh:`SWAP 占用`,zhcn:`SWAP 占用`,zhhk:`交換區用量`,zhtw:`交換區用量`},"System load":{ja:`システム負荷`,zh:`系统负载`,zhcn:`系统负载`,zhhk:`系統負載`,zhtw:`系統負載`},Temperature:{ja:`温度`,zh:`温度传感器`,zhcn:`温度传感器`,zhhk:`溫度`,zhtw:`溫度`},"Temperature sensor":{ja:`温度センサー`,zh:`温度传感器`,zhcn:`温度传感器`,zhhk:`溫度感測器`,zhtw:`溫度感測器`},"Testing, please wait...":{zhhk:`測試中,請稍候...`},Time:{ja:`時間`,zh:`时间`,zhcn:`时间`,zhhk:`時間`,zhtw:`時間`},"Timeout for socket":{ja:`ソケットタイムアウト`,zh:`Socket 超时秒数`,zhcn:`Socket 超时秒数`,zhhk:`Socket 逾時時間`,zhtw:`Socket 逾時時間`},"Touch to copy marks":{ja:`タップでスコアをコピー`,zh:`复制分数`,zhcn:`复制分数`,zhhk:`點擊複製跑分數據`,zhtw:`點擊複製跑分數據`},"Treatment URLs file":{ja:`リモートファイル処理`,zh:`文件远端打开`,zhcn:`文件远端打开`,zhhk:`檔案遠端開啟功能`,zhtw:`檔案遠端開啟功能`},Unavailable:{ja:`取得不可`,zh:`不可用`,zhcn:`不可用`,zhhk:`無法取得`,zhtw:`無法取得`},"Update is disabled in dev mode.":{ja:`開発モードでは更新不可。`,zh:`在开发模式中,更新被禁用。`,zhcn:`在开发模式中,更新被禁用。`,zhhk:`開發模式下停用更新功能。`,zhtw:`開發模式下停用更新功能。`},"Update success, refreshing...":{ja:`更新成功 再読込中...`,zh:`更新成功,正在刷新……`,zhcn:`更新成功,正在刷新……`,zhhk:`更新成功,重新整理中...`,zhtw:`更新成功,重新整理中...`},Uptime:{ja:`稼働時間`,zh:`运行时间`,zhcn:`运行时间`,zhhk:`運行時間`,zhtw:`運行時間`},Version:{ja:`バージョン`,zh:`版本`,zhcn:`版本`,zhhk:`版本`,zhtw:`版本`},"Visit PHP.net Official website":{ja:`PHP.net公式サイトへ`,zh:`访问 PHP.net 官网`,zhcn:`访问 PHP.net 官网`,zhhk:`瀏覽 PHP.net 官方網站`,zhtw:`瀏覽 PHP.net 官方網站`},"Visit probe page":{ja:`プローブページへ`,zh:`查看探针页面`,zhcn:`查看探针页面`,zhhk:`瀏覽檢測頁面`,zhtw:`瀏覽檢測頁面`},"Visit the official website":{ja:`公式サイトへ`,zh:`访问官网`,zhcn:`访问官网`,zhhk:`瀏覽官方網站`,zhtw:`瀏覽官方網站`},"Web server":{ja:`ウェブサーバー`,zh:`Web 服务器`,zhcn:`Web 服务器`,zhhk:`Web伺服器`,zhtw:`Web伺服器`},Write:{ja:`書込`,zh:`写`,zhcn:`写`,zhhk:`寫入`,zhtw:`寫入`},XiGuang:{ja:`曦光`,zh:`曦光`,zhcn:`曦光`,zhtw:`曦光`}},ie=navigator.language.replace(`-`,``).replace(`_`,``).toLowerCase(),w=(e,t=``)=>{let n=`${t?`${t}|`:``}${e}`;return re?.[n]?.[ie]??e},ae=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},oe=(e=>e?ae(e):ae),se=e=>e;function ce(e,t=se){let n=_.useSyncExternalStore(e.subscribe,_.useCallback(()=>t(e.getState()),[e,t]),_.useCallback(()=>t(e.getInitialState()),[e,t]));return _.useDebugValue(n),n}var le=e=>{let t=oe(e),n=e=>ce(t,e);return Object.assign(n,t),n},T=(e=>e?le(e):le),E=Symbol.for(`immer-nothing`),D=Symbol.for(`immer-draftable`),O=Symbol.for(`immer-state`);function ue(e,...t){throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var de=Object,fe=de.getPrototypeOf,k=`constructor`,A=`prototype`,pe=`configurable`,me=`enumerable`,he=`writable`,ge=`value`,_e=e=>!!e&&!!e[O];function ve(e){return e?xe(e)||Oe(e)||!!e[D]||!!e[k]?.[D]||ke(e)||Ae(e):!1}var ye=de[A][k].toString(),be=new WeakMap;function xe(e){if(!e||!je(e))return!1;let t=fe(e);if(t===null||t===de[A])return!0;let n=de.hasOwnProperty.call(t,k)&&t[k];if(n===Object)return!0;if(!Me(n))return!1;let r=be.get(n);return r===void 0&&(r=Function.toString.call(n),be.set(n,r)),r===ye}function Se(e,t,n=!0){Ce(e)===0?(n?Reflect.ownKeys(e):de.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function Ce(e){let t=e[O];return t?t.type_:Oe(e)?1:ke(e)?2:Ae(e)?3:0}var we=(e,t,n=Ce(e))=>n===2?e.has(t):de[A].hasOwnProperty.call(e,t),Te=(e,t,n=Ce(e))=>n===2?e.get(t):e[t],Ee=(e,t,n,r=Ce(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function De(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var Oe=Array.isArray,ke=e=>e instanceof Map,Ae=e=>e instanceof Set,je=e=>typeof e==`object`,Me=e=>typeof e==`function`,Ne=e=>typeof e==`boolean`;function Pe(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var Fe=e=>e.copy_||e.base_,Ie=e=>e.modified_?e.copy_:e.base_;function Le(e,t){if(ke(e))return new Map(e);if(Ae(e))return new Set(e);if(Oe(e))return Array[A].slice.call(e);let n=xe(e);if(t===!0||t===`class_only`&&!n){let t=de.getOwnPropertyDescriptors(e);delete t[O];let n=Reflect.ownKeys(t);for(let r=0;r1&&de.defineProperties(e,{set:Be,add:Be,clear:Be,delete:Be}),de.freeze(e),t&&Se(e,(e,t)=>{Re(t,!0)},!1),e)}function ze(){ue(2)}var Be={[ge]:ze};function Ve(e){return e===null||!je(e)?!0:de.isFrozen(e)}var He=`MapSet`,Ue=`Patches`,We=`ArrayMethods`,Ge={};function Ke(e){let t=Ge[e];return t||ue(0,e),t}var qe=e=>!!Ge[e],Je,Ye=()=>Je,Xe=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:qe(He)?Ke(He):void 0,arrayMethodsPlugin_:qe(We)?Ke(We):void 0});function Ze(e,t){t&&(e.patchPlugin_=Ke(Ue),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Qe(e){$e(e),e.drafts_.forEach(tt),e.drafts_=null}function $e(e){e===Je&&(Je=e.parent_)}var et=e=>Je=Xe(Je,e);function tt(e){let t=e[O];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function nt(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[O].modified_&&(Qe(t),ue(4)),ve(e)&&(e=rt(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[O].base_,e,t)}else e=rt(t,n);return it(t,e,!0),Qe(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===E?void 0:e}function rt(e,t){if(Ve(t))return t;let n=t[O];if(!n)return ft(t,e.handledSet_,e);if(!ot(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);ut(n,e)}return n.copy_}function it(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Re(t,n)}function at(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var ot=(e,t)=>e.scope_===t,st=[];function ct(e,t,n,r){let i=Fe(e),a=e.type_;if(r!==void 0&&Te(i,r,a)===t){Ee(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;Se(i,(e,n)=>{if(_e(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??st;for(let e of o)Ee(i,e,n,a)}function lt(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!ot(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=Ie(i);ct(e,i.draft_??i,a,n),ut(i,r)})}function ut(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}at(e)}}function dt(e,t,n){let{scope_:r}=e;if(_e(n)){let i=n[O];ot(i,r)&&i.callbacks_.push(function(){yt(e),ct(e,n,Ie(i),t)})}else ve(n)&&e.callbacks_.push(function(){let i=Fe(e);e.type_===3?i.has(n)&&ft(n,r.handledSet_,r):Te(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&ft(Te(e.copy_,t,e.type_),r.handledSet_,r)})}function ft(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||_e(e)||t.has(e)||!ve(e)||Ve(e)?e:(t.add(e),Se(e,(r,i)=>{if(_e(i)){let t=i[O];ot(t,n)&&(Ee(e,r,Ie(t),e.type_),at(t))}else ve(i)&&ft(i,t,n)}),e)}function pt(e,t){let n=Oe(e),r={type_:+!!n,scope_:t?t.scope_:Ye(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=j;n&&(i=[r],a=mt);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var j={get(e,t){if(t===O)return e;if(t===`constructor`||t===`__proto__`){let n=Fe(e)[t];return new Proxy(n||{},{get:(e,t)=>t===`__proto__`||t===`prototype`?Object.freeze(Object.create(null)):Reflect.get(e,t),set:()=>!0,apply:(e,t,n)=>Reflect.apply(e,t,n)})}let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=Fe(e);if(!we(i,t,e.type_))return gt(e,i,t);let a=i[t];if(e.finalized_||!ve(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Pe(t))return a;if(a===ht(e.base_,t)){yt(e);let n=e.type_===1?+t:t,r=xt(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t===`constructor`||t===`__proto__`||t===`prototype`?!1:t in Fe(e)},ownKeys(e){return Reflect.ownKeys(Fe(e))},set(e,t,n){if(t===`constructor`||t===`__proto__`||t===`prototype`)return!0;let r=_t(Fe(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=ht(Fe(e),t),i=r?.[O];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(De(n,r)&&(n!==void 0||we(e.base_,t,e.type_)))return!0;yt(e),vt(e)}return e.copy_[t]===n&&(n!==void 0||we(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),dt(e,t,n),!0)},deleteProperty(e,t){return yt(e),ht(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),vt(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=Fe(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[he]:!0,[pe]:e.type_!==1||t!==`length`,[me]:r[me],[ge]:n[t]}},defineProperty(){ue(11)},getPrototypeOf(e){return fe(e.base_)},setPrototypeOf(){ue(12)}},mt={};for(let e in j){let t=j[e];mt[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}mt.deleteProperty=function(e,t){return mt.set.call(this,e,t,void 0)},mt.set=function(e,t,n){return j.set.call(this,e[0],t,n,e[0])};function ht(e,t){let n=e[O];return(n?Fe(n):e)[t]}function gt(e,t,n){let r=_t(t,n);return r?ge in r?r[ge]:r.get?.call(e.draft_):void 0}function _t(e,t){if(!(t in e))return;let n=fe(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=fe(n)}}function vt(e){e.modified_||(e.modified_=!0,e.parent_&&vt(e.parent_))}function yt(e){e.copy_||=(e.assigned_=new Map,Le(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var bt=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(Me(e)&&!Me(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}Me(t)||ue(6),n!==void 0&&!Me(n)&&ue(7);let r;if(ve(e)){let i=et(this),a=xt(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?Qe(i):$e(i)}return Ze(i,n),nt(r,i)}else if(!e||!je(e)){if(r=t(e),r===void 0&&(r=e),r===E&&(r=void 0),this.autoFreeze_&&Re(r,!0),n){let t=[],i=[];Ke(Ue).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}else ue(1,e)},this.produceWithPatches=(e,t)=>{if(Me(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},Ne(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Ne(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Ne(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){ve(e)||ue(8),_e(e)&&(e=St(e));let t=et(this),n=xt(t,e,void 0);return n[O].isManual_=!0,$e(t),n}finishDraft(e,t){let n=e&&e[O];(!n||!n.isManual_)&&ue(9);let{scope_:r}=n;return Ze(r,t),nt(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=Ke(Ue).applyPatches_;return _e(e)?r(e,t):this.produce(e,e=>r(e,t))}};function xt(e,t,n,r){let[i,a]=ke(t)?Ke(He).proxyMap_(t,n):Ae(t)?Ke(He).proxySet_(t,n):pt(t,n);return(n?.scope_??Ye()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?lt(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function St(e){return _e(e)||ue(10,e),Ct(e)}function Ct(e){if(!ve(e)||Ve(e))return e;let t=e[O],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Le(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Le(e,!0);return Se(n,(e,t)=>{Ee(n,e,Ct(t))},r),t&&(t.finalized_=!1),n}var wt=new bt().produce,M=e=>(t,n,r)=>(r.setState=(e,n,...r)=>t(typeof e==`function`?wt(e):e,n,...r),e(r.setState,n,r));function Tt(e,t){return Et(e,t,new Map)}function Et(e,t,n){if(e===t||Number.isNaN(e)&&Number.isNaN(t))return!0;let r=typeof e;if(r!==typeof t)return!1;if(e===null||t===null||r!==`object`)return e===t;if(n.has(e)&&n.get(e)===t)return!0;if(n.set(e,t),e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp&&t instanceof RegExp)return e.toString()===t.toString();if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[r,i]of e)if(!t.has(r)||!Et(i,t.get(r),n))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let r of e){let e=!1;for(let i of t)if(Et(r,i,n)){e=!0;break}if(!e)return!1}return!0}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let r=0;r({pollData:null,setPollData:t=>{e(e=>{Tt(t,e.pollData)||(e.pollData=t)})}}))),Ot=T()(M(e=>({pollData:null,setPollData:t=>e(e=>{e.pollData=t})}))),kt=T()(M(e=>({pollData:null,setPollData:t=>e(e=>{e.pollData=t})}))),At=T()(M(e=>({pollData:null,setPollData:t=>e(e=>{e.pollData=t})}))),jt=T()(M(e=>({pollData:null,setPollData:t=>e(e=>{e.pollData=t})}))),Mt=T()(M(e=>({items:[],pollData:null,setItem:({id:t,...n})=>{e(e=>{let r=e.items.find(e=>e.id===t);r&&Object.assign(r,n)})},setItems:t=>e({items:t}),setPollData:t=>{e(e=>{Tt(t,e.pollData)||(e.pollData=t)})}}))),Nt=T()(M(e=>({latestPhpVersion:``,pollData:null,setPollData:t=>e(e=>{e.pollData=t})}))),Pt=T()(M(e=>({latestPhpVersion:``,pollData:null,setLatestPhpVersion:t=>e(e=>{e.latestPhpVersion=t}),setPollData:t=>e(e=>{e.pollData=t})}))),Ft=T()(M(e=>({pollData:null,publicIpv4:``,publicIpv6:``,setPollData:t=>e(e=>{e.pollData=t}),setPublicIpv4:t=>e(e=>{e.publicIpv4=t}),setPublicIpv6:t=>e(e=>{e.publicIpv6=t})}))),It={cpuUsage:{idle:100,sys:0,usage:0,user:0},memBuffers:{max:0,value:0},memCached:{max:0,value:0},memRealUsage:{max:0,value:0},swapCached:{max:0,value:0},swapUsage:{max:0,value:0},sysLoad:[0,0,0]},Lt=T()(M(e=>({pollData:It,setPollData:t=>e(e=>{e.pollData=t})}))),Rt=T()(M(e=>({latestPhpVersion:``,pollData:null,setLatestPhpVersion:t=>e(e=>{e.latestPhpVersion=t}),setPollData:t=>e(e=>{Tt(t,e.pollData)||(e.pollData=t)})}))),zt=T()(M(e=>({pollData:null,setPollData:t=>e(e=>{e.pollData=t})}))),Bt=T()(M(e=>({pollData:null,setPollData:t=>{e(e=>{e.pollData=t}),Dt.getState().setPollData(t?.config??null),zt.getState().setPollData(t?.userConfig??null),Ot.getState().setPollData(t?.database??null),At.getState().setPollData(t?.myInfo??null),Pt.getState().setPollData(t?.phpInfo??null),kt.getState().setPollData(t?.diskUsage??null),Nt.getState().setPollData(t?.phpExtensions??null),jt.getState().setPollData(t?.networkStats??null),Lt.getState().setPollData(t?.serverStatus??null),Ft.getState().setPollData(t?.serverInfo??null),Mt.getState().setPollData(t?.nodes??null),Rt.getState().setPollData(t?.temperatureSensor??null)}})));function Vt(e,t){let n=e;for(let[e,r]of Object.entries(t)){let t=RegExp(`\\{\\{${e}\\}\\}`,`g`);n=n.replace(t,String(r))}return n}var Ht={main:`_main_bc4zy_9`},Ut=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),N=o(((e,t)=>{t.exports=Ut()}))(),Wt=()=>{let{hasConfig:e,APP_NAME:t,APP_URL:n,AUTHOR_NAME:r,AUTHOR_URL:i}=Bt(C(e=>({APP_NAME:e.pollData?.config?.APP_NAME,APP_URL:e.pollData?.config?.APP_URL,AUTHOR_NAME:e.pollData?.config?.AUTHOR_NAME,AUTHOR_URL:e.pollData?.config?.AUTHOR_URL,hasConfig:!!e.pollData?.config})));return e?(0,N.jsx)(`div`,{className:Ht.main,dangerouslySetInnerHTML:{__html:Vt(w(`Generate by {{appName}} and developed by {{authorName}}`),{appName:`${t}`,authorName:`${r}`})}}):null},Gt=[{id:`dark`,name:w(`LiangYe`)},{id:`light`,name:w(`XiGuang`)}],Kt={main:`_main_j7pyp_31`,button:`_button_j7pyp_36`},qt=e=>{document.documentElement.setAttribute(`data-theme`,e)},Jt=()=>window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`,Yt=()=>{let[e,t]=(0,_.useState)(v.THEME||`system`),[n,r]=(0,_.useState)(Jt);(0,_.useEffect)(()=>{let e=window.matchMedia(`(prefers-color-scheme: dark)`),t=e=>{r(e.matches?`dark`:`light`)};return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]),(0,_.useEffect)(()=>{qt(e===`system`||!e?n:e)},[e,n]);let i=(0,_.useCallback)(e=>{let{id:n}=e.currentTarget.dataset;n&&(t(n),localStorage.setItem(`x-theme:v1`,n))},[]),a=e===`system`||!e?n:e;return(0,N.jsx)(`div`,{className:Kt.main,children:Gt.map(({id:t,name:n})=>{let r=t===e||e===`system`&&t===a;return(0,N.jsx)(`button`,{className:Kt.button,"data-active":r||void 0,"data-id":t,onClick:i,title:n,type:`button`,children:n},t)})})},Xt={main:`_main_mb04g_1`},Zt=T()(M(e=>({hasUpdateError:!1,isUpdating:!1,setHasUpdateError:t=>{e(e=>{e.hasUpdateError=t})},setIsUpdating:t=>{e(e=>{e.isUpdating=t})},setTargetVersion:t=>{e(e=>{e.targetVersion=t})},targetVersion:``}))),Qt={main:`_main_uzbg7_19`},$t=e=>(0,N.jsx)(`a`,{className:Qt.main,...e}),en=e=>(0,N.jsx)(`button`,{className:Qt.main,...e}),tn=T()(M((e,t)=>({close:(n=0)=>{let r=t().timerId;if(r&&clearTimeout(r),n===0){e(e=>{e.isOpen=!1,e.timerId=null});return}let i=setTimeout(()=>{e(e=>{e.isOpen=!1,e.timerId=null})},n*1e3);e(e=>{e.timerId=i})},isOpen:!1,msg:``,open:t=>e(e=>{e.timerId&&clearTimeout(e.timerId),e.isOpen=!0,e.msg=t??``,e.timerId=null}),setMsg:t=>e(e=>{e.msg=t}),timerId:null}))),nn=()=>{let{isUpdating:e,hasUpdateError:t,targetVersion:n}=Zt(C(e=>({hasUpdateError:e.hasUpdateError,isUpdating:e.isUpdating,targetVersion:e.targetVersion}))),r=Dt(e=>e?.pollData?.APP_VERSION??`-`);return e?w(`⏳ Updating, please wait a second...`):t?w(`❌ Update error, click here to try again?`):n?Vt(w(`✨ Found new version: {{oldVersion}} ⇢ {{newVersion}}`),{newVersion:n,oldVersion:r}):``},rn=()=>{let e=nn(),t=Zt(e=>e.isUpdating),n=Zt(e=>e.setIsUpdating),r=Zt(e=>e.setHasUpdateError),i=tn(e=>e.open);return(0,N.jsx)(en,{onClick:(0,_.useCallback)(async e=>{if(e.preventDefault(),e.stopPropagation(),t)return;n(!0);let{status:a}=await b(`update`);switch(a){case 201:i(w(`Update success, refreshing...`)),window.location.reload();return;case 403:i(w(`Update is disabled in dev mode.`)),n(!1),r(!0);return;case 507:case 500:i(w(`Can not update file, please check the server permissions and space.`)),n(!1),r(!0);return;default:}i(w(`Network error, please try again later.`)),n(!1),r(!0)},[t,n,r,i]),title:w(`Click to update`),children:e})},an=/^\d+$/,on={"#":-2,a:-5,alpha:-5,any:-7,b:-4,beta:-4,p:-6,patch:-6,pl:-1,pr:-6,rc:-3};function sn(e,t){let n=e=>{let t=e.indexOf(`+`);return t===-1?e:e.slice(0,t)},r=e=>n(e).trim().replace(/[-_]/g,`.`).replace(/([0-9]+)([a-zA-Z]+)/g,`$1.$2`).replace(/([a-zA-Z]+)([0-9]+)/g,`$1.$2`).split(`.`).filter(e=>e.length>0),i=r(e),a=r(t),o=e=>{if(e===void 0||e===``)return{isNum:!0,val:0,weight:0};if(an.test(e))return{isNum:!0,val:Number.parseInt(e,10),weight:0};let t=e.toLowerCase();return{isNum:!1,val:t,weight:t in on?on[t]:0}},s=Math.max(i.length,a.length);for(let e=0;en.val?1:-1}else if(t.isNum||n.isNum)return t.isNum?n.weight<0?1:-1:t.weight>0?1:-1;else{if(t.weight!==n.weight)return t.weight>n.weight?1:-1;if(t.val!==n.val)return t.val>n.val?1:-1}}return 0}var cn={main:`_main_1k8xz_1`,name:`_name_1k8xz_6`,version:`_version_1k8xz_10`},ln=()=>{let{hasPollData:e,APP_NAME:t,APP_URL:n,APP_VERSION:r}=Dt(C(e=>({APP_NAME:e.pollData?.APP_NAME,APP_URL:e.pollData?.APP_URL,APP_VERSION:e.pollData?.APP_VERSION,hasPollData:!!e.pollData}))),{setTargetVersion:i,targetVersion:a}=Zt(C(e=>({setTargetVersion:e.setTargetVersion,targetVersion:e.targetVersion})));return(0,_.useEffect)(()=>{e&&(async()=>{let{data:e,status:t}=await b(`latestVersion`);!e?.version||t!==200||i(e.version)})()},[e,i]),e?(0,N.jsx)(`h1`,{className:cn.main,children:a&&r&&sn(r,a)<0?(0,N.jsx)(rn,{}):(0,N.jsxs)($t,{href:n,rel:`noreferrer`,target:`_blank`,children:[(0,N.jsx)(`span`,{className:cn.name,children:t}),(0,N.jsx)(`span`,{className:cn.version,children:r})]})}):null},un=()=>(0,N.jsxs)(`div`,{className:Xt.main,children:[(0,N.jsx)(ln,{}),(0,N.jsx)(Yt,{})]}),dn=m(),fn=e=>{let t=(0,_.useRef)(document.createElement(`div`));return(0,_.useEffect)(()=>{if(e){let n=document.getElementById(e);if(!n)return;n.innerHTML=``,n.appendChild(t.current)}else document.body.appendChild(t.current);return()=>{t.current.remove()}},[e]),t.current},pn=({children:e})=>(0,dn.createPortal)(e,fn()),mn={main:`_main_setjm_10`},hn=()=>{let e=tn(e=>e.isOpen),t=tn(e=>e.msg),n=tn(e=>e.close),r=(0,_.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),n()},[n]);return e?(0,N.jsx)(pn,{children:(0,N.jsx)(`button`,{className:mn.main,onClick:r,title:w(`Click to close`),type:`button`,children:t})}):null},gn={container:`_container_30sck_1`},_n=`browserBenchmark`,vn=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),yn=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),bn=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),xn=e=>{let t=bn(e);return t.charAt(0).toUpperCase()+t.slice(1)},Sn={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},Cn=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},wn=(0,_.createContext)({}),Tn=()=>(0,_.useContext)(wn),En=(0,_.forwardRef)(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>{let{size:l=24,strokeWidth:u=2,absoluteStrokeWidth:d=!1,color:f=`currentColor`,className:p=``}=Tn()??{},m=r??d?Number(n??u)*24/Number(t??l):n??u;return(0,_.createElement)(`svg`,{ref:c,...Sn,width:t??l??Sn.width,height:t??l??Sn.height,stroke:e??f,strokeWidth:m,className:vn(`lucide`,p,i),...!a&&!Cn(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>(0,_.createElement)(e,t)),...Array.isArray(a)?a:[a]])}),Dn=(e,t)=>{let n=(0,_.forwardRef)(({className:n,...r},i)=>(0,_.createElement)(En,{ref:i,iconNode:t,className:vn(`lucide-${yn(xn(e))}`,`lucide-${e}`,n),...r}));return n.displayName=xn(e),n},On=Dn(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),kn=Dn(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),An=Dn(`cloud-download`,[[`path`,{d:`M12 13v8l-4-4`,key:`1f5nwf`}],[`path`,{d:`m12 21 4-4`,key:`1lfcce`}],[`path`,{d:`M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284`,key:`ui1hmy`}]]),jn=Dn(`cpu`,[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]),Mn=Dn(`hard-drive`,[[`path`,{d:`M10 16h.01`,key:`1bzywj`}],[`path`,{d:`M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`18tbho`}],[`path`,{d:`M21.946 12.013H2.054`,key:`zqlbp7`}],[`path`,{d:`M6 16h.01`,key:`1pmjb7`}]]),Nn=Dn(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),Pn=Dn(`link`,[[`path`,{d:`M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71`,key:`1cjeqo`}],[`path`,{d:`M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71`,key:`19qd67`}]]),Fn=Dn(`loader-pinwheel`,[[`path`,{d:`M22 12a1 1 0 0 1-10 0 1 1 0 0 0-10 0`,key:`1lzz15`}],[`path`,{d:`M7 20.7a1 1 0 1 1 5-8.7 1 1 0 1 0 5-8.6`,key:`1gnrpi`}],[`path`,{d:`M7 3.3a1 1 0 1 1 5 8.6 1 1 0 1 0 5 8.6`,key:`u9yy5q`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),In=Dn(`memory-stick`,[[`path`,{d:`M12 12v-2`,key:`fwoke6`}],[`path`,{d:`M12 18v-2`,key:`qj6yno`}],[`path`,{d:`M16 12v-2`,key:`heuere`}],[`path`,{d:`M16 18v-2`,key:`s1ct0w`}],[`path`,{d:`M2 11h1.5`,key:`15p63e`}],[`path`,{d:`M20 18v-2`,key:`12ehxp`}],[`path`,{d:`M20.5 11H22`,key:`khsy7a`}],[`path`,{d:`M4 18v-2`,key:`1c3oqr`}],[`path`,{d:`M8 12v-2`,key:`1mwtfd`}],[`path`,{d:`M8 18v-2`,key:`qcmpov`}],[`rect`,{x:`2`,y:`6`,width:`20`,height:`10`,rx:`2`,key:`1qcswk`}]]),Ln=Dn(`pointer`,[[`path`,{d:`M22 14a8 8 0 0 1-8 8`,key:`56vcr3`}],[`path`,{d:`M18 11v-1a2 2 0 0 0-2-2a2 2 0 0 0-2 2`,key:`1agjmk`}],[`path`,{d:`M14 10V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1`,key:`wdbh2u`}],[`path`,{d:`M10 9.5V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v10`,key:`1ibuk9`}],[`path`,{d:`M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15`,key:`g6ys72`}]]),Rn=Dn(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),zn=Dn(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),Bn={arrow:`_arrow_19b9q_13`},Vn=`database`,Hn=`diskUsage`,Un=`myInfo`,Wn=`networkStats`,Gn=`nodes`,Kn=`phpExtensions`,qn=`phpInfo`,Jn=`ping`,Yn=`serverBenchmark`,Xn=`serverInfo`,Zn=`serverStatus`,Qn=`temperatureSensor`,$n=`x-module-priority:v1`,er=[Gn,Qn,Zn,Wn,Hn,Jn,Xn,qn,Kn,Vn,Yn,_n,Un],tr=()=>{let e=localStorage.getItem($n);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}},nr=e=>{localStorage.setItem($n,JSON.stringify(e))},rr=T()(M(e=>{let t=tr();return{moveDown:t=>{e(e=>{let n=e.priorities.indexOf(t);n<0||n===e.priorities.length-1||([e.priorities[n],e.priorities[n+1]]=[e.priorities[n+1],e.priorities[n]],nr(e.priorities))})},moveUp:t=>{e(e=>{let n=e.priorities.indexOf(t);n<=0||([e.priorities[n],e.priorities[n-1]]=[e.priorities[n-1],e.priorities[n]],nr(e.priorities))})},priorities:er.toSorted((e,n)=>{let r=t.indexOf(e),i=t.indexOf(n);return(r<0?0:r)-(i<0?0:i)}),setPriorities:t=>e(e=>{e.priorities=t,nr(t)})}})),ir=({isDown:e,moduleId:t})=>{let n=wa(),{moveUp:r,moveDown:i}=rr(C(e=>({moveDown:e.moveDown,moveUp:e.moveUp}))),a=e?(e=>n.at(-1)?.id===e)(t):(e=>n.at(0)?.id===e)(t),o=(0,_.useCallback)(n=>{if(n.preventDefault(),n.stopPropagation(),e){i(t);return}r(t)},[e,i,r,t]);return(0,N.jsx)(`button`,{className:Bn.arrow,"data-disabled":a||void 0,disabled:a,onClick:o,title:w(e?`Move down`:`Move up`),type:`button`,children:e?(0,N.jsx)(On,{}):(0,N.jsx)(kn,{})})},ar={main:`_main_15ko2_17`,header:`_header_15ko2_23`,title:`_title_15ko2_35`,body:`_body_15ko2_39`},or=(0,_.memo)(({id:e,title:t})=>(0,N.jsxs)(`h2`,{className:ar.header,children:[(0,N.jsx)(ir,{isDown:!1,moduleId:e}),(0,N.jsx)(`span`,{className:ar.title,children:t}),(0,N.jsx)(ir,{isDown:!0,moduleId:e})]})),sr=({id:e,title:t,children:n,...r})=>(0,N.jsxs)(`div`,{className:ar.main,id:e,...r,children:[(0,N.jsx)(or,{id:e,title:t}),(0,N.jsx)(`div`,{className:ar.body,children:n})]}),cr={main:`_main_11kiv_11`,item:`_item_11kiv_19`},lr=({items:e})=>(0,N.jsx)(`ul`,{className:cr.main,children:e.map(({id:e,text:t})=>(0,N.jsxs)(`li`,{className:cr.item,children:[(0,N.jsx)(Nn,{}),t]},e))}),ur={main:`_main_u2qvm_19`,animation:`_animation_u2qvm_1`},dr=({height:e=5})=>(0,N.jsx)(`div`,{className:ur.main,style:{height:`${e}rem`}}),fr={main:`_main_ndt5n_13`},pr=({children:e})=>(0,N.jsxs)(`div`,{className:fr.main,role:`alert`,children:[(0,N.jsx)(zn,{}),e]}),mr={main:`_main_ky93m_1`,link:`_link_ky93m_8`},hr=Object.create,gr=Object.defineProperty,_r=Object.getOwnPropertyDescriptor,vr=Object.getOwnPropertyNames,yr=Object.getPrototypeOf,br=Object.prototype.hasOwnProperty,xr=(e,t)=>function(){return t||(0,e[vr(e)[0]])((t={exports:{}}).exports,t),t.exports},Sr=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of vr(t))!br.call(e,i)&&i!==n&&gr(e,i,{get:()=>t[i],enumerable:!(r=_r(t,i))||r.enumerable});return e},Cr=((e,t,n)=>(n=e==null?{}:hr(yr(e)),Sr(t||!e||!e.__esModule?gr(n,`default`,{value:e,enumerable:!0}):n,e)))(xr({"node_modules/toggle-selection/index.js"(e,t){"use strict";t.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],r=0;r(0,N.jsxs)(`ruby`,{className:Nr.main,"data-is-result":n||void 0,...r,children:[e,(0,N.jsx)(`rp`,{children:`(`}),(0,N.jsx)(`rt`,{children:t}),(0,N.jsx)(`rp`,{children:`)`})]}),Fr={main:`_main_7f4z3_19`,header:`_header_7f4z3_25`,marks:`_marks_7f4z3_31`,sign:`_sign_7f4z3_56`},Ir=(e,t=2)=>{if(e===0)return`0`;let n=1024,r=[`B`,`K`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`],i=Math.floor(Math.log(e)/Math.log(n));i=i<0?0:i;let a=Number.parseFloat((e/n**i).toFixed(t));return a?`${a.toFixed(2)} ${r[i]}`:`0`},Lr={main:`_main_yr5so_23`,percent:`_percent_yr5so_30`,percentText:`_percentText_yr5so_35`,name:`_name_yr5so_41`,nameText:`_nameText_yr5so_51`,overview:`_overview_yr5so_60`,core:`_core_yr5so_64`},Rr=(0,_.memo)(({value:e,max:t=100,low:n=60,optimum:r,high:i=80})=>(0,N.jsx)(`meter`,{className:Lr.core,high:i,low:n,max:t,optimum:r,value:e})),zr=(0,_.memo)(({title:e,name:t=``,value:n,max:r,isCapacity:i,percentTag:a=`%`,percent:o,percentRender:s,progressPercent:c})=>{let l=tn(e=>e.open),u=(0,_.useCallback)(n=>{n.preventDefault(),n.stopPropagation(),l(e||t),!(e?.length??!1)&&navigator.clipboard.writeText(t)},[t,e,l]),d=r===0||n===0?0:n/r*100,f=i?`${Ir(n)} / ${Ir(r)}`:`${n.toFixed(1)}${a} / ${r}${a}`;return(0,N.jsxs)(`div`,{className:Lr.main,title:e,children:[(0,N.jsx)(`button`,{className:Lr.name,onClick:u,title:t,type:`button`,children:(0,N.jsx)(`div`,{className:Lr.nameText,children:t})}),(0,N.jsx)(`div`,{className:Lr.percent,children:(0,N.jsx)(`span`,{className:Lr.percentText,children:s??`${(o??d).toFixed(1)}%`})}),(0,N.jsx)(`div`,{className:Lr.overview,children:f}),(0,N.jsx)(Rr,{value:c??d})]})}),Br={main:`_main_fajqi_1`},Vr=({totalMarks:e,total:t})=>(0,N.jsx)(`div`,{className:Br.main,children:(0,N.jsx)(Rr,{high:e*.7,low:e*.5,max:e,optimum:e,value:t})}),Hr=({js:e,dom:t,canvas:n,date:r})=>{let i=e+t+n,a=e.toLocaleString(),o=t.toLocaleString(),s=n.toLocaleString(),c=i.toLocaleString(),l=Vt(`{{js}} (JS) + {{dom}} (DOM) + {{canvas}} (Canvas) = {{total}}`,{canvas:s,dom:o,js:a,total:c}),u=(0,N.jsx)(`span`,{className:Fr.sign,children:`+`});return(0,N.jsxs)(`button`,{className:Fr.marks,onClick:e=>{e.preventDefault(),e.stopPropagation(),Mr(l)},title:w(`Touch to copy marks`),type:`button`,children:[(0,N.jsx)(Pr,{"data-is-detail":!0,rt:`JS`,ruby:a}),u,(0,N.jsx)(Pr,{"data-is-detail":!0,rt:`DOM`,ruby:o}),u,(0,N.jsx)(Pr,{"data-is-detail":!0,rt:`Canvas`,ruby:s}),(0,N.jsx)(`span`,{className:Fr.sign,children:`=`}),(0,N.jsx)(Pr,{"data-total":!0,isResult:!0,rt:r||``,ruby:c})]})},Ur=({ua:e,header:t,marks:n,maxMarks:r,date:i})=>{let{js:a,dom:o,canvas:s}=n;return(0,N.jsxs)(`div`,{className:Fr.main,children:[(0,N.jsx)(`div`,{className:Fr.header,title:e,children:t}),(0,N.jsx)(Hr,{canvas:s,date:i,dom:o,js:a}),(0,N.jsx)(Vr,{total:a+o+s,totalMarks:r})]})},Wr={button:`_button_i7kkm_24`,icon:`_icon_i7kkm_48`,spin:`_spin_i7kkm_1`},Gr={Error:`error`,Loading:`loading`,Pointer:`pointer`,Warning:`warning`},Kr=({status:e})=>(0,N.jsx)(`span`,{className:Wr.icon,"data-status":e,children:{[Gr.Error]:(0,N.jsx)(zn,{}),[Gr.Loading]:(0,N.jsx)(Fn,{}),[Gr.Warning]:(0,N.jsx)(Rn,{}),[Gr.Pointer]:(0,N.jsx)(Ln,{})}[e]??null}),qr=({status:e=Gr.Pointer,children:t,...n})=>(0,N.jsxs)(`button`,{className:Wr.button,type:`button`,...n,children:[(0,N.jsx)(Kr,{status:e}),t]}),Jr=({status:e=Gr.Pointer,children:t,href:n,...r})=>(0,N.jsxs)(`a`,{className:Wr.button,"data-link":!0,href:n,...r,children:[(0,N.jsx)(Kr,{status:e}),t]}),Yr=T()(M(e=>({benchmarking:!1,browsers:[],maxMarks:0,setBenchmarking:t=>e(e=>{e.benchmarking=t}),setBrowser:(t,n)=>e(e=>{let r=e.browsers.findIndex(e=>e.id===t);r!==-1&&(e.browsers[r]=n)}),setBrowsers:t=>e(e=>{e.browsers=t}),setMaxMarks:t=>e(e=>{e.maxMarks=t})}))),Xr=class{getRndint=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;runJs=()=>{let e=0,t=performance.now();for(;;){for(let e=0;e<1e4;e++)Math.sqrt(e)*Math.sin(e)/Math.tan(e+1);let n=Array(1e3).fill(0).map((e,t)=>t);if(n.sort(()=>Math.random()-.5),n.sort((e,t)=>e-t),e++,performance.now()-t>1e3)break}return e};runDom=()=>{let e=0,t=window.innerWidth,n=window.innerHeight,r=performance.now(),i=document.createElement(`div`);for(i.style.cssText=` position: fixed; top: 0; left: 0; width: 100%; height: 100%; -`,document.body.appendChild(i);;){for(let e=0;e<100;e++){let e=document.createElement(`div`);e.className=`benchmark-dom`,e.style.position=`fixed`,e.style.left=`0px`,e.style.top=`0px`,e.style.width=`${this.getRndint(50,t)}px`,e.style.height=`${this.getRndint(50,n)}px`,e.style.border=`1px solid green`,i.appendChild(e)}let a=document.querySelectorAll(`.benchmark-dom`);for(let e of Array.from(a))e.style.borderColor=`red`;for(;i.firstChild;)i.removeChild(i.firstChild);if(e++,performance.now()-r>1e3)break}return document.body.removeChild(i),e};runCanvas=()=>{let e=0,t=document.createElement(`canvas`),n=window.innerWidth,r=window.innerHeight;t.width=n,t.height=r,t.style.position=`fixed`,t.style.top=`0px`,t.style.left=`0px`,document.body.appendChild(t);let i=t.getContext(`2d`),a=performance.now();for(;;){for(let e=0;e<100;e++){i.clearRect(0,0,t.width,t.height);let e=t.width/2,n=t.height/2,r=t.width/2;i.lineWidth=this.getRndint(1,5),i.strokeStyle=`red`,i.lineCap=`round`,i.beginPath(),i.moveTo(e-r,n-r),i.lineTo(e+r,n+r),i.rotate(this.getRndint(0,360)),i.stroke(),i.beginPath(),i.moveTo(e+r,n-r),i.lineTo(e-r,n+r),i.rotate(this.getRndint(0,360)),i.stroke()}if(e++,performance.now()-a>1e3)break}return i.clearRect(0,0,t.width,t.height),document.body.removeChild(t),e}},Zr=()=>{let[e,t]=(0,_.useState)(!1),{setMaxMarks:n,maxMarks:r}=Yr(C(e=>({maxMarks:e.maxMarks,setMaxMarks:e.setMaxMarks}))),[i,a]=(0,_.useState)({canvas:0,dom:0,js:0}),o=(0,_.useCallback)(i=>{if(i.preventDefault(),i.stopPropagation(),e||!window.confirm(w(`Running the benchmark may freeze the browser interface for a few seconds. Do you want to continue?`)))return;let o=new Xr;t(!0);let s={canvas:o.runCanvas(),dom:o.runDom(),js:o.runJs()};t(!1),a(s);let c=Object.values(s).reduce((e,t)=>e+t,0);c>r&&n(c)},[e,r,n]),s=new Date,c=(0,N.jsx)(qr,{disabled:e,onClick:o,status:e?Gr.Loading:Gr.Pointer,children:w(`Benchmark my browser`)});return(0,N.jsx)(Ur,{date:`${s.getFullYear()}-${s.getMonth()+1}-${s.getDate()}`,header:c,marks:i,maxMarks:r,ua:``})},Qr=()=>{let[e,t]=(0,_.useState)(`loading`),{browsers:n,setBrowsers:r,setMaxMarks:i,maxMarks:a}=Yr(C(e=>({browsers:e.browsers,maxMarks:e.maxMarks,setBrowsers:e.setBrowsers,setMaxMarks:e.setMaxMarks})));(0,_.useEffect)(()=>{(async()=>{t(`loading`);let{data:e,status:n}=await b(`browserBenchmarks`);if(!e?.length||n!==200){t(`error`);return}let a=e.map(e=>({...e,total:e.detail?Object.values(e.detail).reduce((e,t)=>e+t,0):0})).toSorted((e,t)=>t.total-e.total),o=a[0]?.total??0;r(a),i(o),t(`idle`)})()},[r,i]);let o=(0,_.useMemo)(()=>n.filter(e=>e.detail).map(({name:e,version:t,ua:n,detail:r,date:i})=>{let{js:o=0,dom:s=0,canvas:c=0}=r;return(0,N.jsx)(Ur,{date:i,header:`${e}/v${t}`,marks:{canvas:c,dom:s,js:o},maxMarks:a,ua:n},`${e}-${t}`)}),[n,a]);return(0,N.jsxs)(`div`,{className:mr.main,children:[(0,N.jsx)(Zr,{}),e===`loading`&&Array.from({length:5}).map((e,t)=>(0,N.jsx)(dr,{},`browser-placeholder-${String(t)}`)),e===`idle`&&o,e===`error`&&(0,N.jsx)(pr,{children:w(`Can not fetch marks data from GitHub.`)})]})},$r=(0,_.memo)(()=>(0,N.jsxs)(sr,{id:_n,title:w(`Browser Benchmark`),children:[(0,N.jsx)(lr,{items:[{id:`browserBenchmarkTos`,text:w(`Different versions cannot be compared, and different time clients have different loads, just for reference.`)}]}),(0,N.jsx)(Qr,{})]})),ei={link:`xgN-Ca_link`,main:`xgN-Ca_main`,wrap:`xgN-Ca_wrap`},ti=({id:e,title:t})=>(0,N.jsx)(`a`,{className:ei.link,href:`#${e}`,children:t},e),ni={content:$r,id:_n,nav:()=>(0,N.jsx)(ti,{id:_n,title:w(`Browser bench`)})},ri={content:`QTvV3a_content`,label:`QTvV3a_label`,main:`QTvV3a_main`},ii=({label:e=``,title:t=``,minWidth:n=4,maxWidth:r=8,children:i})=>{let a={"--max-width":`${r}rem`,"--min-width":`${n}rem`};return(0,N.jsxs)(`div`,{className:ri.main,style:a,children:[!!e&&(0,N.jsx)(`div`,{className:ri.label,title:t,children:e}),(0,N.jsx)(`div`,{className:ri.content,children:i})]})},ai={main:`LMcw6W_main`},oi=({minWidth:e=16,...t})=>{let n={"--min-width":`${e}rem`};return(0,N.jsx)(`div`,{className:ai.main,style:n,...t})},si={main:`flIsmG_main`},ci=({isEnable:e,text:t=``})=>(0,N.jsx)(`div`,{className:si.main,"data-error":!e||void 0,"data-icon":!t||void 0,"data-ok":e||void 0,children:t}),li={content:(0,_.memo)(()=>{let e=Ot(C(e=>e.pollData)),t=[[`SQLite3`,e?.sqlite3??!1],[`MySQLi client`,e?.mysqliClientVersion??!1],[`Mongo`,e?.mongo??!1],[`MongoDB`,e?.mongoDb??!1],[`PostgreSQL`,e?.postgreSql??!1],[`Paradox`,e?.paradox??!1],[`MS SQL`,e?.msSql??!1],[`PDO`,e?.pdo??!1]];return(0,N.jsx)(sr,{id:Vn,title:w(`Database`),children:(0,N.jsx)(oi,{minWidth:14,children:t.map(([e,t])=>(0,N.jsx)(ii,{label:e,maxWidth:7,minWidth:4,children:(0,N.jsx)(ci,{isEnable:!!t,text:t})},e))})})}),id:Vn,nav:()=>(0,N.jsx)(ti,{id:Vn,title:w(`DB`)})},ui={main:`PXKbea_main`},di={content:()=>{let e=kt(C(e=>e.pollData?.items??[]));return e.length?(0,N.jsx)(sr,{id:Hn,title:w(`Disk Usage`),children:(0,N.jsx)(`div`,{className:ui.main,children:e.map(({id:e,free:t,total:n})=>(0,N.jsx)(zr,{isCapacity:!0,max:n,name:e,value:n-t},e))})}):null},id:Hn,nav:()=>kt(e=>!!e.pollData?.items.length)?(0,N.jsx)(ti,{id:Hn,title:w(`Disk`)}):null},fi=({ip:e})=>{let[t,n]=(0,_.useState)(!1),[r,i]=(0,_.useState)(null),a=tn(e=>e.open);return(0,N.jsx)(qr,{onClick:(0,_.useCallback)(async r=>{if(r.preventDefault(),r.stopPropagation(),t)return;n(!0);let{data:o,status:s}=await b(`locationIpv4&ip=${e}`);if(n(!1),o&&s===200){i(o);return}a(w(`Can not fetch location.`))},[e,t,a]),status:t?Gr.Loading:Gr.Pointer,children:r?Object.values(r).filter(Boolean).join(`, `):w(`Click to fetch`)})},pi=e=>{let[t,n]=(0,_.useState)({ip:``,isLoading:!0,msg:w(`Loading...`)});return(0,_.useEffect)(()=>{(async()=>{let t=await fetch(`https://ipv${e}.inn-studio.com/ip/?json`);await t.json().catch(()=>{n({ip:``,isLoading:!1,msg:w(`Not support`)})}).then(e=>{if(e?.ip&&t.status===200){n({ip:e.ip,isLoading:!1,msg:``});return}n({ip:``,isLoading:!1,msg:w(`Can not fetch IP`)})})})()},[e]),t},mi={main:`WalEhG_main`},hi=e=>(0,N.jsx)(`div`,{className:mi.main,...e}),gi={content:()=>{let{hasPollData:e,pollDataIpv4:t,pollDataIpv6:n,phpLanguage:r}=At(C(e=>({hasPollData:!!e.pollData,phpLanguage:e.pollData?.phpLanguage??`-`,pollDataIpv4:e.pollData?.ipv4??``,pollDataIpv6:e.pollData?.ipv6??``}))),{ip:i,msg:a,isLoading:o}=pi(4),{ip:s,msg:c,isLoading:l}=pi(6),u=``,d=``;u=o?a:i||t||a,d=l?c:s||n||c;let f=[[w(`IPv4`),u],[w(`IPv6`),d],[w(`Location (IPv4)`),(0,N.jsx)(fi,{ip:u},`myLocalIpv4`)],[w(`Browser UA`),navigator.userAgent],[w(`JS Browser languages`),navigator.languages.join(`,`)],[w(`PHP Browser languages`),r]];return e?(0,N.jsx)(sr,{id:Un,title:w(`My Info`),children:(0,N.jsx)(hi,{children:f.map(([e,t])=>(0,N.jsx)(ii,{label:e,children:t},e))})}):null},id:Un,nav:()=>At(e=>!!e.pollData)?(0,N.jsx)(ti,{id:Un,title:w(`Mine`)}):null};function _i(e){let t=(0,_.useRef)(null);return(0,_.useEffect)(()=>{t.current=e},[e]),t.current}var vi={container:`h_aOXq_container`,data:`h_aOXq_data`,dataContainer:`h_aOXq_dataContainer`,id:`h_aOXq_id`,idRow:`h_aOXq_idRow`,item:`h_aOXq_item`,rate:`h_aOXq_rate`,rateRx:`h_aOXq_rateRx`,rateTx:`h_aOXq_rateTx`},yi={id:`_3rNAXW_id`,label:`_3rNAXW_label`,main:`_3rNAXW_main`,"network-stats-item-id":`_3rNAXW_network-stats-item-id`,"network-stats-item-rx":`_3rNAXW_network-stats-item-rx`,"network-stats-item-tx":`_3rNAXW_network-stats-item-tx`,rateRx:`_3rNAXW_rateRx`,rateTx:`_3rNAXW_rateTx`,rx:`_3rNAXW_rx`,total:`_3rNAXW_total`,tx:`_3rNAXW_tx`},bi=(0,_.memo)(({id:e,totalRx:t=0,rateRx:n=0,totalTx:r=0,rateTx:i=0})=>e?(0,N.jsxs)(`div`,{className:yi.main,children:[(0,N.jsx)(`div`,{className:yi.id,children:e}),(0,N.jsxs)(`div`,{className:yi.rx,children:[(0,N.jsx)(`div`,{className:yi.label,children:w(`▼ Received`)}),(0,N.jsx)(`div`,{className:yi.total,children:Ir(t)}),(0,N.jsxs)(`div`,{className:yi.rateRx,children:[Ir(n),`/s`]})]}),(0,N.jsxs)(`div`,{className:yi.tx,children:[(0,N.jsx)(`div`,{className:yi.label,children:w(`▲ Sent`)}),(0,N.jsx)(`div`,{className:yi.total,children:Ir(r)}),(0,N.jsxs)(`div`,{className:yi.rateTx,children:[Ir(i),`/s`]})]})]}):null);bi.displayName=`NetworksStatsItem`;var xi={content:()=>{let{networks:e,networksCount:t,timestamp:n}=jt(C(e=>({networks:e.pollData?.networks??[],networksCount:e.pollData?.networks.length,timestamp:e.pollData?.timestamp??0}))),r=(0,_.useMemo)(()=>e.filter(({tx:e})=>!!e).toSorted((e,t)=>e.tx-t.tx),[e]),i=_i({items:r,timestamp:n}),a=(0,_.useMemo)(()=>{let e=new Map,t=i?.items||r;for(let n of t)e.set(n.id,n);return e},[i?.items,r]);if(!t)return null;let o=n-(i?.timestamp||n);return(0,N.jsx)(sr,{id:Wn,title:w(`Network Stats`),children:(0,N.jsx)(`div`,{className:vi.container,children:r.map(({id:e,rx:t,tx:n})=>{if(!(t||n))return null;let r=a.get(e),i=r?.rx||0,s=r?.tx||0;return(0,N.jsx)(bi,{id:e,rateRx:o>0?(t-i)/o:0,rateTx:o>0?(n-s)/o:0,totalRx:t,totalTx:n},e)})})})},id:Wn,nav:()=>jt(e=>!!e.pollData?.networks.length)?(0,N.jsx)(ti,{id:Wn,title:w(`Network`)}):null},Si={main:`LhFvzW_main`},Ci={group:`sJulDa_group`,groupItem:`sJulDa_groupItem`,label:`sJulDa_label`,main:`sJulDa_main`,meter:`sJulDa_meter`,usage:`sJulDa_usage`,"x-meter-core":`sJulDa_x-meter-core`,"x-server-stats-system-load-group":`sJulDa_x-server-stats-system-load-group`,"x-server-stats-system-load-label":`sJulDa_x-server-stats-system-load-label`,"x-server-stats-system-load-meter":`sJulDa_x-server-stats-system-load-meter`,"x-server-stats-system-load-usage":`sJulDa_x-server-stats-system-load-usage`},wi=({load:e,title:t})=>(0,N.jsx)(`div`,{className:Ci.groupItem,title:t,children:e.toFixed(2)}),Ti=({sysLoad:e})=>{let t=[1,5,15],n=e.map((e,n)=>({id:`${t[n]}minAvg`,load:e,text:Vt(w(`{{minute}} minute average`),{minute:t[n]})}));return(0,N.jsx)(`div`,{className:Ci.group,children:n.map(({id:e,load:t,text:n})=>(0,N.jsx)(`div`,{className:Ci.groupItem,title:n,children:t.toFixed(2)},e))})},Ei=()=>{let{user:e,idle:t,sys:n,usage:r,sysLoad:i}=Lt(C(e=>({idle:e.pollData?.cpuUsage.idle??.01,sys:e.pollData?.cpuUsage.sys??.01,sysLoad:e.pollData?.sysLoad.join(`,`)??``,usage:e.pollData?.cpuUsage.usage??1,user:e.pollData?.cpuUsage.user??.1}))),a=e+t+n,o=` +`,document.body.appendChild(i);;){for(let e=0;e<100;e++){let e=document.createElement(`div`);e.className=`benchmark-dom`,e.style.position=`fixed`,e.style.left=`0px`,e.style.top=`0px`,e.style.width=`${this.getRndint(50,t)}px`,e.style.height=`${this.getRndint(50,n)}px`,e.style.border=`1px solid green`,i.appendChild(e)}let a=document.querySelectorAll(`.benchmark-dom`);for(let e of Array.from(a))e.style.borderColor=`red`;for(;i.firstChild;)i.removeChild(i.firstChild);if(e++,performance.now()-r>1e3)break}return document.body.removeChild(i),e};runCanvas=()=>{let e=0,t=document.createElement(`canvas`),n=window.innerWidth,r=window.innerHeight;t.width=n,t.height=r,t.style.position=`fixed`,t.style.top=`0px`,t.style.left=`0px`,document.body.appendChild(t);let i=t.getContext(`2d`),a=performance.now();for(;;){for(let e=0;e<100;e++){i.clearRect(0,0,t.width,t.height);let e=t.width/2,n=t.height/2,r=t.width/2;i.lineWidth=this.getRndint(1,5),i.strokeStyle=`red`,i.lineCap=`round`,i.beginPath(),i.moveTo(e-r,n-r),i.lineTo(e+r,n+r),i.rotate(this.getRndint(0,360)),i.stroke(),i.beginPath(),i.moveTo(e+r,n-r),i.lineTo(e-r,n+r),i.rotate(this.getRndint(0,360)),i.stroke()}if(e++,performance.now()-a>1e3)break}return i.clearRect(0,0,t.width,t.height),document.body.removeChild(t),e}},Zr=()=>{let[e,t]=(0,_.useState)(!1),{setMaxMarks:n,maxMarks:r}=Yr(C(e=>({maxMarks:e.maxMarks,setMaxMarks:e.setMaxMarks}))),[i,a]=(0,_.useState)({canvas:0,dom:0,js:0}),o=(0,_.useCallback)(i=>{if(i.preventDefault(),i.stopPropagation(),e||!window.confirm(w(`Running the benchmark may freeze the browser interface for a few seconds. Do you want to continue?`)))return;let o=new Xr;t(!0);let s={canvas:o.runCanvas(),dom:o.runDom(),js:o.runJs()};t(!1),a(s);let c=Object.values(s).reduce((e,t)=>e+t,0);c>r&&n(c)},[e,r,n]),s=new Date,c=(0,N.jsx)(qr,{disabled:e,onClick:o,status:e?Gr.Loading:Gr.Pointer,children:w(`Benchmark my browser`)});return(0,N.jsx)(Ur,{date:`${s.getFullYear()}-${s.getMonth()+1}-${s.getDate()}`,header:c,marks:i,maxMarks:r,ua:``})},Qr=()=>{let[e,t]=(0,_.useState)(`loading`),{browsers:n,setBrowsers:r,setMaxMarks:i,maxMarks:a}=Yr(C(e=>({browsers:e.browsers,maxMarks:e.maxMarks,setBrowsers:e.setBrowsers,setMaxMarks:e.setMaxMarks})));(0,_.useEffect)(()=>{(async()=>{t(`loading`);let{data:e,status:n}=await b(`browserBenchmarks`);if(!e?.length||n!==200){t(`error`);return}let a=e.map(e=>({...e,total:e.detail?Object.values(e.detail).reduce((e,t)=>e+t,0):0})).toSorted((e,t)=>t.total-e.total),o=a[0]?.total??0;r(a),i(o),t(`idle`)})()},[r,i]);let o=(0,_.useMemo)(()=>n.filter(e=>e.detail).map(({name:e,version:t,ua:n,detail:r,date:i})=>{let{js:o=0,dom:s=0,canvas:c=0}=r;return(0,N.jsx)(Ur,{date:i,header:`${e}/v${t}`,marks:{canvas:c,dom:s,js:o},maxMarks:a,ua:n},`${e}-${t}`)}),[n,a]);return(0,N.jsxs)(`div`,{className:mr.main,children:[(0,N.jsx)(Zr,{}),e===`loading`&&Array.from({length:5}).map((e,t)=>(0,N.jsx)(dr,{},`browser-placeholder-${String(t)}`)),e===`idle`&&o,e===`error`&&(0,N.jsx)(pr,{children:w(`Can not fetch marks data from GitHub.`)})]})},$r=(0,_.memo)(()=>(0,N.jsxs)(sr,{id:_n,title:w(`Browser Benchmark`),children:[(0,N.jsx)(lr,{items:[{id:`browserBenchmarkTos`,text:w(`Different versions cannot be compared, and different time clients have different loads, just for reference.`)}]}),(0,N.jsx)(Qr,{})]})),ei={wrap:`_wrap_1hhzt_20`,main:`_main_1hhzt_38`,link:`_link_1hhzt_53`},ti=({id:e,title:t})=>(0,N.jsx)(`a`,{className:ei.link,href:`#${e}`,children:t},e),ni={content:$r,id:_n,nav:()=>(0,N.jsx)(ti,{id:_n,title:w(`Browser bench`)})},ri={main:`_main_1kdvx_13`,label:`_label_1kdvx_23`,content:`_content_1kdvx_33`},ii=({label:e=``,title:t=``,minWidth:n=4,maxWidth:r=8,children:i})=>{let a={"--max-width":`${r}rem`,"--min-width":`${n}rem`};return(0,N.jsxs)(`div`,{className:ri.main,style:a,children:[!!e&&(0,N.jsx)(`div`,{className:ri.label,title:t,children:e}),(0,N.jsx)(`div`,{className:ri.content,children:i})]})},ai={main:`_main_z8p86_1`},oi=({minWidth:e=16,...t})=>{let n={"--min-width":`${e}rem`};return(0,N.jsx)(`div`,{className:ai.main,style:n,...t})},si={main:`_main_17jwg_17`},ci=({isEnable:e,text:t=``})=>(0,N.jsx)(`div`,{className:si.main,"data-error":!e||void 0,"data-icon":!t||void 0,"data-ok":e||void 0,children:t}),li={content:(0,_.memo)(()=>{let e=Ot(C(e=>e.pollData)),t=[[`SQLite3`,e?.sqlite3??!1],[`MySQLi client`,e?.mysqliClientVersion??!1],[`Mongo`,e?.mongo??!1],[`MongoDB`,e?.mongoDb??!1],[`PostgreSQL`,e?.postgreSql??!1],[`Paradox`,e?.paradox??!1],[`MS SQL`,e?.msSql??!1],[`PDO`,e?.pdo??!1]];return(0,N.jsx)(sr,{id:Vn,title:w(`Database`),children:(0,N.jsx)(oi,{minWidth:14,children:t.map(([e,t])=>(0,N.jsx)(ii,{label:e,maxWidth:7,minWidth:4,children:(0,N.jsx)(ci,{isEnable:!!t,text:t})},e))})})}),id:Vn,nav:()=>(0,N.jsx)(ti,{id:Vn,title:w(`DB`)})},ui={main:`_main_1n0a8_1`},di={content:()=>{let e=kt(C(e=>e.pollData?.items??[]));return e.length?(0,N.jsx)(sr,{id:Hn,title:w(`Disk Usage`),children:(0,N.jsx)(`div`,{className:ui.main,children:e.map(({id:e,free:t,total:n})=>(0,N.jsx)(zr,{isCapacity:!0,max:n,name:e,value:n-t},e))})}):null},id:Hn,nav:()=>kt(e=>!!e.pollData?.items.length)?(0,N.jsx)(ti,{id:Hn,title:w(`Disk`)}):null},fi=({ip:e})=>{let[t,n]=(0,_.useState)(!1),[r,i]=(0,_.useState)(null),a=tn(e=>e.open);return(0,N.jsx)(qr,{onClick:(0,_.useCallback)(async r=>{if(r.preventDefault(),r.stopPropagation(),t)return;n(!0);let{data:o,status:s}=await b(`locationIpv4&ip=${e}`);if(n(!1),o&&s===200){i(o);return}a(w(`Can not fetch location.`))},[e,t,a]),status:t?Gr.Loading:Gr.Pointer,children:r?Object.values(r).filter(Boolean).join(`, `):w(`Click to fetch`)})},pi=e=>{let[t,n]=(0,_.useState)({ip:``,isLoading:!0,msg:w(`Loading...`)});return(0,_.useEffect)(()=>{(async()=>{let t=await fetch(`https://ipv${e}.inn-studio.com/ip/?json`);await t.json().catch(()=>{n({ip:``,isLoading:!1,msg:w(`Not support`)})}).then(e=>{if(e?.ip&&t.status===200){n({ip:e.ip,isLoading:!1,msg:``});return}n({ip:``,isLoading:!1,msg:w(`Can not fetch IP`)})})})()},[e]),t},mi={main:`_main_mc2kq_1`},hi=e=>(0,N.jsx)(`div`,{className:mi.main,...e}),gi={content:()=>{let{hasPollData:e,pollDataIpv4:t,pollDataIpv6:n,phpLanguage:r}=At(C(e=>({hasPollData:!!e.pollData,phpLanguage:e.pollData?.phpLanguage??`-`,pollDataIpv4:e.pollData?.ipv4??``,pollDataIpv6:e.pollData?.ipv6??``}))),{ip:i,msg:a,isLoading:o}=pi(4),{ip:s,msg:c,isLoading:l}=pi(6),u=``,d=``;u=o?a:i||t||a,d=l?c:s||n||c;let f=[[w(`IPv4`),u],[w(`IPv6`),d],[w(`Location (IPv4)`),(0,N.jsx)(fi,{ip:u},`myLocalIpv4`)],[w(`Browser UA`),navigator.userAgent],[w(`JS Browser languages`),navigator.languages.join(`,`)],[w(`PHP Browser languages`),r]];return e?(0,N.jsx)(sr,{id:Un,title:w(`My Info`),children:(0,N.jsx)(hi,{children:f.map(([e,t])=>(0,N.jsx)(ii,{label:e,children:t},e))})}):null},id:Un,nav:()=>At(e=>!!e.pollData)?(0,N.jsx)(ti,{id:Un,title:w(`Mine`)}):null};function _i(e){let t=(0,_.useRef)(null);return(0,_.useEffect)(()=>{t.current=e},[e]),t.current}var vi={container:`_container_1bb8j_2`,item:`_item_1bb8j_8`,id:`_id_1bb8j_12`,idRow:`_idRow_1bb8j_17`,dataContainer:`_dataContainer_1bb8j_22`,data:`_data_1bb8j_22`,rate:`_rate_1bb8j_39`,rateRx:`_rateRx_1bb8j_46`,rateTx:`_rateTx_1bb8j_50`},yi={main:`_main_j131p_15`,id:`_id_j131p_21`,label:`_label_j131p_26`,total:`_total_j131p_30`,rx:`_rx_j131p_35`,tx:`_tx_j131p_36`,rateRx:`_rateRx_j131p_58`,rateTx:`_rateTx_j131p_59`},bi=(0,_.memo)(({id:e,totalRx:t=0,rateRx:n=0,totalTx:r=0,rateTx:i=0})=>e?(0,N.jsxs)(`div`,{className:yi.main,children:[(0,N.jsx)(`div`,{className:yi.id,children:e}),(0,N.jsxs)(`div`,{className:yi.rx,children:[(0,N.jsx)(`div`,{className:yi.label,children:w(`▼ Received`)}),(0,N.jsx)(`div`,{className:yi.total,children:Ir(t)}),(0,N.jsxs)(`div`,{className:yi.rateRx,children:[Ir(n),`/s`]})]}),(0,N.jsxs)(`div`,{className:yi.tx,children:[(0,N.jsx)(`div`,{className:yi.label,children:w(`▲ Sent`)}),(0,N.jsx)(`div`,{className:yi.total,children:Ir(r)}),(0,N.jsxs)(`div`,{className:yi.rateTx,children:[Ir(i),`/s`]})]})]}):null);bi.displayName=`NetworksStatsItem`;var xi={content:()=>{let{networks:e,networksCount:t,timestamp:n}=jt(C(e=>({networks:e.pollData?.networks??[],networksCount:e.pollData?.networks.length,timestamp:e.pollData?.timestamp??0}))),r=(0,_.useMemo)(()=>e.filter(({tx:e})=>!!e).toSorted((e,t)=>e.tx-t.tx),[e]),i=_i({items:r,timestamp:n}),a=(0,_.useMemo)(()=>{let e=new Map,t=i?.items||r;for(let n of t)e.set(n.id,n);return e},[i?.items,r]);if(!t)return null;let o=n-(i?.timestamp||n);return(0,N.jsx)(sr,{id:Wn,title:w(`Network Stats`),children:(0,N.jsx)(`div`,{className:vi.container,children:r.map(({id:e,rx:t,tx:n})=>{if(!(t||n))return null;let r=a.get(e),i=r?.rx||0,s=r?.tx||0;return(0,N.jsx)(bi,{id:e,rateRx:o>0?(t-i)/o:0,rateTx:o>0?(n-s)/o:0,totalRx:t,totalTx:n},e)})})})},id:Wn,nav:()=>jt(e=>!!e.pollData?.networks.length)?(0,N.jsx)(ti,{id:Wn,title:w(`Network`)}):null},Si={main:`_main_6ky1o_1`},Ci={main:`_main_1pjeu_12`,label:`_label_1pjeu_19`,meter:`_meter_1pjeu_25`,usage:`_usage_1pjeu_31`,group:`_group_1pjeu_36`,groupItem:`_groupItem_1pjeu_43`},wi=({load:e,title:t})=>(0,N.jsx)(`div`,{className:Ci.groupItem,title:t,children:e.toFixed(2)}),Ti=({sysLoad:e})=>{let t=[1,5,15],n=e.map((e,n)=>({id:`${t[n]}minAvg`,load:e,text:Vt(w(`{{minute}} minute average`),{minute:t[n]})}));return(0,N.jsx)(`div`,{className:Ci.group,children:n.map(({id:e,load:t,text:n})=>(0,N.jsx)(`div`,{className:Ci.groupItem,title:n,children:t.toFixed(2)},e))})},Ei=()=>{let{user:e,idle:t,sys:n,usage:r,sysLoad:i}=Lt(C(e=>({idle:e.pollData?.cpuUsage.idle??.01,sys:e.pollData?.cpuUsage.sys??.01,sysLoad:e.pollData?.sysLoad.join(`,`)??``,usage:e.pollData?.cpuUsage.usage??1,user:e.pollData?.cpuUsage.user??.1}))),a=e+t+n,o=` user: ${(e/a*100).toFixed(2)}% idle: ${(t/a*100).toFixed(2)}% sys: ${(n/a*100).toFixed(2)}% -`,s=i.split(`,`).map(Number);return(0,N.jsxs)(`div`,{className:Ci.main,children:[(0,N.jsx)(`div`,{className:Ci.label,children:w(`System load`)}),(0,N.jsx)(`div`,{className:Ci.usage,title:o,children:Vt(w(`{{usage}}% CPU usage`),{usage:r})}),(0,N.jsx)(Ti,{sysLoad:s}),(0,N.jsx)(`div`,{className:Ci.meter,children:(0,N.jsx)(Rr,{value:r>100?100:r})})]})},Di={sysLoad:`_6Zg-La_sysLoad`},Oi={chart:`gnBhFq_chart`,label:`gnBhFq_label`,main:`gnBhFq_main`,meter:`gnBhFq_meter`,overview:`gnBhFq_overview`,percent:`gnBhFq_percent`,"x-nodes-usage-chart":`gnBhFq_x-nodes-usage-chart`,"x-nodes-usage-label":`gnBhFq_x-nodes-usage-label`,"x-nodes-usage-meter":`gnBhFq_x-nodes-usage-meter`,"x-nodes-usage-overview":`gnBhFq_x-nodes-usage-overview`,"x-nodes-usage-percent":`gnBhFq_x-nodes-usage-percent`},ki=({children:e,percent:t})=>(0,N.jsxs)(`div`,{className:Oi.main,children:[e,(0,N.jsxs)(`div`,{className:Oi.percent,children:[t,`%`]}),(0,N.jsx)(`div`,{className:Oi.meter,children:(0,N.jsx)(Rr,{max:100,value:t})})]}),Ai=e=>(0,N.jsx)(`div`,{className:Oi.label,...e}),ji=e=>(0,N.jsx)(`div`,{className:Oi.overview,...e}),Mi=({items:e})=>(0,N.jsx)(`div`,{className:Di.sysLoad,children:e.map(e=>(0,N.jsx)(wi,{load:e},Math.random()))}),Ni=(0,_.memo)(({sysLoad:e,cpuUsage:t})=>{let{user:n,idle:r,sys:i,usage:a}=t,o=n+r+i,s=` +`,s=i.split(`,`).map(Number);return(0,N.jsxs)(`div`,{className:Ci.main,children:[(0,N.jsx)(`div`,{className:Ci.label,children:w(`System load`)}),(0,N.jsx)(`div`,{className:Ci.usage,title:o,children:Vt(w(`{{usage}}% CPU usage`),{usage:r})}),(0,N.jsx)(Ti,{sysLoad:s}),(0,N.jsx)(`div`,{className:Ci.meter,children:(0,N.jsx)(Rr,{value:r>100?100:r})})]})},Di={sysLoad:`_sysLoad_mqy5s_1`},Oi={main:`_main_8nrrw_9`,meter:`_meter_8nrrw_18`,label:`_label_8nrrw_24`,overview:`_overview_8nrrw_35`,chart:`_chart_8nrrw_41`,percent:`_percent_8nrrw_46`},ki=({children:e,percent:t})=>(0,N.jsxs)(`div`,{className:Oi.main,children:[e,(0,N.jsxs)(`div`,{className:Oi.percent,children:[t,`%`]}),(0,N.jsx)(`div`,{className:Oi.meter,children:(0,N.jsx)(Rr,{max:100,value:t})})]}),Ai=e=>(0,N.jsx)(`div`,{className:Oi.label,...e}),ji=e=>(0,N.jsx)(`div`,{className:Oi.overview,...e}),Mi=({items:e})=>(0,N.jsx)(`div`,{className:Di.sysLoad,children:e.map(e=>(0,N.jsx)(wi,{load:e},Math.random()))}),Ni=(0,_.memo)(({sysLoad:e,cpuUsage:t})=>{let{user:n,idle:r,sys:i,usage:a}=t,o=n+r+i,s=` user: ${(n/o*100).toFixed(2)}% idle: ${(r/o*100).toFixed(2)}% sys: ${(i/o*100).toFixed(2)}% -`;return(0,N.jsxs)(ki,{percent:a,children:[(0,N.jsxs)(Ai,{children:[(0,N.jsx)(jn,{}),w(`CPU`)]}),(0,N.jsx)(ji,{title:s,children:(0,N.jsx)(Mi,{items:e})})]})}),Pi={item:`mpZdYW_item`,main:`mpZdYW_main`},Fi=(0,_.memo)(({id:e,free:t,total:n})=>(0,N.jsx)(`div`,{className:Pi.item,children:(0,N.jsxs)(ki,{percent:n?Math.round(t/n*100):0,children:[(0,N.jsxs)(Ai,{children:[(0,N.jsx)(Mn,{}),e]}),(0,N.jsx)(ji,{children:`${Ir(t)} / ${Ir(n)}`})]})},e)),Ii=({data:e})=>{let t=e?.items??[];return(0,N.jsx)(`div`,{className:Pi.main,children:t.map(({id:e,free:t,total:n})=>(0,N.jsx)(Fi,{free:t,id:e,total:n},e))})},Li={main:`UbpXca_main`},Ri=({data:e})=>{let{networks:t,timestamp:n}=e,r=_i({items:t,timestamp:n}),i=n-(r?.timestamp||n);return(0,N.jsx)(`div`,{className:Li.main,children:t.map(({id:e,rx:n,tx:a})=>{if(!(n||a))return null;let o=(r?.items||t).find(t=>t.id===e),s=o?.rx||0,c=o?.tx||0;return(0,N.jsx)(bi,{id:e,rateRx:(n-s)/i,rateTx:(a-c)/i,totalRx:n,totalTx:a},e)})})},P={loading:`Bw9FBW_loading`,main:`Bw9FBW_main`,name:`Bw9FBW_name`},F=(0,_.memo)(({data:e})=>{let{value:t,max:n}=e;return(0,N.jsxs)(ki,{percent:n?Math.round(t/n*100):0,children:[(0,N.jsxs)(Ai,{children:[(0,N.jsx)(In,{}),w(`Ram`)]}),(0,N.jsx)(ji,{children:`${Ir(t)} / ${Ir(n)}`})]})}),zi=(0,_.memo)(({data:e})=>{let{value:t,max:n}=e;return(0,N.jsxs)(ki,{percent:n?Math.round(t/n*100):0,children:[(0,N.jsxs)(Ai,{children:[(0,N.jsx)(In,{}),w(`Swap`)]}),(0,N.jsx)(ji,{children:`${Ir(t)} / ${Ir(n)}`})]})}),Bi=2e3,Vi=({id:e})=>{let[t,n]=(0,_.useState)(`loading`),[r,i]=(0,_.useState)(0),[a,o]=(0,_.useState)(null),s=Zt(e=>e.isUpdating);(0,_.useEffect)(()=>{if(s)return;let t=null,r=new AbortController,a=!1,c=async()=>{if(!a)try{let{data:t,status:a}=await b(`nodes&nodeId=${e}`,{signal:r.signal});!t||a!==200?(n(`error`),i(a)):(o(t),n(`idle`),i(-1))}catch(e){console.error(`Error fetching node data:`,e),n(`error`)}finally{a=!1,t=setTimeout(c,Bi)}};return c(),()=>{t&&clearTimeout(t),r.abort()}},[e,s]);let{serverStatus:c=null,diskUsage:l=null,networkStats:u=null}=a||{},{memRealUsage:d=null,swapUsage:f=null,sysLoad:p=[],cpuUsage:m=null}=c||{};return(0,N.jsxs)(`div`,{className:P.main,children:[(0,N.jsx)(`header`,{className:P.name,children:e}),t===`error`&&(0,N.jsx)(pr,{children:Vt(w(`Error: status {{error}}`),{error:r})}),t===`loading`&&(0,N.jsx)(dr,{height:10}),t===`idle`&&(0,N.jsxs)(N.Fragment,{children:[!m||(0,N.jsx)(Ni,{cpuUsage:m,sysLoad:p}),!d||(0,N.jsx)(F,{data:d}),!f||(0,N.jsx)(zi,{data:f}),!l||(0,N.jsx)(Ii,{data:l}),!u||(0,N.jsx)(Ri,{data:u})]})]})},Hi={content:(0,_.memo)(()=>{let e=Mt(C(e=>e.pollData?.nodesIds??[]));return e.length?(0,N.jsx)(sr,{id:Gn,title:w(`Nodes`),children:(0,N.jsx)(`div`,{className:Si.main,children:e.map(e=>(0,N.jsx)(Vi,{id:e},e))})}):null}),id:Gn,nav:()=>Mt(e=>!!e.pollData?.nodesIds.length)?(0,N.jsx)(ti,{id:Gn,title:w(`Nodes`)}):null},Ui={button:`Ve0JZG_button`,container:`Ve0JZG_container`},Wi=({onCopy:e,keyword:t})=>(0,N.jsx)(`button`,{className:Ui.button,onClick:e,title:w(`Click to copy text`),type:`button`,children:t}),Gi=({keywords:e})=>{let t=tn(C(e=>e.open)),n=(0,_.useCallback)(e=>{Mr(e.currentTarget.textContent),t(w(`Copied`))},[t]);return(0,N.jsx)(`div`,{className:Ui.container,children:e.map(e=>(0,N.jsx)(Wi,{keyword:e,onCopy:n},e))})},Ki=[{key:`curl`,name:`cURL`},{key:`exif`,name:`Exif`},{key:`fileinfo`,name:`Fileinfo`},{key:`gmagick`,name:`Graphics Magick`},{key:`imagick`,name:`Image Magick`},{key:`ionCube`,name:`ionCube`},{key:`ldap`,name:`LDAP`},{key:`mbstring`,name:`Multibyte String`},{key:`memcache`,name:`Memcache`},{key:`memcached`,name:`Memcached`},{key:`mysqli`,name:`MySQLi`},{key:`opcache`,name:`Opcache`},{key:`opcacheEnabled`,name:()=>w(`Opcache enabled`)},{key:`opcacheJitEnabled`,name:()=>w(`Opcache JIT enabled`)},{key:`phalcon`,name:`Phalcon`},{key:`redis`,name:`Redis`},{key:`simplexml`,name:`SimpleXML`},{key:`sockets`,name:`Sockets`},{key:`sourceGuardian`,name:`Source Guardian`},{key:`sqlite3`,name:`SQLite3`},{key:`swoole`,name:`Swoole`},{key:`xdebug`,name:`Xdebug`},{key:`zendOptimizer`,name:`Zend Optimizer`},{key:`zip`,name:`Zip`}].sort((e,t)=>{let n=typeof e.name==`function`?e.key:e.name,r=typeof t.name==`function`?t.key:t.name;return n.localeCompare(r)}),qi={content:(0,_.memo)(()=>{let e=Nt(C(e=>{if(!e.pollData)return null;let t={};for(let{key:n}of Ki)t[n]=!!e.pollData?.[n];return t})),t=Nt(e=>e.pollData?.loadedExtensions?.join(`,`)??``),n=(0,_.useMemo)(()=>e?Ki.map(({key:t,name:n})=>{let r=typeof n==`function`?n():n;return{enabled:e[t]??!1,name:r}}):[],[e]),r=(0,_.useMemo)(()=>t?t.split(`,`).sort((e,t)=>e.localeCompare(t)):[],[t]);return e?(0,N.jsxs)(sr,{id:Kn,title:w(`PHP Extensions`),children:[(0,N.jsx)(oi,{minWidth:14,children:n.map(({name:e,enabled:t})=>(0,N.jsx)(ii,{label:e,maxWidth:10,minWidth:4,children:(0,N.jsx)(ci,{isEnable:t})},e))}),(0,N.jsx)(hi,{children:(0,N.jsx)(ii,{label:w(`Loaded extensions`),maxWidth:6,minWidth:4,children:(0,N.jsx)(Gi,{keywords:r})})})]}):null}),id:Kn,nav:()=>Nt(e=>!!e.pollData)?(0,N.jsx)(ti,{id:Kn,title:w(`PHP Ext`)}):null},Ji=()=>{let{phpVersion:e,latestPhpVersion:t,setLatestPhpVersion:n}=Pt(C(e=>({latestPhpVersion:e.latestPhpVersion,phpVersion:e.pollData?.phpVersion??``,setLatestPhpVersion:e.setLatestPhpVersion})));(0,_.useEffect)(()=>{(async()=>{let{data:e,status:t}=await b(`latestPhpVersion`);e?.version&&t===200&&n(e.version)})()},[n]);let r=sn(e,t)<0;return(0,N.jsxs)(Jr,{href:`https://www.php.net/`,title:w(`Visit PHP.net Official website`),children:[r&&Vt(w(`{{oldVersion}} (Latest: {{latestPhpVersion}})`),{latestPhpVersion:t,oldVersion:e}),r||e]})},Yi={content:(0,_.memo)(()=>{let e=Pt(C(e=>e.pollData?{allowUrlFopen:e.pollData.allowUrlFopen,defaultSocketTimeout:e.pollData.defaultSocketTimeout,disableClasses:e.pollData.disableClasses.join(`,`),disableFunctions:e.pollData.disableFunctions.join(`,`),displayErrors:e.pollData.displayErrors,errorReporting:e.pollData.errorReporting,maxExecutionTime:e.pollData.maxExecutionTime,maxInputVars:e.pollData.maxInputVars,memoryLimit:e.pollData.memoryLimit,postMaxSize:e.pollData.postMaxSize,sapi:e.pollData.sapi,smtp:e.pollData.smtp,uploadMaxFilesize:e.pollData.uploadMaxFilesize}:null));if(!e)return null;let t=[[`PHP info`,(0,N.jsx)(Jr,{href:y(`phpInfoDetail`),target:`_blank`,children:w(`Detail`)},`phpInfoDetail`)],[w(`Version`),(0,N.jsx)(Ji,{},`phpVersion`)]],n=[[w(`SAPI interface`),e.sapi],[w(`Display errors`),(0,N.jsx)(ci,{isEnable:e.displayErrors},`displayErrors`)],[w(`Error reporting`),e.errorReporting],[w(`Max memory limit`),e.memoryLimit],[w(`Max POST size`),e.postMaxSize],[w(`Max upload size`),e.uploadMaxFilesize],[w(`Max input variables`),e.maxInputVars],[w(`Max execution time`),e.maxExecutionTime],[w(`Timeout for socket`),e.defaultSocketTimeout],[w(`Treatment URLs file`),(0,N.jsx)(ci,{isEnable:e.allowUrlFopen},`allowUrlFopen`)],[w(`SMTP support`),(0,N.jsx)(ci,{isEnable:e.smtp},`smtp`)]],r=e.disableFunctions.split(`,`).filter(Boolean).toSorted(),i=e.disableClasses.split(`,`).filter(Boolean).toSorted(),a=[[w(`Disabled functions`),(0,N.jsx)(Gi,{keywords:r},`sortedFunctions`)],[w(`Disabled classes`),(0,N.jsx)(Gi,{keywords:i},`sortedClasses`)]];return(0,N.jsxs)(sr,{id:qn,title:w(`PHP Information`),children:[(0,N.jsxs)(oi,{children:[t.map(([e,t])=>(0,N.jsx)(ii,{label:e,children:t},e)),n.map(([e,t])=>(0,N.jsx)(ii,{label:e,children:t},e))]}),(0,N.jsx)(hi,{children:a.map(([e,t])=>(0,N.jsx)(ii,{label:e,maxWidth:7,minWidth:4,children:t},e))})]})}),id:qn,nav:()=>Pt(e=>!!e.pollData)?(0,N.jsx)(ti,{id:qn,title:w(`PHP Info`)}):null},Xi=e=>{let t=e.reduce((e,t)=>e+t,0)/e.length,n=e.map(e=>{let n=e-t;return n*n}).reduce((e,t)=>e+t,0)/e.length;return Math.sqrt(n)},Zi=T()(M(e=>({addServerToBrowserPingItem:t=>e(e=>{e.serverToBrowserPingItems.push(t)}),addServerToServerPingItem:t=>e(e=>{e.serverToServerPingItems.push(t)}),isPingServerToBrowser:!1,isPingServerToServer:!1,serverToBrowserPingItems:[],serverToServerPingItems:[],setIsPingServerToBrowser:t=>e(e=>{e.isPingServerToBrowser=t}),setIsPingServerToServer:t=>e(e=>{e.isPingServerToServer=t}),setServerToBrowserPingItems:t=>e(e=>{e.serverToBrowserPingItems=t}),setServerToServerPingItems:t=>e(e=>{e.serverToServerPingItems=t})}))),Qi={itemContainer:`_7skjLq_itemContainer`,result:`_7skjLq_result`,resultContainer:`_7skjLq_resultContainer`},$i=()=>{let e=Zi(C(e=>e.serverToBrowserPingItems)),t=e.length,n=e.map(({time:e})=>e),r=t?(n.reduce((e,t)=>e+t,0)/t).toFixed(2):0,i=t?Math.max(...n):0,a=t?Math.min(...n):0,o=Xi(n).toFixed(2);return(0,N.jsx)(`div`,{className:Qi.result,children:Vt(w(`{{times}} times, min/avg/max/mdev = {{min}}/{{avg}}/{{max}}/{{mdev}} ms`),{avg:r,max:i,mdev:o,min:a,times:t})})},ea=({refContainer:e})=>{let t=Zi(C(e=>e.serverToBrowserPingItems)),n=!!t.length;return(0,N.jsx)(ii,{label:w(`Results`),children:(0,N.jsxs)(`div`,{className:Qi.resultContainer,children:[!n&&`-`,n&&(0,N.jsx)(`ul`,{className:Qi.itemContainer,ref:e,children:t.map(({id:e,time:t})=>(0,N.jsx)(`li`,{children:`${t} ms`},e))}),n&&(0,N.jsx)($i,{})]})})},ta=()=>{let{isPing:e,isPingServerToBrowser:t,setIsPingServerToBrowser:n,addServerToBrowserPingItem:r}=Zi(C(e=>({addServerToBrowserPingItem:e.addServerToBrowserPingItem,isPing:e.isPingServerToBrowser||e.isPingServerToServer,isPingServerToBrowser:e.isPingServerToBrowser,setIsPingServerToBrowser:e.setIsPingServerToBrowser}))),i=(0,_.useRef)(null),a=(0,_.useRef)(0),o=(0,_.useCallback)(async()=>{let e=Date.now(),{data:t,status:n}=await b(`ping`);if(t?.time&&n===200){let{id:n,time:a}=t,o=Date.now(),s=a*1e3;r({id:n,time:Math.floor(o-e-s)}),setTimeout(()=>{if(!i.current)return;let e=i.current.scrollTop,t=i.current.scrollHeight;e{await o(),a.current=window.setTimeout(async()=>{await s()},1e3)},[o]),c=(0,_.useCallback)(async()=>{if(e||t){n(!1),clearTimeout(a.current);return}n(!0),await s()},[e,t,s,n]);return(0,N.jsxs)(hi,{children:[(0,N.jsx)(ii,{label:w(`Server ⇄ Browser`),children:(0,N.jsx)(qr,{onClick:c,status:e?Gr.Loading:Gr.Pointer,children:w(e?`Stop ping`:`Start ping`)})}),(0,N.jsx)(ea,{refContainer:i})]})},na={content:(0,_.memo)(()=>(0,N.jsx)(sr,{id:Jn,title:w(`Ping`),children:(0,N.jsx)(ta,{})})),id:Jn,nav:()=>(0,N.jsx)(ti,{id:Jn,title:w(`Ping`)})},ra={main:`nM1-Ea_main`},ia=({totalMarks:e,total:t})=>(0,N.jsx)(`div`,{className:ra.main,children:(0,N.jsx)(Rr,{high:e*.7,low:e*.5,max:e,optimum:e,value:t})}),I={header:`_8Yh7Cq_header`,main:`_8Yh7Cq_main`,marks:`_8Yh7Cq_marks`,sign:`_8Yh7Cq_sign`},aa=({cpu:e,read:t,write:n,date:r})=>{let i=e+t+n,a=e.toLocaleString(),o=t.toLocaleString(),s=n.toLocaleString(),c=i.toLocaleString(),l=Vt(`{{cpu}} (CPU) + {{read}} (Read) + {{write}} (Write) = {{total}}`,{cpu:a,read:o,total:c,write:s}),u=(0,N.jsx)(`span`,{className:I.sign,children:`+`});return(0,N.jsxs)(`button`,{className:I.marks,onClick:e=>{e.preventDefault(),e.stopPropagation(),Mr(l)},title:w(`Touch to copy marks`),type:`button`,children:[(0,N.jsx)(Pr,{"data-is-detail":!0,rt:`CPU`,ruby:a}),u,(0,N.jsx)(Pr,{"data-is-detail":!0,rt:w(`Read`),ruby:o}),u,(0,N.jsx)(Pr,{"data-is-detail":!0,rt:w(`Write`),ruby:s}),(0,N.jsx)(`span`,{className:I.sign,children:`=`}),(0,N.jsx)(Pr,{"data-is-total":!0,isResult:!0,rt:r||``,ruby:c})]})},oa=({header:e,marks:t,maxMarks:n,date:r})=>{let{cpu:i,read:a,write:o}=t;return(0,N.jsxs)(`div`,{className:I.main,children:[(0,N.jsx)(`div`,{className:I.header,children:e}),(0,N.jsx)(aa,{cpu:i,date:r,read:a,write:o}),(0,N.jsx)(ia,{total:i+a+o,totalMarks:n})]})},sa=T()(M(e=>({benchmarking:!1,maxMarks:0,servers:[],setBenchmarking:t=>e(e=>{e.benchmarking=t}),setMaxMarks:t=>e(e=>{e.maxMarks=t}),setServer:(t,n)=>e(e=>{let r=e.servers.findIndex(e=>e.id===t);r!==-1&&(e.servers[r]=n)}),setServers:t=>e(e=>{e.servers=t})}))),ca=()=>{let[e,t]=(0,_.useState)(!1),n=tn(e=>e.open),{setMaxMarks:r,maxMarks:i}=sa(C(e=>({maxMarks:e.maxMarks,setMaxMarks:e.setMaxMarks}))),[a,o]=(0,_.useState)({cpu:0,read:0,write:0});return(0,N.jsx)(oa,{date:(0,_.useMemo)(()=>{let e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`},[]),header:(0,N.jsx)(qr,{disabled:e,onClick:async a=>{if(a.preventDefault(),a.stopPropagation(),!e){t(!0);try{let{data:e,status:t}=await b(`benchmarkPerformance`);if(t===200&&e?.marks){o(e.marks);let t=Object.values(e.marks).reduce((e,t)=>e+t,0);t>i&&r(t);return}if(t===429&&e?.seconds){n(Vt(w(`Please wait {{seconds}}s`),{seconds:e.seconds}));return}n(w(`Network error, please try again later.`))}catch(e){n(w(`Network error, please try again later.`)),console.error(e)}finally{t(!1)}}},status:e?Gr.Loading:Gr.Pointer,children:w(`Benchmark my server`)}),marks:a,maxMarks:i})},la={link:`JRQGAG_link`,main:`JRQGAG_main`,title:`JRQGAG_title`},L=()=>{let[e,t]=(0,_.useState)(`loading`),{servers:n,setServers:r,setMaxMarks:i,maxMarks:a}=sa(C(e=>({maxMarks:e.maxMarks,servers:e.servers,setMaxMarks:e.setMaxMarks,setServers:e.setServers})));(0,_.useEffect)(()=>{(async()=>{t(`loading`);let{data:e,status:n}=await b(`benchmarkServers`);if(!e?.length||n!==200){t(`error`);return}let a=e.map(e=>({...e,total:e.detail?Object.values(e.detail).reduce((e,t)=>e+t,0):0}));a.sort((e,t)=>t.total-e.total);let o=a[0]?.total??0;r(a),i(o),t(`idle`)})()},[r,i]);let o=(0,_.useMemo)(()=>n.filter(e=>e.detail).map(({name:e,url:t,date:n,probeUrl:r,binUrl:i,detail:o})=>{let{cpu:s=0,read:c=0,write:l=0}=o,u=r?(0,N.jsx)(`a`,{className:la.link,href:r,rel:`noreferrer`,target:`_blank`,title:w(`Visit probe page`),children:(0,N.jsx)(Pn,{})}):null,d=i?(0,N.jsx)(`a`,{className:la.link,href:i,rel:`noreferrer`,target:`_blank`,title:w(`Download speed test`),children:(0,N.jsx)(An,{})}):null;return(0,N.jsx)(oa,{date:n,header:(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`a`,{className:la.title,href:t,rel:`noreferrer`,target:`_blank`,title:w(`Visit the official website`),children:e}),u,d]}),marks:{cpu:s,read:c,write:l},maxMarks:a},e)}),[n,a]);return(0,N.jsxs)(`div`,{className:la.main,children:[(0,N.jsx)(ca,{}),e===`loading`&&Array.from({length:5}).map((e,t)=>(0,N.jsx)(dr,{},`server-benchmark-placeholder-${String(t)}`)),e===`idle`&&o,e===`error`&&(0,N.jsx)(pr,{children:w(`Can not fetch marks data from GitHub.`)})]})},ua={content:(0,_.memo)(()=>(0,N.jsxs)(sr,{id:Yn,title:w(`Server Benchmark`),children:[(0,N.jsx)(lr,{items:[{id:`serverBenchmarkTos`,text:w(`Different versions cannot be compared, and different time servers have different loads, just for reference.`)}]}),(0,N.jsx)(L,{})]})),id:Yn,nav:()=>(0,N.jsx)(ti,{id:Yn,title:w(`Server bench`)})},da={days:0,hours:0,mins:0,secs:0},fa=({serverUptime:e,serverTime:t})=>{let{days:n,hours:r,mins:i,secs:a}=e,o=Vt(w(`{{days}}d {{hours}}h {{mins}}min {{secs}}s`),{days:n,hours:r,mins:i,secs:a});return(0,N.jsx)(N.Fragment,{children:[[w(`Time`),t],[w(`Uptime`),o]].map(([e,t])=>(0,N.jsx)(ii,{label:e,maxWidth:6,children:t},e))})},pa=(0,_.memo)(({cpuModel:e,serverOs:t,scriptPath:n,publicIpv4:r})=>(0,N.jsx)(hi,{children:[[w(`Location (IPv4)`),(0,N.jsx)(fi,{ip:r},`serverLocalIpv4`)],[w(`CPU model`),e??w(`Unavailable`)],[w(`OS`),t??w(`Unavailable`)],[w(`Script path`),n??w(`Unavailable`)]].map(([e,t])=>(0,N.jsx)(ii,{label:e,maxWidth:7,children:t},e))})),ma=(0,_.memo)(({serverName:e,serverSoftware:t,publicIpv4:n,publicIpv6:r,localIpv4:i,localIpv6:a})=>(0,N.jsx)(N.Fragment,{children:[[w(`Name`),e??w(`Unavailable`)],[w(`Web server`),t??w(`Unavailable`)],[w(`Public IPv4`),n||`-`],[w(`Public IPv6`),r||`-`],[w(`Local IPv4`),i||`-`],[w(`Local IPv6`),a||`-`]].map(([e,t])=>(0,N.jsx)(ii,{label:e,maxWidth:6,children:t},e))})),ha=()=>{let{serverTime:e,serverUptime:t}=Ft(C(e=>({serverTime:e.pollData?.serverTime??`-`,serverUptime:e.pollData?.serverUptime??da})));return(0,N.jsx)(fa,{serverTime:e,serverUptime:t})},ga={content:()=>{let e=Ft(e=>e.setPublicIpv4),t=Ft(e=>e.setPublicIpv6),{hasPollData:n,publicIpv4:r,publicIpv6:i,localIpv4:a,localIpv6:o,serverName:s,serverSoftware:c,cpuModel:l,scriptPath:u,serverOs:d}=Ft(C(e=>({cpuModel:e.pollData?.cpuModel??`-`,hasPollData:!!e.pollData,localIpv4:e.pollData?.localIpv4??`-`,localIpv6:e.pollData?.localIpv6??`-`,publicIpv4:e.publicIpv4,publicIpv6:e.publicIpv6,scriptPath:e.pollData?.scriptPath??`-`,serverName:e.pollData?.serverName??`-`,serverOs:e.pollData?.serverOs??`-`,serverSoftware:e.pollData?.serverSoftware??`-`})));return(0,_.useEffect)(()=>{(async()=>{let{data:t,status:n}=await b(`serverPublicIpv4`);t?.ip&&n===200&&e(t.ip)})()},[e]),(0,_.useEffect)(()=>{(async()=>{let{data:e,status:n}=await b(`serverPublicIpv6`);e?.ip&&n===200&&t(e.ip)})()},[t]),n?(0,N.jsxs)(sr,{id:Xn,title:w(`Server Info`),children:[(0,N.jsxs)(oi,{minWidth:20,children:[(0,N.jsx)(ha,{}),(0,N.jsx)(ma,{localIpv4:a,localIpv6:o,publicIpv4:r,publicIpv6:i,serverName:s,serverSoftware:c})]}),(0,N.jsx)(pa,{cpuModel:l,publicIpv4:r,scriptPath:u,serverOs:d})]}):null},id:Xn,nav:()=>Ft(e=>!!e.pollData)?(0,N.jsx)(ti,{id:Xn,title:w(`Info`)}):null},_a={main:`_7cGBpa_main`,modules:`_7cGBpa_modules`},va=()=>{let{max:e,value:t}=Lt(C(e=>({max:e.pollData?.memBuffers.max??0,value:e.pollData?.memBuffers.value??0})));return(0,N.jsx)(zr,{isCapacity:!0,max:e,name:w(`Memory buffers`),title:w(`Buffers are in-memory block I/O buffers. They are relatively short-lived. Prior to Linux kernel version 2.4, Linux had separate page and buffer caches. Since 2.4, the page and buffer cache are unified and Buffers is raw disk blocks not represented in the page cache—i.e., not file data.`),value:t})},ya=()=>{let{max:e,value:t}=Lt(C(e=>({max:e.pollData.memCached.max,value:e.pollData.memCached.value})));return(0,N.jsx)(zr,{isCapacity:!0,max:e,name:w(`Memory cached`),title:w(`Cached memory is memory that Linux uses for disk caching. However, this does not count as "used" memory, since it will be freed when applications require it. Hence you do not have to worry if a large amount is being used.`),value:t})},ba=()=>{let{max:e,value:t}=Lt(C(e=>({max:e.pollData.memRealUsage.max,value:e.pollData.memRealUsage.value})));return(0,N.jsx)(zr,{isCapacity:!0,max:e,name:w(`Memory real usage`),title:w(`Linux comes with many commands to check memory usage. The "free" command usually displays the total amount of free and used physical and swap memory in the system, as well as the buffers used by the kernel. The "top" command provides a dynamic real-time view of a running system.`),value:t})},xa=()=>{let{max:e,value:t}=Lt(C(e=>({max:e.pollData.swapCached.max,value:e.pollData.swapCached.value})));return e?(0,N.jsx)(zr,{isCapacity:!0,max:e,name:w(`Swap cached`),value:t}):null},Sa=()=>{let{max:e,value:t}=Lt(C(e=>({max:e.pollData.swapUsage.max,value:e.pollData.swapUsage.value})));return e?(0,N.jsx)(zr,{isCapacity:!0,max:e,name:w(`Swap usage`),value:t}):null},Ca=[Hi,{content:()=>{let e=Rt(C(e=>e.pollData?.items??[]));return e.length?(0,N.jsx)(sr,{id:Qn,title:w(`Temperature sensor`),children:(0,N.jsx)(hi,{children:e.map(({id:e,name:t,celsius:n})=>(0,N.jsx)(ii,{title:Vt(w(`{{sensor}} temperature`),{sensor:t}),children:(0,N.jsx)(zr,{isCapacity:!1,max:150,percentTag:`℃`,value:n})},e))})}):null},id:Qn,nav:()=>Rt(e=>!!e.pollData?.items.length)?(0,N.jsx)(ti,{id:Qn,title:w(`Temperature`)}):null},{content:()=>(0,N.jsx)(sr,{id:Zn,title:w(`Server Status`),children:(0,N.jsx)(`div`,{className:_a.main,children:(0,N.jsxs)(`div`,{className:_a.modules,children:[(0,N.jsx)(Ei,{}),(0,N.jsx)(ba,{}),(0,N.jsx)(ya,{}),(0,N.jsx)(va,{}),(0,N.jsx)(Sa,{}),(0,N.jsx)(xa,{})]})})}),id:Zn,nav:()=>Lt(e=>!!e.pollData)?(0,N.jsx)(ti,{id:Zn,title:w(`Info`)}):null},xi,di,na,ga,Yi,qi,li,ua,ni,gi],wa=()=>{let e=rr(C(e=>e.priorities)),t=Bt(C(e=>e.pollData?Object.keys(e.pollData).filter(t=>e.pollData?.[t]!==null):[]));return(0,_.useMemo)(()=>{if(t.length===0)return[];let n=new Map(Ca.map(e=>[e.id,e])),r=new Set(t);return e.map(e=>n.get(e)).filter(e=>!!e&&r.has(e.id))},[e,t])},Ta=()=>{let e=wa();return e.length?(0,N.jsx)(`div`,{className:gn.container,children:e.map(({id:e,content:t})=>(0,N.jsx)(t,{},e))}):null},Ea=(0,_.memo)(()=>{let e=wa().map(({id:e,nav:t})=>(0,N.jsx)(t,{},e));return(0,N.jsx)(`div`,{className:ei.wrap,children:(0,N.jsx)(`div`,{className:ei.main,children:e})})}),Da={main:`bf54NG_main`,spin:`bf54NG_spin`},Oa=()=>(0,N.jsx)(`div`,{className:Da.main,children:`Thinking...`}),ka=2e3,Aa=()=>{let[e,t]=(0,_.useState)(`loading`),n=tn(e=>e.open),r=Zt(e=>e.isUpdating);return(0,_.useEffect)(()=>{if(r)return;let e=null,i=new AbortController,a=!1,o=async()=>{if(!a)try{a=!0;let{data:e,status:r}=await b(`poll`,{signal:i.signal});r===200&&e?(Bt.getState().setPollData(e),t(`idle`)):(n(w(`Failed to fetch data. Please try again later.`)),t(`error`))}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;console.error(`Error fetching poll data:`,e),n(w(`Network error. Please check your connection.`)),t(`error`)}finally{a=!1,e=setTimeout(o,ka)}};return o(),()=>{e&&clearTimeout(e),i.abort()}},[r,n]),e===`loading`?(0,N.jsx)(Oa,{}):(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(un,{}),(0,N.jsx)(Ta,{}),(0,N.jsx)(Wt,{}),(0,N.jsx)(Ea,{}),(0,N.jsx)(hn,{})]})};document.addEventListener(`DOMContentLoaded`,()=>{document.body.innerHTML=``,(0,g.createRoot)(document.body).render((0,N.jsx)(Aa,{}))})}); +`;return(0,N.jsxs)(ki,{percent:a,children:[(0,N.jsxs)(Ai,{children:[(0,N.jsx)(jn,{}),w(`CPU`)]}),(0,N.jsx)(ji,{title:s,children:(0,N.jsx)(Mi,{items:e})})]})}),Pi={main:`_main_1pxno_1`,item:`_item_1pxno_13`},Fi=(0,_.memo)(({id:e,free:t,total:n})=>(0,N.jsx)(`div`,{className:Pi.item,children:(0,N.jsxs)(ki,{percent:n?Math.round(t/n*100):0,children:[(0,N.jsxs)(Ai,{children:[(0,N.jsx)(Mn,{}),e]}),(0,N.jsx)(ji,{children:`${Ir(t)} / ${Ir(n)}`})]})},e)),Ii=({data:e})=>{let t=e?.items??[];return(0,N.jsx)(`div`,{className:Pi.main,children:t.map(({id:e,free:t,total:n})=>(0,N.jsx)(Fi,{free:t,id:e,total:n},e))})},Li={main:`_main_mc2kq_1`},Ri=({data:e})=>{let{networks:t,timestamp:n}=e,r=_i({items:t,timestamp:n}),i=n-(r?.timestamp||n);return(0,N.jsx)(`div`,{className:Li.main,children:t.map(({id:e,rx:n,tx:a})=>{if(!(n||a))return null;let o=(r?.items||t).find(t=>t.id===e),s=o?.rx||0,c=o?.tx||0;return(0,N.jsx)(bi,{id:e,rateRx:(n-s)/i,rateTx:(a-c)/i,totalRx:n,totalTx:a},e)})})},P={main:`_main_18siw_1`,name:`_name_18siw_6`,loading:`_loading_18siw_10`},F=(0,_.memo)(({data:e})=>{let{value:t,max:n}=e;return(0,N.jsxs)(ki,{percent:n?Math.round(t/n*100):0,children:[(0,N.jsxs)(Ai,{children:[(0,N.jsx)(In,{}),w(`Ram`)]}),(0,N.jsx)(ji,{children:`${Ir(t)} / ${Ir(n)}`})]})}),zi=(0,_.memo)(({data:e})=>{let{value:t,max:n}=e;return(0,N.jsxs)(ki,{percent:n?Math.round(t/n*100):0,children:[(0,N.jsxs)(Ai,{children:[(0,N.jsx)(In,{}),w(`Swap`)]}),(0,N.jsx)(ji,{children:`${Ir(t)} / ${Ir(n)}`})]})}),Bi=2e3,Vi=({id:e})=>{let[t,n]=(0,_.useState)(`loading`),[r,i]=(0,_.useState)(0),[a,o]=(0,_.useState)(null),s=Zt(e=>e.isUpdating);(0,_.useEffect)(()=>{if(s)return;let t=null,r=new AbortController,a=!1,c=async()=>{if(!a)try{let{data:t,status:a}=await b(`nodes&nodeId=${e}`,{signal:r.signal});!t||a!==200?(n(`error`),i(a)):(o(t),n(`idle`),i(-1))}catch(e){console.error(`Error fetching node data:`,e),n(`error`)}finally{a=!1,t=setTimeout(c,Bi)}};return c(),()=>{t&&clearTimeout(t),r.abort()}},[e,s]);let{serverStatus:c=null,diskUsage:l=null,networkStats:u=null}=a||{},{memRealUsage:d=null,swapUsage:f=null,sysLoad:p=[],cpuUsage:m=null}=c||{};return(0,N.jsxs)(`div`,{className:P.main,children:[(0,N.jsx)(`header`,{className:P.name,children:e}),t===`error`&&(0,N.jsx)(pr,{children:Vt(w(`Error: status {{error}}`),{error:r})}),t===`loading`&&(0,N.jsx)(dr,{height:10}),t===`idle`&&(0,N.jsxs)(N.Fragment,{children:[!m||(0,N.jsx)(Ni,{cpuUsage:m,sysLoad:p}),!d||(0,N.jsx)(F,{data:d}),!f||(0,N.jsx)(zi,{data:f}),!l||(0,N.jsx)(Ii,{data:l}),!u||(0,N.jsx)(Ri,{data:u})]})]})},Hi={content:(0,_.memo)(()=>{let e=Mt(C(e=>e.pollData?.nodesIds??[]));return e.length?(0,N.jsx)(sr,{id:Gn,title:w(`Nodes`),children:(0,N.jsx)(`div`,{className:Si.main,children:e.map(e=>(0,N.jsx)(Vi,{id:e},e))})}):null}),id:Gn,nav:()=>Mt(e=>!!e.pollData?.nodesIds.length)?(0,N.jsx)(ti,{id:Gn,title:w(`Nodes`)}):null},Ui={container:`_container_roz84_11`,button:`_button_roz84_24`},Wi=({onCopy:e,keyword:t})=>(0,N.jsx)(`button`,{className:Ui.button,onClick:e,title:w(`Click to copy text`),type:`button`,children:t}),Gi=({keywords:e})=>{let t=tn(C(e=>e.open)),n=(0,_.useCallback)(e=>{Mr(e.currentTarget.textContent),t(w(`Copied`))},[t]);return(0,N.jsx)(`div`,{className:Ui.container,children:e.map(e=>(0,N.jsx)(Wi,{keyword:e,onCopy:n},e))})},Ki=[{key:`curl`,name:`cURL`},{key:`exif`,name:`Exif`},{key:`fileinfo`,name:`Fileinfo`},{key:`gmagick`,name:`Graphics Magick`},{key:`imagick`,name:`Image Magick`},{key:`ionCube`,name:`ionCube`},{key:`ldap`,name:`LDAP`},{key:`mbstring`,name:`Multibyte String`},{key:`memcache`,name:`Memcache`},{key:`memcached`,name:`Memcached`},{key:`mysqli`,name:`MySQLi`},{key:`opcache`,name:`Opcache`},{key:`opcacheEnabled`,name:()=>w(`Opcache enabled`)},{key:`opcacheJitEnabled`,name:()=>w(`Opcache JIT enabled`)},{key:`phalcon`,name:`Phalcon`},{key:`redis`,name:`Redis`},{key:`simplexml`,name:`SimpleXML`},{key:`sockets`,name:`Sockets`},{key:`sourceGuardian`,name:`Source Guardian`},{key:`sqlite3`,name:`SQLite3`},{key:`swoole`,name:`Swoole`},{key:`xdebug`,name:`Xdebug`},{key:`zendOptimizer`,name:`Zend Optimizer`},{key:`zip`,name:`Zip`}].sort((e,t)=>{let n=typeof e.name==`function`?e.key:e.name,r=typeof t.name==`function`?t.key:t.name;return n.localeCompare(r)}),qi={content:(0,_.memo)(()=>{let e=Nt(C(e=>{if(!e.pollData)return null;let t={};for(let{key:n}of Ki)t[n]=!!e.pollData?.[n];return t})),t=Nt(e=>e.pollData?.loadedExtensions?.join(`,`)??``),n=(0,_.useMemo)(()=>e?Ki.map(({key:t,name:n})=>{let r=typeof n==`function`?n():n;return{enabled:e[t]??!1,name:r}}):[],[e]),r=(0,_.useMemo)(()=>t?t.split(`,`).sort((e,t)=>e.localeCompare(t)):[],[t]);return e?(0,N.jsxs)(sr,{id:Kn,title:w(`PHP Extensions`),children:[(0,N.jsx)(oi,{minWidth:14,children:n.map(({name:e,enabled:t})=>(0,N.jsx)(ii,{label:e,maxWidth:10,minWidth:4,children:(0,N.jsx)(ci,{isEnable:t})},e))}),(0,N.jsx)(hi,{children:(0,N.jsx)(ii,{label:w(`Loaded extensions`),maxWidth:6,minWidth:4,children:(0,N.jsx)(Gi,{keywords:r})})})]}):null}),id:Kn,nav:()=>Nt(e=>!!e.pollData)?(0,N.jsx)(ti,{id:Kn,title:w(`PHP Ext`)}):null},Ji=()=>{let{phpVersion:e,latestPhpVersion:t,setLatestPhpVersion:n}=Pt(C(e=>({latestPhpVersion:e.latestPhpVersion,phpVersion:e.pollData?.phpVersion??``,setLatestPhpVersion:e.setLatestPhpVersion})));(0,_.useEffect)(()=>{(async()=>{let{data:e,status:t}=await b(`latestPhpVersion`);e?.version&&t===200&&n(e.version)})()},[n]);let r=sn(e,t)<0;return(0,N.jsxs)(Jr,{href:`https://www.php.net/`,title:w(`Visit PHP.net Official website`),children:[r&&Vt(w(`{{oldVersion}} (Latest: {{latestPhpVersion}})`),{latestPhpVersion:t,oldVersion:e}),r||e]})},Yi={content:(0,_.memo)(()=>{let e=Pt(C(e=>e.pollData?{allowUrlFopen:e.pollData.allowUrlFopen,defaultSocketTimeout:e.pollData.defaultSocketTimeout,disableClasses:e.pollData.disableClasses.join(`,`),disableFunctions:e.pollData.disableFunctions.join(`,`),displayErrors:e.pollData.displayErrors,errorReporting:e.pollData.errorReporting,maxExecutionTime:e.pollData.maxExecutionTime,maxInputVars:e.pollData.maxInputVars,memoryLimit:e.pollData.memoryLimit,postMaxSize:e.pollData.postMaxSize,sapi:e.pollData.sapi,smtp:e.pollData.smtp,uploadMaxFilesize:e.pollData.uploadMaxFilesize}:null));if(!e)return null;let t=[[`PHP info`,(0,N.jsx)(Jr,{href:y(`phpInfoDetail`),target:`_blank`,children:w(`Detail`)},`phpInfoDetail`)],[w(`Version`),(0,N.jsx)(Ji,{},`phpVersion`)]],n=[[w(`SAPI interface`),e.sapi],[w(`Display errors`),(0,N.jsx)(ci,{isEnable:e.displayErrors},`displayErrors`)],[w(`Error reporting`),e.errorReporting],[w(`Max memory limit`),e.memoryLimit],[w(`Max POST size`),e.postMaxSize],[w(`Max upload size`),e.uploadMaxFilesize],[w(`Max input variables`),e.maxInputVars],[w(`Max execution time`),e.maxExecutionTime],[w(`Timeout for socket`),e.defaultSocketTimeout],[w(`Treatment URLs file`),(0,N.jsx)(ci,{isEnable:e.allowUrlFopen},`allowUrlFopen`)],[w(`SMTP support`),(0,N.jsx)(ci,{isEnable:e.smtp},`smtp`)]],r=e.disableFunctions.split(`,`).filter(Boolean).toSorted(),i=e.disableClasses.split(`,`).filter(Boolean).toSorted(),a=[[w(`Disabled functions`),(0,N.jsx)(Gi,{keywords:r},`sortedFunctions`)],[w(`Disabled classes`),(0,N.jsx)(Gi,{keywords:i},`sortedClasses`)]];return(0,N.jsxs)(sr,{id:qn,title:w(`PHP Information`),children:[(0,N.jsxs)(oi,{children:[t.map(([e,t])=>(0,N.jsx)(ii,{label:e,children:t},e)),n.map(([e,t])=>(0,N.jsx)(ii,{label:e,children:t},e))]}),(0,N.jsx)(hi,{children:a.map(([e,t])=>(0,N.jsx)(ii,{label:e,maxWidth:7,minWidth:4,children:t},e))})]})}),id:qn,nav:()=>Pt(e=>!!e.pollData)?(0,N.jsx)(ti,{id:qn,title:w(`PHP Info`)}):null},Xi=e=>{let t=e.reduce((e,t)=>e+t,0)/e.length,n=e.map(e=>{let n=e-t;return n*n}).reduce((e,t)=>e+t,0)/e.length;return Math.sqrt(n)},Zi=T()(M(e=>({addServerToBrowserPingItem:t=>e(e=>{e.serverToBrowserPingItems.push(t)}),addServerToServerPingItem:t=>e(e=>{e.serverToServerPingItems.push(t)}),isPingServerToBrowser:!1,isPingServerToServer:!1,serverToBrowserPingItems:[],serverToServerPingItems:[],setIsPingServerToBrowser:t=>e(e=>{e.isPingServerToBrowser=t}),setIsPingServerToServer:t=>e(e=>{e.isPingServerToServer=t}),setServerToBrowserPingItems:t=>e(e=>{e.serverToBrowserPingItems=t}),setServerToServerPingItems:t=>e(e=>{e.serverToServerPingItems=t})}))),Qi={itemContainer:`_itemContainer_386ei_11`,resultContainer:`_resultContainer_386ei_26`,result:`_result_386ei_26`},$i=()=>{let e=Zi(C(e=>e.serverToBrowserPingItems)),t=e.length,n=t?e[0].time:0,r=t?e[0].time:0,i=0;for(let a=0;ar&&(r=t)}let a=t?(i/t).toFixed(2):`0.00`,o=Xi(e.map(({time:e})=>e)).toFixed(2);return(0,N.jsx)(`div`,{className:Qi.result,children:Vt(w(`{{times}} times, min/avg/max/mdev = {{min}}/{{avg}}/{{max}}/{{mdev}} ms`),{avg:a,max:r,mdev:o,min:n,times:t})})},ea=({refContainer:e})=>{let t=Zi(C(e=>e.serverToBrowserPingItems)),n=!!t.length;return(0,_.useEffect)(()=>{e.current&&(e.current.scrollTop=e.current.scrollHeight)},[t.length,e]),(0,N.jsx)(ii,{label:w(`Results`),children:(0,N.jsxs)(`div`,{className:Qi.resultContainer,children:[!n&&`-`,n&&(0,N.jsx)(`ul`,{className:Qi.itemContainer,ref:e,children:t.map(({id:e,time:t})=>(0,N.jsx)(`li`,{children:`${t} ms`},e))}),n&&(0,N.jsx)($i,{})]})})},ta=()=>{let{isPing:e,isPingServerToBrowser:t,setIsPingServerToBrowser:n,addServerToBrowserPingItem:r}=Zi(C(e=>({addServerToBrowserPingItem:e.addServerToBrowserPingItem,isPing:e.isPingServerToBrowser||e.isPingServerToServer,isPingServerToBrowser:e.isPingServerToBrowser,setIsPingServerToBrowser:e.setIsPingServerToBrowser}))),i=(0,_.useRef)(null),a=(0,_.useRef)(null),o=(0,_.useCallback)(async()=>{let e=Date.now();try{let{data:t,status:n}=await b(`ping`);if(t?.time&&n===200){let{id:n,time:i}=t,a=Date.now(),o=i*1e3,s=Math.max(0,Math.floor(a-e-o));r({id:n,time:s})}}catch(e){console.error(`Ping failed:`,e)}},[r]);(0,_.useEffect)(()=>{if(!t){a.current&&=(clearTimeout(a.current),null);return}let e=async()=>{await o(),t&&(a.current=setTimeout(e,1e3))};return e(),()=>{a.current&&clearTimeout(a.current)}},[t,o]);let s=(0,_.useCallback)(()=>{if(e||t){n(!1);return}n(!0)},[e,t,n]);return(0,N.jsxs)(hi,{children:[(0,N.jsx)(ii,{label:w(`Server ⇄ Browser`),children:(0,N.jsx)(qr,{onClick:s,status:e?Gr.Loading:Gr.Pointer,children:w(e?`Stop ping`:`Start ping`)})}),(0,N.jsx)(ea,{refContainer:i})]})},na={content:(0,_.memo)(()=>(0,N.jsx)(sr,{id:Jn,title:w(`Ping`),children:(0,N.jsx)(ta,{})})),id:Jn,nav:()=>(0,N.jsx)(ti,{id:Jn,title:w(`Ping`)})},ra={main:`_main_fajqi_1`},ia=({totalMarks:e,total:t})=>(0,N.jsx)(`div`,{className:ra.main,children:(0,N.jsx)(Rr,{high:e*.7,low:e*.5,max:e,optimum:e,value:t})}),I={main:`_main_110il_19`,header:`_header_110il_25`,marks:`_marks_110il_31`,sign:`_sign_110il_56`},aa=({cpu:e,read:t,write:n,date:r})=>{let i=e+t+n,a=e.toLocaleString(),o=t.toLocaleString(),s=n.toLocaleString(),c=i.toLocaleString(),l=Vt(`{{cpu}} (CPU) + {{read}} (Read) + {{write}} (Write) = {{total}}`,{cpu:a,read:o,total:c,write:s}),u=(0,N.jsx)(`span`,{className:I.sign,children:`+`});return(0,N.jsxs)(`button`,{className:I.marks,onClick:e=>{e.preventDefault(),e.stopPropagation(),Mr(l)},title:w(`Touch to copy marks`),type:`button`,children:[(0,N.jsx)(Pr,{"data-is-detail":!0,rt:`CPU`,ruby:a}),u,(0,N.jsx)(Pr,{"data-is-detail":!0,rt:w(`Read`),ruby:o}),u,(0,N.jsx)(Pr,{"data-is-detail":!0,rt:w(`Write`),ruby:s}),(0,N.jsx)(`span`,{className:I.sign,children:`=`}),(0,N.jsx)(Pr,{"data-is-total":!0,isResult:!0,rt:r||``,ruby:c})]})},oa=({header:e,marks:t,maxMarks:n,date:r})=>{let{cpu:i,read:a,write:o}=t;return(0,N.jsxs)(`div`,{className:I.main,children:[(0,N.jsx)(`div`,{className:I.header,children:e}),(0,N.jsx)(aa,{cpu:i,date:r,read:a,write:o}),(0,N.jsx)(ia,{total:i+a+o,totalMarks:n})]})},sa=T()(M(e=>({benchmarking:!1,maxMarks:0,servers:[],setBenchmarking:t=>e(e=>{e.benchmarking=t}),setMaxMarks:t=>e(e=>{e.maxMarks=t}),setServer:(t,n)=>e(e=>{let r=e.servers.findIndex(e=>e.id===t);r!==-1&&(e.servers[r]=n)}),setServers:t=>e(e=>{e.servers=t})}))),ca=()=>{let[e,t]=(0,_.useState)(!1),n=tn(e=>e.open),{setMaxMarks:r,maxMarks:i}=sa(C(e=>({maxMarks:e.maxMarks,setMaxMarks:e.setMaxMarks}))),[a,o]=(0,_.useState)({cpu:0,read:0,write:0});return(0,N.jsx)(oa,{date:(0,_.useMemo)(()=>{let e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`},[]),header:(0,N.jsx)(qr,{disabled:e,onClick:async a=>{if(a.preventDefault(),a.stopPropagation(),!e){t(!0);try{let{data:e,status:t}=await b(`benchmarkPerformance`);if(t===200&&e?.marks){o(e.marks);let t=Object.values(e.marks).reduce((e,t)=>e+t,0);t>i&&r(t);return}if(t===429&&e?.seconds){n(Vt(w(`Please wait {{seconds}}s`),{seconds:e.seconds}));return}n(w(`Network error, please try again later.`))}catch(e){n(w(`Network error, please try again later.`)),console.error(e)}finally{t(!1)}}},status:e?Gr.Loading:Gr.Pointer,children:w(`Benchmark my server`)}),marks:a,maxMarks:i})},la={main:`_main_11z09_1`,title:`_title_11z09_8`,link:`_link_11z09_9`},L=()=>{let[e,t]=(0,_.useState)(`loading`),{servers:n,setServers:r,setMaxMarks:i,maxMarks:a}=sa(C(e=>({maxMarks:e.maxMarks,servers:e.servers,setMaxMarks:e.setMaxMarks,setServers:e.setServers})));(0,_.useEffect)(()=>{(async()=>{t(`loading`);let{data:e,status:n}=await b(`benchmarkServers`);if(!e?.length||n!==200){t(`error`);return}let a=e.map(e=>({...e,total:e.detail?Object.values(e.detail).reduce((e,t)=>e+t,0):0}));a.sort((e,t)=>t.total-e.total);let o=a[0]?.total??0;r(a),i(o),t(`idle`)})()},[r,i]);let o=(0,_.useMemo)(()=>n.filter(e=>e.detail).map(({name:e,url:t,date:n,probeUrl:r,binUrl:i,detail:o})=>{let{cpu:s=0,read:c=0,write:l=0}=o,u=r?(0,N.jsx)(`a`,{className:la.link,href:r,rel:`noreferrer`,target:`_blank`,title:w(`Visit probe page`),children:(0,N.jsx)(Pn,{})}):null,d=i?(0,N.jsx)(`a`,{className:la.link,href:i,rel:`noreferrer`,target:`_blank`,title:w(`Download speed test`),children:(0,N.jsx)(An,{})}):null;return(0,N.jsx)(oa,{date:n,header:(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`a`,{className:la.title,href:t,rel:`noreferrer`,target:`_blank`,title:w(`Visit the official website`),children:e}),u,d]}),marks:{cpu:s,read:c,write:l},maxMarks:a},e)}),[n,a]);return(0,N.jsxs)(`div`,{className:la.main,children:[(0,N.jsx)(ca,{}),e===`loading`&&Array.from({length:5}).map((e,t)=>(0,N.jsx)(dr,{},`server-benchmark-placeholder-${String(t)}`)),e===`idle`&&o,e===`error`&&(0,N.jsx)(pr,{children:w(`Can not fetch marks data from GitHub.`)})]})},ua={content:(0,_.memo)(()=>(0,N.jsxs)(sr,{id:Yn,title:w(`Server Benchmark`),children:[(0,N.jsx)(lr,{items:[{id:`serverBenchmarkTos`,text:w(`Different versions cannot be compared, and different time servers have different loads, just for reference.`)}]}),(0,N.jsx)(L,{})]})),id:Yn,nav:()=>(0,N.jsx)(ti,{id:Yn,title:w(`Server bench`)})},da={days:0,hours:0,mins:0,secs:0},fa=({serverUptime:e,serverTime:t})=>{let{days:n,hours:r,mins:i,secs:a}=e,o=Vt(w(`{{days}}d {{hours}}h {{mins}}min {{secs}}s`),{days:n,hours:r,mins:i,secs:a});return(0,N.jsx)(N.Fragment,{children:[[w(`Time`),t],[w(`Uptime`),o]].map(([e,t])=>(0,N.jsx)(ii,{label:e,maxWidth:6,children:t},e))})},pa=(0,_.memo)(({cpuModel:e,serverOs:t,scriptPath:n,publicIpv4:r})=>(0,N.jsx)(hi,{children:[[w(`Location (IPv4)`),(0,N.jsx)(fi,{ip:r},`serverLocalIpv4`)],[w(`CPU model`),e??w(`Unavailable`)],[w(`OS`),t??w(`Unavailable`)],[w(`Script path`),n??w(`Unavailable`)]].map(([e,t])=>(0,N.jsx)(ii,{label:e,maxWidth:7,children:t},e))})),ma=(0,_.memo)(({serverName:e,serverSoftware:t,publicIpv4:n,publicIpv6:r,localIpv4:i,localIpv6:a})=>(0,N.jsx)(N.Fragment,{children:[[w(`Name`),e??w(`Unavailable`)],[w(`Web server`),t??w(`Unavailable`)],[w(`Public IPv4`),n||`-`],[w(`Public IPv6`),r||`-`],[w(`Local IPv4`),i||`-`],[w(`Local IPv6`),a||`-`]].map(([e,t])=>(0,N.jsx)(ii,{label:e,maxWidth:6,children:t},e))})),ha=()=>{let{serverTime:e,serverUptime:t}=Ft(C(e=>({serverTime:e.pollData?.serverTime??`-`,serverUptime:e.pollData?.serverUptime??da})));return(0,N.jsx)(fa,{serverTime:e,serverUptime:t})},ga={content:()=>{let e=Ft(e=>e.setPublicIpv4),t=Ft(e=>e.setPublicIpv6),{hasPollData:n,publicIpv4:r,publicIpv6:i,localIpv4:a,localIpv6:o,serverName:s,serverSoftware:c,cpuModel:l,scriptPath:u,serverOs:d}=Ft(C(e=>({cpuModel:e.pollData?.cpuModel??`-`,hasPollData:!!e.pollData,localIpv4:e.pollData?.localIpv4??`-`,localIpv6:e.pollData?.localIpv6??`-`,publicIpv4:e.publicIpv4,publicIpv6:e.publicIpv6,scriptPath:e.pollData?.scriptPath??`-`,serverName:e.pollData?.serverName??`-`,serverOs:e.pollData?.serverOs??`-`,serverSoftware:e.pollData?.serverSoftware??`-`})));return(0,_.useEffect)(()=>{(async()=>{let{data:t,status:n}=await b(`serverPublicIpv4`);t?.ip&&n===200&&e(t.ip)})()},[e]),(0,_.useEffect)(()=>{(async()=>{let{data:e,status:n}=await b(`serverPublicIpv6`);e?.ip&&n===200&&t(e.ip)})()},[t]),n?(0,N.jsxs)(sr,{id:Xn,title:w(`Server Info`),children:[(0,N.jsxs)(oi,{minWidth:20,children:[(0,N.jsx)(ha,{}),(0,N.jsx)(ma,{localIpv4:a,localIpv6:o,publicIpv4:r,publicIpv6:i,serverName:s,serverSoftware:c})]}),(0,N.jsx)(pa,{cpuModel:l,publicIpv4:r,scriptPath:u,serverOs:d})]}):null},id:Xn,nav:()=>Ft(e=>!!e.pollData)?(0,N.jsx)(ti,{id:Xn,title:w(`Info`)}):null},_a={main:`_main_128cz_1`,modules:`_modules_128cz_6`},va=()=>{let{max:e,value:t}=Lt(C(e=>({max:e.pollData?.memBuffers.max??0,value:e.pollData?.memBuffers.value??0})));return(0,N.jsx)(zr,{isCapacity:!0,max:e,name:w(`Memory buffers`),title:w(`Buffers are in-memory block I/O buffers. They are relatively short-lived. Prior to Linux kernel version 2.4, Linux had separate page and buffer caches. Since 2.4, the page and buffer cache are unified and Buffers is raw disk blocks not represented in the page cache—i.e., not file data.`),value:t})},ya=()=>{let{max:e,value:t}=Lt(C(e=>({max:e.pollData.memCached.max,value:e.pollData.memCached.value})));return(0,N.jsx)(zr,{isCapacity:!0,max:e,name:w(`Memory cached`),title:w(`Cached memory is memory that Linux uses for disk caching. However, this does not count as "used" memory, since it will be freed when applications require it. Hence you do not have to worry if a large amount is being used.`),value:t})},ba=()=>{let{max:e,value:t}=Lt(C(e=>({max:e.pollData.memRealUsage.max,value:e.pollData.memRealUsage.value})));return(0,N.jsx)(zr,{isCapacity:!0,max:e,name:w(`Memory real usage`),title:w(`Linux comes with many commands to check memory usage. The "free" command usually displays the total amount of free and used physical and swap memory in the system, as well as the buffers used by the kernel. The "top" command provides a dynamic real-time view of a running system.`),value:t})},xa=()=>{let{max:e,value:t}=Lt(C(e=>({max:e.pollData.swapCached.max,value:e.pollData.swapCached.value})));return e?(0,N.jsx)(zr,{isCapacity:!0,max:e,name:w(`Swap cached`),value:t}):null},Sa=()=>{let{max:e,value:t}=Lt(C(e=>({max:e.pollData.swapUsage.max,value:e.pollData.swapUsage.value})));return e?(0,N.jsx)(zr,{isCapacity:!0,max:e,name:w(`Swap usage`),value:t}):null},Ca=[Hi,{content:()=>{let e=Rt(C(e=>e.pollData?.items??[]));return e.length?(0,N.jsx)(sr,{id:Qn,title:w(`Temperature sensor`),children:(0,N.jsx)(hi,{children:e.map(({id:e,name:t,celsius:n})=>(0,N.jsx)(ii,{title:Vt(w(`{{sensor}} temperature`),{sensor:t}),children:(0,N.jsx)(zr,{isCapacity:!1,max:150,percentTag:`℃`,value:n})},e))})}):null},id:Qn,nav:()=>Rt(e=>!!e.pollData?.items.length)?(0,N.jsx)(ti,{id:Qn,title:w(`Temperature`)}):null},{content:()=>(0,N.jsx)(sr,{id:Zn,title:w(`Server Status`),children:(0,N.jsx)(`div`,{className:_a.main,children:(0,N.jsxs)(`div`,{className:_a.modules,children:[(0,N.jsx)(Ei,{}),(0,N.jsx)(ba,{}),(0,N.jsx)(ya,{}),(0,N.jsx)(va,{}),(0,N.jsx)(Sa,{}),(0,N.jsx)(xa,{})]})})}),id:Zn,nav:()=>Lt(e=>!!e.pollData)?(0,N.jsx)(ti,{id:Zn,title:w(`Info`)}):null},xi,di,na,ga,Yi,qi,li,ua,ni,gi],wa=()=>{let e=rr(C(e=>e.priorities)),t=Bt(C(e=>e.pollData?Object.keys(e.pollData).filter(t=>e.pollData?.[t]!==null):[]));return(0,_.useMemo)(()=>{if(t.length===0)return[];let n=new Map(Ca.map(e=>[e.id,e])),r=new Set(t);return e.map(e=>n.get(e)).filter(e=>!!e&&r.has(e.id))},[e,t])},Ta=()=>{let e=wa();return e.length?(0,N.jsx)(`div`,{className:gn.container,children:e.map(({id:e,content:t})=>(0,N.jsx)(t,{},e))}):null},Ea=(0,_.memo)(()=>{let e=wa().map(({id:e,nav:t})=>(0,N.jsx)(t,{},e));return(0,N.jsx)(`div`,{className:ei.wrap,children:(0,N.jsx)(`div`,{className:ei.main,children:e})})}),Da={main:`_main_nuyl9_6`,spin:`_spin_nuyl9_1`},Oa=()=>(0,N.jsx)(`div`,{className:Da.main,children:`Thinking...`}),ka=2e3,Aa=()=>{let[e,t]=(0,_.useState)(`loading`),n=tn(e=>e.open),r=Zt(e=>e.isUpdating);return(0,_.useEffect)(()=>{if(r)return;let e=null,i=new AbortController,a=!1,o=async()=>{if(!a)try{a=!0;let{data:e,status:r}=await b(`poll`,{signal:i.signal});r===200&&e?(Bt.getState().setPollData(e),t(`idle`)):(n(w(`Failed to fetch data. Please try again later.`)),t(`error`))}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;console.error(`Error fetching poll data:`,e),n(w(`Network error. Please check your connection.`)),t(`error`)}finally{a=!1,e=setTimeout(o,ka)}};return o(),()=>{e&&clearTimeout(e),i.abort()}},[r,n]),e===`loading`?(0,N.jsx)(Oa,{}):(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(un,{}),(0,N.jsx)(Ta,{}),(0,N.jsx)(Wt,{}),(0,N.jsx)(Ea,{}),(0,N.jsx)(hn,{})]})};document.addEventListener(`DOMContentLoaded`,()=>{document.body.innerHTML=``,(0,g.createRoot)(document.body).render((0,N.jsx)(Aa,{}))})}); CODE; exit; } @@ -2281,7 +2281,7 @@ namespace InnStudio\Prober\Components\Config; class ConfigApi { public static $config = array ( - 'APP_VERSION' => '10.0.0', + 'APP_VERSION' => '10.0.1', 'APP_NAME' => 'X Prober', 'APP_URL' => 'https://github.com/kmvan/x-prober', 'AUTHOR_URL' => 'https://inn-studio.com/prober', diff --git a/src/Components/Config/ConfigApi.php b/src/Components/Config/ConfigApi.php index 971ff21..107c549 100644 --- a/src/Components/Config/ConfigApi.php +++ b/src/Components/Config/ConfigApi.php @@ -9,7 +9,7 @@ namespace InnStudio\Prober\Components\Config; class ConfigApi { public static $config = array ( - 'APP_VERSION' => '10.0.0', + 'APP_VERSION' => '10.0.1', 'APP_NAME' => 'X Prober', 'APP_URL' => 'https://github.com/kmvan/x-prober', 'AUTHOR_URL' => 'https://inn-studio.com/prober',