diff --git a/.env b/.env new file mode 100644 index 0000000..84842ae --- /dev/null +++ b/.env @@ -0,0 +1 @@ +VITE_STRONGHOLD_PASS=account \ No newline at end of file diff --git a/.gitignore b/.gitignore index a547bf3..80c770e 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,17 @@ dist-ssr *.njsproj *.sln *.sw? +.fleet +.idea + +# Nuxt dev/build outputs +.output +.data +.nuxt +.nitro +.cache +dist + +# Logs +logs +*.log \ No newline at end of file diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000..1498611 Binary files /dev/null and b/bun.lockb differ diff --git a/index.html b/index.html index 25d61b4..836f522 100644 --- a/index.html +++ b/index.html @@ -1,32 +1,16 @@ - - - - - TREM Tauri - + - -
- - - - - - - - - - - - - - - - - - - - - - + + + + + trem-tauri + + + +
+ + + + \ No newline at end of file diff --git a/nuxt.config.ts b/nuxt.config.ts new file mode 100644 index 0000000..d46279c --- /dev/null +++ b/nuxt.config.ts @@ -0,0 +1,30 @@ +// https://nuxt.com/docs/api/configuration/nuxt-config +export default defineNuxtConfig({ + compatibilityDate: "2024-04-03", + devtools: { enabled: true }, + srcDir: "src/", + ssr: false, + modules: ["@pinia/nuxt", "@primevue/nuxt-module", "@nuxtjs/tailwindcss"], + css: ["maplibre-gl/dist/maplibre-gl.css", "@/styles.css"], + primevue: { + options: { + ripple: true, + }, + importPT: { from: "@/presets/aura/index.js" }, + }, + vite: { + clearScreen: false, + envPrefix: ["VITE_", "TAURI_"], + server: { + strictPort: true, + hmr: { + protocol: "ws", + host: "0.0.0.0", + port: 5183, + }, + watch: { + ignored: ["**/src-tauri/**"], + }, + }, + }, +}); diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 9a437f8..0000000 --- a/package-lock.json +++ /dev/null @@ -1,4612 +0,0 @@ -{ - "name": "trem-tauri", - "version": "0.0.0-alpha.4", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "trem-tauri", - "version": "0.0.0-alpha.4", - "dependencies": { - "@fontsource/lato": "^5.0.20", - "@fontsource/noto-sans-tc": "^5.0.18", - "@fontsource/open-sans": "^5.0.27", - "@tauri-apps/api": "^2.0.0-beta.6", - "@tauri-apps/plugin-autostart": "^2.0.0-beta.2", - "@tauri-apps/plugin-cli": "^2.0.0-beta.2", - "@tauri-apps/plugin-clipboard-manager": "^2.1.0-beta.0", - "@tauri-apps/plugin-fs": "^2.0.0-beta.2", - "@tauri-apps/plugin-http": "^2.0.0-beta.2", - "@tauri-apps/plugin-log": "^2.0.0-beta.2", - "@tauri-apps/plugin-shell": "^2.0.0-beta.2", - "chroma-js": "^2.4.2", - "events": "^3.3.0", - "jszip": "^3.10.1", - "maplibre-gl": "^4.1.1", - "material-symbols": "^0.17.1", - "primevue": "^3.50.0", - "vue": "^3.4.21", - "ws": "^8.16.0" - }, - "devDependencies": { - "@tauri-apps/cli": "^2.0.0-beta.11", - "@types/chroma-js": "^2.4.4", - "@types/events": "^3.0.3", - "@types/ws": "^8.5.10", - "@typescript-eslint/eslint-plugin": "^7.3.1", - "@typescript-eslint/parser": "^7.3.1", - "@vitejs/plugin-vue": "^5.0.4", - "@vue/language-plugin-pug": "^2.0.7", - "eslint": "^8.57.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-vue": "^9.23.0", - "eslint-plugin-vue-pug": "^0.6.2", - "prettier": "^3.2.5", - "pug": "^3.0.2", - "sass": "^1.72.0", - "typescript": "^5.4.3", - "vite": "^5.2.6", - "vue-tsc": "^2.0.7" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", - "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", - "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", - "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", - "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", - "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", - "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", - "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", - "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", - "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", - "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", - "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", - "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", - "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", - "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", - "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", - "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", - "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", - "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", - "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", - "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", - "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", - "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", - "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", - "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", - "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@fontsource/lato": { - "version": "5.0.20", - "resolved": "https://registry.npmjs.org/@fontsource/lato/-/lato-5.0.20.tgz", - "integrity": "sha512-2ej7KDuTFoea6Q2hWjx3Png1+MdNcW4V6l7sw/vNauuxCv9xBIZCmpXnTz9eVdj/5Ui//jiWWiQk57mGwjCNwA==" - }, - "node_modules/@fontsource/noto-sans-tc": { - "version": "5.0.18", - "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-tc/-/noto-sans-tc-5.0.18.tgz", - "integrity": "sha512-pHCH3NL+SUIaCMRtao0eomfIVl7Lrg8cF3zbwukQBXM1hbgt82qXbVdmZbo96XCrvjDVwh/3QSlU7ZuGEIjFDQ==" - }, - "node_modules/@fontsource/open-sans": { - "version": "5.0.27", - "resolved": "https://registry.npmjs.org/@fontsource/open-sans/-/open-sans-5.0.27.tgz", - "integrity": "sha512-tFTqx2TE9srmM3pMEHldw0lTglqhKwFX6PVDEL0OF9xNT0x5W9brsezFHhV/U36pQV9So7S0vo4yVpnLzBBQew==" - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@mapbox/geojson-rewind": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz", - "integrity": "sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==", - "dependencies": { - "get-stream": "^6.0.1", - "minimist": "^1.2.6" - }, - "bin": { - "geojson-rewind": "geojson-rewind" - } - }, - "node_modules/@mapbox/jsonlint-lines-primitives": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz", - "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@mapbox/point-geometry": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", - "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==" - }, - "node_modules/@mapbox/tiny-sdf": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz", - "integrity": "sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==" - }, - "node_modules/@mapbox/unitbezier": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz", - "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==" - }, - "node_modules/@mapbox/vector-tile": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz", - "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==", - "dependencies": { - "@mapbox/point-geometry": "~0.1.0" - } - }, - "node_modules/@mapbox/whoots-js": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz", - "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@maplibre/maplibre-gl-style-spec": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.1.1.tgz", - "integrity": "sha512-z85ARNPCBI2Cs5cPOS3DSbraTN+ue8zrcYVoSWBuNrD/mA+2SKAJ+hIzI22uN7gac6jBMnCdpPKRxS/V0KSZVQ==", - "dependencies": { - "@mapbox/jsonlint-lines-primitives": "~2.0.2", - "@mapbox/unitbezier": "^0.0.1", - "json-stringify-pretty-compact": "^4.0.0", - "minimist": "^1.2.8", - "rw": "^1.3.3", - "sort-object": "^3.0.3" - }, - "bin": { - "gl-style-format": "dist/gl-style-format.mjs", - "gl-style-migrate": "dist/gl-style-migrate.mjs", - "gl-style-validate": "dist/gl-style-validate.mjs" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz", - "integrity": "sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz", - "integrity": "sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz", - "integrity": "sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz", - "integrity": "sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz", - "integrity": "sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz", - "integrity": "sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz", - "integrity": "sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz", - "integrity": "sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.0.tgz", - "integrity": "sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.0.tgz", - "integrity": "sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz", - "integrity": "sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz", - "integrity": "sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz", - "integrity": "sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@tauri-apps/api": { - "version": "2.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.0.0-beta.6.tgz", - "integrity": "sha512-ay3kAXYQoqC3rX4Vr3y6uGwrBhRPM7UQqZ9wr1VYzN6lkcMIcu7+UBvytmcfXDlVctqFoMQJafn6+dK/Oqh8+Q==", - "engines": { - "node": ">= 18", - "npm": ">= 6.6.0", - "yarn": ">= 1.19.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - } - }, - "node_modules/@tauri-apps/cli": { - "version": "2.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-2.0.0-beta.11.tgz", - "integrity": "sha512-Q9mfn6v3XjnbNZpZl2IucU5F5EXW4i7vaN8Enm4kybIBk0tBqXbbc9p71CFJohe2lyvI0twHy7CcfhHNZnGrDw==", - "dev": true, - "bin": { - "tauri": "tauri.js" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - }, - "optionalDependencies": { - "@tauri-apps/cli-darwin-arm64": "2.0.0-beta.11", - "@tauri-apps/cli-darwin-x64": "2.0.0-beta.11", - "@tauri-apps/cli-linux-arm-gnueabihf": "2.0.0-beta.11", - "@tauri-apps/cli-linux-arm64-gnu": "2.0.0-beta.11", - "@tauri-apps/cli-linux-arm64-musl": "2.0.0-beta.11", - "@tauri-apps/cli-linux-x64-gnu": "2.0.0-beta.11", - "@tauri-apps/cli-linux-x64-musl": "2.0.0-beta.11", - "@tauri-apps/cli-win32-arm64-msvc": "2.0.0-beta.11", - "@tauri-apps/cli-win32-ia32-msvc": "2.0.0-beta.11", - "@tauri-apps/cli-win32-x64-msvc": "2.0.0-beta.11" - } - }, - "node_modules/@tauri-apps/cli-darwin-arm64": { - "version": "2.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.0.0-beta.11.tgz", - "integrity": "sha512-gry05NbWnTSDVJjlHb0JOh/QikG+c/O8/QSolz0scO4i+Y0ke5QhpmtXCQVS9REoxX2ncei0/MpqL7tZHaPSyw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-darwin-x64": { - "version": "2.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-2.0.0-beta.11.tgz", - "integrity": "sha512-3nQTiLAeJBjPHTobVpF+dDxtqrK5Euzaj2ZdOcs5wZLOFzKcV3HXPwBO7n40ACL71g7RREzuvCx92yGC/txdfw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": { - "version": "2.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-2.0.0-beta.11.tgz", - "integrity": "sha512-Ucbr/ErIRfk5GDUb4hQVic/0ss+5KO1wLq3Dp6QR/h/ms4kS3ihMJiIFCIzGhsavNhPRDk2dDi35M9BNgiUW0Q==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-arm64-gnu": { - "version": "2.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-2.0.0-beta.11.tgz", - "integrity": "sha512-wSWu+paay91d6/FPb8tS/UOtyei0dX98edYVO0GXd4KePsvu9ZkzXr1HAOeY0UG+P0Z7SIrSw9TnDc2HnGyRmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-arm64-musl": { - "version": "2.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.0.0-beta.11.tgz", - "integrity": "sha512-9P4UDsYbriXcPhfeOd0e4xmjd2XN1nkxnJlRPBc9tlLEHnzuXnYGQ/sFtUII4CkSnqeU7qPm44txxWoV44/T4A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-x64-gnu": { - "version": "2.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-2.0.0-beta.11.tgz", - "integrity": "sha512-gYH8ear0rCOIi4oSCxRLClDmGs3HwvH3fr0go0Hi5ang/xu8CbwjgaQVOWW1nEpY7uckhKt4vSmO5p6iFEY01w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-x64-musl": { - "version": "2.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-2.0.0-beta.11.tgz", - "integrity": "sha512-bxLzF7SW7j8C/Qc5P8AR+rEtJWoHc00V9FZuT259tOo6LHJsSUUFCk4kA/Y7mt2/9SzVXNbo4qu0NngSQsYncg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-win32-arm64-msvc": { - "version": "2.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-2.0.0-beta.11.tgz", - "integrity": "sha512-/o3jtkt0IT0aV074bmbUoCTa3eGj0OyZjnxs00MN5FkfvXvSXwA4FZroAdlme6linLm7vh+UtusorMRBXChG2A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-win32-ia32-msvc": { - "version": "2.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-2.0.0-beta.11.tgz", - "integrity": "sha512-LQvFnrIrvmSXbbisWXjXXx2y7UtHcuH0PC6c8wgEFaFS3eYRvsnckICk+Rbn8Ulnyj6lPAiB0N7QhJxmtDzdaw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-win32-x64-msvc": { - "version": "2.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-2.0.0-beta.11.tgz", - "integrity": "sha512-uJcQjR8tn44UlJXt+iGjIQLXp4ggug0KuwcYPXwD+ww3jV8RhHaPH2tPQ78ybgSJTIOsW41I9mE36Zcrso3oaQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/plugin-autostart": { - "version": "2.0.0-beta.2", - "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-autostart/-/plugin-autostart-2.0.0-beta.2.tgz", - "integrity": "sha512-lrbXKEFuH79mz3abTwZpFW3wi4rVpyivD85uIdKxhM7vj4XwyVJKYfz9/1K435NP6DsHBdEqzfGxENfJCBCtLQ==", - "dependencies": { - "@tauri-apps/api": "2.0.0-beta.4" - } - }, - "node_modules/@tauri-apps/plugin-autostart/node_modules/@tauri-apps/api": { - "version": "2.0.0-beta.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.0.0-beta.4.tgz", - "integrity": "sha512-Nxtj28NYUo5iwYkpYslxmOPkdI2WkELU2e3UH9nbJm9Ydki2CQwJVGQxx4EANtdZcMNsEsUzRqaDTvEUYH1l6w==", - "engines": { - "node": ">= 18", - "npm": ">= 6.6.0", - "yarn": ">= 1.19.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - } - }, - "node_modules/@tauri-apps/plugin-cli": { - "version": "2.0.0-beta.2", - "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-cli/-/plugin-cli-2.0.0-beta.2.tgz", - "integrity": "sha512-iWbZGkqRWaCyBgKI62minlSY2O+VASC9qzB5WUDOhJLW/ONDkp/SwJI7luIyYSPIX9y6Ke7mGg9BXaaPgJ805g==", - "dependencies": { - "@tauri-apps/api": "2.0.0-beta.4" - } - }, - "node_modules/@tauri-apps/plugin-cli/node_modules/@tauri-apps/api": { - "version": "2.0.0-beta.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.0.0-beta.4.tgz", - "integrity": "sha512-Nxtj28NYUo5iwYkpYslxmOPkdI2WkELU2e3UH9nbJm9Ydki2CQwJVGQxx4EANtdZcMNsEsUzRqaDTvEUYH1l6w==", - "engines": { - "node": ">= 18", - "npm": ">= 6.6.0", - "yarn": ">= 1.19.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - } - }, - "node_modules/@tauri-apps/plugin-clipboard-manager": { - "version": "2.1.0-beta.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-clipboard-manager/-/plugin-clipboard-manager-2.1.0-beta.0.tgz", - "integrity": "sha512-ySIo5NG58a7r9FheG3BO2tfNGoBHQD8J1bY8z8UpafkzgsVnEdlELBMrnx9FKlcM+y5Bbshnf+AJEOjp73/9nA==", - "dependencies": { - "@tauri-apps/api": "2.0.0-beta.6" - } - }, - "node_modules/@tauri-apps/plugin-fs": { - "version": "2.0.0-beta.2", - "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-fs/-/plugin-fs-2.0.0-beta.2.tgz", - "integrity": "sha512-jqeRBrm0h9QUoep5OzHx5R0vgFCYVAmZIy45jJpR7hHvnEgUwDU8JLUUVPvWniq6tUtxjwr1V/a0Hm9pE9V+NQ==", - "dependencies": { - "@tauri-apps/api": "2.0.0-beta.4" - } - }, - "node_modules/@tauri-apps/plugin-fs/node_modules/@tauri-apps/api": { - "version": "2.0.0-beta.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.0.0-beta.4.tgz", - "integrity": "sha512-Nxtj28NYUo5iwYkpYslxmOPkdI2WkELU2e3UH9nbJm9Ydki2CQwJVGQxx4EANtdZcMNsEsUzRqaDTvEUYH1l6w==", - "engines": { - "node": ">= 18", - "npm": ">= 6.6.0", - "yarn": ">= 1.19.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - } - }, - "node_modules/@tauri-apps/plugin-http": { - "version": "2.0.0-beta.2", - "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-http/-/plugin-http-2.0.0-beta.2.tgz", - "integrity": "sha512-g/FA/w/+a2uQQlXoVTy5HXIi/YZo3q3lnxhKkwCWE/IZOMoraDlTzM/H+MB9hUaubLAnuPUMth5LaeFC9jwdRw==", - "dependencies": { - "@tauri-apps/api": "2.0.0-beta.4" - } - }, - "node_modules/@tauri-apps/plugin-http/node_modules/@tauri-apps/api": { - "version": "2.0.0-beta.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.0.0-beta.4.tgz", - "integrity": "sha512-Nxtj28NYUo5iwYkpYslxmOPkdI2WkELU2e3UH9nbJm9Ydki2CQwJVGQxx4EANtdZcMNsEsUzRqaDTvEUYH1l6w==", - "engines": { - "node": ">= 18", - "npm": ">= 6.6.0", - "yarn": ">= 1.19.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - } - }, - "node_modules/@tauri-apps/plugin-log": { - "version": "2.0.0-beta.2", - "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-log/-/plugin-log-2.0.0-beta.2.tgz", - "integrity": "sha512-UiHQ5uMocYKRo+YbMd7L+SY4JD4wWWWtp+y/+RrUDzrXozISinPZEoEJHTuOJ0oXC4YLB7zyiY38sTzXeDa+HA==", - "dependencies": { - "@tauri-apps/api": "2.0.0-beta.4" - } - }, - "node_modules/@tauri-apps/plugin-log/node_modules/@tauri-apps/api": { - "version": "2.0.0-beta.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.0.0-beta.4.tgz", - "integrity": "sha512-Nxtj28NYUo5iwYkpYslxmOPkdI2WkELU2e3UH9nbJm9Ydki2CQwJVGQxx4EANtdZcMNsEsUzRqaDTvEUYH1l6w==", - "engines": { - "node": ">= 18", - "npm": ">= 6.6.0", - "yarn": ">= 1.19.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - } - }, - "node_modules/@tauri-apps/plugin-shell": { - "version": "2.0.0-beta.2", - "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-shell/-/plugin-shell-2.0.0-beta.2.tgz", - "integrity": "sha512-9rWsfN7Wt+EuWmpmNnK8bCs+04fzhEYrHtWyLIAYxb9diFdcJrEoctCP9YM2v+Uf8/y8qFC7VCbZ/9VQHANymQ==", - "dependencies": { - "@tauri-apps/api": "2.0.0-beta.4" - } - }, - "node_modules/@tauri-apps/plugin-shell/node_modules/@tauri-apps/api": { - "version": "2.0.0-beta.4", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.0.0-beta.4.tgz", - "integrity": "sha512-Nxtj28NYUo5iwYkpYslxmOPkdI2WkELU2e3UH9nbJm9Ydki2CQwJVGQxx4EANtdZcMNsEsUzRqaDTvEUYH1l6w==", - "engines": { - "node": ">= 18", - "npm": ">= 6.6.0", - "yarn": ">= 1.19.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - } - }, - "node_modules/@types/chroma-js": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/chroma-js/-/chroma-js-2.4.4.tgz", - "integrity": "sha512-/DTccpHTaKomqussrn+ciEvfW4k6NAHzNzs/sts1TCqg333qNxOhy8TNIoQCmbGG3Tl8KdEhkGAssb1n3mTXiQ==", - "dev": true - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@types/events": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.3.tgz", - "integrity": "sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g==", - "dev": true - }, - "node_modules/@types/geojson": { - "version": "7946.0.14", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", - "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==" - }, - "node_modules/@types/geojson-vt": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@types/geojson-vt/-/geojson-vt-3.2.5.tgz", - "integrity": "sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g==", - "dependencies": { - "@types/geojson": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "node_modules/@types/mapbox__point-geometry": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.4.tgz", - "integrity": "sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==" - }, - "node_modules/@types/mapbox__vector-tile": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.4.tgz", - "integrity": "sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==", - "dependencies": { - "@types/geojson": "*", - "@types/mapbox__point-geometry": "*", - "@types/pbf": "*" - } - }, - "node_modules/@types/node": { - "version": "20.11.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz", - "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/pbf": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/pbf/-/pbf-3.0.5.tgz", - "integrity": "sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==" - }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, - "node_modules/@types/supercluster": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/supercluster/-/supercluster-7.1.3.tgz", - "integrity": "sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==", - "dependencies": { - "@types/geojson": "*" - } - }, - "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.3.1.tgz", - "integrity": "sha512-STEDMVQGww5lhCuNXVSQfbfuNII5E08QWkvAw5Qwf+bj2WT+JkG1uc+5/vXA3AOYMDHVOSpL+9rcbEUiHIm2dw==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/type-utils": "7.3.1", - "@typescript-eslint/utils": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.3.1.tgz", - "integrity": "sha512-Rq49+pq7viTRCH48XAbTA+wdLRrB/3sRq4Lpk0oGDm0VmnjBrAOVXH/Laalmwsv2VpekiEfVFwJYVk6/e8uvQw==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/typescript-estree": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", - "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.3.1.tgz", - "integrity": "sha512-iFhaysxFsMDQlzJn+vr3OrxN8NmdQkHks4WaqD4QBnt5hsq234wcYdyQ9uquzJJIDAj5W4wQne3yEsYA6OmXGw==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "7.3.1", - "@typescript-eslint/utils": "7.3.1", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", - "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", - "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.3.1.tgz", - "integrity": "sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/typescript-estree": "7.3.1", - "semver": "^7.5.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", - "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.3.1", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/@vitejs/plugin-vue": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz", - "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==", - "dev": true, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "vite": "^5.0.0", - "vue": "^3.2.25" - } - }, - "node_modules/@volar/language-core": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.1.5.tgz", - "integrity": "sha512-u1OHmVkCFsJqNdaM2GKuMhE67TxcEnOqJNF+VtYv2Ji8DnrUaF4FAFSNxY+MRGICl+873CsSJVKas9TQtW14LA==", - "dev": true, - "dependencies": { - "@volar/source-map": "2.1.5" - } - }, - "node_modules/@volar/language-service": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.1.5.tgz", - "integrity": "sha512-WuvEv6x/fBe3e4akhblK1E2GgpnAZNnm7sKsRPrQPTE3ED5PIfiMrWgzKB5gNZToD+d6LPxfKAaGWQCpxmSJiw==", - "dev": true, - "dependencies": { - "@volar/language-core": "2.1.5", - "vscode-languageserver-protocol": "^3.17.5", - "vscode-languageserver-textdocument": "^1.0.11", - "vscode-uri": "^3.0.8" - } - }, - "node_modules/@volar/source-map": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.1.5.tgz", - "integrity": "sha512-GIkAM6fHgDcTXcdH4i10fAiAZzO0HLIer8/pt3oZ9A0n7n4R5d1b2F8Xxzh/pgmgNoL+SrHX3MFxs35CKgfmtA==", - "dev": true, - "dependencies": { - "muggle-string": "^0.4.0" - } - }, - "node_modules/@volar/typescript": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.1.5.tgz", - "integrity": "sha512-zo9a3NrNMSkufIvHuExDGTfYv+zO7C5p2wg8fyP7vcqF/Qo0ztjb0ZfOgq/A85EO/MBc1Kj2Iu7PaOBtP++NMw==", - "dev": true, - "dependencies": { - "@volar/language-core": "2.1.5", - "path-browserify": "^1.0.1" - } - }, - "node_modules/@vscode/l10n": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz", - "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==", - "dev": true - }, - "node_modules/@vue/compiler-core": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.21.tgz", - "integrity": "sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==", - "dependencies": { - "@babel/parser": "^7.23.9", - "@vue/shared": "3.4.21", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz", - "integrity": "sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==", - "dependencies": { - "@vue/compiler-core": "3.4.21", - "@vue/shared": "3.4.21" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz", - "integrity": "sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==", - "dependencies": { - "@babel/parser": "^7.23.9", - "@vue/compiler-core": "3.4.21", - "@vue/compiler-dom": "3.4.21", - "@vue/compiler-ssr": "3.4.21", - "@vue/shared": "3.4.21", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.7", - "postcss": "^8.4.35", - "source-map-js": "^1.0.2" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz", - "integrity": "sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==", - "dependencies": { - "@vue/compiler-dom": "3.4.21", - "@vue/shared": "3.4.21" - } - }, - "node_modules/@vue/language-core": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.7.tgz", - "integrity": "sha512-Vh1yZX3XmYjn9yYLkjU8DN6L0ceBtEcapqiyclHne8guG84IaTzqtvizZB1Yfxm3h6m7EIvjerLO5fvOZO6IIQ==", - "dev": true, - "dependencies": { - "@volar/language-core": "~2.1.3", - "@vue/compiler-dom": "^3.4.0", - "@vue/shared": "^3.4.0", - "computeds": "^0.0.1", - "minimatch": "^9.0.3", - "path-browserify": "^1.0.1", - "vue-template-compiler": "^2.7.14" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@vue/language-plugin-pug": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@vue/language-plugin-pug/-/language-plugin-pug-2.0.7.tgz", - "integrity": "sha512-detpd6/uoz4cry1Kaal4Ho5bFdDTxjlye+xGX/yPOnNLqg94YLZymKP17/MpDUD7QgtiWOCLNUqFAuC1ovId1A==", - "dev": true, - "dependencies": { - "@volar/source-map": "~2.1.3", - "volar-service-pug": "0.0.34" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.21.tgz", - "integrity": "sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==", - "dependencies": { - "@vue/shared": "3.4.21" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.21.tgz", - "integrity": "sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==", - "dependencies": { - "@vue/reactivity": "3.4.21", - "@vue/shared": "3.4.21" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz", - "integrity": "sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==", - "dependencies": { - "@vue/runtime-core": "3.4.21", - "@vue/shared": "3.4.21", - "csstype": "^3.1.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.21.tgz", - "integrity": "sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==", - "dependencies": { - "@vue/compiler-ssr": "3.4.21", - "@vue/shared": "3.4.21" - }, - "peerDependencies": { - "vue": "3.4.21" - } - }, - "node_modules/@vue/shared": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.21.tgz", - "integrity": "sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==" - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, - "node_modules/assert-never": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", - "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==", - "dev": true - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-walk": { - "version": "3.0.0-canary-5", - "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", - "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.9.6" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/bytewise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz", - "integrity": "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==", - "dependencies": { - "bytewise-core": "^1.2.2", - "typewise": "^1.0.3" - } - }, - "node_modules/bytewise-core": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz", - "integrity": "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==", - "dependencies": { - "typewise-core": "^1.2" - } - }, - "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", - "dev": true, - "dependencies": { - "is-regex": "^1.0.3" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chroma-js": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz", - "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==" - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/computeds": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", - "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/constantinople": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", - "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.1" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - }, - "node_modules/de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/doctypes": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", - "dev": true - }, - "node_modules/earcut": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", - "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/esbuild": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", - "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.2", - "@esbuild/android-arm": "0.20.2", - "@esbuild/android-arm64": "0.20.2", - "@esbuild/android-x64": "0.20.2", - "@esbuild/darwin-arm64": "0.20.2", - "@esbuild/darwin-x64": "0.20.2", - "@esbuild/freebsd-arm64": "0.20.2", - "@esbuild/freebsd-x64": "0.20.2", - "@esbuild/linux-arm": "0.20.2", - "@esbuild/linux-arm64": "0.20.2", - "@esbuild/linux-ia32": "0.20.2", - "@esbuild/linux-loong64": "0.20.2", - "@esbuild/linux-mips64el": "0.20.2", - "@esbuild/linux-ppc64": "0.20.2", - "@esbuild/linux-riscv64": "0.20.2", - "@esbuild/linux-s390x": "0.20.2", - "@esbuild/linux-x64": "0.20.2", - "@esbuild/netbsd-x64": "0.20.2", - "@esbuild/openbsd-x64": "0.20.2", - "@esbuild/sunos-x64": "0.20.2", - "@esbuild/win32-arm64": "0.20.2", - "@esbuild/win32-ia32": "0.20.2", - "@esbuild/win32-x64": "0.20.2" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-vue": { - "version": "9.23.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.23.0.tgz", - "integrity": "sha512-Bqd/b7hGYGrlV+wP/g77tjyFmp81lh5TMw0be9093X02SyelxRRfCI6/IsGq/J7Um0YwB9s0Ry0wlFyjPdmtUw==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "natural-compare": "^1.4.0", - "nth-check": "^2.1.1", - "postcss-selector-parser": "^6.0.15", - "semver": "^7.6.0", - "vue-eslint-parser": "^9.4.2", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-plugin-vue-pug": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue-pug/-/eslint-plugin-vue-pug-0.6.2.tgz", - "integrity": "sha512-jZt5f8FtRcNncHiWIfZDvzGlu2Y3XLj7OshpH8y2KHtCXjGBsyvUzKayHsFgTf8yN4ZOh8k5uOwMstgY2vUHsA==", - "dev": true, - "dependencies": { - "vue-eslint-parser-template-tokenizer-pug": "^0.4.11" - }, - "peerDependencies": { - "eslint-plugin-vue": "^9.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree/node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz", - "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/geojson-vt": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz", - "integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==" - }, - "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gl-matrix": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", - "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globals/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - }, - "node_modules/immutable": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", - "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", - "dev": true - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-expression": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", - "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "object-assign": "^4.1.1" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/js-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json-stringify-pretty-compact": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-4.0.0.tgz", - "integrity": "sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==" - }, - "node_modules/jstransformer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", - "dev": true, - "dependencies": { - "is-promise": "^2.0.0", - "promise": "^7.0.1" - } - }, - "node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/kdbush": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz", - "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==" - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/magic-string": { - "version": "0.30.8", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", - "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/maplibre-gl": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-4.1.1.tgz", - "integrity": "sha512-DmHru9FTHCOngNHzIx9W2+MlUziYPfPxd2qjyeWwczBYNx2SDpmH394MkuCvSgnfUm5Zvs4NaYCqMu44jUga1Q==", - "dependencies": { - "@mapbox/geojson-rewind": "^0.5.2", - "@mapbox/jsonlint-lines-primitives": "^2.0.2", - "@mapbox/point-geometry": "^0.1.0", - "@mapbox/tiny-sdf": "^2.0.6", - "@mapbox/unitbezier": "^0.0.1", - "@mapbox/vector-tile": "^1.3.1", - "@mapbox/whoots-js": "^3.1.0", - "@maplibre/maplibre-gl-style-spec": "^20.1.1", - "@types/geojson": "^7946.0.14", - "@types/geojson-vt": "3.2.5", - "@types/mapbox__point-geometry": "^0.1.4", - "@types/mapbox__vector-tile": "^1.3.4", - "@types/pbf": "^3.0.5", - "@types/supercluster": "^7.1.3", - "earcut": "^2.2.4", - "geojson-vt": "^3.2.1", - "gl-matrix": "^3.4.3", - "global-prefix": "^3.0.0", - "kdbush": "^4.0.2", - "murmurhash-js": "^1.0.0", - "pbf": "^3.2.1", - "potpack": "^2.0.0", - "quickselect": "^2.0.0", - "supercluster": "^8.0.1", - "tinyqueue": "^2.0.3", - "vt-pbf": "^3.1.3" - }, - "engines": { - "node": ">=16.14.0", - "npm": ">=8.1.0" - }, - "funding": { - "url": "https://github.com/maplibre/maplibre-gl-js?sponsor=1" - } - }, - "node_modules/material-symbols": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/material-symbols/-/material-symbols-0.17.1.tgz", - "integrity": "sha512-1kJan8t3U3Fmuu/YPu2MVsL/ODSja71o+J7ODROQfMaCzzal0izY4SATafEKgXUXU+jL0zIiBQdyzsno7vXBvA==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/muggle-string": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", - "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", - "dev": true - }, - "node_modules/murmurhash-js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz", - "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==" - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pbf": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz", - "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==", - "dependencies": { - "ieee754": "^1.1.12", - "resolve-protobuf-schema": "^2.1.0" - }, - "bin": { - "pbf": "bin/pbf" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", - "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/potpack": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/potpack/-/potpack-2.0.0.tgz", - "integrity": "sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==" - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/primevue": { - "version": "3.50.0", - "resolved": "https://registry.npmjs.org/primevue/-/primevue-3.50.0.tgz", - "integrity": "sha512-vYpQzvIXSmF0hWUkviHEGnwbFY/G8jI2RSxoa75noJloI2rWhzOX+JarJ8iaesVOr7b2se31N/p7zOx6uh3ddQ==", - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "dependencies": { - "asap": "~2.0.3" - } - }, - "node_modules/protocol-buffers-schema": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", - "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==" - }, - "node_modules/pug": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", - "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", - "dev": true, - "dependencies": { - "pug-code-gen": "^3.0.2", - "pug-filters": "^4.0.0", - "pug-lexer": "^5.0.1", - "pug-linker": "^4.0.0", - "pug-load": "^3.0.0", - "pug-parser": "^6.0.0", - "pug-runtime": "^3.0.1", - "pug-strip-comments": "^2.0.0" - } - }, - "node_modules/pug-attrs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", - "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", - "dev": true, - "dependencies": { - "constantinople": "^4.0.1", - "js-stringify": "^1.0.2", - "pug-runtime": "^3.0.0" - } - }, - "node_modules/pug-code-gen": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", - "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", - "dev": true, - "dependencies": { - "constantinople": "^4.0.1", - "doctypes": "^1.1.0", - "js-stringify": "^1.0.2", - "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", - "void-elements": "^3.1.0", - "with": "^7.0.0" - } - }, - "node_modules/pug-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", - "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==", - "dev": true - }, - "node_modules/pug-filters": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", - "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", - "dev": true, - "dependencies": { - "constantinople": "^4.0.1", - "jstransformer": "1.0.0", - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0", - "resolve": "^1.15.1" - } - }, - "node_modules/pug-lexer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", - "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", - "dev": true, - "dependencies": { - "character-parser": "^2.2.0", - "is-expression": "^4.0.0", - "pug-error": "^2.0.0" - } - }, - "node_modules/pug-linker": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", - "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", - "dev": true, - "dependencies": { - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0" - } - }, - "node_modules/pug-load": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", - "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.1", - "pug-walk": "^2.0.0" - } - }, - "node_modules/pug-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", - "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", - "dev": true, - "dependencies": { - "pug-error": "^2.0.0", - "token-stream": "1.0.0" - } - }, - "node_modules/pug-runtime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", - "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", - "dev": true - }, - "node_modules/pug-strip-comments": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", - "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", - "dev": true, - "dependencies": { - "pug-error": "^2.0.0" - } - }, - "node_modules/pug-walk": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", - "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quickselect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", - "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-protobuf-schema": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", - "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", - "dependencies": { - "protocol-buffers-schema": "^3.3.1" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz", - "integrity": "sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==", - "dev": true, - "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.13.0", - "@rollup/rollup-android-arm64": "4.13.0", - "@rollup/rollup-darwin-arm64": "4.13.0", - "@rollup/rollup-darwin-x64": "4.13.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.13.0", - "@rollup/rollup-linux-arm64-gnu": "4.13.0", - "@rollup/rollup-linux-arm64-musl": "4.13.0", - "@rollup/rollup-linux-riscv64-gnu": "4.13.0", - "@rollup/rollup-linux-x64-gnu": "4.13.0", - "@rollup/rollup-linux-x64-musl": "4.13.0", - "@rollup/rollup-win32-arm64-msvc": "4.13.0", - "@rollup/rollup-win32-ia32-msvc": "4.13.0", - "@rollup/rollup-win32-x64-msvc": "4.13.0", - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/sass": { - "version": "1.72.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.72.0.tgz", - "integrity": "sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA==", - "dev": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-function-length": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", - "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.1", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.2", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sort-asc": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.2.0.tgz", - "integrity": "sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sort-desc": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.2.0.tgz", - "integrity": "sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sort-object": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-3.0.3.tgz", - "integrity": "sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ==", - "dependencies": { - "bytewise": "^1.1.0", - "get-value": "^2.0.2", - "is-extendable": "^0.1.1", - "sort-asc": "^0.2.0", - "sort-desc": "^0.2.0", - "union-value": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supercluster": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz", - "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==", - "dependencies": { - "kdbush": "^4.0.2" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/tinyqueue": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", - "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==" - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/token-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", - "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", - "dev": true - }, - "node_modules/ts-api-utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", - "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", - "dev": true, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/typescript": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz", - "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==", - "devOptional": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typewise": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz", - "integrity": "sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==", - "dependencies": { - "typewise-core": "^1.2.0" - } - }, - "node_modules/typewise-core": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz", - "integrity": "sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==" - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/vite": { - "version": "5.2.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.6.tgz", - "integrity": "sha512-FPtnxFlSIKYjZ2eosBQamz4CbyrTizbZ3hnGJlh/wMtCrlp1Hah6AzBLjGI5I2urTfNnpovpHdrL6YRuBOPnCA==", - "dev": true, - "dependencies": { - "esbuild": "^0.20.1", - "postcss": "^8.4.36", - "rollup": "^4.13.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/void-elements": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", - "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/volar-service-html": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.34.tgz", - "integrity": "sha512-kMEneea1tQbiRcyKavqdrSVt8zV06t+0/3pGkjO3gV6sikXTNShIDkdtB4Tq9vE2cQdM50TuS7utVV7iysUxHw==", - "dev": true, - "dependencies": { - "vscode-html-languageservice": "^5.1.0", - "vscode-languageserver-textdocument": "^1.0.11", - "vscode-uri": "^3.0.8" - }, - "peerDependencies": { - "@volar/language-service": "~2.1.0" - }, - "peerDependenciesMeta": { - "@volar/language-service": { - "optional": true - } - } - }, - "node_modules/volar-service-pug": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/volar-service-pug/-/volar-service-pug-0.0.34.tgz", - "integrity": "sha512-h0DSnQXkvweXKaBmCYJaDbmmsatp9KIxsTxZD0SVKFyVixHSUjrVJP6eu9o3pGuDNIy2135XBNryUP/Lv7/3oA==", - "dev": true, - "dependencies": { - "@volar/language-service": "~2.1.0", - "pug-lexer": "^5.0.1", - "pug-parser": "^6.0.0", - "volar-service-html": "0.0.34", - "vscode-html-languageservice": "^5.1.0", - "vscode-languageserver-textdocument": "^1.0.11" - } - }, - "node_modules/vscode-html-languageservice": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.2.0.tgz", - "integrity": "sha512-cdNMhyw57/SQzgUUGSIMQ66jikqEN6nBNyhx5YuOyj9310+eY9zw8Q0cXpiKzDX8aHYFewQEXRnigl06j/TVwQ==", - "dev": true, - "dependencies": { - "@vscode/l10n": "^0.0.18", - "vscode-languageserver-textdocument": "^1.0.11", - "vscode-languageserver-types": "^3.17.5", - "vscode-uri": "^3.0.8" - } - }, - "node_modules/vscode-jsonrpc": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", - "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", - "dev": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", - "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", - "dev": true, - "dependencies": { - "vscode-jsonrpc": "8.2.0", - "vscode-languageserver-types": "3.17.5" - } - }, - "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz", - "integrity": "sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==", - "dev": true - }, - "node_modules/vscode-languageserver-types": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", - "dev": true - }, - "node_modules/vscode-uri": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", - "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", - "dev": true - }, - "node_modules/vt-pbf": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz", - "integrity": "sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==", - "dependencies": { - "@mapbox/point-geometry": "0.1.0", - "@mapbox/vector-tile": "^1.3.1", - "pbf": "^3.2.1" - } - }, - "node_modules/vue": { - "version": "3.4.21", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.21.tgz", - "integrity": "sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==", - "dependencies": { - "@vue/compiler-dom": "3.4.21", - "@vue/compiler-sfc": "3.4.21", - "@vue/runtime-dom": "3.4.21", - "@vue/server-renderer": "3.4.21", - "@vue/shared": "3.4.21" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/vue-eslint-parser": { - "version": "9.4.2", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz", - "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.6" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/vue-eslint-parser-template-tokenizer-pug": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/vue-eslint-parser-template-tokenizer-pug/-/vue-eslint-parser-template-tokenizer-pug-0.4.11.tgz", - "integrity": "sha512-fZ+KprCfIuk2Nt1aBUa0k3dpHyKj5D1oRx0H+GRA1GsqTg5f5lJpto7n6crwDeSIQWsn/1zBb+6b3d3b7n/AVQ==", - "dev": true, - "dependencies": { - "pug-lexer": "^5.0.1" - }, - "peerDependencies": { - "vue-eslint-parser": "^9.0.0" - } - }, - "node_modules/vue-template-compiler": { - "version": "2.7.16", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", - "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", - "dev": true, - "dependencies": { - "de-indent": "^1.0.2", - "he": "^1.2.0" - } - }, - "node_modules/vue-tsc": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.7.tgz", - "integrity": "sha512-LYa0nInkfcDBB7y8jQ9FQ4riJTRNTdh98zK/hzt4gEpBZQmf30dPhP+odzCa+cedGz6B/guvJEd0BavZaRptjg==", - "dev": true, - "dependencies": { - "@volar/typescript": "~2.1.3", - "@vue/language-core": "2.0.7", - "semver": "^7.5.4" - }, - "bin": { - "vue-tsc": "bin/vue-tsc.js" - }, - "peerDependencies": { - "typescript": "*" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/with": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", - "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "assert-never": "^1.2.1", - "babel-walk": "3.0.0-canary-5" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/package.json b/package.json index f88206a..ebad482 100644 --- a/package.json +++ b/package.json @@ -1,55 +1,52 @@ { "name": "trem-tauri", "private": true, - "version": "0.0.0-alpha.4", + "version": "0.1.0", "type": "module", "scripts": { - "dev": "vite", - "build": "vue-tsc --noEmit && vite build", - "preview": "vite preview", + "dev": "nuxt dev", + "build": "nuxt generate", + "preview": "nuxt preview", "tauri": "tauri", "lint": "eslint ./src --ext .ts,.vue --fix", "prettier": "prettier --write ./src" }, "dependencies": { - "@fontsource/lato": "^5.0.20", - "@fontsource/noto-sans-tc": "^5.0.18", - "@fontsource/open-sans": "^5.0.27", - "@tauri-apps/api": "^2.0.0-beta.6", - "@tauri-apps/plugin-autostart": "^2.0.0-beta.2", - "@tauri-apps/plugin-cli": "^2.0.0-beta.2", - "@tauri-apps/plugin-clipboard-manager": "^2.1.0-beta.0", - "@tauri-apps/plugin-fs": "^2.0.0-beta.2", - "@tauri-apps/plugin-http": "^2.0.0-beta.2", - "@tauri-apps/plugin-log": "^2.0.0-beta.2", - "@tauri-apps/plugin-shell": "^2.0.0-beta.2", + "@kamiya4047/exptech-api-wrapper": "3.1.4", + "@material/material-color-utilities": "^0.3.0", + "@nuxtjs/tailwindcss": "^6.12.1", + "@pinia/nuxt": "^0.5.2", + "@primevue/themes": "^4.0.2", + "@tauri-apps/api": "2.0.0-beta.16", + "@tauri-apps/plugin-fs": "2.0.0-beta.7", + "@tauri-apps/plugin-http": "2.0.0-beta.8", + "@tauri-apps/plugin-os": "2.0.0-beta.7", + "@tauri-apps/plugin-shell": "2.0.0-beta.8", + "@tauri-apps/plugin-stronghold": "^2.0.0-beta.7", + "@tauri-apps/plugin-websocket": "2.0.0-beta.7", + "@turf/turf": "^7.0.0", "chroma-js": "^2.4.2", - "events": "^3.3.0", "jszip": "^3.10.1", - "maplibre-gl": "^4.1.1", - "material-symbols": "^0.17.1", - "primevue": "^3.50.0", - "vue": "^3.4.21", - "ws": "^8.16.0" + "maplibre-gl": "^4.5.0", + "material-symbols": "^0.21.2", + "nuxt": "^3.12.4", + "pinia": "^2.2.0", + "primevue": "^4.0.2", + "tailwindcss-primeui": "^0.3.4", + "vue": "^3.4.34", + "vue-router": "^4.4.0" }, "devDependencies": { - "@tauri-apps/cli": "^2.0.0-beta.11", + "@primevue/nuxt-module": "^4.0.2", + "@tauri-apps/cli": "2.0.0-beta.23", "@types/chroma-js": "^2.4.4", - "@types/events": "^3.0.3", - "@types/ws": "^8.5.10", - "@typescript-eslint/eslint-plugin": "^7.3.1", - "@typescript-eslint/parser": "^7.3.1", - "@vitejs/plugin-vue": "^5.0.4", - "@vue/language-plugin-pug": "^2.0.7", - "eslint": "^8.57.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-vue": "^9.23.0", - "eslint-plugin-vue-pug": "^0.6.2", - "prettier": "^3.2.5", - "pug": "^3.0.2", - "sass": "^1.72.0", - "typescript": "^5.4.3", - "vite": "^5.2.6", - "vue-tsc": "^2.0.7" + "@types/node": "^22.0.0", + "@vitejs/plugin-vue": "^5.1.1", + "autoprefixer": "^10.4.19", + "postcss": "^8.4.40", + "tailwindcss": "^3.4.7", + "typescript": "^5.5.4", + "vite": "^5.3.5", + "vue-tsc": "^2.0.29" } } diff --git a/public/audio/cancel.wav b/public/audio/cancel.wav deleted file mode 100644 index 1a395c7..0000000 Binary files a/public/audio/cancel.wav and /dev/null differ diff --git a/public/audio/report.mp3 b/public/audio/report.mp3 deleted file mode 100644 index 0449265..0000000 Binary files a/public/audio/report.mp3 and /dev/null differ diff --git a/public/audio/trem_default/eew.wav b/public/audio/trem_default/eew.wav deleted file mode 100644 index 6847209..0000000 Binary files a/public/audio/trem_default/eew.wav and /dev/null differ diff --git a/public/audio/trem_default/number-report.wav b/public/audio/trem_default/number-report.wav deleted file mode 100644 index bb116df..0000000 Binary files a/public/audio/trem_default/number-report.wav and /dev/null differ diff --git a/public/audio/trem_default/report.wav b/public/audio/trem_default/report.wav deleted file mode 100644 index eb1f25e..0000000 Binary files a/public/audio/trem_default/report.wav and /dev/null differ diff --git a/public/audio/trem_default/update.wav b/public/audio/trem_default/update.wav deleted file mode 100644 index 755c277..0000000 Binary files a/public/audio/trem_default/update.wav and /dev/null differ diff --git a/public/map/tw_county.json b/public/map/tw_county.json deleted file mode 100644 index 43da4b4..0000000 --- a/public/map/tw_county.json +++ /dev/null @@ -1,24 +0,0 @@ -{"type":"FeatureCollection", "features": [ -{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[119.9848,25.9644],[119.9887,25.9688],[119.9862,25.9706],[119.982,25.969],[119.9799,25.9664],[119.9746,25.9685],[119.9719,25.967],[119.9697,25.9606],[119.9659,25.9583],[119.9627,25.9524],[119.962,25.9494],[119.9649,25.9492],[119.9712,25.9555],[119.975,25.9539],[119.9783,25.959],[119.9849,25.9625],[119.9848,25.9644]]],[[[119.9667,25.9744],[119.9662,25.9749],[119.9662,25.975],[119.9661,25.975],[119.9654,25.9744],[119.9652,25.9743],[119.9667,25.9744]]],[[[119.9664,25.9759],[119.966,25.9758],[119.9663,25.9752],[119.9663,25.9753],[119.9664,25.9754],[119.9665,25.9756],[119.9664,25.9754],[119.9665,25.9756],[119.9664,25.9759]]],[[[119.9759,25.9759],[119.9756,25.9758],[119.9756,25.9757],[119.9756,25.9758],[119.9756,25.9757],[119.9753,25.9757],[119.9753,25.9756],[119.9746,25.9748],[119.9745,25.9748],[119.9746,25.9748],[119.9745,25.9748],[119.9744,25.9729],[119.9744,25.9728],[119.9744,25.9729],[119.9744,25.9728],[119.9765,25.9729],[119.9765,25.973],[119.9765,25.9729],[119.9765,25.973],[119.9766,25.9733],[119.9766,25.9734],[119.9766,25.9733],[119.9766,25.9734],[119.9766,25.9735],[119.9767,25.9735],[119.9766,25.9735],[119.9767,25.9735],[119.9774,25.9749],[119.9773,25.9749],[119.9774,25.9749],[119.9773,25.9749],[119.9765,25.9752],[119.9764,25.9753],[119.9759,25.9754],[119.976,25.9754],[119.9759,25.9754],[119.976,25.9754],[119.976,25.9756],[119.9759,25.9756],[119.976,25.9756],[119.9759,25.9756],[119.976,25.9759],[119.9759,25.9759]]],[[[119.976,25.9761],[119.9759,25.9759],[119.976,25.9759],[119.976,25.976],[119.976,25.9761],[119.976,25.976],[119.976,25.9761]]],[[[119.9761,25.9766],[119.976,25.9762],[119.976,25.9761],[119.976,25.9762],[119.9768,25.9765],[119.9767,25.9765],[119.9768,25.9765],[119.9767,25.9765],[119.9767,25.9766],[119.9767,25.9765],[119.9767,25.9766],[119.9763,25.9765],[119.9763,25.9766],[119.9763,25.9765],[119.9762,25.9766],[119.9763,25.9766],[119.9762,25.9766],[119.9761,25.9766],[119.9762,25.9766],[119.9761,25.9766]]],[[[119.9446,25.9821],[119.9374,25.9818],[119.9334,25.98],[119.9317,25.9816],[119.9269,25.9816],[119.9241,25.9794],[119.9289,25.9725],[119.9332,25.9701],[119.935,25.9677],[119.9372,25.972],[119.9397,25.974],[119.9419,25.9729],[119.9477,25.9781],[119.9484,25.9811],[119.9446,25.9821]]],[[[119.9619,26.0862],[119.9618,26.0861],[119.9619,26.0861],[119.9619,26.0862],[119.9619,26.0861],[119.9619,26.0862]]],[[[119.9628,26.0862],[119.9627,26.0862],[119.9621,26.0861],[119.9619,26.0861],[119.9618,26.0861],[119.9616,26.0849],[119.9628,26.0852],[119.9628,26.0862],[119.9627,26.0862],[119.9628,26.0862]]],[[[119.9653,26.0918],[119.9652,26.0918],[119.9653,26.0917],[119.9653,26.0918]]],[[[119.9649,26.1449],[119.9646,26.1445],[119.9646,26.1444],[119.9646,26.1445],[119.9646,26.1444],[119.9647,26.1443],[119.9647,26.1442],[119.9647,26.1443],[119.9648,26.1443],[119.9648,26.1444],[119.9648,26.1443],[119.9648,26.1444],[119.9651,26.1444],[119.9652,26.1445],[119.9651,26.1444],[119.9652,26.1445],[119.965,26.1448],[119.965,26.1449],[119.9649,26.1449],[119.965,26.1449],[119.965,26.1448],[119.9649,26.1449]]],[[[119.9705,26.1617],[119.9735,26.1654],[119.9707,26.1672],[119.9705,26.1617]]],[[[119.922,26.1722],[119.9194,26.1748],[119.9165,26.1744],[119.9156,26.1724],[119.917,26.1678],[119.9189,26.1671],[119.9174,26.1625],[119.9136,26.161],[119.9177,26.1579],[119.9151,26.1532],[119.9105,26.1494],[119.9089,26.1453],[119.913,26.1453],[119.9135,26.1427],[119.9174,26.1415],[119.9235,26.142],[119.9233,26.1382],[119.9292,26.1406],[119.9318,26.1438],[119.937,26.146],[119.938,26.1429],[119.942,26.1433],[119.9439,26.1457],[119.9481,26.1484],[119.9484,26.1521],[119.9519,26.1535],[119.955,26.1506],[119.9583,26.1548],[119.9595,26.1576],[119.9622,26.1584],[119.9628,26.1632],[119.9652,26.1665],[119.9601,26.1684],[119.953,26.1676],[119.9511,26.1682],[119.9442,26.165],[119.9395,26.1658],[119.9401,26.1621],[119.9419,26.1589],[119.9358,26.1542],[119.9358,26.1585],[119.9311,26.1581],[119.9289,26.1604],[119.9242,26.1616],[119.9238,26.1646],[119.9277,26.1696],[119.928,26.1717],[119.922,26.1722]]],[[[119.9731,26.1946],[119.9736,26.1976],[119.9717,26.1998],[119.9729,26.2015],[119.9726,26.2118],[119.9756,26.2151],[119.9819,26.2169],[119.9838,26.2187],[119.9873,26.2187],[119.9896,26.2172],[119.9929,26.2184],[119.9972,26.2184],[119.9979,26.2223],[120.0065,26.2226],[120.0076,26.2193],[120.0145,26.2235],[120.0154,26.2268],[120.0141,26.2285],[120.0106,26.2285],[120.0066,26.2266],[120.0057,26.2233],[120.0034,26.2238],[120.0065,26.2278],[120.0054,26.23],[120.0064,26.2341],[120.0012,26.2341],[120.0001,26.238],[119.9958,26.2382],[119.9931,26.2364],[119.9933,26.234],[119.9885,26.2309],[119.9843,26.2257],[119.9825,26.2247],[119.9786,26.226],[119.9712,26.2208],[119.9685,26.2207],[119.9685,26.2157],[119.9711,26.2127],[119.9656,26.2048],[119.9666,26.2036],[119.9659,26.1996],[119.9664,26.194],[119.9707,26.1952],[119.9731,26.1946]]],[[[120.0032,26.2457],[120.005,26.2471],[120.0062,26.2509],[120.0039,26.2513],[120.0008,26.2485],[119.9982,26.2495],[119.9953,26.2433],[119.9984,26.2429],[120.0032,26.2457]]],[[[119.99,26.282],[119.9868,26.2801],[119.984,26.2771],[119.9829,26.2734],[119.98,26.2724],[119.9789,26.2694],[119.9827,26.2663],[119.9859,26.2665],[119.9904,26.2697],[119.9888,26.273],[119.9922,26.2749],[119.9888,26.2796],[119.9903,26.2821],[119.99,26.282]]],[[[120.2272,26.3438],[120.2272,26.3443],[120.2271,26.344],[120.2272,26.3438]]],[[[120.2272,26.3443],[120.2252,26.345],[120.2228,26.3419],[120.22,26.3412],[120.218,26.3373],[120.2202,26.3369],[120.2241,26.3398],[120.2271,26.344],[120.2272,26.3443]]],[[[120.4796,26.3829],[120.4743,26.3835],[120.4747,26.3797],[120.4703,26.3781],[120.4706,26.3745],[120.4772,26.3788],[120.4777,26.3738],[120.4773,26.3689],[120.481,26.3708],[120.4853,26.369],[120.4854,26.3655],[120.4832,26.3606],[120.4911,26.3581],[120.4946,26.3581],[120.4961,26.3611],[120.4985,26.3618],[120.5009,26.3651],[120.5008,26.3675],[120.503,26.3688],[120.5049,26.3655],[120.5091,26.3647],[120.5108,26.3678],[120.5058,26.373],[120.5032,26.3711],[120.5013,26.3732],[120.4985,26.3729],[120.5005,26.3776],[120.4955,26.3786],[120.4922,26.3746],[120.492,26.3706],[120.4875,26.3715],[120.4852,26.3698],[120.4816,26.3712],[120.4834,26.3772],[120.4823,26.3807],[120.4796,26.3829]]]]},"properties":{"COUNTYID":"Z","COUNTYCODE":"09007","COUNTYNAME":"連江縣","COUNTYENG":"Lienchiang County"}}, -{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[121.9597,24.8449],[121.9598,24.847],[121.9562,24.8507],[121.9495,24.8518],[121.9475,24.8513],[121.9433,24.8446],[121.9417,24.8443],[121.9361,24.847],[121.9342,24.8456],[121.9383,24.8424],[121.9402,24.8386],[121.9457,24.8355],[121.9571,24.8368],[121.9615,24.8353],[121.9651,24.839],[121.9649,24.8405],[121.9603,24.843],[121.9597,24.8449]]],[[[121.966,24.9831],[121.9628,24.9878],[121.9596,24.9883],[121.9502,24.9883],[121.9481,24.9867],[121.9446,24.9882],[121.9429,24.9863],[121.9385,24.9848],[121.9375,24.983],[121.9344,24.9831],[121.9336,24.9809],[121.9286,24.9797],[121.9162,24.9795],[121.912,24.978],[121.91,24.9748],[121.9068,24.9756],[121.9054,24.9734],[121.9026,24.9742],[121.8971,24.967],[121.8896,24.9648],[121.8824,24.9642],[121.8763,24.9616],[121.8715,24.9607],[121.8612,24.9637],[121.8581,24.9632],[121.8517,24.9599],[121.8469,24.9603],[121.8414,24.9543],[121.8418,24.9514],[121.839,24.9446],[121.8424,24.9394],[121.8466,24.9379],[121.8491,24.9303],[121.8539,24.9278],[121.8538,24.9253],[121.8455,24.9193],[121.8434,24.9154],[121.8395,24.9127],[121.8379,24.9099],[121.8319,24.9049],[121.828,24.9054],[121.8224,24.9046],[121.8183,24.9027],[121.8117,24.9065],[121.8105,24.9036],[121.8022,24.901],[121.7964,24.9012],[121.792,24.8999],[121.7923,24.8956],[121.7898,24.8933],[121.7859,24.8926],[121.7858,24.8908],[121.7817,24.8895],[121.7822,24.8792],[121.7848,24.8764],[121.7832,24.8742],[121.7789,24.8713],[121.7752,24.8668],[121.7755,24.8651],[121.771,24.8649],[121.7692,24.8659],[121.7644,24.8599],[121.7604,24.8568],[121.7536,24.8561],[121.7508,24.8545],[121.748,24.855],[121.7456,24.8528],[121.7418,24.8525],[121.7385,24.8552],[121.7326,24.8558],[121.7273,24.8533],[121.7251,24.8507],[121.7222,24.85],[121.7185,24.8456],[121.7153,24.844],[121.7137,24.8416],[121.709,24.8406],[121.7021,24.8345],[121.6969,24.8346],[121.6964,24.8303],[121.6922,24.8272],[121.6887,24.8261],[121.6898,24.8226],[121.6893,24.8172],[121.6806,24.8175],[121.6772,24.8141],[121.6742,24.8141],[121.669,24.818],[121.663,24.8126],[121.6596,24.811],[121.6534,24.8112],[121.6474,24.814],[121.6461,24.8101],[121.644,24.8093],[121.6388,24.8107],[121.6376,24.8096],[121.6314,24.8092],[121.6282,24.8079],[121.6248,24.8012],[121.6258,24.7953],[121.6206,24.7925],[121.6168,24.7939],[121.6135,24.7932],[121.6096,24.7938],[121.6056,24.7891],[121.6029,24.7894],[121.599,24.7877],[121.5937,24.7873],[121.5932,24.7823],[121.5976,24.7726],[121.5955,24.7691],[121.5963,24.767],[121.591,24.7618],[121.5908,24.7587],[121.589,24.7552],[121.5903,24.7512],[121.5946,24.7502],[121.5947,24.7464],[121.5917,24.7451],[121.5919,24.7433],[121.5951,24.7405],[121.5942,24.7355],[121.595,24.7325],[121.5942,24.7292],[121.5976,24.7278],[121.5907,24.7237],[121.5877,24.7203],[121.5832,24.7206],[121.5791,24.7225],[121.5776,24.7212],[121.5773,24.7149],[121.5746,24.71],[121.572,24.7107],[121.571,24.7132],[121.5675,24.7115],[121.5623,24.7128],[121.5581,24.7109],[121.5565,24.7113],[121.5543,24.7082],[121.5498,24.7057],[121.5437,24.7058],[121.5381,24.7003],[121.5389,24.6949],[121.5366,24.6883],[121.5291,24.6876],[121.5238,24.6833],[121.5148,24.6832],[121.5137,24.6843],[121.5072,24.6823],[121.5049,24.6794],[121.5003,24.6786],[121.493,24.6732],[121.4869,24.6752],[121.4847,24.6738],[121.48,24.6739],[121.4722,24.6731],[121.4692,24.6718],[121.4598,24.6733],[121.455,24.6679],[121.4539,24.6644],[121.4497,24.6623],[121.4477,24.6584],[121.4488,24.6532],[121.4513,24.6517],[121.4488,24.646],[121.4454,24.6438],[121.4456,24.6391],[121.4447,24.6369],[121.4404,24.635],[121.4348,24.6245],[121.4357,24.6213],[121.4335,24.6188],[121.4329,24.6162],[121.4306,24.6145],[121.4276,24.6057],[121.4226,24.6022],[121.4183,24.601],[121.4158,24.6023],[121.4089,24.5994],[121.403,24.5917],[121.4035,24.5897],[121.4093,24.5811],[121.4121,24.5749],[121.4122,24.5731],[121.4071,24.5698],[121.4039,24.569],[121.4012,24.5645],[121.4014,24.5622],[121.3976,24.5597],[121.3947,24.5556],[121.3954,24.553],[121.3983,24.5494],[121.3987,24.547],[121.3967,24.5398],[121.3985,24.5363],[121.3989,24.5324],[121.4016,24.5291],[121.3975,24.5247],[121.3933,24.5246],[121.3907,24.5232],[121.3885,24.5178],[121.3853,24.5171],[121.3853,24.5134],[121.3836,24.5102],[121.3793,24.5095],[121.3733,24.5099],[121.3719,24.4996],[121.3709,24.498],[121.365,24.4959],[121.3617,24.4905],[121.3575,24.4864],[121.3507,24.4843],[121.3463,24.4847],[121.3428,24.4823],[121.3401,24.4749],[121.3356,24.4715],[121.3362,24.4678],[121.3299,24.4643],[121.3233,24.4558],[121.3177,24.4415],[121.3206,24.4411],[121.3283,24.4335],[121.3277,24.4306],[121.3287,24.4274],[121.3274,24.4215],[121.3274,24.4127],[121.325,24.4069],[121.3261,24.4006],[121.3279,24.3983],[121.3311,24.3985],[121.3383,24.3902],[121.3426,24.3928],[121.3553,24.3931],[121.3594,24.3904],[121.3647,24.3892],[121.3688,24.3849],[121.3698,24.3821],[121.3671,24.3787],[121.3693,24.3725],[121.3738,24.368],[121.3774,24.3684],[121.3804,24.367],[121.3879,24.37],[121.3902,24.3753],[121.3932,24.3753],[121.3958,24.378],[121.3983,24.3778],[121.4019,24.3796],[121.4041,24.3778],[121.4085,24.3781],[121.4132,24.3798],[121.4196,24.3792],[121.4233,24.3814],[121.4294,24.3831],[121.4378,24.3829],[121.4429,24.3732],[121.448,24.3748],[121.4487,24.3715],[121.452,24.3647],[121.4543,24.3636],[121.461,24.358],[121.4654,24.3553],[121.4758,24.3513],[121.4783,24.352],[121.4814,24.3489],[121.4854,24.3485],[121.4922,24.3421],[121.4981,24.3392],[121.4998,24.3395],[121.5037,24.3427],[121.5073,24.3433],[121.5099,24.3411],[121.518,24.341],[121.5204,24.3426],[121.5253,24.3424],[121.5281,24.3389],[121.533,24.3371],[121.5366,24.3371],[121.5405,24.3359],[121.5442,24.3378],[121.5465,24.3373],[121.5507,24.3342],[121.5561,24.3312],[121.5583,24.3249],[121.5601,24.3226],[121.5635,24.3221],[121.5666,24.3191],[121.5696,24.3179],[121.5758,24.3197],[121.5785,24.3181],[121.5819,24.3179],[121.5873,24.3162],[121.5894,24.3138],[121.5936,24.3164],[121.5972,24.3163],[121.6012,24.3147],[121.6051,24.3107],[121.607,24.313],[121.6051,24.3154],[121.6045,24.3184],[121.6012,24.3204],[121.6014,24.3231],[121.5966,24.3281],[121.5957,24.3316],[121.5994,24.3334],[121.6005,24.3311],[121.6039,24.329],[121.6066,24.3303],[121.6075,24.3351],[121.6126,24.3358],[121.6152,24.3333],[121.6186,24.3346],[121.6161,24.3374],[121.6165,24.3406],[121.6186,24.3453],[121.6205,24.3451],[121.6229,24.3394],[121.6275,24.3411],[121.6281,24.3386],[121.6266,24.3363],[121.6289,24.3335],[121.6332,24.3357],[121.6318,24.3445],[121.6358,24.3453],[121.6351,24.3484],[121.63,24.3484],[121.6268,24.3495],[121.6271,24.3536],[121.6212,24.358],[121.6236,24.3619],[121.6204,24.3628],[121.6217,24.3666],[121.6267,24.3694],[121.6309,24.3706],[121.6309,24.3661],[121.6343,24.3666],[121.6348,24.364],[121.6384,24.3622],[121.6401,24.3577],[121.6436,24.3538],[121.6487,24.3495],[121.6507,24.3509],[121.6501,24.3546],[121.648,24.3582],[121.6511,24.3596],[121.6536,24.3563],[121.6533,24.3529],[121.6566,24.3533],[121.6596,24.3511],[121.6634,24.3524],[121.6638,24.3494],[121.6675,24.3462],[121.6701,24.3428],[121.6733,24.3438],[121.6735,24.3398],[121.6768,24.3375],[121.684,24.3408],[121.6867,24.3394],[121.6873,24.3346],[121.6897,24.3336],[121.6936,24.3349],[121.6973,24.3343],[121.7047,24.3298],[121.7133,24.3269],[121.723,24.3255],[121.7279,24.326],[121.735,24.3231],[121.74,24.3236],[121.7447,24.3229],[121.7556,24.3161],[121.7598,24.314],[121.7699,24.3131],[121.7741,24.3153],[121.774,24.3196],[121.7709,24.3326],[121.7716,24.3376],[121.7736,24.3437],[121.778,24.3523],[121.7786,24.356],[121.7823,24.3616],[121.7837,24.3665],[121.787,24.3725],[121.7885,24.3881],[121.789,24.3975],[121.7911,24.4082],[121.7939,24.4163],[121.7987,24.428],[121.8019,24.4343],[121.8078,24.4398],[121.8108,24.4415],[121.8172,24.4502],[121.8218,24.4557],[121.8202,24.4582],[121.8204,24.4614],[121.8247,24.4646],[121.8326,24.4674],[121.8342,24.4696],[121.8439,24.4769],[121.8461,24.4769],[121.8487,24.4791],[121.8554,24.4806],[121.8597,24.4786],[121.8624,24.4812],[121.8592,24.4839],[121.853,24.4836],[121.8507,24.4848],[121.8497,24.4926],[121.851,24.4941],[121.845,24.4973],[121.8402,24.498],[121.8385,24.5009],[121.8383,24.5085],[121.8396,24.5155],[121.8419,24.5203],[121.845,24.5217],[121.8496,24.5221],[121.8563,24.5239],[121.8609,24.5272],[121.8678,24.5276],[121.8726,24.5311],[121.8737,24.5342],[121.8724,24.542],[121.8741,24.5456],[121.8712,24.5524],[121.8707,24.5593],[121.8712,24.5639],[121.8692,24.5713],[121.8698,24.5761],[121.877,24.5781],[121.8776,24.5798],[121.8726,24.5853],[121.8752,24.5858],[121.8792,24.591],[121.8734,24.5966],[121.8836,24.6014],[121.8802,24.6058],[121.8753,24.6056],[121.8729,24.6089],[121.8692,24.6087],[121.8661,24.6099],[121.8591,24.6163],[121.8554,24.6219],[121.8512,24.6299],[121.845,24.6449],[121.8405,24.66],[121.8382,24.672],[121.8384,24.6819],[121.8373,24.6898],[121.8363,24.7084],[121.8366,24.7107],[121.8395,24.7159],[121.8383,24.7181],[121.8327,24.72],[121.8279,24.7286],[121.8248,24.7355],[121.8209,24.7479],[121.8184,24.7649],[121.818,24.7738],[121.8182,24.7863],[121.819,24.7976],[121.8202,24.8071],[121.8224,24.8201],[121.8243,24.829],[121.8292,24.8468],[121.8306,24.8505],[121.8427,24.8762],[121.8481,24.8843],[121.8508,24.8864],[121.8514,24.8901],[121.8605,24.8945],[121.8639,24.8984],[121.8659,24.902],[121.8718,24.9049],[121.8743,24.9071],[121.8796,24.9134],[121.8821,24.9147],[121.8854,24.9189],[121.8854,24.9232],[121.8869,24.925],[121.8869,24.9292],[121.8879,24.9351],[121.8891,24.937],[121.8949,24.9407],[121.9009,24.9399],[121.9048,24.942],[121.9054,24.9466],[121.9113,24.9507],[121.9163,24.9519],[121.9206,24.9558],[121.92,24.9584],[121.9256,24.9686],[121.9315,24.9718],[121.9381,24.9737],[121.9412,24.9733],[121.9443,24.9768],[121.9486,24.9789],[121.9545,24.98],[121.9583,24.9826],[121.9622,24.9818],[121.966,24.9831]]],[[[123.5558,25.7214],[123.5537,25.7245],[123.5498,25.7259],[123.5453,25.7246],[123.5453,25.7225],[123.5529,25.7203],[123.5558,25.7214]]],[[[123.5448,25.7292],[123.5414,25.7338],[123.5385,25.7315],[123.5415,25.7272],[123.5442,25.7259],[123.545,25.7292],[123.5448,25.7292]]],[[[123.4906,25.7406],[123.4905,25.7407],[123.4905,25.7405],[123.4906,25.7405],[123.4906,25.7406]]],[[[123.4837,25.7406],[123.4893,25.7403],[123.494,25.7423],[123.4938,25.7442],[123.4872,25.7496],[123.4805,25.7501],[123.4776,25.7518],[123.4708,25.7506],[123.4651,25.748],[123.4595,25.7438],[123.4579,25.7408],[123.4583,25.7376],[123.4622,25.7348],[123.4734,25.7385],[123.477,25.7412],[123.4837,25.7406],[123.4837,25.7405],[123.4837,25.7406]]],[[[124.5564,25.9218],[124.5565,25.9216],[124.5565,25.9217],[124.5564,25.9218],[124.5565,25.9218],[124.5564,25.9218]]],[[[124.5596,25.9233],[124.5567,25.9222],[124.5565,25.9219],[124.5565,25.9218],[124.5565,25.9217],[124.5565,25.9216],[124.5596,25.9233]]],[[[123.6875,25.9241],[123.6835,25.9286],[123.6804,25.9288],[123.6764,25.9242],[123.6784,25.9205],[123.6814,25.9193],[123.6873,25.9204],[123.6875,25.9241]]]]},"properties":{"COUNTYID":"G","COUNTYCODE":"10002","COUNTYNAME":"宜蘭縣","COUNTYENG":"Yilan County"}}, -{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[120.4566,24.2072],[120.4538,24.2041],[120.4507,24.1979],[120.4471,24.1943],[120.4449,24.1901],[120.4392,24.1857],[120.4327,24.1867],[120.4297,24.1845],[120.4247,24.1833],[120.4262,24.1797],[120.4234,24.1761],[120.4183,24.1737],[120.4161,24.1695],[120.416,24.166],[120.4139,24.1572],[120.4104,24.1567],[120.4082,24.1543],[120.4128,24.1522],[120.4102,24.1476],[120.409,24.1427],[120.4071,24.1396],[120.4026,24.1387],[120.4,24.1353],[120.4,24.1317],[120.4012,24.1299],[120.3973,24.1211],[120.3968,24.1175],[120.3825,24.0984],[120.3863,24.097],[120.3842,24.0877],[120.3754,24.083],[120.3708,24.0817],[120.3634,24.0809],[120.3612,24.0763],[120.3592,24.0743],[120.3502,24.0714],[120.3453,24.0668],[120.3421,24.0601],[120.3417,24.0566],[120.3425,24.0532],[120.3414,24.0396],[120.3404,24.0351],[120.3374,24.0298],[120.3361,24.0179],[120.3341,24.0139],[120.3299,24.0115],[120.3224,24.0054],[120.3165,23.9992],[120.3119,23.9898],[120.3087,23.9871],[120.3084,23.9753],[120.3077,23.9731],[120.2987,23.9664],[120.2918,23.9605],[120.2903,23.9582],[120.284,23.9558],[120.2816,23.9525],[120.2803,23.9484],[120.2816,23.9435],[120.2795,23.9349],[120.2755,23.9321],[120.2691,23.9306],[120.2652,23.9237],[120.261,23.9197],[120.2609,23.915],[120.2562,23.9079],[120.2556,23.9034],[120.2577,23.8993],[120.2552,23.8942],[120.2471,23.8884],[120.2395,23.8877],[120.2353,23.8853],[120.2307,23.8806],[120.2261,23.8769],[120.2262,23.8741],[120.2243,23.8703],[120.2204,23.8662],[120.224,23.8615],[120.2324,23.8517],[120.2383,23.8459],[120.2447,23.8406],[120.2492,23.8375],[120.2564,23.8337],[120.3081,23.8203],[120.3181,23.8203],[120.3331,23.8223],[120.3524,23.8223],[120.3604,23.8234],[120.3703,23.8286],[120.3817,23.8286],[120.4103,23.8264],[120.4187,23.8271],[120.4253,23.8303],[120.4331,23.8302],[120.4395,23.8269],[120.4431,23.8229],[120.4506,23.8187],[120.4521,23.8172],[120.4581,23.8161],[120.4753,23.809],[120.4832,23.8066],[120.4984,23.8036],[120.51,23.8002],[120.5213,23.7998],[120.5289,23.7991],[120.535,23.8013],[120.5409,23.801],[120.5459,23.8015],[120.5509,23.8012],[120.5583,23.7994],[120.5603,23.7981],[120.5735,23.7963],[120.5788,23.7951],[120.587,23.7919],[120.5931,23.7911],[120.6159,23.7913],[120.633,23.789],[120.6352,23.7867],[120.6404,23.7861],[120.6425,23.7857],[120.6587,23.7912],[120.6638,23.7921],[120.6753,23.7999],[120.6801,23.8017],[120.6839,23.8014],[120.6834,23.8054],[120.6791,23.8058],[120.678,23.8139],[120.6787,23.8166],[120.6744,23.8201],[120.6698,23.8185],[120.665,23.815],[120.6589,23.8146],[120.6556,23.8128],[120.6509,23.8125],[120.6487,23.8161],[120.6445,23.8176],[120.6401,23.8206],[120.6386,23.824],[120.64,23.8251],[120.6369,23.8329],[120.6335,23.8339],[120.6264,23.84],[120.6224,23.84],[120.6213,23.8417],[120.6163,23.8394],[120.616,23.8412],[120.6235,23.8479],[120.6237,23.8503],[120.6259,23.852],[120.6274,23.8569],[120.6234,23.86],[120.6234,23.8622],[120.6201,23.8653],[120.6215,23.8698],[120.6234,23.8694],[120.6258,23.8736],[120.6248,23.8771],[120.6267,23.8794],[120.6275,23.8836],[120.6302,23.8898],[120.6341,23.8919],[120.6351,23.8986],[120.6322,23.9053],[120.6342,23.9078],[120.6323,23.9107],[120.6344,23.9141],[120.6339,23.919],[120.6366,23.92],[120.6373,23.9246],[120.633,23.9282],[120.6293,23.9296],[120.6323,23.9331],[120.6327,23.9355],[120.635,23.939],[120.6322,23.9417],[120.6346,23.9436],[120.6276,23.9518],[120.6341,23.9542],[120.6354,23.9522],[120.6396,23.9551],[120.6427,23.9583],[120.6442,23.9621],[120.6467,23.9633],[120.647,23.9715],[120.6466,23.9748],[120.65,23.9827],[120.6499,23.9853],[120.6451,23.9898],[120.6375,23.9937],[120.6361,23.9984],[120.6382,24.0038],[120.6414,24.008],[120.6462,24.0092],[120.6473,24.0084],[120.66,24.0084],[120.6659,24.0078],[120.6728,24.0061],[120.6738,24.0079],[120.671,24.0099],[120.6764,24.0109],[120.6786,24.014],[120.6684,24.0207],[120.6635,24.025],[120.6611,24.0257],[120.6557,24.0307],[120.6518,24.0285],[120.6467,24.0338],[120.6444,24.0323],[120.6462,24.0283],[120.6446,24.0259],[120.6375,24.0285],[120.6361,24.0311],[120.6278,24.0296],[120.6248,24.0305],[120.6242,24.0334],[120.6277,24.0376],[120.626,24.0416],[120.6258,24.0468],[120.6234,24.052],[120.6257,24.0569],[120.6254,24.0687],[120.6242,24.0713],[120.6195,24.0732],[120.6149,24.085],[120.6149,24.0902],[120.6125,24.0991],[120.6124,24.1024],[120.6026,24.1029],[120.6,24.1052],[120.5949,24.1049],[120.5864,24.107],[120.5836,24.1095],[120.5766,24.1096],[120.5731,24.1083],[120.5653,24.1099],[120.5578,24.1126],[120.5537,24.1128],[120.549,24.1142],[120.5452,24.1166],[120.5403,24.124],[120.5335,24.1258],[120.5234,24.1399],[120.525,24.1436],[120.5259,24.1485],[120.5242,24.1529],[120.5208,24.1585],[120.5175,24.1653],[120.5103,24.1825],[120.5081,24.1872],[120.5044,24.1911],[120.4979,24.1934],[120.4566,24.2072]]]},"properties":{"COUNTYID":"N","COUNTYCODE":"10007","COUNTYNAME":"彰化縣","COUNTYENG":"Changhua County"}}, -{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[121.343,24.2236],[121.3403,24.2259],[121.3302,24.2312],[121.3248,24.233],[121.3194,24.2319],[121.3163,24.2345],[121.3086,24.2349],[121.3039,24.2337],[121.3025,24.2363],[121.2989,24.2358],[121.2951,24.2322],[121.2941,24.2296],[121.2889,24.2302],[121.2862,24.2291],[121.2832,24.231],[121.2799,24.2298],[121.2767,24.2356],[121.2707,24.2366],[121.2687,24.2383],[121.265,24.2459],[121.2609,24.2456],[121.2546,24.2428],[121.2512,24.238],[121.2474,24.2288],[121.2442,24.2225],[121.2407,24.2217],[121.238,24.2197],[121.2304,24.2235],[121.2308,24.2261],[121.2271,24.2256],[121.2188,24.2289],[121.2168,24.2261],[121.2082,24.2217],[121.2016,24.2216],[121.1965,24.2231],[121.1888,24.215],[121.1852,24.2145],[121.1822,24.2121],[121.1785,24.214],[121.1735,24.2203],[121.1676,24.2254],[121.1644,24.2218],[121.1641,24.2199],[121.161,24.2152],[121.157,24.2148],[121.1515,24.2129],[121.1481,24.2131],[121.1461,24.2088],[121.143,24.2053],[121.1414,24.1996],[121.1364,24.1963],[121.1317,24.1969],[121.1229,24.196],[121.1184,24.1973],[121.1134,24.1968],[121.1093,24.198],[121.0963,24.1921],[121.0941,24.188],[121.0911,24.1849],[121.0908,24.182],[121.0849,24.1759],[121.081,24.1748],[121.075,24.17],[121.0728,24.17],[121.0663,24.1655],[121.0646,24.163],[121.0593,24.1627],[121.0574,24.1587],[121.0527,24.1548],[121.0507,24.1581],[121.0474,24.1601],[121.0429,24.1586],[121.038,24.1582],[121.0358,24.1532],[121.0357,24.1509],[121.0335,24.1486],[121.0309,24.1495],[121.0314,24.1526],[121.0298,24.1573],[121.0274,24.1587],[121.0239,24.1579],[121.0199,24.1589],[121.0158,24.1562],[121.0082,24.147],[121.0069,24.1411],[121.0026,24.133],[121.0006,24.1325],[120.9996,24.1278],[120.9923,24.1254],[120.9919,24.1208],[120.989,24.1187],[120.9852,24.1202],[120.9836,24.1191],[120.9753,24.1169],[120.9736,24.1196],[120.971,24.1203],[120.961,24.1202],[120.9571,24.1242],[120.9519,24.1273],[120.9494,24.1275],[120.9484,24.1249],[120.9445,24.1229],[120.9396,24.1183],[120.9355,24.1157],[120.9319,24.1122],[120.9271,24.1117],[120.9231,24.1099],[120.9199,24.1074],[120.9149,24.1075],[120.9132,24.109],[120.9096,24.1092],[120.9073,24.1105],[120.9052,24.1141],[120.8962,24.1165],[120.8919,24.1161],[120.8902,24.1135],[120.8942,24.1107],[120.8941,24.1064],[120.891,24.1017],[120.8915,24.0982],[120.89,24.0966],[120.8861,24.0956],[120.882,24.0884],[120.8803,24.0886],[120.8783,24.0852],[120.8769,24.0914],[120.8782,24.0935],[120.8791,24.0984],[120.8814,24.1005],[120.8778,24.1097],[120.8723,24.1169],[120.8689,24.1176],[120.8657,24.1155],[120.8586,24.1162],[120.8572,24.1173],[120.8562,24.1215],[120.8536,24.1246],[120.8489,24.1239],[120.8451,24.1246],[120.8362,24.1169],[120.8345,24.1132],[120.8346,24.1078],[120.8303,24.1021],[120.8324,24.0981],[120.8285,24.0945],[120.8281,24.0864],[120.8289,24.0837],[120.8284,24.0766],[120.8294,24.0725],[120.8207,24.0698],[120.8194,24.0685],[120.8158,24.0687],[120.8118,24.066],[120.8089,24.0662],[120.8069,24.0642],[120.8063,24.0604],[120.8033,24.0564],[120.8033,24.0521],[120.8011,24.0515],[120.8007,24.0486],[120.7966,24.0428],[120.7974,24.0411],[120.7921,24.036],[120.7915,24.0306],[120.7896,24.0313],[120.7855,24.0287],[120.7847,24.0242],[120.783,24.0238],[120.7798,24.0203],[120.7752,24.0185],[120.7714,24.0144],[120.7707,24.0091],[120.7678,24.0092],[120.7625,24.0062],[120.7578,24.006],[120.7556,24.0034],[120.7511,24.0029],[120.7476,23.9991],[120.7454,23.9992],[120.7436,24.0022],[120.7318,24.009],[120.7192,24.0097],[120.7064,24.0052],[120.6949,24.0071],[120.686,24.0105],[120.6786,24.014],[120.6764,24.0109],[120.671,24.0099],[120.6738,24.0079],[120.6728,24.0061],[120.6659,24.0078],[120.66,24.0084],[120.6473,24.0084],[120.6462,24.0092],[120.6414,24.008],[120.6382,24.0038],[120.6361,23.9984],[120.6375,23.9937],[120.6451,23.9898],[120.6499,23.9853],[120.65,23.9827],[120.6466,23.9748],[120.647,23.9715],[120.6467,23.9633],[120.6442,23.9621],[120.6427,23.9583],[120.6396,23.9551],[120.6354,23.9522],[120.6341,23.9542],[120.6276,23.9518],[120.6346,23.9436],[120.6322,23.9417],[120.635,23.939],[120.6327,23.9355],[120.6323,23.9331],[120.6293,23.9296],[120.633,23.9282],[120.6373,23.9246],[120.6366,23.92],[120.6339,23.919],[120.6344,23.9141],[120.6323,23.9107],[120.6342,23.9078],[120.6322,23.9053],[120.6351,23.8986],[120.6341,23.8919],[120.6302,23.8898],[120.6275,23.8836],[120.6267,23.8794],[120.6248,23.8771],[120.6258,23.8736],[120.6234,23.8694],[120.6215,23.8698],[120.6201,23.8653],[120.6234,23.8622],[120.6234,23.86],[120.6274,23.8569],[120.6259,23.852],[120.6237,23.8503],[120.6235,23.8479],[120.616,23.8412],[120.6163,23.8394],[120.6213,23.8417],[120.6224,23.84],[120.6264,23.84],[120.6335,23.8339],[120.6369,23.8329],[120.64,23.8251],[120.6386,23.824],[120.6401,23.8206],[120.6445,23.8176],[120.6487,23.8161],[120.6509,23.8125],[120.6556,23.8128],[120.6589,23.8146],[120.665,23.815],[120.6698,23.8185],[120.6744,23.8201],[120.6787,23.8166],[120.678,23.8139],[120.6791,23.8058],[120.6834,23.8054],[120.6839,23.8014],[120.6801,23.8017],[120.6753,23.7999],[120.6638,23.7921],[120.6587,23.7912],[120.6425,23.7857],[120.6404,23.7861],[120.6421,23.7822],[120.6485,23.7732],[120.6558,23.7547],[120.6546,23.7483],[120.6544,23.74],[120.6558,23.7357],[120.6544,23.7345],[120.6443,23.7364],[120.6421,23.7306],[120.6402,23.7308],[120.6397,23.7266],[120.6417,23.7223],[120.6404,23.7194],[120.6406,23.7132],[120.6393,23.7109],[120.6415,23.7055],[120.6456,23.7032],[120.6436,23.6999],[120.6466,23.6917],[120.6455,23.6902],[120.6462,23.6848],[120.6483,23.6828],[120.6461,23.6773],[120.6469,23.6726],[120.6449,23.6716],[120.6445,23.6678],[120.6405,23.6643],[120.64,23.6609],[120.6368,23.6569],[120.6351,23.652],[120.6351,23.6426],[120.6317,23.64],[120.6291,23.6349],[120.6302,23.6326],[120.6287,23.6298],[120.63,23.6271],[120.6309,23.6219],[120.6337,23.6191],[120.6357,23.6202],[120.639,23.625],[120.6439,23.6282],[120.6451,23.631],[120.6536,23.6289],[120.6514,23.6161],[120.6587,23.6136],[120.6616,23.6104],[120.6637,23.6112],[120.6691,23.6093],[120.6778,23.6111],[120.6837,23.6109],[120.6855,23.6128],[120.6861,23.6182],[120.6913,23.6204],[120.6964,23.6201],[120.7018,23.6175],[120.7052,23.6173],[120.714,23.6209],[120.713,23.6278],[120.7184,23.63],[120.7205,23.6261],[120.7239,23.6218],[120.7307,23.6183],[120.7309,23.6108],[120.7359,23.6095],[120.739,23.6101],[120.7412,23.6122],[120.746,23.6126],[120.7476,23.6112],[120.7509,23.6145],[120.7537,23.6148],[120.7584,23.6124],[120.7637,23.6125],[120.7694,23.6084],[120.7699,23.6062],[120.7742,23.6054],[120.7777,23.6023],[120.7837,23.6007],[120.7909,23.6009],[120.7949,23.5972],[120.8033,23.5966],[120.8058,23.5988],[120.8098,23.5987],[120.8139,23.601],[120.8183,23.5991],[120.8169,23.5954],[120.8206,23.5896],[120.8255,23.5864],[120.8213,23.5813],[120.8196,23.5745],[120.8218,23.5713],[120.8199,23.5645],[120.8207,23.5626],[120.814,23.5554],[120.8159,23.5531],[120.8115,23.5511],[120.8088,23.5459],[120.8082,23.5418],[120.8088,23.5358],[120.8121,23.5331],[120.8181,23.5235],[120.8204,23.5213],[120.8191,23.5195],[120.8201,23.5141],[120.8232,23.5109],[120.8228,23.5086],[120.8241,23.5053],[120.8228,23.4992],[120.8254,23.4948],[120.8253,23.4897],[120.8271,23.4834],[120.8299,23.4807],[120.8326,23.4747],[120.8393,23.4712],[120.8421,23.4733],[120.8499,23.4722],[120.8542,23.4733],[120.8581,23.4728],[120.8632,23.4736],[120.8731,23.4685],[120.8808,23.4676],[120.8848,23.4747],[120.8867,23.4756],[120.8996,23.4754],[120.902,23.4761],[120.9113,23.4761],[120.9151,23.4746],[120.9175,23.4757],[120.9265,23.473],[120.9312,23.4706],[120.9342,23.473],[120.9376,23.4731],[120.9423,23.4693],[120.9475,23.4671],[120.9522,23.4677],[120.9575,23.4695],[120.9614,23.4708],[120.9685,23.4712],[120.9706,23.469],[120.9783,23.4694],[120.9817,23.4688],[120.9836,23.467],[120.9997,23.4622],[121.0038,23.463],[121.0081,23.4624],[121.0116,23.4573],[121.0151,23.4541],[121.0158,23.4509],[121.0107,23.4467],[121.0106,23.4412],[121.0141,23.4379],[121.0153,23.4354],[121.0196,23.4364],[121.022,23.439],[121.0264,23.4391],[121.0285,23.4415],[121.0318,23.4424],[121.0335,23.4453],[121.0442,23.4491],[121.0465,23.4509],[121.0518,23.4508],[121.0533,23.4556],[121.0559,23.4593],[121.059,23.4615],[121.0513,23.4643],[121.0497,23.4678],[121.0444,23.4701],[121.0392,23.4734],[121.0394,23.4749],[121.0453,23.4808],[121.0483,23.4823],[121.05,23.4864],[121.0536,23.4878],[121.0541,23.4903],[121.0528,23.4938],[121.0549,23.4961],[121.0621,23.4994],[121.0629,23.5036],[121.066,23.5061],[121.066,23.5076],[121.0688,23.5148],[121.0685,23.5185],[121.0787,23.5164],[121.0831,23.5146],[121.0881,23.514],[121.0919,23.5145],[121.0931,23.5176],[121.0976,23.5217],[121.1014,23.521],[121.1037,23.5189],[121.1103,23.519],[121.1155,23.5202],[121.1181,23.5216],[121.1212,23.5206],[121.1264,23.517],[121.1283,23.5185],[121.1309,23.5177],[121.1324,23.515],[121.1355,23.5151],[121.1391,23.5214],[121.147,23.5272],[121.1511,23.527],[121.1507,23.529],[121.1469,23.534],[121.1482,23.5359],[121.1484,23.5395],[121.1511,23.5452],[121.1481,23.5524],[121.1462,23.5542],[121.15,23.5573],[121.1512,23.5599],[121.1573,23.5597],[121.1579,23.5637],[121.1603,23.5678],[121.1604,23.5698],[121.1536,23.5715],[121.1519,23.5739],[121.152,23.5817],[121.1533,23.5867],[121.1582,23.5857],[121.1608,23.5871],[121.1694,23.5866],[121.1714,23.5841],[121.1785,23.5828],[121.1801,23.5882],[121.1832,23.593],[121.1894,23.5948],[121.1912,23.5982],[121.1943,23.6006],[121.2001,23.5964],[121.2065,23.5958],[121.2081,23.5982],[121.2136,23.6006],[121.2158,23.607],[121.2173,23.6147],[121.22,23.6169],[121.2233,23.6226],[121.2249,23.6274],[121.224,23.6329],[121.2241,23.6389],[121.2278,23.6454],[121.2299,23.6474],[121.2312,23.6514],[121.2307,23.6535],[121.2319,23.6579],[121.2358,23.6622],[121.236,23.6708],[121.2324,23.6775],[121.2343,23.681],[121.2395,23.6872],[121.2393,23.6943],[121.2412,23.6984],[121.2394,23.6998],[121.2412,23.7064],[121.2412,23.709],[121.2388,23.7129],[121.2396,23.7154],[121.2378,23.7199],[121.2393,23.7244],[121.2359,23.7245],[121.232,23.7295],[121.2298,23.73],[121.2284,23.7365],[121.2288,23.7445],[121.2299,23.7469],[121.2332,23.748],[121.2323,23.7508],[121.2293,23.7523],[121.225,23.7518],[121.2215,23.7527],[121.2175,23.757],[121.2132,23.7576],[121.211,23.7611],[121.2064,23.7628],[121.2087,23.7658],[121.2066,23.7674],[121.2047,23.7724],[121.2089,23.776],[121.213,23.7769],[121.2183,23.7797],[121.2195,23.7818],[121.2237,23.7824],[121.2279,23.7848],[121.2305,23.7881],[121.2306,23.7899],[121.2271,23.7913],[121.2266,23.7961],[121.2255,23.7981],[121.2274,23.8083],[121.2346,23.8122],[121.2347,23.8177],[121.2379,23.8214],[121.2369,23.8238],[121.2381,23.8296],[121.2377,23.8325],[121.2393,23.8371],[121.2393,23.8401],[121.2435,23.845],[121.2453,23.8497],[121.2488,23.8521],[121.2502,23.8566],[121.2499,23.8596],[121.253,23.8634],[121.253,23.8679],[121.2571,23.8697],[121.2581,23.8725],[121.2653,23.8729],[121.2629,23.8795],[121.2659,23.8832],[121.2683,23.8834],[121.2672,23.8894],[121.2655,23.8911],[121.266,23.8944],[121.264,23.8986],[121.2611,23.9023],[121.2663,23.9073],[121.27,23.9065],[121.2749,23.9075],[121.2761,23.9101],[121.2751,23.9189],[121.2765,23.9229],[121.2735,23.9281],[121.2747,23.9301],[121.2737,23.9366],[121.2721,23.9382],[121.274,23.942],[121.2743,23.9457],[121.2718,23.9482],[121.2747,23.9514],[121.2758,23.9565],[121.2751,23.9597],[121.2778,23.9652],[121.2756,23.9684],[121.2737,23.9752],[121.2651,23.9753],[121.2616,23.9812],[121.26,23.9921],[121.2639,23.9977],[121.2657,24.0014],[121.2694,24.0063],[121.2719,24.0133],[121.2736,24.0149],[121.2764,24.0204],[121.2768,24.0249],[121.2787,24.0268],[121.2824,24.0347],[121.2857,24.0395],[121.285,24.0486],[121.2826,24.0513],[121.2833,24.0545],[121.2865,24.058],[121.2891,24.0587],[121.2955,24.0638],[121.2989,24.0616],[121.3023,24.0663],[121.3061,24.0695],[121.3081,24.0732],[121.3141,24.0776],[121.3177,24.0795],[121.3231,24.0849],[121.3192,24.0928],[121.3191,24.0954],[121.3223,24.0995],[121.3258,24.1027],[121.3269,24.1103],[121.3285,24.1144],[121.325,24.1161],[121.3159,24.1164],[121.3135,24.1189],[121.308,24.1224],[121.3044,24.1239],[121.3012,24.1278],[121.2959,24.1324],[121.2814,24.1359],[121.2842,24.1458],[121.2847,24.1523],[121.2809,24.1546],[121.2803,24.1579],[121.2854,24.1571],[121.2883,24.1576],[121.2883,24.1667],[121.2877,24.1733],[121.2862,24.176],[121.2881,24.1777],[121.2922,24.1771],[121.2968,24.1785],[121.2986,24.18],[121.3071,24.1803],[121.3106,24.183],[121.3154,24.1849],[121.32,24.1914],[121.3231,24.1921],[121.3258,24.1962],[121.3358,24.1991],[121.3403,24.1985],[121.3451,24.2],[121.3497,24.2002],[121.3483,24.2073],[121.3494,24.2104],[121.3433,24.2221],[121.343,24.2236]]]},"properties":{"COUNTYID":"M","COUNTYCODE":"10008","COUNTYNAME":"南投縣","COUNTYENG":"Nantou County"}}, -{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[120.0811,23.5241],[120.0733,23.5207],[120.0689,23.5178],[120.0669,23.5153],[120.0638,23.515],[120.0621,23.5123],[120.0578,23.5095],[120.0527,23.5074],[120.0521,23.5056],[120.049,23.5044],[120.0403,23.4989],[120.0376,23.4962],[120.0352,23.4956],[120.0302,23.4922],[120.0277,23.4916],[120.025,23.489],[120.0161,23.4842],[120.0125,23.4805],[120.0102,23.4795],[120.0042,23.4742],[120.0003,23.4729],[119.9969,23.4658],[120.0045,23.4603],[120.0081,23.452],[120.012,23.4484],[120.0155,23.4438],[120.0142,23.4418],[120.0173,23.4406],[120.019,23.4364],[120.0208,23.4394],[120.0199,23.4436],[120.016,23.4481],[120.0141,23.4531],[120.0127,23.4538],[120.0107,23.458],[120.0076,23.4611],[120.0096,23.4649],[120.0143,23.4688],[120.0167,23.468],[120.0139,23.46],[120.0154,23.4589],[120.0197,23.4588],[120.0247,23.4607],[120.0235,23.4654],[120.0252,23.469],[120.0229,23.4709],[120.0259,23.473],[120.0248,23.4752],[120.0298,23.4796],[120.033,23.4796],[120.035,23.4774],[120.04,23.4799],[120.044,23.4843],[120.045,23.4937],[120.0486,23.492],[120.0455,23.4875],[120.0456,23.4842],[120.042,23.4795],[120.0423,23.4775],[120.0465,23.4777],[120.0518,23.4811],[120.0543,23.4881],[120.057,23.4856],[120.0583,23.4827],[120.0549,23.4788],[120.0588,23.4789],[120.0626,23.4809],[120.0641,23.4876],[120.0628,23.4895],[120.0561,23.4902],[120.056,23.4912],[120.0653,23.4919],[120.0693,23.4913],[120.0703,23.4939],[120.0692,23.4967],[120.0665,23.4986],[120.0686,23.5022],[120.0722,23.502],[120.0751,23.503],[120.0766,23.5073],[120.0793,23.509],[120.0827,23.5092],[120.083,23.5111],[120.0868,23.5122],[120.0915,23.5121],[120.0958,23.5106],[120.0952,23.5155],[120.0908,23.5203],[120.0886,23.5203],[120.0859,23.5228],[120.0811,23.5241]]],[[[120.0994,23.5417],[120.0969,23.5395],[120.0911,23.5308],[120.0965,23.5214],[120.0999,23.5295],[120.1036,23.5292],[120.1073,23.5275],[120.1103,23.5281],[120.1086,23.532],[120.1023,23.5402],[120.0994,23.5417]]],[[[120.1324,23.5467],[120.1295,23.5441],[120.1264,23.5445],[120.1274,23.5381],[120.1267,23.5321],[120.1323,23.5345],[120.1367,23.5434],[120.1324,23.5467]]],[[[120.1323,23.5632],[120.129,23.5639],[120.1245,23.5629],[120.1236,23.5596],[120.1202,23.5565],[120.1153,23.5566],[120.1114,23.5554],[120.1112,23.5539],[120.1051,23.548],[120.1037,23.5438],[120.1056,23.5406],[120.1081,23.5396],[120.1096,23.5426],[120.1094,23.545],[120.1168,23.5495],[120.1198,23.5499],[120.1225,23.5555],[120.1254,23.5588],[120.1277,23.5573],[120.1278,23.5533],[120.1317,23.5572],[120.1307,23.5621],[120.1323,23.5632]]],[[[120.1304,23.569],[120.1325,23.5737],[120.1304,23.5768],[120.1284,23.5739],[120.1304,23.569]]],[[[120.6404,23.7861],[120.6352,23.7867],[120.633,23.789],[120.6159,23.7913],[120.5931,23.7911],[120.587,23.7919],[120.5788,23.7951],[120.5735,23.7963],[120.5603,23.7981],[120.5583,23.7994],[120.5509,23.8012],[120.5459,23.8015],[120.5409,23.801],[120.535,23.8013],[120.5289,23.7991],[120.5213,23.7998],[120.51,23.8002],[120.4984,23.8036],[120.4832,23.8066],[120.4753,23.809],[120.4581,23.8161],[120.4521,23.8172],[120.4506,23.8187],[120.4431,23.8229],[120.4395,23.8269],[120.4331,23.8302],[120.4253,23.8303],[120.4187,23.8271],[120.4103,23.8264],[120.3817,23.8286],[120.3703,23.8286],[120.3604,23.8234],[120.3524,23.8223],[120.3331,23.8223],[120.3181,23.8203],[120.3081,23.8203],[120.2564,23.8337],[120.2492,23.8375],[120.2447,23.8406],[120.2383,23.8459],[120.2324,23.8517],[120.224,23.8615],[120.2204,23.8662],[120.2192,23.8585],[120.2134,23.85],[120.2046,23.8477],[120.2045,23.8449],[120.2084,23.8419],[120.2077,23.8372],[120.206,23.8343],[120.2001,23.8267],[120.1956,23.8231],[120.1917,23.8182],[120.1857,23.8162],[120.1825,23.8162],[120.1814,23.8104],[120.178,23.8091],[120.175,23.8058],[120.1755,23.8031],[120.1649,23.7942],[120.1601,23.7867],[120.1568,23.7846],[120.1629,23.7797],[120.1629,23.7725],[120.1692,23.7589],[120.1668,23.7556],[120.1658,23.7419],[120.1558,23.7194],[120.1562,23.7155],[120.1527,23.7131],[120.149,23.7082],[120.1469,23.7067],[120.1472,23.7019],[120.1455,23.6989],[120.1464,23.6963],[120.1454,23.6919],[120.141,23.6875],[120.1392,23.6842],[120.1352,23.6671],[120.1276,23.6522],[120.1255,23.6457],[120.124,23.6432],[120.1181,23.6394],[120.115,23.6362],[120.1151,23.6314],[120.1183,23.6266],[120.1235,23.6218],[120.1285,23.6219],[120.1312,23.6244],[120.1344,23.6342],[120.1371,23.6362],[120.1383,23.6318],[120.1372,23.6246],[120.1372,23.6204],[120.1335,23.6194],[120.133,23.6157],[120.14,23.6141],[120.1403,23.6087],[120.1394,23.5996],[120.1404,23.5975],[120.1446,23.5982],[120.1447,23.5951],[120.1414,23.5914],[120.1407,23.5838],[120.1406,23.5733],[120.1433,23.5721],[120.1431,23.5676],[120.1399,23.5591],[120.1404,23.5543],[120.1396,23.5502],[120.1413,23.545],[120.1456,23.5391],[120.1486,23.5369],[120.1503,23.5319],[120.1455,23.5265],[120.1464,23.5239],[120.1458,23.5208],[120.1493,23.5189],[120.1581,23.5159],[120.1646,23.5158],[120.1666,23.5172],[120.1724,23.5147],[120.1796,23.5104],[120.1825,23.5098],[120.1872,23.5106],[120.1899,23.51],[120.1966,23.513],[120.2045,23.5119],[120.2158,23.5069],[120.223,23.5043],[120.2309,23.5054],[120.2394,23.5078],[120.2431,23.5101],[120.2468,23.5141],[120.2471,23.5162],[120.2442,23.5319],[120.2419,23.5392],[120.2433,23.5436],[120.2464,23.5451],[120.2526,23.5463],[120.2561,23.5461],[120.2594,23.5412],[120.2617,23.5357],[120.2673,23.5307],[120.2719,23.5308],[120.2734,23.5335],[120.276,23.543],[120.2805,23.546],[120.2867,23.5478],[120.2908,23.5505],[120.2891,23.5574],[120.2892,23.5612],[120.2932,23.5642],[120.2972,23.5646],[120.3061,23.5629],[120.3106,23.5645],[120.3098,23.5679],[120.3067,23.5715],[120.3074,23.5747],[120.3119,23.575],[120.3191,23.5724],[120.3265,23.5739],[120.3323,23.578],[120.3334,23.5818],[120.3336,23.5915],[120.335,23.593],[120.3433,23.5919],[120.3514,23.5929],[120.3593,23.5952],[120.3659,23.603],[120.3665,23.6078],[120.3706,23.6094],[120.3798,23.6099],[120.3831,23.6126],[120.3828,23.6147],[120.386,23.6207],[120.3924,23.6224],[120.3922,23.6236],[120.4026,23.6269],[120.4009,23.6322],[120.4048,23.6342],[120.4064,23.6327],[120.4066,23.6252],[120.413,23.624],[120.4156,23.6214],[120.4201,23.6252],[120.422,23.6193],[120.4254,23.618],[120.427,23.6193],[120.4301,23.6184],[120.4336,23.6229],[120.4367,23.6217],[120.4376,23.6265],[120.441,23.6259],[120.4447,23.6306],[120.4499,23.6294],[120.4512,23.6271],[120.4543,23.6263],[120.4585,23.6277],[120.4602,23.6293],[120.474,23.6311],[120.4775,23.6299],[120.4787,23.6328],[120.4879,23.6307],[120.4872,23.6339],[120.4887,23.6359],[120.4929,23.6332],[120.4995,23.6351],[120.5036,23.6353],[120.5075,23.6312],[120.5064,23.6259],[120.5102,23.6194],[120.5151,23.6151],[120.518,23.6105],[120.5225,23.6075],[120.5281,23.6028],[120.529,23.6004],[120.533,23.597],[120.5369,23.5947],[120.548,23.5938],[120.5523,23.5939],[120.5566,23.5929],[120.5578,23.5892],[120.5611,23.5886],[120.5655,23.5895],[120.5671,23.5877],[120.5711,23.5879],[120.5767,23.5835],[120.5802,23.5823],[120.5861,23.5827],[120.5898,23.5857],[120.5975,23.5847],[120.5999,23.5832],[120.6063,23.5842],[120.6102,23.5826],[120.6155,23.5853],[120.6187,23.5841],[120.6252,23.5907],[120.6306,23.5899],[120.6369,23.592],[120.6436,23.5927],[120.6451,23.5935],[120.6491,23.5925],[120.6471,23.5878],[120.6493,23.5857],[120.6483,23.5815],[120.6434,23.578],[120.6492,23.575],[120.6507,23.5724],[120.6581,23.5729],[120.6605,23.5762],[120.67,23.5788],[120.6725,23.5766],[120.6733,23.5737],[120.676,23.5707],[120.6826,23.5721],[120.687,23.5751],[120.6942,23.5765],[120.7013,23.576],[120.7043,23.575],[120.709,23.5757],[120.7106,23.5709],[120.7161,23.5711],[120.7183,23.569],[120.7247,23.5719],[120.7279,23.5703],[120.7338,23.571],[120.7361,23.5704],[120.7351,23.5752],[120.7321,23.5772],[120.734,23.5844],[120.7327,23.5894],[120.7299,23.5934],[120.7325,23.5974],[120.7284,23.5993],[120.7278,23.6014],[120.7246,23.6038],[120.7264,23.607],[120.7309,23.6108],[120.7307,23.6183],[120.7239,23.6218],[120.7205,23.6261],[120.7184,23.63],[120.713,23.6278],[120.714,23.6209],[120.7052,23.6173],[120.7018,23.6175],[120.6964,23.6201],[120.6913,23.6204],[120.6861,23.6182],[120.6855,23.6128],[120.6837,23.6109],[120.6778,23.6111],[120.6691,23.6093],[120.6637,23.6112],[120.6616,23.6104],[120.6587,23.6136],[120.6514,23.6161],[120.6536,23.6289],[120.6451,23.631],[120.6439,23.6282],[120.639,23.625],[120.6357,23.6202],[120.6337,23.6191],[120.6309,23.6219],[120.63,23.6271],[120.6287,23.6298],[120.6302,23.6326],[120.6291,23.6349],[120.6317,23.64],[120.6351,23.6426],[120.6351,23.652],[120.6368,23.6569],[120.64,23.6609],[120.6405,23.6643],[120.6445,23.6678],[120.6449,23.6716],[120.6469,23.6726],[120.6461,23.6773],[120.6483,23.6828],[120.6462,23.6848],[120.6455,23.6902],[120.6466,23.6917],[120.6436,23.6999],[120.6456,23.7032],[120.6415,23.7055],[120.6393,23.7109],[120.6406,23.7132],[120.6404,23.7194],[120.6417,23.7223],[120.6397,23.7266],[120.6402,23.7308],[120.6421,23.7306],[120.6443,23.7364],[120.6544,23.7345],[120.6558,23.7357],[120.6544,23.74],[120.6546,23.7483],[120.6558,23.7547],[120.6485,23.7732],[120.6421,23.7822],[120.6404,23.7861]]]]},"properties":{"COUNTYID":"P","COUNTYCODE":"10009","COUNTYNAME":"雲林縣","COUNTYENG":"Yunlin County"}}, -{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[121.8035,25.1362],[121.8043,25.1381],[121.8031,25.142],[121.8046,25.1445],[121.8082,25.1474],[121.807,25.1491],[121.8005,25.1475],[121.7953,25.1481],[121.7932,25.1469],[121.7851,25.1496],[121.7833,25.1521],[121.7799,25.1532],[121.7779,25.1515],[121.7747,25.156],[121.7768,25.1595],[121.7647,25.1638],[121.7603,25.1604],[121.7561,25.1596],[121.7485,25.1563],[121.7426,25.1573],[121.7381,25.1609],[121.7366,25.1593],[121.7295,25.1636],[121.7237,25.1652],[121.7127,25.166],[121.7112,25.1649],[121.7072,25.166],[121.7099,25.171],[121.7096,25.1766],[121.7064,25.1739],[121.7021,25.1734],[121.7009,25.1692],[121.699,25.1673],[121.6912,25.1663],[121.6873,25.1616],[121.6831,25.1606],[121.6782,25.1572],[121.6776,25.1557],[121.6715,25.1556],[121.6692,25.1534],[121.6637,25.1522],[121.6581,25.1522],[121.655,25.1488],[121.6512,25.1475],[121.6497,25.1449],[121.6463,25.1458],[121.6345,25.1439],[121.6293,25.1418],[121.6269,25.1399],[121.6282,25.1352],[121.6346,25.1305],[121.6381,25.1308],[121.6429,25.1279],[121.6444,25.125],[121.6464,25.1135],[121.6503,25.1095],[121.6522,25.1044],[121.6489,25.1019],[121.6506,25.0985],[121.6562,25.0947],[121.6558,25.0934],[121.6646,25.0893],[121.668,25.0857],[121.674,25.0829],[121.6792,25.0877],[121.6816,25.0876],[121.6817,25.0848],[121.679,25.0789],[121.6884,25.0717],[121.6921,25.0703],[121.6965,25.0701],[121.6994,25.0674],[121.7043,25.0679],[121.7069,25.0666],[121.7104,25.068],[121.7148,25.0666],[121.7191,25.0615],[121.7225,25.0585],[121.7258,25.0584],[121.7301,25.0533],[121.7378,25.0547],[121.7397,25.0531],[121.7459,25.053],[121.7511,25.0573],[121.7593,25.0595],[121.7625,25.057],[121.7649,25.0597],[121.77,25.0635],[121.772,25.0635],[121.773,25.0668],[121.7757,25.0701],[121.7715,25.0759],[121.7684,25.0785],[121.7616,25.0784],[121.7591,25.0845],[121.7598,25.0901],[121.7584,25.0937],[121.7599,25.1006],[121.7558,25.1086],[121.7528,25.1069],[121.75,25.1097],[121.7518,25.111],[121.7575,25.1109],[121.7594,25.1126],[121.763,25.1134],[121.7667,25.1125],[121.7694,25.1146],[121.7734,25.1203],[121.7795,25.1175],[121.7839,25.1168],[121.7861,25.118],[121.7902,25.1122],[121.7948,25.1126],[121.7977,25.1143],[121.7988,25.1185],[121.7971,25.1213],[121.7942,25.1233],[121.7945,25.1263],[121.7972,25.1254],[121.8023,25.1218],[121.805,25.1252],[121.8038,25.1272],[121.8051,25.1317],[121.8025,25.1343],[121.8035,25.1362]]],[[[121.7881,25.1957],[121.7845,25.1949],[121.7815,25.1909],[121.783,25.1897],[121.7889,25.1921],[121.7881,25.1957]]],[[[121.9466,25.4246],[121.9468,25.4242],[121.9467,25.4246],[121.9466,25.4246],[121.9467,25.4246],[121.9466,25.4246]]],[[[122.1033,25.486],[122.1037,25.4831],[122.1057,25.482],[122.1072,25.487],[122.1033,25.486]]],[[[122.0844,25.6275],[122.0845,25.6324],[122.0806,25.6334],[122.0738,25.6321],[122.0723,25.6288],[122.0742,25.6255],[122.0774,25.6235],[122.0844,25.6275]]]]},"properties":{"COUNTYID":"C","COUNTYCODE":"10017","COUNTYNAME":"基隆市","COUNTYENG":"Keelung City"}}, -{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[121.5837,25.1946],[121.5805,25.1954],[121.5792,25.1941],[121.5754,25.1956],[121.5719,25.1953],[121.57,25.1983],[121.5662,25.1996],[121.5636,25.2056],[121.5628,25.2092],[121.5593,25.2102],[121.5549,25.2083],[121.5531,25.2042],[121.5517,25.2036],[121.5526,25.1988],[121.549,25.1982],[121.5432,25.1937],[121.5428,25.1888],[121.5406,25.1871],[121.5358,25.1867],[121.5334,25.1836],[121.5258,25.1829],[121.5217,25.1791],[121.5226,25.1747],[121.5196,25.1692],[121.5139,25.171],[121.5104,25.1694],[121.5047,25.1733],[121.5026,25.1733],[121.5019,25.1695],[121.4989,25.1652],[121.4929,25.1609],[121.4866,25.1508],[121.4839,25.1508],[121.4816,25.1479],[121.4694,25.136],[121.4656,25.1316],[121.4643,25.1273],[121.4643,25.124],[121.4591,25.123],[121.4609,25.116],[121.4577,25.1104],[121.4579,25.1064],[121.4616,25.1037],[121.4667,25.1016],[121.4786,25.1014],[121.4811,25.1009],[121.4887,25.0972],[121.5,25.087],[121.5026,25.083],[121.5062,25.0744],[121.507,25.0711],[121.5068,25.0645],[121.5054,25.0597],[121.5064,25.056],[121.5045,25.0495],[121.5004,25.0452],[121.4955,25.0429],[121.4888,25.0426],[121.4847,25.0387],[121.4836,25.0362],[121.485,25.0313],[121.4885,25.0239],[121.4887,25.0154],[121.4896,25.0132],[121.4931,25.0092],[121.4973,25.01],[121.5013,25.0129],[121.5048,25.0174],[121.5088,25.0212],[121.5143,25.0214],[121.5189,25.0198],[121.5216,25.0176],[121.5262,25.0114],[121.5309,25.0097],[121.5339,25.0036],[121.5318,25.0014],[121.5305,24.9978],[121.5317,24.9947],[121.535,24.9951],[121.5371,24.9923],[121.5368,24.9887],[121.5392,24.9877],[121.544,24.9883],[121.5442,24.9846],[121.5461,24.9833],[121.5492,24.9838],[121.5517,24.9874],[121.5538,24.9852],[121.5531,24.9813],[121.5537,24.9773],[121.5575,24.9723],[121.5585,24.9683],[121.5612,24.9647],[121.5653,24.9641],[121.5728,24.964],[121.5745,24.9668],[121.5786,24.9666],[121.5857,24.9632],[121.5912,24.9646],[121.5934,24.9642],[121.5969,24.9606],[121.602,24.9611],[121.6058,24.9631],[121.6084,24.9631],[121.6102,24.9649],[121.6171,24.9675],[121.6198,24.9674],[121.6198,24.9701],[121.6114,24.9746],[121.6051,24.9744],[121.6001,24.977],[121.6007,24.9803],[121.5998,24.9863],[121.6019,24.988],[121.602,24.9904],[121.5991,24.9916],[121.5981,24.9945],[121.6005,24.9984],[121.6005,25.0011],[121.5956,25.007],[121.5975,25.0148],[121.6027,25.0151],[121.6041,25.0191],[121.6102,25.0199],[121.6206,25.0184],[121.6227,25.0173],[121.6288,25.0198],[121.6309,25.0247],[121.6326,25.0256],[121.6357,25.0232],[121.6408,25.0235],[121.6429,25.0246],[121.6462,25.0217],[121.6499,25.024],[121.6541,25.0244],[121.6576,25.0232],[121.6641,25.0233],[121.6654,25.026],[121.6648,25.0295],[121.6615,25.0305],[121.6551,25.0275],[121.6488,25.0279],[121.638,25.0337],[121.634,25.0348],[121.6264,25.0379],[121.6249,25.0377],[121.6191,25.0435],[121.6169,25.0475],[121.6163,25.0506],[121.6209,25.0534],[121.6202,25.0557],[121.6243,25.0555],[121.6208,25.0614],[121.6185,25.0631],[121.6176,25.0676],[121.6208,25.0691],[121.6206,25.0733],[121.6232,25.0758],[121.6242,25.0803],[121.6277,25.0826],[121.6286,25.0865],[121.626,25.0905],[121.625,25.0937],[121.6261,25.0957],[121.6175,25.101],[121.6154,25.1039],[121.6105,25.1051],[121.608,25.1068],[121.5975,25.1095],[121.5955,25.1134],[121.5988,25.1196],[121.6008,25.1218],[121.6017,25.126],[121.6041,25.1257],[121.6076,25.1293],[121.6046,25.1308],[121.6053,25.1355],[121.5983,25.1404],[121.5938,25.1499],[121.5894,25.1523],[121.5916,25.1551],[121.5918,25.1577],[121.5899,25.1637],[121.5878,25.163],[121.5848,25.1647],[121.5793,25.1655],[121.577,25.1671],[121.5774,25.1702],[121.583,25.1755],[121.5833,25.1776],[121.5809,25.1815],[121.5839,25.1887],[121.5837,25.1946]]]},"properties":{"COUNTYID":"A","COUNTYCODE":"63000","COUNTYNAME":"臺北市","COUNTYENG":"Taipei City"}}, -{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[121.6621,25.2084],[121.6608,25.2088],[121.6536,25.216],[121.6502,25.2229],[121.6535,25.229],[121.6485,25.2327],[121.6459,25.2301],[121.6431,25.2307],[121.6364,25.2364],[121.6339,25.2402],[121.6359,25.2501],[121.6341,25.26],[121.6297,25.2668],[121.6231,25.2739],[121.6168,25.2788],[121.6079,25.2815],[121.6024,25.2877],[121.5976,25.29],[121.5972,25.2915],[121.5906,25.2921],[121.5867,25.2934],[121.5775,25.299],[121.5693,25.2985],[121.5648,25.2931],[121.5605,25.292],[121.5533,25.293],[121.5504,25.2916],[121.5455,25.2924],[121.5413,25.2945],[121.5407,25.2978],[121.5369,25.3001],[121.5338,25.2971],[121.5348,25.2925],[121.5333,25.2899],[121.5259,25.286],[121.5212,25.2868],[121.5169,25.2849],[121.514,25.2867],[121.5128,25.2909],[121.5093,25.2913],[121.5083,25.2887],[121.5093,25.2832],[121.5043,25.2815],[121.5028,25.2798],[121.4994,25.2795],[121.4866,25.2727],[121.4809,25.2709],[121.477,25.2663],[121.4749,25.2606],[121.4716,25.256],[121.4673,25.2533],[121.4625,25.2521],[121.4562,25.2532],[121.4527,25.2528],[121.4476,25.2467],[121.4458,25.2426],[121.4461,25.2404],[121.4373,25.2197],[121.4371,25.2175],[121.4309,25.2159],[121.4287,25.2123],[121.4247,25.2079],[121.4189,25.1993],[121.4177,25.1944],[121.4187,25.1915],[121.4142,25.1901],[121.41,25.1907],[121.4048,25.1898],[121.4043,25.1831],[121.4164,25.1807],[121.4188,25.1774],[121.4125,25.1685],[121.4098,25.166],[121.4055,25.1604],[121.4023,25.1588],[121.3916,25.1677],[121.388,25.152],[121.3897,25.1477],[121.3794,25.143],[121.3717,25.141],[121.3645,25.1379],[121.3599,25.1347],[121.3534,25.1316],[121.3469,25.1299],[121.345,25.1284],[121.3411,25.1286],[121.3386,25.127],[121.3269,25.1242],[121.3201,25.1234],[121.3165,25.1241],[121.3104,25.1238],[121.3096,25.1259],[121.3046,25.1261],[121.3006,25.1252],[121.2966,25.1231],[121.2926,25.1191],[121.2877,25.1179],[121.2834,25.1178],[121.2839,25.1124],[121.2827,25.1096],[121.2871,25.1068],[121.2902,25.1069],[121.2916,25.1026],[121.2955,25.103],[121.2983,25.1045],[121.3015,25.1011],[121.3015,25.0981],[121.3031,25.0967],[121.3107,25.0965],[121.3176,25.0932],[121.325,25.0926],[121.3278,25.0912],[121.33,25.0884],[121.3383,25.0837],[121.3438,25.0842],[121.3466,25.0836],[121.3491,25.0812],[121.345,25.0797],[121.3445,25.0751],[121.3485,25.074],[121.3478,25.0698],[121.3523,25.0688],[121.3551,25.0671],[121.355,25.0651],[121.3634,25.0649],[121.3769,25.0661],[121.3864,25.0633],[121.3889,25.0607],[121.3883,25.0571],[121.3865,25.0538],[121.3925,25.0537],[121.3975,25.0515],[121.4004,25.0515],[121.398,25.0468],[121.3985,25.0438],[121.3931,25.0436],[121.3944,25.0401],[121.4013,25.0374],[121.3985,25.0346],[121.3983,25.0301],[121.4015,25.028],[121.4045,25.0238],[121.4088,25.0208],[121.4091,25.0184],[121.4041,25.0172],[121.4017,25.0158],[121.3971,25.0162],[121.3927,25.0139],[121.3926,25.0105],[121.3997,25.0068],[121.4003,25.0041],[121.4033,25.0003],[121.3969,24.9973],[121.3943,24.9935],[121.3905,24.9933],[121.387,24.996],[121.3841,24.9957],[121.3835,24.9883],[121.3856,24.9865],[121.3819,24.9839],[121.379,24.9834],[121.3765,24.9811],[121.3722,24.9798],[121.3691,24.9768],[121.3639,24.9796],[121.3613,24.9779],[121.354,24.9778],[121.3523,24.9809],[121.3471,24.9788],[121.3428,24.9823],[121.341,24.9802],[121.3367,24.9807],[121.334,24.9787],[121.3303,24.9793],[121.3271,24.9777],[121.3276,24.9748],[121.3237,24.9728],[121.325,24.9711],[121.3281,24.9729],[121.3291,24.9623],[121.3281,24.9555],[121.328,24.949],[121.3316,24.9455],[121.3304,24.9445],[121.3248,24.9436],[121.316,24.9387],[121.3177,24.9354],[121.3232,24.9313],[121.3225,24.9281],[121.3341,24.9298],[121.3398,24.9285],[121.3352,24.9249],[121.3276,24.9247],[121.3247,24.9234],[121.3176,24.9165],[121.3226,24.9124],[121.3262,24.9072],[121.3219,24.9036],[121.3205,24.9002],[121.3278,24.8959],[121.3319,24.8999],[121.3337,24.899],[121.3321,24.8936],[121.3335,24.8922],[121.3382,24.8932],[121.3421,24.8908],[121.3413,24.8876],[121.3447,24.8859],[121.3456,24.8801],[121.3471,24.8787],[121.3506,24.8786],[121.3544,24.8732],[121.3529,24.8709],[121.3492,24.8687],[121.3459,24.8682],[121.3473,24.8621],[121.3494,24.8597],[121.3534,24.8587],[121.3556,24.8551],[121.3533,24.8505],[121.3485,24.8485],[121.3464,24.8502],[121.3428,24.8487],[121.3372,24.8484],[121.3359,24.844],[121.3395,24.8434],[121.3465,24.8459],[121.3549,24.844],[121.3578,24.8395],[121.3603,24.8381],[121.3642,24.8381],[121.3727,24.8351],[121.3735,24.8333],[121.3791,24.8351],[121.3846,24.8381],[121.385,24.8408],[121.3935,24.844],[121.3964,24.8436],[121.3981,24.8417],[121.4007,24.8417],[121.4028,24.8436],[121.4088,24.8406],[121.4104,24.8386],[121.4156,24.8356],[121.4138,24.832],[121.4161,24.8287],[121.4168,24.8257],[121.4235,24.8255],[121.4253,24.82],[121.4318,24.8137],[121.4366,24.8121],[121.438,24.8039],[121.4371,24.7981],[121.4385,24.7951],[121.4488,24.7882],[121.4496,24.7864],[121.446,24.7817],[121.4402,24.7788],[121.4379,24.7746],[121.4348,24.7726],[121.432,24.7722],[121.4254,24.767],[121.4234,24.7617],[121.4259,24.7605],[121.4256,24.7584],[121.4285,24.7535],[121.4286,24.7482],[121.4303,24.7437],[121.4321,24.7421],[121.4328,24.7373],[121.4354,24.7329],[121.4341,24.7304],[121.4383,24.7266],[121.441,24.7259],[121.4414,24.7235],[121.4451,24.7148],[121.4488,24.7122],[121.4501,24.7058],[121.4571,24.7031],[121.4599,24.7028],[121.4638,24.7009],[121.4696,24.6961],[121.4742,24.6961],[121.4748,24.6935],[121.473,24.6898],[121.4739,24.6853],[121.4754,24.6838],[121.4755,24.6807],[121.48,24.6739],[121.4847,24.6738],[121.4869,24.6752],[121.493,24.6732],[121.5003,24.6786],[121.5049,24.6794],[121.5072,24.6823],[121.5137,24.6843],[121.5148,24.6832],[121.5238,24.6833],[121.5291,24.6876],[121.5366,24.6883],[121.5389,24.6949],[121.5381,24.7003],[121.5437,24.7058],[121.5498,24.7057],[121.5543,24.7082],[121.5565,24.7113],[121.5581,24.7109],[121.5623,24.7128],[121.5675,24.7115],[121.571,24.7132],[121.572,24.7107],[121.5746,24.71],[121.5773,24.7149],[121.5776,24.7212],[121.5791,24.7225],[121.5832,24.7206],[121.5877,24.7203],[121.5907,24.7237],[121.5976,24.7278],[121.5942,24.7292],[121.595,24.7325],[121.5942,24.7355],[121.5951,24.7405],[121.5919,24.7433],[121.5917,24.7451],[121.5947,24.7464],[121.5946,24.7502],[121.5903,24.7512],[121.589,24.7552],[121.5908,24.7587],[121.591,24.7618],[121.5963,24.767],[121.5955,24.7691],[121.5976,24.7726],[121.5932,24.7823],[121.5937,24.7873],[121.599,24.7877],[121.6029,24.7894],[121.6056,24.7891],[121.6096,24.7938],[121.6135,24.7932],[121.6168,24.7939],[121.6206,24.7925],[121.6258,24.7953],[121.6248,24.8012],[121.6282,24.8079],[121.6314,24.8092],[121.6376,24.8096],[121.6388,24.8107],[121.644,24.8093],[121.6461,24.8101],[121.6474,24.814],[121.6534,24.8112],[121.6596,24.811],[121.663,24.8126],[121.669,24.818],[121.6742,24.8141],[121.6772,24.8141],[121.6806,24.8175],[121.6893,24.8172],[121.6898,24.8226],[121.6887,24.8261],[121.6922,24.8272],[121.6964,24.8303],[121.6969,24.8346],[121.7021,24.8345],[121.709,24.8406],[121.7137,24.8416],[121.7153,24.844],[121.7185,24.8456],[121.7222,24.85],[121.7251,24.8507],[121.7273,24.8533],[121.7326,24.8558],[121.7385,24.8552],[121.7418,24.8525],[121.7456,24.8528],[121.748,24.855],[121.7508,24.8545],[121.7536,24.8561],[121.7604,24.8568],[121.7644,24.8599],[121.7692,24.8659],[121.771,24.8649],[121.7755,24.8651],[121.7752,24.8668],[121.7789,24.8713],[121.7832,24.8742],[121.7848,24.8764],[121.7822,24.8792],[121.7817,24.8895],[121.7858,24.8908],[121.7859,24.8926],[121.7898,24.8933],[121.7923,24.8956],[121.792,24.8999],[121.7964,24.9012],[121.8022,24.901],[121.8105,24.9036],[121.8117,24.9065],[121.8183,24.9027],[121.8224,24.9046],[121.828,24.9054],[121.8319,24.9049],[121.8379,24.9099],[121.8395,24.9127],[121.8434,24.9154],[121.8455,24.9193],[121.8538,24.9253],[121.8539,24.9278],[121.8491,24.9303],[121.8466,24.9379],[121.8424,24.9394],[121.839,24.9446],[121.8418,24.9514],[121.8414,24.9543],[121.8469,24.9603],[121.8517,24.9599],[121.8581,24.9632],[121.8612,24.9637],[121.8715,24.9607],[121.8763,24.9616],[121.8824,24.9642],[121.8896,24.9648],[121.8971,24.967],[121.9026,24.9742],[121.9054,24.9734],[121.9068,24.9756],[121.91,24.9748],[121.912,24.978],[121.9162,24.9795],[121.9286,24.9797],[121.9336,24.9809],[121.9344,24.9831],[121.9375,24.983],[121.9385,24.9848],[121.9429,24.9863],[121.9446,24.9882],[121.9481,24.9867],[121.9502,24.9883],[121.9596,24.9883],[121.9628,24.9878],[121.966,24.9831],[121.9677,24.9848],[121.9747,24.9853],[121.9761,24.9888],[121.9809,24.9911],[121.9839,24.9906],[121.9893,24.9938],[121.9907,24.9957],[121.9967,25.0008],[122.0036,25.002],[122.0052,25.0016],[122.0057,25.0079],[122.0066,25.0101],[122.0054,25.0148],[122.0018,25.0148],[121.9999,25.0184],[121.9976,25.0195],[121.9939,25.016],[121.9902,25.0211],[121.983,25.0249],[121.9779,25.0266],[121.9736,25.0266],[121.9669,25.0239],[121.9649,25.0247],[121.9609,25.023],[121.9528,25.0223],[121.9471,25.0211],[121.9422,25.0246],[121.9345,25.0324],[121.929,25.041],[121.9295,25.0502],[121.9316,25.0541],[121.9307,25.0609],[121.9317,25.0631],[121.9281,25.0688],[121.9284,25.0709],[121.9255,25.072],[121.9198,25.0763],[121.9167,25.076],[121.9154,25.0787],[121.9169,25.0814],[121.9144,25.0855],[121.9144,25.0898],[121.9164,25.0931],[121.9196,25.0949],[121.9186,25.1003],[121.9196,25.1026],[121.9265,25.1081],[121.9232,25.1133],[121.9186,25.1125],[121.916,25.1139],[121.9169,25.1162],[121.9208,25.1175],[121.9212,25.1213],[121.9241,25.124],[121.9268,25.1288],[121.924,25.1301],[121.9158,25.1268],[121.9147,25.1242],[121.9113,25.1235],[121.9045,25.1243],[121.9008,25.1208],[121.8971,25.1197],[121.8898,25.1199],[121.8888,25.1223],[121.883,25.124],[121.88,25.1231],[121.8774,25.125],[121.8695,25.1251],[121.8685,25.1231],[121.8641,25.1242],[121.8561,25.1248],[121.8491,25.1272],[121.845,25.1272],[121.841,25.1282],[121.8353,25.1282],[121.8337,25.127],[121.8288,25.1277],[121.8296,25.1244],[121.8278,25.1225],[121.8225,25.1214],[121.8191,25.1268],[121.8266,25.136],[121.8227,25.1363],[121.8174,25.1341],[121.8154,25.1348],[121.8104,25.1331],[121.8068,25.1356],[121.8035,25.1362],[121.8025,25.1343],[121.8051,25.1317],[121.8038,25.1272],[121.805,25.1252],[121.8023,25.1218],[121.7972,25.1254],[121.7945,25.1263],[121.7942,25.1233],[121.7971,25.1213],[121.7988,25.1185],[121.7977,25.1143],[121.7948,25.1126],[121.7902,25.1122],[121.7861,25.118],[121.7839,25.1168],[121.7795,25.1175],[121.7734,25.1203],[121.7694,25.1146],[121.7667,25.1125],[121.763,25.1134],[121.7594,25.1126],[121.7575,25.1109],[121.7518,25.111],[121.75,25.1097],[121.7528,25.1069],[121.7558,25.1086],[121.7599,25.1006],[121.7584,25.0937],[121.7598,25.0901],[121.7591,25.0845],[121.7616,25.0784],[121.7684,25.0785],[121.7715,25.0759],[121.7757,25.0701],[121.773,25.0668],[121.772,25.0635],[121.77,25.0635],[121.7649,25.0597],[121.7625,25.057],[121.7593,25.0595],[121.7511,25.0573],[121.7459,25.053],[121.7397,25.0531],[121.7378,25.0547],[121.7301,25.0533],[121.7258,25.0584],[121.7225,25.0585],[121.7191,25.0615],[121.7148,25.0666],[121.7104,25.068],[121.7069,25.0666],[121.7043,25.0679],[121.6994,25.0674],[121.6965,25.0701],[121.6921,25.0703],[121.6884,25.0717],[121.679,25.0789],[121.6817,25.0848],[121.6816,25.0876],[121.6792,25.0877],[121.674,25.0829],[121.668,25.0857],[121.6646,25.0893],[121.6558,25.0934],[121.6562,25.0947],[121.6506,25.0985],[121.6489,25.1019],[121.6522,25.1044],[121.6503,25.1095],[121.6464,25.1135],[121.6444,25.125],[121.6429,25.1279],[121.6381,25.1308],[121.6346,25.1305],[121.6282,25.1352],[121.6269,25.1399],[121.6293,25.1418],[121.6345,25.1439],[121.6463,25.1458],[121.6497,25.1449],[121.6512,25.1475],[121.655,25.1488],[121.6581,25.1522],[121.6637,25.1522],[121.6692,25.1534],[121.6715,25.1556],[121.6776,25.1557],[121.6782,25.1572],[121.6831,25.1606],[121.6873,25.1616],[121.6912,25.1663],[121.699,25.1673],[121.7009,25.1692],[121.7021,25.1734],[121.7064,25.1739],[121.7096,25.1766],[121.7046,25.1768],[121.7027,25.1806],[121.6961,25.1818],[121.6927,25.1801],[121.6877,25.1856],[121.6858,25.1895],[121.6858,25.1921],[121.6902,25.197],[121.6923,25.1978],[121.694,25.2015],[121.6918,25.2047],[121.6939,25.2081],[121.701,25.2142],[121.7013,25.2175],[121.6962,25.2143],[121.6928,25.2088],[121.6842,25.2072],[121.6793,25.2028],[121.6778,25.2046],[121.6724,25.2021],[121.6706,25.2027],[121.6621,25.2084]],[[121.5837,25.1946],[121.5839,25.1887],[121.5809,25.1815],[121.5833,25.1776],[121.583,25.1755],[121.5774,25.1702],[121.577,25.1671],[121.5793,25.1655],[121.5848,25.1647],[121.5878,25.163],[121.5899,25.1637],[121.5918,25.1577],[121.5916,25.1551],[121.5894,25.1523],[121.5938,25.1499],[121.5983,25.1404],[121.6053,25.1355],[121.6046,25.1308],[121.6076,25.1293],[121.6041,25.1257],[121.6017,25.126],[121.6008,25.1218],[121.5988,25.1196],[121.5955,25.1134],[121.5975,25.1095],[121.608,25.1068],[121.6105,25.1051],[121.6154,25.1039],[121.6175,25.101],[121.6261,25.0957],[121.625,25.0937],[121.626,25.0905],[121.6286,25.0865],[121.6277,25.0826],[121.6242,25.0803],[121.6232,25.0758],[121.6206,25.0733],[121.6208,25.0691],[121.6176,25.0676],[121.6185,25.0631],[121.6208,25.0614],[121.6243,25.0555],[121.6202,25.0557],[121.6209,25.0534],[121.6163,25.0506],[121.6169,25.0475],[121.6191,25.0435],[121.6249,25.0377],[121.6264,25.0379],[121.634,25.0348],[121.638,25.0337],[121.6488,25.0279],[121.6551,25.0275],[121.6615,25.0305],[121.6648,25.0295],[121.6654,25.026],[121.6641,25.0233],[121.6576,25.0232],[121.6541,25.0244],[121.6499,25.024],[121.6462,25.0217],[121.6429,25.0246],[121.6408,25.0235],[121.6357,25.0232],[121.6326,25.0256],[121.6309,25.0247],[121.6288,25.0198],[121.6227,25.0173],[121.6206,25.0184],[121.6102,25.0199],[121.6041,25.0191],[121.6027,25.0151],[121.5975,25.0148],[121.5956,25.007],[121.6005,25.0011],[121.6005,24.9984],[121.5981,24.9945],[121.5991,24.9916],[121.602,24.9904],[121.6019,24.988],[121.5998,24.9863],[121.6007,24.9803],[121.6001,24.977],[121.6051,24.9744],[121.6114,24.9746],[121.6198,24.9701],[121.6198,24.9674],[121.6171,24.9675],[121.6102,24.9649],[121.6084,24.9631],[121.6058,24.9631],[121.602,24.9611],[121.5969,24.9606],[121.5934,24.9642],[121.5912,24.9646],[121.5857,24.9632],[121.5786,24.9666],[121.5745,24.9668],[121.5728,24.964],[121.5653,24.9641],[121.5612,24.9647],[121.5585,24.9683],[121.5575,24.9723],[121.5537,24.9773],[121.5531,24.9813],[121.5538,24.9852],[121.5517,24.9874],[121.5492,24.9838],[121.5461,24.9833],[121.5442,24.9846],[121.544,24.9883],[121.5392,24.9877],[121.5368,24.9887],[121.5371,24.9923],[121.535,24.9951],[121.5317,24.9947],[121.5305,24.9978],[121.5318,25.0014],[121.5339,25.0036],[121.5309,25.0097],[121.5262,25.0114],[121.5216,25.0176],[121.5189,25.0198],[121.5143,25.0214],[121.5088,25.0212],[121.5048,25.0174],[121.5013,25.0129],[121.4973,25.01],[121.4931,25.0092],[121.4896,25.0132],[121.4887,25.0154],[121.4885,25.0239],[121.485,25.0313],[121.4836,25.0362],[121.4847,25.0387],[121.4888,25.0426],[121.4955,25.0429],[121.5004,25.0452],[121.5045,25.0495],[121.5064,25.056],[121.5054,25.0597],[121.5068,25.0645],[121.507,25.0711],[121.5062,25.0744],[121.5026,25.083],[121.5,25.087],[121.4887,25.0972],[121.4811,25.1009],[121.4786,25.1014],[121.4667,25.1016],[121.4616,25.1037],[121.4579,25.1064],[121.4577,25.1104],[121.4609,25.116],[121.4591,25.123],[121.4643,25.124],[121.4643,25.1273],[121.4656,25.1316],[121.4694,25.136],[121.4816,25.1479],[121.4839,25.1508],[121.4866,25.1508],[121.4929,25.1609],[121.4989,25.1652],[121.5019,25.1695],[121.5026,25.1733],[121.5047,25.1733],[121.5104,25.1694],[121.5139,25.171],[121.5196,25.1692],[121.5226,25.1747],[121.5217,25.1791],[121.5258,25.1829],[121.5334,25.1836],[121.5358,25.1867],[121.5406,25.1871],[121.5428,25.1888],[121.5432,25.1937],[121.549,25.1982],[121.5526,25.1988],[121.5517,25.2036],[121.5531,25.2042],[121.5549,25.2083],[121.5593,25.2102],[121.5628,25.2092],[121.5636,25.2056],[121.5662,25.1996],[121.57,25.1983],[121.5719,25.1953],[121.5754,25.1956],[121.5792,25.1941],[121.5805,25.1954],[121.5837,25.1946]]]},"properties":{"COUNTYID":"F","COUNTYCODE":"65000","COUNTYNAME":"新北市","COUNTYENG":"New Taipei City"}}, -{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[121.452,24.3647],[121.4487,24.3715],[121.448,24.3748],[121.4429,24.3732],[121.4378,24.3829],[121.4294,24.3831],[121.4233,24.3814],[121.4196,24.3792],[121.4132,24.3798],[121.4085,24.3781],[121.4041,24.3778],[121.4019,24.3796],[121.3983,24.3778],[121.3958,24.378],[121.3932,24.3753],[121.3902,24.3753],[121.3879,24.37],[121.3804,24.367],[121.3774,24.3684],[121.3738,24.368],[121.3693,24.3725],[121.3671,24.3787],[121.3698,24.3821],[121.3688,24.3849],[121.3647,24.3892],[121.3594,24.3904],[121.3553,24.3931],[121.3426,24.3928],[121.3383,24.3902],[121.3311,24.3985],[121.3279,24.3983],[121.3261,24.4006],[121.325,24.4069],[121.3274,24.4127],[121.3274,24.4215],[121.3287,24.4274],[121.3277,24.4306],[121.3283,24.4335],[121.3206,24.4411],[121.3177,24.4415],[121.313,24.4368],[121.3103,24.4364],[121.3057,24.4326],[121.2976,24.4331],[121.2932,24.4311],[121.2843,24.4306],[121.2785,24.4293],[121.2716,24.4298],[121.2693,24.4274],[121.2654,24.4286],[121.2608,24.4286],[121.2591,24.4309],[121.26,24.4362],[121.2589,24.438],[121.2589,24.4277],[121.2576,24.425],[121.25,24.4249],[121.2461,24.4228],[121.2436,24.4196],[121.2436,24.4166],[121.242,24.4142],[121.2434,24.4109],[121.2436,24.4059],[121.2401,24.4035],[121.2381,24.4004],[121.2346,24.3971],[121.2349,24.3915],[121.2316,24.3877],[121.2321,24.384],[121.2253,24.383],[121.2185,24.3813],[121.2159,24.3795],[121.2136,24.3817],[121.2135,24.384],[121.2104,24.3916],[121.2108,24.395],[121.2072,24.3979],[121.2007,24.3976],[121.1971,24.3964],[121.1969,24.392],[121.1902,24.3816],[121.1833,24.381],[121.1791,24.3782],[121.1733,24.3731],[121.1741,24.369],[121.169,24.3643],[121.1689,24.3615],[121.1594,24.3608],[121.1555,24.359],[121.1489,24.3579],[121.1443,24.3582],[121.1409,24.3596],[121.1356,24.3525],[121.1334,24.3516],[121.1302,24.3447],[121.1281,24.3419],[121.1253,24.342],[121.1222,24.3367],[121.1216,24.3307],[121.1185,24.3304],[121.1149,24.3286],[121.1085,24.331],[121.1036,24.3266],[121.1023,24.3246],[121.0982,24.3237],[121.0952,24.322],[121.094,24.3195],[121.0863,24.3177],[121.0815,24.3241],[121.0791,24.323],[121.0731,24.3228],[121.0739,24.3192],[121.0698,24.3156],[121.066,24.3157],[121.059,24.3129],[121.0553,24.3104],[121.055,24.3078],[121.0527,24.3047],[121.0523,24.2995],[121.0493,24.296],[121.0452,24.2953],[121.0381,24.2964],[121.0341,24.2978],[121.0313,24.3026],[121.0288,24.3052],[121.02,24.3092],[121.0177,24.3117],[121.0145,24.3201],[121.0116,24.324],[121.0082,24.3269],[121.0047,24.332],[121.0001,24.3325],[120.9976,24.3301],[120.9918,24.3296],[120.9854,24.3318],[120.982,24.3359],[120.9802,24.3346],[120.973,24.3336],[120.9662,24.3335],[120.96,24.3352],[120.9571,24.3392],[120.9425,24.3391],[120.9359,24.3429],[120.9328,24.3421],[120.9263,24.3386],[120.9201,24.3373],[120.9172,24.3359],[120.9167,24.3327],[120.9194,24.3251],[120.9207,24.3181],[120.9201,24.3112],[120.9225,24.3047],[120.9215,24.302],[120.9175,24.2995],[120.9119,24.2941],[120.9051,24.2923],[120.9022,24.2922],[120.8907,24.2942],[120.8761,24.295],[120.8657,24.2927],[120.8572,24.2891],[120.8505,24.2885],[120.8377,24.2893],[120.8336,24.2905],[120.8239,24.2983],[120.82,24.3031],[120.8184,24.3063],[120.8074,24.3152],[120.8047,24.3161],[120.796,24.3164],[120.7927,24.3175],[120.784,24.3183],[120.7721,24.3222],[120.767,24.3256],[120.7626,24.3262],[120.7583,24.3287],[120.7433,24.3405],[120.7385,24.3451],[120.7344,24.3479],[120.7301,24.352],[120.7231,24.3547],[120.7073,24.3579],[120.7075,24.3617],[120.7038,24.3617],[120.6923,24.3675],[120.6898,24.3745],[120.6862,24.3785],[120.6774,24.384],[120.6786,24.3871],[120.6724,24.3913],[120.671,24.3911],[120.6673,24.3966],[120.6657,24.4003],[120.6582,24.4066],[120.6487,24.4095],[120.6433,24.4153],[120.6432,24.4218],[120.6407,24.4235],[120.6397,24.4278],[120.6319,24.4326],[120.6288,24.4378],[120.6219,24.4403],[120.6193,24.4349],[120.6152,24.4321],[120.6147,24.4287],[120.6103,24.4259],[120.6102,24.4233],[120.6076,24.4195],[120.6026,24.4156],[120.5988,24.4078],[120.594,24.4039],[120.5898,24.3992],[120.5867,24.3923],[120.5836,24.3898],[120.5711,24.3742],[120.5704,24.3698],[120.5682,24.3661],[120.5656,24.3639],[120.5653,24.3637],[120.5653,24.3636],[120.5653,24.3637],[120.5656,24.3639],[120.5647,24.3637],[120.5628,24.3618],[120.5617,24.3579],[120.5593,24.3543],[120.5593,24.3502],[120.5558,24.3477],[120.5504,24.3415],[120.5458,24.3349],[120.5408,24.3354],[120.5391,24.3321],[120.5331,24.3231],[120.5323,24.3205],[120.526,24.3177],[120.5237,24.3158],[120.5189,24.3064],[120.5168,24.2985],[120.514,24.2948],[120.5111,24.2927],[120.5079,24.2836],[120.4982,24.2639],[120.4929,24.2659],[120.4889,24.2563],[120.4895,24.2533],[120.481,24.2334],[120.4797,24.2322],[120.4763,24.2243],[120.4723,24.2223],[120.4688,24.2145],[120.4657,24.215],[120.4603,24.2116],[120.4566,24.2072],[120.4979,24.1934],[120.5044,24.1911],[120.5081,24.1872],[120.5103,24.1825],[120.5175,24.1653],[120.5208,24.1585],[120.5242,24.1529],[120.5259,24.1485],[120.525,24.1436],[120.5234,24.1399],[120.5335,24.1258],[120.5403,24.124],[120.5452,24.1166],[120.549,24.1142],[120.5537,24.1128],[120.5578,24.1126],[120.5653,24.1099],[120.5731,24.1083],[120.5766,24.1096],[120.5836,24.1095],[120.5864,24.107],[120.5949,24.1049],[120.6,24.1052],[120.6026,24.1029],[120.6124,24.1024],[120.6125,24.0991],[120.6149,24.0902],[120.6149,24.085],[120.6195,24.0732],[120.6242,24.0713],[120.6254,24.0687],[120.6257,24.0569],[120.6234,24.052],[120.6258,24.0468],[120.626,24.0416],[120.6277,24.0376],[120.6242,24.0334],[120.6248,24.0305],[120.6278,24.0296],[120.6361,24.0311],[120.6375,24.0285],[120.6446,24.0259],[120.6462,24.0283],[120.6444,24.0323],[120.6467,24.0338],[120.6518,24.0285],[120.6557,24.0307],[120.6611,24.0257],[120.6635,24.025],[120.6684,24.0207],[120.6786,24.014],[120.686,24.0105],[120.6949,24.0071],[120.7064,24.0052],[120.7192,24.0097],[120.7318,24.009],[120.7436,24.0022],[120.7454,23.9992],[120.7476,23.9991],[120.7511,24.0029],[120.7556,24.0034],[120.7578,24.006],[120.7625,24.0062],[120.7678,24.0092],[120.7707,24.0091],[120.7714,24.0144],[120.7752,24.0185],[120.7798,24.0203],[120.783,24.0238],[120.7847,24.0242],[120.7855,24.0287],[120.7896,24.0313],[120.7915,24.0306],[120.7921,24.036],[120.7974,24.0411],[120.7966,24.0428],[120.8007,24.0486],[120.8011,24.0515],[120.8033,24.0521],[120.8033,24.0564],[120.8063,24.0604],[120.8069,24.0642],[120.8089,24.0662],[120.8118,24.066],[120.8158,24.0687],[120.8194,24.0685],[120.8207,24.0698],[120.8294,24.0725],[120.8284,24.0766],[120.8289,24.0837],[120.8281,24.0864],[120.8285,24.0945],[120.8324,24.0981],[120.8303,24.1021],[120.8346,24.1078],[120.8345,24.1132],[120.8362,24.1169],[120.8451,24.1246],[120.8489,24.1239],[120.8536,24.1246],[120.8562,24.1215],[120.8572,24.1173],[120.8586,24.1162],[120.8657,24.1155],[120.8689,24.1176],[120.8723,24.1169],[120.8778,24.1097],[120.8814,24.1005],[120.8791,24.0984],[120.8782,24.0935],[120.8769,24.0914],[120.8783,24.0852],[120.8803,24.0886],[120.882,24.0884],[120.8861,24.0956],[120.89,24.0966],[120.8915,24.0982],[120.891,24.1017],[120.8941,24.1064],[120.8942,24.1107],[120.8902,24.1135],[120.8919,24.1161],[120.8962,24.1165],[120.9052,24.1141],[120.9073,24.1105],[120.9096,24.1092],[120.9132,24.109],[120.9149,24.1075],[120.9199,24.1074],[120.9231,24.1099],[120.9271,24.1117],[120.9319,24.1122],[120.9355,24.1157],[120.9396,24.1183],[120.9445,24.1229],[120.9484,24.1249],[120.9494,24.1275],[120.9519,24.1273],[120.9571,24.1242],[120.961,24.1202],[120.971,24.1203],[120.9736,24.1196],[120.9753,24.1169],[120.9836,24.1191],[120.9852,24.1202],[120.989,24.1187],[120.9919,24.1208],[120.9923,24.1254],[120.9996,24.1278],[121.0006,24.1325],[121.0026,24.133],[121.0069,24.1411],[121.0082,24.147],[121.0158,24.1562],[121.0199,24.1589],[121.0239,24.1579],[121.0274,24.1587],[121.0298,24.1573],[121.0314,24.1526],[121.0309,24.1495],[121.0335,24.1486],[121.0357,24.1509],[121.0358,24.1532],[121.038,24.1582],[121.0429,24.1586],[121.0474,24.1601],[121.0507,24.1581],[121.0527,24.1548],[121.0574,24.1587],[121.0593,24.1627],[121.0646,24.163],[121.0663,24.1655],[121.0728,24.17],[121.075,24.17],[121.081,24.1748],[121.0849,24.1759],[121.0908,24.182],[121.0911,24.1849],[121.0941,24.188],[121.0963,24.1921],[121.1093,24.198],[121.1134,24.1968],[121.1184,24.1973],[121.1229,24.196],[121.1317,24.1969],[121.1364,24.1963],[121.1414,24.1996],[121.143,24.2053],[121.1461,24.2088],[121.1481,24.2131],[121.1515,24.2129],[121.157,24.2148],[121.161,24.2152],[121.1641,24.2199],[121.1644,24.2218],[121.1676,24.2254],[121.1735,24.2203],[121.1785,24.214],[121.1822,24.2121],[121.1852,24.2145],[121.1888,24.215],[121.1965,24.2231],[121.2016,24.2216],[121.2082,24.2217],[121.2168,24.2261],[121.2188,24.2289],[121.2271,24.2256],[121.2308,24.2261],[121.2304,24.2235],[121.238,24.2197],[121.2407,24.2217],[121.2442,24.2225],[121.2474,24.2288],[121.2512,24.238],[121.2546,24.2428],[121.2609,24.2456],[121.265,24.2459],[121.2687,24.2383],[121.2707,24.2366],[121.2767,24.2356],[121.2799,24.2298],[121.2832,24.231],[121.2862,24.2291],[121.2889,24.2302],[121.2941,24.2296],[121.2951,24.2322],[121.2989,24.2358],[121.3025,24.2363],[121.3039,24.2337],[121.3086,24.2349],[121.3163,24.2345],[121.3194,24.2319],[121.3248,24.233],[121.3302,24.2312],[121.3403,24.2259],[121.343,24.2236],[121.3522,24.2343],[121.3532,24.2401],[121.3525,24.2432],[121.3562,24.2446],[121.3607,24.2439],[121.3643,24.2471],[121.367,24.2522],[121.3731,24.2541],[121.3766,24.253],[121.3802,24.2533],[121.3851,24.2551],[121.3858,24.2586],[121.3855,24.2644],[121.3831,24.2684],[121.3822,24.2762],[121.3805,24.2798],[121.3866,24.2841],[121.3909,24.2897],[121.3935,24.2882],[121.397,24.2902],[121.403,24.2962],[121.4046,24.3023],[121.4054,24.3083],[121.412,24.3073],[121.4167,24.3092],[121.4202,24.3076],[121.4232,24.3082],[121.4261,24.314],[121.4316,24.3205],[121.4348,24.322],[121.4345,24.3256],[121.4325,24.3296],[121.4345,24.3387],[121.4378,24.3423],[121.4358,24.3463],[121.4378,24.3521],[121.4399,24.3545],[121.4416,24.3586],[121.4473,24.3595],[121.4487,24.3628],[121.452,24.3647]]]},"properties":{"COUNTYID":"B","COUNTYCODE":"66000","COUNTYNAME":"臺中市","COUNTYENG":"Taichung City"}}, -{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[120.6534,23.2245],[120.6482,23.2255],[120.6443,23.2253],[120.6389,23.228],[120.6282,23.2294],[120.625,23.2273],[120.6181,23.2255],[120.6168,23.2235],[120.6129,23.224],[120.6097,23.2227],[120.6065,23.2258],[120.6029,23.226],[120.5972,23.229],[120.5959,23.2365],[120.5923,23.2397],[120.5917,23.2361],[120.5902,23.2343],[120.5867,23.2243],[120.5801,23.2195],[120.5783,23.2148],[120.5747,23.2178],[120.571,23.2182],[120.5653,23.221],[120.5609,23.2173],[120.555,23.2175],[120.5527,23.2201],[120.5505,23.2207],[120.5489,23.2235],[120.544,23.2266],[120.5358,23.2293],[120.5318,23.2298],[120.5296,23.2326],[120.5257,23.2315],[120.5191,23.2393],[120.5242,23.242],[120.5303,23.2485],[120.5322,23.2553],[120.5307,23.256],[120.5261,23.2665],[120.5204,23.2718],[120.5223,23.2741],[120.521,23.2798],[120.5227,23.2814],[120.523,23.2843],[120.5218,23.2879],[120.5246,23.2917],[120.5263,23.2958],[120.524,23.302],[120.5232,23.3094],[120.5234,23.313],[120.5273,23.3146],[120.5316,23.3181],[120.5319,23.3212],[120.5338,23.322],[120.5369,23.3264],[120.54,23.3278],[120.537,23.333],[120.5303,23.3381],[120.5267,23.3394],[120.5245,23.3383],[120.5231,23.3407],[120.517,23.3425],[120.5155,23.3438],[120.5104,23.3441],[120.5077,23.343],[120.5044,23.3467],[120.5036,23.3512],[120.5057,23.3554],[120.5081,23.3528],[120.5122,23.3554],[120.5124,23.36],[120.5105,23.3644],[120.5082,23.3649],[120.5046,23.369],[120.4995,23.368],[120.4961,23.37],[120.4943,23.3695],[120.4914,23.3725],[120.4884,23.3731],[120.4861,23.3702],[120.4829,23.3723],[120.4836,23.3775],[120.4854,23.3803],[120.4933,23.3838],[120.4972,23.3845],[120.4992,23.3879],[120.4946,23.3945],[120.4902,23.3956],[120.4868,23.3924],[120.4794,23.3876],[120.474,23.3974],[120.4675,23.4011],[120.4651,23.4007],[120.4555,23.4067],[120.4445,23.411],[120.4412,23.4131],[120.4381,23.4134],[120.4321,23.4107],[120.4304,23.4065],[120.4219,23.407],[120.4197,23.4036],[120.4178,23.4088],[120.414,23.4112],[120.4107,23.4101],[120.4081,23.4134],[120.4042,23.41],[120.3964,23.4073],[120.381,23.4034],[120.3719,23.4033],[120.3598,23.4027],[120.3534,23.4012],[120.3494,23.4013],[120.343,23.3982],[120.3429,23.3965],[120.3333,23.3858],[120.3284,23.3861],[120.3218,23.3835],[120.3178,23.3884],[120.3148,23.3885],[120.311,23.3856],[120.3105,23.3821],[120.3109,23.3754],[120.308,23.3749],[120.3035,23.3759],[120.2929,23.3754],[120.2855,23.3666],[120.2837,23.3618],[120.2838,23.3587],[120.2861,23.354],[120.2862,23.3503],[120.2812,23.3482],[120.2765,23.3481],[120.2739,23.3525],[120.2705,23.3537],[120.2676,23.3535],[120.2646,23.3509],[120.2607,23.3445],[120.2675,23.3448],[120.2671,23.3407],[120.2564,23.3311],[120.2496,23.3291],[120.2466,23.327],[120.2397,23.3276],[120.2361,23.3245],[120.2345,23.3202],[120.2314,23.3165],[120.2284,23.3105],[120.2268,23.3048],[120.2209,23.296],[120.2144,23.2924],[120.2118,23.2927],[120.2086,23.2913],[120.2045,23.2918],[120.1996,23.2943],[120.1915,23.3004],[120.1884,23.3012],[120.1862,23.2981],[120.1861,23.2954],[120.189,23.2929],[120.1879,23.29],[120.1805,23.2909],[120.1759,23.294],[120.1739,23.2999],[120.1711,23.3044],[120.1662,23.3085],[120.1608,23.3106],[120.1557,23.3103],[120.1545,23.3129],[120.1499,23.3131],[120.1485,23.3146],[120.1486,23.3196],[120.1471,23.3211],[120.1377,23.3273],[120.1325,23.3297],[120.1181,23.3402],[120.114,23.3362],[120.111,23.3318],[120.1136,23.3223],[120.1125,23.3156],[120.1108,23.3104],[120.1068,23.3053],[120.1031,23.3045],[120.1019,23.3023],[120.0963,23.2991],[120.0943,23.295],[120.0951,23.2881],[120.095,23.2804],[120.0934,23.2661],[120.0921,23.2593],[120.0894,23.2498],[120.0877,23.2466],[120.0806,23.2376],[120.0807,23.229],[120.0819,23.2223],[120.0795,23.2069],[120.0775,23.2005],[120.0722,23.1911],[120.0696,23.1828],[120.0676,23.1795],[120.0632,23.1702],[120.0604,23.1633],[120.0589,23.1581],[120.0556,23.1362],[120.0537,23.1334],[120.0521,23.126],[120.0439,23.1192],[120.0408,23.113],[120.0388,23.1103],[120.0349,23.1016],[120.0316,23.087],[120.0278,23.0747],[120.0285,23.0724],[120.0269,23.0679],[120.0285,23.0665],[120.039,23.068],[120.0459,23.0586],[120.0515,23.0501],[120.0579,23.0431],[120.0619,23.0443],[120.0677,23.041],[120.0745,23.0389],[120.0871,23.0327],[120.1102,23.0189],[120.1196,23.0112],[120.1347,22.9994],[120.1411,22.996],[120.1407,22.9932],[120.1475,22.9878],[120.15,22.9842],[120.1532,22.9814],[120.1587,22.9749],[120.1598,22.9712],[120.1554,22.9675],[120.1554,22.9647],[120.1598,22.9636],[120.1629,22.9649],[120.1646,22.9617],[120.1687,22.9569],[120.1721,22.9495],[120.1738,22.9428],[120.1751,22.9344],[120.1749,22.9266],[120.173,22.9193],[120.1749,22.9142],[120.1747,22.9117],[120.1769,22.9124],[120.1814,22.9164],[120.1866,22.9197],[120.1921,22.9212],[120.1947,22.9203],[120.2023,22.9154],[120.2081,22.9152],[120.2117,22.912],[120.2161,22.9099],[120.2203,22.9096],[120.2226,22.9113],[120.2259,22.9156],[120.228,22.9169],[120.2317,22.9154],[120.2315,22.9092],[120.2331,22.9054],[120.2429,22.9035],[120.2476,22.8982],[120.252,22.8951],[120.2565,22.894],[120.2588,22.8969],[120.2569,22.899],[120.2579,22.9017],[120.2605,22.9018],[120.2734,22.8953],[120.2796,22.8964],[120.2778,22.9019],[120.2797,22.9049],[120.2848,22.9047],[120.3034,22.9004],[120.3091,22.9006],[120.3142,22.8998],[120.3169,22.8981],[120.3192,22.8951],[120.3209,22.8956],[120.3249,22.9005],[120.3278,22.897],[120.3309,22.8905],[120.3323,22.8893],[120.3451,22.8894],[120.3488,22.8906],[120.3509,22.8893],[120.3556,22.8939],[120.3611,22.8979],[120.3596,22.9015],[120.366,22.9022],[120.3663,22.9051],[120.3723,22.9079],[120.3713,22.9114],[120.3738,22.9142],[120.3768,22.9149],[120.3775,22.9182],[120.383,22.92],[120.3869,22.9183],[120.3887,22.9207],[120.3922,22.9223],[120.399,22.9223],[120.4011,22.9185],[120.4053,22.9182],[120.4063,22.9147],[120.4089,22.9126],[120.4108,22.9144],[120.4162,22.9161],[120.4184,22.9212],[120.4221,22.9276],[120.422,22.9294],[120.4257,22.9358],[120.4261,22.9394],[120.4286,22.9408],[120.4307,22.9484],[120.4327,22.9526],[120.4329,22.9555],[120.4362,22.9605],[120.4383,22.966],[120.4422,22.9738],[120.4426,22.9773],[120.4455,22.9794],[120.4496,22.9772],[120.4531,22.9785],[120.4548,22.9826],[120.4532,22.9849],[120.455,22.991],[120.4597,22.9899],[120.461,22.9924],[120.4591,22.9959],[120.4615,22.9982],[120.4595,23.0008],[120.4604,23.0035],[120.4672,23.0036],[120.4708,23.0024],[120.48,23.0036],[120.4813,23.0111],[120.4827,23.0156],[120.487,23.019],[120.4913,23.0209],[120.5037,23.0286],[120.509,23.0351],[120.5139,23.0387],[120.5196,23.0449],[120.5222,23.0456],[120.523,23.0496],[120.5265,23.053],[120.5316,23.0567],[120.5351,23.0574],[120.538,23.0607],[120.5465,23.0655],[120.5546,23.0689],[120.5591,23.0734],[120.56,23.0769],[120.5634,23.08],[120.5671,23.082],[120.5748,23.0914],[120.5741,23.0949],[120.5756,23.0956],[120.5773,23.0996],[120.5831,23.1079],[120.5882,23.1143],[120.5889,23.1201],[120.5884,23.1234],[120.5905,23.1272],[120.5948,23.1318],[120.5952,23.1345],[120.5975,23.1374],[120.6011,23.1442],[120.6055,23.1463],[120.612,23.152],[120.6112,23.156],[120.615,23.1595],[120.6165,23.1631],[120.6208,23.1628],[120.6231,23.164],[120.6252,23.1678],[120.6311,23.1704],[120.6298,23.1745],[120.6362,23.1751],[120.6374,23.1806],[120.6404,23.1832],[120.6384,23.1857],[120.6366,23.1904],[120.6389,23.1932],[120.6408,23.1984],[120.6431,23.2011],[120.6433,23.2033],[120.6461,23.207],[120.6488,23.2087],[120.6515,23.2085],[120.6538,23.2153],[120.6562,23.2176],[120.6552,23.2235],[120.6534,23.2245]]]},"properties":{"COUNTYID":"D","COUNTYCODE":"67000","COUNTYNAME":"臺南市","COUNTYENG":"Tainan City"}}, -{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[121.2834,25.1178],[121.269,25.1199],[121.2598,25.1236],[121.2576,25.1221],[121.2436,25.1186],[121.2392,25.1201],[121.2396,25.1157],[121.2364,25.116],[121.2294,25.1152],[121.2201,25.1119],[121.2121,25.11],[121.2012,25.1045],[121.1977,25.1041],[121.1972,25.1023],[121.1914,25.1008],[121.1886,25.098],[121.1843,25.0959],[121.1747,25.0937],[121.1701,25.0902],[121.1646,25.0874],[121.1551,25.0837],[121.1441,25.0806],[121.1374,25.0795],[121.1326,25.0781],[121.125,25.0768],[121.1121,25.0723],[121.1052,25.0692],[121.101,25.068],[121.0949,25.0634],[121.09,25.063],[121.0866,25.0564],[121.0847,25.056],[121.0721,25.0499],[121.066,25.0492],[121.0589,25.0475],[121.0561,25.0462],[121.0487,25.0408],[121.0438,25.0347],[121.0385,25.0309],[121.0286,25.0206],[121.0254,25.0146],[121.02,25.0082],[121.0184,25.0051],[121.0162,24.9954],[121.0146,24.9928],[121.0093,24.9902],[121.0112,24.9843],[121.011,24.9784],[121.0099,24.975],[121.0035,24.9676],[120.9984,24.9586],[120.9936,24.9555],[120.9865,24.9483],[120.9848,24.9436],[120.982,24.94],[120.9875,24.939],[120.9918,24.935],[120.9939,24.939],[120.9982,24.9408],[121.0025,24.9399],[121.0044,24.9434],[121.0072,24.9462],[121.0096,24.9442],[121.0193,24.9404],[121.0223,24.9414],[121.0259,24.9405],[121.0294,24.9452],[121.0306,24.9439],[121.0382,24.9464],[121.0405,24.9433],[121.0463,24.9436],[121.0484,24.9396],[121.0518,24.9386],[121.0554,24.9363],[121.0584,24.9367],[121.0577,24.9333],[121.0593,24.9266],[121.0609,24.9241],[121.0608,24.9204],[121.0582,24.9139],[121.0592,24.9081],[121.0576,24.9058],[121.0612,24.9037],[121.0684,24.9031],[121.0709,24.9012],[121.077,24.8987],[121.0834,24.8989],[121.0865,24.8965],[121.0928,24.8934],[121.1007,24.895],[121.1091,24.8977],[121.111,24.891],[121.1078,24.8864],[121.1136,24.8825],[121.1149,24.8826],[121.124,24.8799],[121.1281,24.881],[121.1329,24.8798],[121.1342,24.8784],[121.1395,24.8824],[121.1444,24.8805],[121.1493,24.8812],[121.1522,24.8802],[121.1557,24.8807],[121.1579,24.8773],[121.1569,24.8737],[121.1594,24.869],[121.1613,24.8593],[121.1564,24.8558],[121.1557,24.8503],[121.1535,24.8486],[121.1518,24.8438],[121.1548,24.8422],[121.1602,24.8373],[121.1738,24.8335],[121.1759,24.8311],[121.1762,24.8275],[121.1835,24.8249],[121.1966,24.8177],[121.1989,24.8149],[121.201,24.8179],[121.2033,24.8173],[121.2031,24.8146],[121.2059,24.8124],[121.2028,24.8099],[121.2046,24.8074],[121.2083,24.8074],[121.2096,24.8095],[121.217,24.8124],[121.2197,24.8117],[121.2187,24.8086],[121.2196,24.804],[121.2215,24.7995],[121.228,24.8028],[121.2405,24.8057],[121.2434,24.8087],[121.2454,24.807],[121.2477,24.8025],[121.2468,24.7985],[121.2479,24.7965],[121.2522,24.7939],[121.2575,24.7928],[121.2605,24.793],[121.2612,24.79],[121.2588,24.7845],[121.2598,24.7822],[121.2706,24.7784],[121.2713,24.7748],[121.2731,24.7748],[121.2788,24.7707],[121.2843,24.7704],[121.2875,24.7687],[121.2925,24.7677],[121.2936,24.7643],[121.2986,24.7629],[121.3003,24.7636],[121.3041,24.7574],[121.3077,24.7552],[121.3051,24.7502],[121.3052,24.7461],[121.3008,24.7414],[121.3001,24.7374],[121.2982,24.7338],[121.2987,24.7307],[121.3007,24.7297],[121.3056,24.7241],[121.3076,24.7202],[121.3064,24.7131],[121.3032,24.7082],[121.3023,24.7019],[121.2995,24.6966],[121.3006,24.6941],[121.3039,24.6929],[121.3132,24.6977],[121.3179,24.6981],[121.321,24.6955],[121.3231,24.6954],[121.3298,24.691],[121.3359,24.6836],[121.339,24.6791],[121.3404,24.6664],[121.3439,24.6694],[121.3455,24.6664],[121.3485,24.6679],[121.3537,24.6647],[121.3532,24.6548],[121.3522,24.6525],[121.353,24.6488],[121.3524,24.6434],[121.3556,24.6414],[121.3574,24.6376],[121.3581,24.6335],[121.3612,24.6338],[121.3651,24.6319],[121.3654,24.6283],[121.3633,24.6232],[121.3588,24.6165],[121.3612,24.6101],[121.3635,24.608],[121.3633,24.6031],[121.3673,24.5988],[121.3715,24.5973],[121.3734,24.5934],[121.3812,24.5904],[121.3876,24.5865],[121.3917,24.5865],[121.3957,24.5889],[121.403,24.5917],[121.4089,24.5994],[121.4158,24.6023],[121.4183,24.601],[121.4226,24.6022],[121.4276,24.6057],[121.4306,24.6145],[121.4329,24.6162],[121.4335,24.6188],[121.4357,24.6213],[121.4348,24.6245],[121.4404,24.635],[121.4447,24.6369],[121.4456,24.6391],[121.4454,24.6438],[121.4488,24.646],[121.4513,24.6517],[121.4488,24.6532],[121.4477,24.6584],[121.4497,24.6623],[121.4539,24.6644],[121.455,24.6679],[121.4598,24.6733],[121.4692,24.6718],[121.4722,24.6731],[121.48,24.6739],[121.4755,24.6807],[121.4754,24.6838],[121.4739,24.6853],[121.473,24.6898],[121.4748,24.6935],[121.4742,24.6961],[121.4696,24.6961],[121.4638,24.7009],[121.4599,24.7028],[121.4571,24.7031],[121.4501,24.7058],[121.4488,24.7122],[121.4451,24.7148],[121.4414,24.7235],[121.441,24.7259],[121.4383,24.7266],[121.4341,24.7304],[121.4354,24.7329],[121.4328,24.7373],[121.4321,24.7421],[121.4303,24.7437],[121.4286,24.7482],[121.4285,24.7535],[121.4256,24.7584],[121.4259,24.7605],[121.4234,24.7617],[121.4254,24.767],[121.432,24.7722],[121.4348,24.7726],[121.4379,24.7746],[121.4402,24.7788],[121.446,24.7817],[121.4496,24.7864],[121.4488,24.7882],[121.4385,24.7951],[121.4371,24.7981],[121.438,24.8039],[121.4366,24.8121],[121.4318,24.8137],[121.4253,24.82],[121.4235,24.8255],[121.4168,24.8257],[121.4161,24.8287],[121.4138,24.832],[121.4156,24.8356],[121.4104,24.8386],[121.4088,24.8406],[121.4028,24.8436],[121.4007,24.8417],[121.3981,24.8417],[121.3964,24.8436],[121.3935,24.844],[121.385,24.8408],[121.3846,24.8381],[121.3791,24.8351],[121.3735,24.8333],[121.3727,24.8351],[121.3642,24.8381],[121.3603,24.8381],[121.3578,24.8395],[121.3549,24.844],[121.3465,24.8459],[121.3395,24.8434],[121.3359,24.844],[121.3372,24.8484],[121.3428,24.8487],[121.3464,24.8502],[121.3485,24.8485],[121.3533,24.8505],[121.3556,24.8551],[121.3534,24.8587],[121.3494,24.8597],[121.3473,24.8621],[121.3459,24.8682],[121.3492,24.8687],[121.3529,24.8709],[121.3544,24.8732],[121.3506,24.8786],[121.3471,24.8787],[121.3456,24.8801],[121.3447,24.8859],[121.3413,24.8876],[121.3421,24.8908],[121.3382,24.8932],[121.3335,24.8922],[121.3321,24.8936],[121.3337,24.899],[121.3319,24.8999],[121.3278,24.8959],[121.3205,24.9002],[121.3219,24.9036],[121.3262,24.9072],[121.3226,24.9124],[121.3176,24.9165],[121.3247,24.9234],[121.3276,24.9247],[121.3352,24.9249],[121.3398,24.9285],[121.3341,24.9298],[121.3225,24.9281],[121.3232,24.9313],[121.3177,24.9354],[121.316,24.9387],[121.3248,24.9436],[121.3304,24.9445],[121.3316,24.9455],[121.328,24.949],[121.3281,24.9555],[121.3291,24.9623],[121.3281,24.9729],[121.325,24.9711],[121.3237,24.9728],[121.3276,24.9748],[121.3271,24.9777],[121.3303,24.9793],[121.334,24.9787],[121.3367,24.9807],[121.341,24.9802],[121.3428,24.9823],[121.3471,24.9788],[121.3523,24.9809],[121.354,24.9778],[121.3613,24.9779],[121.3639,24.9796],[121.3691,24.9768],[121.3722,24.9798],[121.3765,24.9811],[121.379,24.9834],[121.3819,24.9839],[121.3856,24.9865],[121.3835,24.9883],[121.3841,24.9957],[121.387,24.996],[121.3905,24.9933],[121.3943,24.9935],[121.3969,24.9973],[121.4033,25.0003],[121.4003,25.0041],[121.3997,25.0068],[121.3926,25.0105],[121.3927,25.0139],[121.3971,25.0162],[121.4017,25.0158],[121.4041,25.0172],[121.4091,25.0184],[121.4088,25.0208],[121.4045,25.0238],[121.4015,25.028],[121.3983,25.0301],[121.3985,25.0346],[121.4013,25.0374],[121.3944,25.0401],[121.3931,25.0436],[121.3985,25.0438],[121.398,25.0468],[121.4004,25.0515],[121.3975,25.0515],[121.3925,25.0537],[121.3865,25.0538],[121.3883,25.0571],[121.3889,25.0607],[121.3864,25.0633],[121.3769,25.0661],[121.3634,25.0649],[121.355,25.0651],[121.3551,25.0671],[121.3523,25.0688],[121.3478,25.0698],[121.3485,25.074],[121.3445,25.0751],[121.345,25.0797],[121.3491,25.0812],[121.3466,25.0836],[121.3438,25.0842],[121.3383,25.0837],[121.33,25.0884],[121.3278,25.0912],[121.325,25.0926],[121.3176,25.0932],[121.3107,25.0965],[121.3031,25.0967],[121.3015,25.0981],[121.3015,25.1011],[121.2983,25.1045],[121.2955,25.103],[121.2916,25.1026],[121.2902,25.1069],[121.2871,25.1068],[121.2827,25.1096],[121.2839,25.1124],[121.2834,25.1178]]]},"properties":{"COUNTYID":"H","COUNTYCODE":"68000","COUNTYNAME":"桃園市","COUNTYENG":"Taoyuan City"}}, -{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[121.2589,24.438],[121.2589,24.4407],[121.2617,24.4442],[121.2621,24.4476],[121.2606,24.4517],[121.2626,24.4553],[121.258,24.4575],[121.2581,24.4632],[121.2491,24.466],[121.2444,24.4699],[121.244,24.4756],[121.2427,24.4782],[121.2346,24.4838],[121.2336,24.4874],[121.2297,24.4891],[121.2289,24.4923],[121.2229,24.4948],[121.2186,24.4984],[121.2219,24.5048],[121.2224,24.5074],[121.2174,24.5097],[121.2176,24.514],[121.2138,24.5147],[121.2097,24.5115],[121.2067,24.513],[121.2005,24.5115],[121.1953,24.507],[121.1916,24.5075],[121.1868,24.5054],[121.183,24.508],[121.1779,24.5077],[121.1747,24.5048],[121.1705,24.5041],[121.1693,24.5026],[121.1618,24.5035],[121.155,24.5068],[121.1503,24.5062],[121.1458,24.51],[121.1434,24.5109],[121.1368,24.5066],[121.1297,24.5067],[121.1237,24.5101],[121.121,24.5084],[121.1173,24.5085],[121.1133,24.5065],[121.1089,24.5009],[121.1056,24.5007],[121.1025,24.4983],[121.0981,24.4964],[121.0908,24.4977],[121.0844,24.5013],[121.0791,24.4991],[121.0754,24.4995],[121.0719,24.4984],[121.0721,24.5034],[121.0703,24.5061],[121.0685,24.5124],[121.0685,24.5166],[121.0667,24.5206],[121.067,24.523],[121.072,24.5263],[121.0784,24.529],[121.0778,24.5342],[121.0801,24.5378],[121.0806,24.5409],[121.076,24.544],[121.0735,24.5494],[121.0702,24.5504],[121.0623,24.5561],[121.0582,24.5579],[121.0584,24.5606],[121.0617,24.5597],[121.0628,24.5575],[121.0682,24.5623],[121.0703,24.5631],[121.0715,24.5661],[121.0727,24.5728],[121.0745,24.5759],[121.0755,24.581],[121.079,24.5842],[121.0796,24.5882],[121.0831,24.5899],[121.0813,24.6006],[121.0757,24.6036],[121.0761,24.6085],[121.0743,24.6129],[121.068,24.6149],[121.0661,24.618],[121.0615,24.6218],[121.0586,24.6201],[121.0532,24.6154],[121.0495,24.6185],[121.0434,24.6271],[121.0405,24.627],[121.0335,24.6321],[121.0293,24.6329],[121.0262,24.6356],[121.026,24.6399],[121.0237,24.6418],[121.0189,24.6408],[121.0141,24.6409],[121.0101,24.644],[121.0082,24.65],[121.0107,24.6523],[121.0103,24.6562],[121.0058,24.6553],[121.0035,24.6563],[121.0002,24.6547],[120.997,24.6547],[120.9949,24.6595],[120.9917,24.6595],[120.9891,24.663],[120.9871,24.6635],[120.9832,24.6698],[120.9798,24.6735],[120.9765,24.6754],[120.9775,24.6782],[120.9754,24.6847],[120.9727,24.6859],[120.97,24.6845],[120.9652,24.688],[120.9663,24.6911],[120.97,24.6939],[120.9741,24.6994],[120.9724,24.7042],[120.9758,24.7049],[120.9767,24.7065],[120.9738,24.7119],[120.9707,24.712],[120.9661,24.7096],[120.9639,24.7116],[120.9606,24.709],[120.9596,24.7069],[120.9568,24.7066],[120.9549,24.7044],[120.9509,24.7077],[120.9498,24.7112],[120.9481,24.7112],[120.9454,24.7083],[120.9421,24.7073],[120.9365,24.7108],[120.9354,24.7126],[120.9287,24.7153],[120.9231,24.7146],[120.9196,24.717],[120.9178,24.7162],[120.9136,24.7174],[120.9162,24.7218],[120.9138,24.7241],[120.9138,24.7276],[120.9125,24.7315],[120.9084,24.7367],[120.9086,24.7405],[120.9061,24.7408],[120.9014,24.7363],[120.8971,24.7333],[120.8908,24.7318],[120.8873,24.7339],[120.8847,24.7328],[120.881,24.7333],[120.8745,24.7383],[120.864,24.7262],[120.8613,24.7217],[120.8577,24.7103],[120.8577,24.7067],[120.8562,24.7025],[120.8516,24.6994],[120.8461,24.6945],[120.8404,24.6879],[120.8326,24.6824],[120.8276,24.6768],[120.8231,24.6727],[120.8208,24.6728],[120.8094,24.6712],[120.8028,24.6691],[120.7886,24.667],[120.7822,24.6645],[120.7764,24.6609],[120.7692,24.6538],[120.7678,24.6504],[120.7636,24.6491],[120.7608,24.6431],[120.7571,24.6401],[120.7564,24.6325],[120.754,24.6312],[120.7524,24.6274],[120.7489,24.626],[120.7458,24.6217],[120.7382,24.6209],[120.735,24.6174],[120.7327,24.6133],[120.73,24.6108],[120.7238,24.6082],[120.7203,24.6042],[120.7158,24.601],[120.7135,24.5949],[120.7098,24.591],[120.7081,24.5825],[120.7039,24.5752],[120.7045,24.5728],[120.702,24.569],[120.7012,24.5615],[120.6982,24.5585],[120.6958,24.5512],[120.6934,24.5489],[120.691,24.539],[120.6883,24.5356],[120.6881,24.5305],[120.6847,24.5214],[120.6776,24.5145],[120.6743,24.5096],[120.6713,24.5021],[120.6684,24.4998],[120.6678,24.4934],[120.6653,24.4898],[120.6657,24.4875],[120.6658,24.4875],[120.6657,24.4875],[120.6651,24.4838],[120.6618,24.4838],[120.6585,24.4773],[120.6527,24.4707],[120.6485,24.4675],[120.6438,24.4626],[120.6403,24.4607],[120.6396,24.4567],[120.6352,24.4525],[120.6314,24.4477],[120.628,24.4458],[120.6219,24.4403],[120.6288,24.4378],[120.6319,24.4326],[120.6397,24.4278],[120.6407,24.4235],[120.6432,24.4218],[120.6433,24.4153],[120.6487,24.4095],[120.6582,24.4066],[120.6657,24.4003],[120.6673,24.3966],[120.671,24.3911],[120.6724,24.3913],[120.6786,24.3871],[120.6774,24.384],[120.6862,24.3785],[120.6898,24.3745],[120.6923,24.3675],[120.7038,24.3617],[120.7075,24.3617],[120.7073,24.3579],[120.7231,24.3547],[120.7301,24.352],[120.7344,24.3479],[120.7385,24.3451],[120.7433,24.3405],[120.7583,24.3287],[120.7626,24.3262],[120.767,24.3256],[120.7721,24.3222],[120.784,24.3183],[120.7927,24.3175],[120.796,24.3164],[120.8047,24.3161],[120.8074,24.3152],[120.8184,24.3063],[120.82,24.3031],[120.8239,24.2983],[120.8336,24.2905],[120.8377,24.2893],[120.8505,24.2885],[120.8572,24.2891],[120.8657,24.2927],[120.8761,24.295],[120.8907,24.2942],[120.9022,24.2922],[120.9051,24.2923],[120.9119,24.2941],[120.9175,24.2995],[120.9215,24.302],[120.9225,24.3047],[120.9201,24.3112],[120.9207,24.3181],[120.9194,24.3251],[120.9167,24.3327],[120.9172,24.3359],[120.9201,24.3373],[120.9263,24.3386],[120.9328,24.3421],[120.9359,24.3429],[120.9425,24.3391],[120.9571,24.3392],[120.96,24.3352],[120.9662,24.3335],[120.973,24.3336],[120.9802,24.3346],[120.982,24.3359],[120.9854,24.3318],[120.9918,24.3296],[120.9976,24.3301],[121.0001,24.3325],[121.0047,24.332],[121.0082,24.3269],[121.0116,24.324],[121.0145,24.3201],[121.0177,24.3117],[121.02,24.3092],[121.0288,24.3052],[121.0313,24.3026],[121.0341,24.2978],[121.0381,24.2964],[121.0452,24.2953],[121.0493,24.296],[121.0523,24.2995],[121.0527,24.3047],[121.055,24.3078],[121.0553,24.3104],[121.059,24.3129],[121.066,24.3157],[121.0698,24.3156],[121.0739,24.3192],[121.0731,24.3228],[121.0791,24.323],[121.0815,24.3241],[121.0863,24.3177],[121.094,24.3195],[121.0952,24.322],[121.0982,24.3237],[121.1023,24.3246],[121.1036,24.3266],[121.1085,24.331],[121.1149,24.3286],[121.1185,24.3304],[121.1216,24.3307],[121.1222,24.3367],[121.1253,24.342],[121.1281,24.3419],[121.1302,24.3447],[121.1334,24.3516],[121.1356,24.3525],[121.1409,24.3596],[121.1443,24.3582],[121.1489,24.3579],[121.1555,24.359],[121.1594,24.3608],[121.1689,24.3615],[121.169,24.3643],[121.1741,24.369],[121.1733,24.3731],[121.1791,24.3782],[121.1833,24.381],[121.1902,24.3816],[121.1969,24.392],[121.1971,24.3964],[121.2007,24.3976],[121.2072,24.3979],[121.2108,24.395],[121.2104,24.3916],[121.2135,24.384],[121.2136,24.3817],[121.2159,24.3795],[121.2185,24.3813],[121.2253,24.383],[121.2321,24.384],[121.2316,24.3877],[121.2349,24.3915],[121.2346,24.3971],[121.2381,24.4004],[121.2401,24.4035],[121.2436,24.4059],[121.2434,24.4109],[121.242,24.4142],[121.2436,24.4166],[121.2436,24.4196],[121.2461,24.4228],[121.25,24.4249],[121.2576,24.425],[121.2589,24.4277],[121.2589,24.438]]]},"properties":{"COUNTYID":"K","COUNTYCODE":"10005","COUNTYNAME":"苗栗縣","COUNTYENG":"Miaoli County"}}, -{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[120.4476,23.5182],[120.4445,23.5173],[120.4406,23.5183],[120.4421,23.5137],[120.4405,23.5119],[120.4371,23.5141],[120.435,23.5173],[120.4325,23.5137],[120.4334,23.509],[120.4263,23.5088],[120.425,23.5064],[120.4167,23.5054],[120.4133,23.5023],[120.4125,23.4995],[120.4083,23.4987],[120.4079,23.5033],[120.4038,23.5037],[120.401,23.5019],[120.3993,23.4988],[120.3944,23.5008],[120.3893,23.4986],[120.3898,23.4915],[120.3947,23.4907],[120.3939,23.489],[120.3934,23.4824],[120.3969,23.4804],[120.3988,23.478],[120.3993,23.4711],[120.3966,23.4677],[120.3942,23.4664],[120.3942,23.4625],[120.4051,23.4634],[120.4118,23.4647],[120.4152,23.4603],[120.4239,23.4614],[120.4293,23.461],[120.4301,23.4525],[120.4351,23.4489],[120.438,23.4447],[120.4359,23.4442],[120.4395,23.4396],[120.4416,23.4401],[120.4476,23.4436],[120.45,23.4434],[120.453,23.445],[120.4554,23.4503],[120.4574,23.4529],[120.4609,23.4553],[120.4643,23.4555],[120.465,23.4584],[120.4687,23.4616],[120.4768,23.462],[120.4808,23.4599],[120.4819,23.4578],[120.4896,23.4522],[120.4953,23.4529],[120.497,23.4567],[120.5007,23.461],[120.4998,23.4655],[120.5037,23.4672],[120.509,23.4752],[120.5018,23.4809],[120.5037,23.4852],[120.5019,23.4863],[120.5002,23.4907],[120.4946,23.4901],[120.4894,23.4914],[120.4839,23.4957],[120.4847,23.5014],[120.4833,23.5046],[120.48,23.5043],[120.4736,23.5069],[120.4709,23.504],[120.47,23.5],[120.4655,23.4987],[120.4626,23.5007],[120.4604,23.5066],[120.4576,23.5091],[120.4562,23.512],[120.457,23.5158],[120.4533,23.5159],[120.4476,23.5182]]]},"properties":{"COUNTYID":"I","COUNTYCODE":"10020","COUNTYNAME":"嘉義市","COUNTYENG":"Chiayi City"}}, -{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[120.1519,23.3927],[120.1498,23.3985],[120.1447,23.4038],[120.1439,23.4029],[120.1477,23.3985],[120.1504,23.3893],[120.1519,23.3927]]],[[[120.7309,23.6108],[120.7264,23.607],[120.7246,23.6038],[120.7278,23.6014],[120.7284,23.5993],[120.7325,23.5974],[120.7299,23.5934],[120.7327,23.5894],[120.734,23.5844],[120.7321,23.5772],[120.7351,23.5752],[120.7361,23.5704],[120.7338,23.571],[120.7279,23.5703],[120.7247,23.5719],[120.7183,23.569],[120.7161,23.5711],[120.7106,23.5709],[120.709,23.5757],[120.7043,23.575],[120.7013,23.576],[120.6942,23.5765],[120.687,23.5751],[120.6826,23.5721],[120.676,23.5707],[120.6733,23.5737],[120.6725,23.5766],[120.67,23.5788],[120.6605,23.5762],[120.6581,23.5729],[120.6507,23.5724],[120.6492,23.575],[120.6434,23.578],[120.6483,23.5815],[120.6493,23.5857],[120.6471,23.5878],[120.6491,23.5925],[120.6451,23.5935],[120.6436,23.5927],[120.6369,23.592],[120.6306,23.5899],[120.6252,23.5907],[120.6187,23.5841],[120.6155,23.5853],[120.6102,23.5826],[120.6063,23.5842],[120.5999,23.5832],[120.5975,23.5847],[120.5898,23.5857],[120.5861,23.5827],[120.5802,23.5823],[120.5767,23.5835],[120.5711,23.5879],[120.5671,23.5877],[120.5655,23.5895],[120.5611,23.5886],[120.5578,23.5892],[120.5566,23.5929],[120.5523,23.5939],[120.548,23.5938],[120.5369,23.5947],[120.533,23.597],[120.529,23.6004],[120.5281,23.6028],[120.5225,23.6075],[120.518,23.6105],[120.5151,23.6151],[120.5102,23.6194],[120.5064,23.6259],[120.5075,23.6312],[120.5036,23.6353],[120.4995,23.6351],[120.4929,23.6332],[120.4887,23.6359],[120.4872,23.6339],[120.4879,23.6307],[120.4787,23.6328],[120.4775,23.6299],[120.474,23.6311],[120.4602,23.6293],[120.4585,23.6277],[120.4543,23.6263],[120.4512,23.6271],[120.4499,23.6294],[120.4447,23.6306],[120.441,23.6259],[120.4376,23.6265],[120.4367,23.6217],[120.4336,23.6229],[120.4301,23.6184],[120.427,23.6193],[120.4254,23.618],[120.422,23.6193],[120.4201,23.6252],[120.4156,23.6214],[120.413,23.624],[120.4066,23.6252],[120.4064,23.6327],[120.4048,23.6342],[120.4009,23.6322],[120.4026,23.6269],[120.3922,23.6236],[120.3924,23.6224],[120.386,23.6207],[120.3828,23.6147],[120.3831,23.6126],[120.3798,23.6099],[120.3706,23.6094],[120.3665,23.6078],[120.3659,23.603],[120.3593,23.5952],[120.3514,23.5929],[120.3433,23.5919],[120.335,23.593],[120.3336,23.5915],[120.3334,23.5818],[120.3323,23.578],[120.3265,23.5739],[120.3191,23.5724],[120.3119,23.575],[120.3074,23.5747],[120.3067,23.5715],[120.3098,23.5679],[120.3106,23.5645],[120.3061,23.5629],[120.2972,23.5646],[120.2932,23.5642],[120.2892,23.5612],[120.2891,23.5574],[120.2908,23.5505],[120.2867,23.5478],[120.2805,23.546],[120.276,23.543],[120.2734,23.5335],[120.2719,23.5308],[120.2673,23.5307],[120.2617,23.5357],[120.2594,23.5412],[120.2561,23.5461],[120.2526,23.5463],[120.2464,23.5451],[120.2433,23.5436],[120.2419,23.5392],[120.2442,23.5319],[120.2471,23.5162],[120.2468,23.5141],[120.2431,23.5101],[120.2394,23.5078],[120.2309,23.5054],[120.223,23.5043],[120.2158,23.5069],[120.2045,23.5119],[120.1966,23.513],[120.1899,23.51],[120.1872,23.5106],[120.1825,23.5098],[120.1796,23.5104],[120.1724,23.5147],[120.1666,23.5172],[120.1646,23.5158],[120.1581,23.5159],[120.1493,23.5189],[120.1458,23.5208],[120.1458,23.5185],[120.1424,23.5174],[120.1254,23.5205],[120.1215,23.5195],[120.1189,23.5157],[120.1193,23.4962],[120.1204,23.493],[120.1234,23.4896],[120.1274,23.4879],[120.1336,23.4882],[120.1578,23.495],[120.1587,23.4936],[120.1697,23.4922],[120.1676,23.4907],[120.1581,23.4917],[120.1552,23.4911],[120.1566,23.4875],[120.1558,23.4841],[120.1515,23.4807],[120.1498,23.4784],[120.1491,23.4749],[120.145,23.4719],[120.1443,23.468],[120.1469,23.4652],[120.1446,23.4597],[120.139,23.4581],[120.1344,23.4541],[120.1354,23.4511],[120.1388,23.4527],[120.1399,23.4507],[120.1491,23.454],[120.1526,23.4539],[120.151,23.449],[120.1546,23.4478],[120.1465,23.4375],[120.1455,23.4286],[120.1513,23.4261],[120.1536,23.4284],[120.1556,23.4272],[120.1495,23.423],[120.1495,23.4198],[120.1513,23.4183],[120.1482,23.4147],[120.1493,23.4131],[120.1494,23.4061],[120.1518,23.3986],[120.1538,23.3992],[120.1541,23.4043],[120.16,23.4061],[120.1616,23.3981],[120.1617,23.3947],[120.1635,23.3929],[120.1578,23.3858],[120.1584,23.3812],[120.1564,23.3798],[120.1552,23.3847],[120.152,23.3886],[120.1481,23.3855],[120.1317,23.3848],[120.1319,23.3763],[120.1309,23.3704],[120.1294,23.3688],[120.128,23.3636],[120.1227,23.3543],[120.1199,23.3483],[120.1181,23.3402],[120.1325,23.3297],[120.1377,23.3273],[120.1471,23.3211],[120.1486,23.3196],[120.1485,23.3146],[120.1499,23.3131],[120.1545,23.3129],[120.1557,23.3103],[120.1608,23.3106],[120.1662,23.3085],[120.1711,23.3044],[120.1739,23.2999],[120.1759,23.294],[120.1805,23.2909],[120.1879,23.29],[120.189,23.2929],[120.1861,23.2954],[120.1862,23.2981],[120.1884,23.3012],[120.1915,23.3004],[120.1996,23.2943],[120.2045,23.2918],[120.2086,23.2913],[120.2118,23.2927],[120.2144,23.2924],[120.2209,23.296],[120.2268,23.3048],[120.2284,23.3105],[120.2314,23.3165],[120.2345,23.3202],[120.2361,23.3245],[120.2397,23.3276],[120.2466,23.327],[120.2496,23.3291],[120.2564,23.3311],[120.2671,23.3407],[120.2675,23.3448],[120.2607,23.3445],[120.2646,23.3509],[120.2676,23.3535],[120.2705,23.3537],[120.2739,23.3525],[120.2765,23.3481],[120.2812,23.3482],[120.2862,23.3503],[120.2861,23.354],[120.2838,23.3587],[120.2837,23.3618],[120.2855,23.3666],[120.2929,23.3754],[120.3035,23.3759],[120.308,23.3749],[120.3109,23.3754],[120.3105,23.3821],[120.311,23.3856],[120.3148,23.3885],[120.3178,23.3884],[120.3218,23.3835],[120.3284,23.3861],[120.3333,23.3858],[120.3429,23.3965],[120.343,23.3982],[120.3494,23.4013],[120.3534,23.4012],[120.3598,23.4027],[120.3719,23.4033],[120.381,23.4034],[120.3964,23.4073],[120.4042,23.41],[120.4081,23.4134],[120.4107,23.4101],[120.414,23.4112],[120.4178,23.4088],[120.4197,23.4036],[120.4219,23.407],[120.4304,23.4065],[120.4321,23.4107],[120.4381,23.4134],[120.4412,23.4131],[120.4445,23.411],[120.4555,23.4067],[120.4651,23.4007],[120.4675,23.4011],[120.474,23.3974],[120.4794,23.3876],[120.4868,23.3924],[120.4902,23.3956],[120.4946,23.3945],[120.4992,23.3879],[120.4972,23.3845],[120.4933,23.3838],[120.4854,23.3803],[120.4836,23.3775],[120.4829,23.3723],[120.4861,23.3702],[120.4884,23.3731],[120.4914,23.3725],[120.4943,23.3695],[120.4961,23.37],[120.4995,23.368],[120.5046,23.369],[120.5082,23.3649],[120.5105,23.3644],[120.5124,23.36],[120.5122,23.3554],[120.5081,23.3528],[120.5057,23.3554],[120.5036,23.3512],[120.5044,23.3467],[120.5077,23.343],[120.5104,23.3441],[120.5155,23.3438],[120.517,23.3425],[120.5231,23.3407],[120.5245,23.3383],[120.5267,23.3394],[120.5303,23.3381],[120.537,23.333],[120.54,23.3278],[120.5369,23.3264],[120.5338,23.322],[120.5319,23.3212],[120.5316,23.3181],[120.5273,23.3146],[120.5234,23.313],[120.5232,23.3094],[120.524,23.302],[120.5263,23.2958],[120.5246,23.2917],[120.5218,23.2879],[120.523,23.2843],[120.5227,23.2814],[120.521,23.2798],[120.5223,23.2741],[120.5204,23.2718],[120.5261,23.2665],[120.5307,23.256],[120.5322,23.2553],[120.5303,23.2485],[120.5242,23.242],[120.5191,23.2393],[120.5257,23.2315],[120.5296,23.2326],[120.5318,23.2298],[120.5358,23.2293],[120.544,23.2266],[120.5489,23.2235],[120.5505,23.2207],[120.5527,23.2201],[120.555,23.2175],[120.5609,23.2173],[120.5653,23.221],[120.571,23.2182],[120.5747,23.2178],[120.5783,23.2148],[120.5801,23.2195],[120.5867,23.2243],[120.5902,23.2343],[120.5917,23.2361],[120.5923,23.2397],[120.5959,23.2365],[120.5972,23.229],[120.6029,23.226],[120.6065,23.2258],[120.6097,23.2227],[120.6129,23.224],[120.6168,23.2235],[120.6181,23.2255],[120.625,23.2273],[120.6282,23.2294],[120.6389,23.228],[120.6443,23.2253],[120.6482,23.2255],[120.6534,23.2245],[120.6496,23.2282],[120.6509,23.238],[120.6492,23.2404],[120.6479,23.2448],[120.6485,23.249],[120.6419,23.2572],[120.6421,23.2613],[120.6406,23.2667],[120.6385,23.2688],[120.6412,23.2715],[120.6406,23.2742],[120.6432,23.276],[120.6419,23.2785],[120.6441,23.2822],[120.6431,23.2865],[120.6437,23.2893],[120.642,23.2927],[120.6437,23.2961],[120.6472,23.2974],[120.6506,23.2917],[120.6545,23.2914],[120.6581,23.296],[120.6654,23.2932],[120.6676,23.2937],[120.6714,23.29],[120.6737,23.2911],[120.6762,23.2886],[120.6802,23.2886],[120.6935,23.2845],[120.6995,23.2844],[120.7035,23.2895],[120.7023,23.2941],[120.7044,23.302],[120.7071,23.305],[120.7122,23.3087],[120.7163,23.3076],[120.7213,23.3083],[120.7306,23.3056],[120.7303,23.3112],[120.7323,23.3139],[120.7401,23.3178],[120.7422,23.3215],[120.7479,23.3219],[120.7533,23.3282],[120.7525,23.3312],[120.7568,23.3331],[120.7589,23.3366],[120.7571,23.3388],[120.7594,23.3443],[120.7649,23.3417],[120.7685,23.3439],[120.7733,23.3418],[120.7777,23.3435],[120.7832,23.3422],[120.7886,23.3486],[120.7885,23.3528],[120.7913,23.3532],[120.7927,23.3576],[120.7957,23.3567],[120.802,23.3651],[120.8047,23.3672],[120.8033,23.3698],[120.8049,23.371],[120.8085,23.3684],[120.813,23.3693],[120.8159,23.3714],[120.8212,23.3705],[120.8285,23.375],[120.8294,23.3774],[120.8294,23.3832],[120.8312,23.3868],[120.835,23.3874],[120.8369,23.3934],[120.8397,23.3961],[120.8384,23.3982],[120.8441,23.4041],[120.8453,23.4088],[120.8493,23.412],[120.8495,23.4202],[120.854,23.4232],[120.8568,23.4219],[120.8598,23.4239],[120.8648,23.4241],[120.8662,23.4261],[120.8699,23.4267],[120.8717,23.4296],[120.8756,23.4316],[120.882,23.4333],[120.8838,23.4363],[120.887,23.435],[120.8926,23.4454],[120.8954,23.4462],[120.8968,23.4509],[120.8988,23.4511],[120.9024,23.4541],[120.9045,23.4529],[120.9085,23.4569],[120.9127,23.4585],[120.9216,23.459],[120.9283,23.4568],[120.9348,23.4584],[120.9345,23.4615],[120.9366,23.4638],[120.9407,23.463],[120.947,23.4638],[120.956,23.4673],[120.9575,23.4695],[120.9522,23.4677],[120.9475,23.4671],[120.9423,23.4693],[120.9376,23.4731],[120.9342,23.473],[120.9312,23.4706],[120.9265,23.473],[120.9175,23.4757],[120.9151,23.4746],[120.9113,23.4761],[120.902,23.4761],[120.8996,23.4754],[120.8867,23.4756],[120.8848,23.4747],[120.8808,23.4676],[120.8731,23.4685],[120.8632,23.4736],[120.8581,23.4728],[120.8542,23.4733],[120.8499,23.4722],[120.8421,23.4733],[120.8393,23.4712],[120.8326,23.4747],[120.8299,23.4807],[120.8271,23.4834],[120.8253,23.4897],[120.8254,23.4948],[120.8228,23.4992],[120.8241,23.5053],[120.8228,23.5086],[120.8232,23.5109],[120.8201,23.5141],[120.8191,23.5195],[120.8204,23.5213],[120.8181,23.5235],[120.8121,23.5331],[120.8088,23.5358],[120.8082,23.5418],[120.8088,23.5459],[120.8115,23.5511],[120.8159,23.5531],[120.814,23.5554],[120.8207,23.5626],[120.8199,23.5645],[120.8218,23.5713],[120.8196,23.5745],[120.8213,23.5813],[120.8255,23.5864],[120.8206,23.5896],[120.8169,23.5954],[120.8183,23.5991],[120.8139,23.601],[120.8098,23.5987],[120.8058,23.5988],[120.8033,23.5966],[120.7949,23.5972],[120.7909,23.6009],[120.7837,23.6007],[120.7777,23.6023],[120.7742,23.6054],[120.7699,23.6062],[120.7694,23.6084],[120.7637,23.6125],[120.7584,23.6124],[120.7537,23.6148],[120.7509,23.6145],[120.7476,23.6112],[120.746,23.6126],[120.7412,23.6122],[120.739,23.6101],[120.7359,23.6095],[120.7309,23.6108]],[[120.4476,23.5182],[120.4533,23.5159],[120.457,23.5158],[120.4562,23.512],[120.4576,23.5091],[120.4604,23.5066],[120.4626,23.5007],[120.4655,23.4987],[120.47,23.5],[120.4709,23.504],[120.4736,23.5069],[120.48,23.5043],[120.4833,23.5046],[120.4847,23.5014],[120.4839,23.4957],[120.4894,23.4914],[120.4946,23.4901],[120.5002,23.4907],[120.5019,23.4863],[120.5037,23.4852],[120.5018,23.4809],[120.509,23.4752],[120.5037,23.4672],[120.4998,23.4655],[120.5007,23.461],[120.497,23.4567],[120.4953,23.4529],[120.4896,23.4522],[120.4819,23.4578],[120.4808,23.4599],[120.4768,23.462],[120.4687,23.4616],[120.465,23.4584],[120.4643,23.4555],[120.4609,23.4553],[120.4574,23.4529],[120.4554,23.4503],[120.453,23.445],[120.45,23.4434],[120.4476,23.4436],[120.4416,23.4401],[120.4395,23.4396],[120.4359,23.4442],[120.438,23.4447],[120.4351,23.4489],[120.4301,23.4525],[120.4293,23.461],[120.4239,23.4614],[120.4152,23.4603],[120.4118,23.4647],[120.4051,23.4634],[120.3942,23.4625],[120.3942,23.4664],[120.3966,23.4677],[120.3993,23.4711],[120.3988,23.478],[120.3969,23.4804],[120.3934,23.4824],[120.3939,23.489],[120.3947,23.4907],[120.3898,23.4915],[120.3893,23.4986],[120.3944,23.5008],[120.3993,23.4988],[120.401,23.5019],[120.4038,23.5037],[120.4079,23.5033],[120.4083,23.4987],[120.4125,23.4995],[120.4133,23.5023],[120.4167,23.5054],[120.425,23.5064],[120.4263,23.5088],[120.4334,23.509],[120.4325,23.5137],[120.435,23.5173],[120.4371,23.5141],[120.4405,23.5119],[120.4421,23.5137],[120.4406,23.5183],[120.4445,23.5173],[120.4476,23.5182]]]]},"properties":{"COUNTYID":"Q","COUNTYCODE":"10010","COUNTYNAME":"嘉義縣","COUNTYENG":"Chiayi County"}}, -{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[118.1604,24.3786],[118.1633,24.3813],[118.1535,24.3838],[118.1514,24.3823],[118.155,24.3783],[118.1604,24.3786]]],[[[118.1626,24.3949],[118.1593,24.3942],[118.1626,24.387],[118.1648,24.387],[118.169,24.3842],[118.1728,24.3863],[118.171,24.3896],[118.1652,24.3901],[118.1626,24.3949]]],[[[118.2628,24.4233],[118.2663,24.4281],[118.2657,24.4293],[118.2673,24.4339],[118.2697,24.4376],[118.2682,24.4397],[118.2692,24.446],[118.2658,24.4468],[118.2622,24.4495],[118.26,24.4528],[118.2553,24.4552],[118.2459,24.4562],[118.2434,24.455],[118.2414,24.4561],[118.2305,24.4521],[118.2273,24.4479],[118.2242,24.4397],[118.2239,24.4369],[118.221,24.4325],[118.2168,24.4281],[118.2174,24.4208],[118.2134,24.4099],[118.2221,24.4088],[118.226,24.405],[118.2293,24.4083],[118.2323,24.4128],[118.2377,24.4149],[118.2417,24.4141],[118.2468,24.4147],[118.25,24.4183],[118.2487,24.4194],[118.2508,24.4226],[118.2572,24.4254],[118.2601,24.4243],[118.262,24.4222],[118.2629,24.4233],[118.2628,24.4233],[118.2629,24.4233],[118.2628,24.4233]]],[[[118.2777,24.4538],[118.2727,24.458],[118.2691,24.4541],[118.2768,24.4524],[118.2777,24.4538]]],[[[118.4652,24.4777],[118.469,24.4804],[118.4689,24.4837],[118.4619,24.4843],[118.4596,24.4859],[118.4551,24.4928],[118.4558,24.4959],[118.4545,24.4982],[118.4517,24.4994],[118.4495,24.5047],[118.4506,24.5099],[118.4361,24.5143],[118.4342,24.5158],[118.4315,24.5219],[118.4336,24.525],[118.4295,24.5253],[118.4293,24.5274],[118.4241,24.5277],[118.4192,24.5304],[118.4144,24.5283],[118.4109,24.5306],[118.4093,24.534],[118.4059,24.5326],[118.4077,24.5301],[118.4049,24.5272],[118.4,24.5286],[118.3996,24.5255],[118.4008,24.5222],[118.3968,24.5196],[118.392,24.5116],[118.384,24.5081],[118.3837,24.5027],[118.3857,24.4936],[118.3848,24.4922],[118.3807,24.4912],[118.3791,24.485],[118.3631,24.4717],[118.3566,24.471],[118.3504,24.4717],[118.3465,24.4741],[118.3414,24.4743],[118.3363,24.476],[118.3313,24.479],[118.327,24.483],[118.3243,24.4877],[118.3182,24.4932],[118.3129,24.4955],[118.3075,24.4958],[118.2998,24.4937],[118.2945,24.4913],[118.2897,24.486],[118.2865,24.4789],[118.2862,24.4748],[118.2953,24.4624],[118.2955,24.456],[118.2994,24.4513],[118.3022,24.4462],[118.303,24.4412],[118.3022,24.4362],[118.2984,24.4296],[118.2921,24.4214],[118.2909,24.4188],[118.2815,24.4173],[118.278,24.4136],[118.2867,24.4064],[118.2895,24.4053],[118.2906,24.402],[118.2954,24.3994],[118.297,24.3957],[118.3024,24.3963],[118.3051,24.3957],[118.3111,24.3898],[118.3127,24.3905],[118.3182,24.3884],[118.3199,24.3861],[118.32,24.3858],[118.3199,24.3861],[118.32,24.3858],[118.3223,24.3856],[118.325,24.388],[118.3295,24.388],[118.3296,24.388],[118.3295,24.388],[118.3296,24.388],[118.3342,24.3911],[118.3365,24.3972],[118.3375,24.4018],[118.3413,24.4088],[118.3451,24.4116],[118.3477,24.415],[118.3483,24.4184],[118.3509,24.421],[118.3572,24.425],[118.3703,24.431],[118.3855,24.4351],[118.3879,24.4345],[118.3949,24.4359],[118.396,24.4351],[118.4017,24.4352],[118.4072,24.4322],[118.4105,24.4286],[118.4226,24.4258],[118.4275,24.4239],[118.4313,24.4201],[118.433,24.4165],[118.4268,24.4072],[118.4308,24.4069],[118.4358,24.4081],[118.4375,24.4102],[118.4436,24.4111],[118.4459,24.4139],[118.4491,24.4158],[118.456,24.4177],[118.4577,24.4241],[118.4618,24.4251],[118.4646,24.4279],[118.4665,24.4316],[118.4605,24.4363],[118.4636,24.4411],[118.4662,24.442],[118.4684,24.4404],[118.4688,24.4403],[118.469,24.4402],[118.4688,24.4403],[118.469,24.4402],[118.4703,24.4402],[118.4709,24.4413],[118.4736,24.4444],[118.4742,24.4496],[118.4775,24.4495],[118.4762,24.4533],[118.4703,24.4552],[118.4654,24.4627],[118.464,24.4677],[118.4632,24.475],[118.4652,24.4777]]],[[[119.474,24.986],[119.4717,24.9869],[119.4656,24.9824],[119.4665,24.9795],[119.4736,24.9776],[119.4776,24.9809],[119.479,24.9839],[119.4775,24.9864],[119.474,24.986]]],[[[119.4583,24.9895],[119.458,24.9924],[119.4558,24.995],[119.4448,24.9996],[119.4433,24.9967],[119.4463,24.9916],[119.4467,24.9884],[119.4512,24.9876],[119.4569,24.9852],[119.4583,24.9895]]]]},"properties":{"COUNTYID":"W","COUNTYCODE":"09020","COUNTYNAME":"金門縣","COUNTYENG":"Kinmen County"}}, -{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[114.3625,10.3732],[114.3714,10.3785],[114.3691,10.3799],[114.3618,10.3773],[114.3611,10.3769],[114.361,10.3768],[114.3608,10.3767],[114.3607,10.3766],[114.3606,10.3766],[114.3607,10.3766],[114.3607,10.3767],[114.3608,10.3767],[114.361,10.3768],[114.3611,10.3769],[114.361,10.3768],[114.3608,10.3767],[114.3607,10.3767],[114.3606,10.3766],[114.3606,10.3735],[114.3625,10.3732],[114.3626,10.3732],[114.3625,10.3732]]],[[[116.7102,20.7042],[116.7155,20.7016],[116.7302,20.6974],[116.7342,20.6975],[116.7319,20.7033],[116.7275,20.706],[116.723,20.7066],[116.7184,20.7093],[116.7137,20.7094],[116.7115,20.7083],[116.7108,20.7071],[116.7123,20.7062],[116.7116,20.7069],[116.712,20.7076],[116.712,20.7075],[116.712,20.7076],[116.712,20.7075],[116.7132,20.7077],[116.7155,20.7074],[116.719,20.7056],[116.7241,20.7049],[116.7243,20.7048],[116.7244,20.7048],[116.7243,20.7048],[116.7241,20.7049],[116.7244,20.7048],[116.7232,20.6998],[116.7201,20.7015],[116.7148,20.7027],[116.7148,20.7026],[116.7148,20.7027],[116.7148,20.7026],[116.7127,20.7052],[116.7103,20.7042],[116.7102,20.7042],[116.7103,20.7042],[116.7102,20.7042]]],[[[121.0153,23.4354],[121.0141,23.4379],[121.0106,23.4412],[121.0107,23.4467],[121.0158,23.4509],[121.0151,23.4541],[121.0116,23.4573],[121.0081,23.4624],[121.0038,23.463],[120.9997,23.4622],[120.9836,23.467],[120.9817,23.4688],[120.9783,23.4694],[120.9706,23.469],[120.9685,23.4712],[120.9614,23.4708],[120.9575,23.4695],[120.956,23.4673],[120.947,23.4638],[120.9407,23.463],[120.9366,23.4638],[120.9345,23.4615],[120.9348,23.4584],[120.9283,23.4568],[120.9216,23.459],[120.9127,23.4585],[120.9085,23.4569],[120.9045,23.4529],[120.9024,23.4541],[120.8988,23.4511],[120.8968,23.4509],[120.8954,23.4462],[120.8926,23.4454],[120.887,23.435],[120.8838,23.4363],[120.882,23.4333],[120.8756,23.4316],[120.8717,23.4296],[120.8699,23.4267],[120.8662,23.4261],[120.8648,23.4241],[120.8598,23.4239],[120.8568,23.4219],[120.854,23.4232],[120.8495,23.4202],[120.8493,23.412],[120.8453,23.4088],[120.8441,23.4041],[120.8384,23.3982],[120.8397,23.3961],[120.8369,23.3934],[120.835,23.3874],[120.8312,23.3868],[120.8294,23.3832],[120.8294,23.3774],[120.8285,23.375],[120.8212,23.3705],[120.8159,23.3714],[120.813,23.3693],[120.8085,23.3684],[120.8049,23.371],[120.8033,23.3698],[120.8047,23.3672],[120.802,23.3651],[120.7957,23.3567],[120.7927,23.3576],[120.7913,23.3532],[120.7885,23.3528],[120.7886,23.3486],[120.7832,23.3422],[120.7777,23.3435],[120.7733,23.3418],[120.7685,23.3439],[120.7649,23.3417],[120.7594,23.3443],[120.7571,23.3388],[120.7589,23.3366],[120.7568,23.3331],[120.7525,23.3312],[120.7533,23.3282],[120.7479,23.3219],[120.7422,23.3215],[120.7401,23.3178],[120.7323,23.3139],[120.7303,23.3112],[120.7306,23.3056],[120.7213,23.3083],[120.7163,23.3076],[120.7122,23.3087],[120.7071,23.305],[120.7044,23.302],[120.7023,23.2941],[120.7035,23.2895],[120.6995,23.2844],[120.6935,23.2845],[120.6802,23.2886],[120.6762,23.2886],[120.6737,23.2911],[120.6714,23.29],[120.6676,23.2937],[120.6654,23.2932],[120.6581,23.296],[120.6545,23.2914],[120.6506,23.2917],[120.6472,23.2974],[120.6437,23.2961],[120.642,23.2927],[120.6437,23.2893],[120.6431,23.2865],[120.6441,23.2822],[120.6419,23.2785],[120.6432,23.276],[120.6406,23.2742],[120.6412,23.2715],[120.6385,23.2688],[120.6406,23.2667],[120.6421,23.2613],[120.6419,23.2572],[120.6485,23.249],[120.6479,23.2448],[120.6492,23.2404],[120.6509,23.238],[120.6496,23.2282],[120.6534,23.2245],[120.6552,23.2235],[120.6562,23.2176],[120.6538,23.2153],[120.6515,23.2085],[120.6488,23.2087],[120.6461,23.207],[120.6433,23.2033],[120.6431,23.2011],[120.6408,23.1984],[120.6389,23.1932],[120.6366,23.1904],[120.6384,23.1857],[120.6404,23.1832],[120.6374,23.1806],[120.6362,23.1751],[120.6298,23.1745],[120.6311,23.1704],[120.6252,23.1678],[120.6231,23.164],[120.6208,23.1628],[120.6165,23.1631],[120.615,23.1595],[120.6112,23.156],[120.612,23.152],[120.6055,23.1463],[120.6011,23.1442],[120.5975,23.1374],[120.5952,23.1345],[120.5948,23.1318],[120.5905,23.1272],[120.5884,23.1234],[120.5889,23.1201],[120.5882,23.1143],[120.5831,23.1079],[120.5773,23.0996],[120.5756,23.0956],[120.5741,23.0949],[120.5748,23.0914],[120.5671,23.082],[120.5634,23.08],[120.56,23.0769],[120.5591,23.0734],[120.5546,23.0689],[120.5465,23.0655],[120.538,23.0607],[120.5351,23.0574],[120.5316,23.0567],[120.5265,23.053],[120.523,23.0496],[120.5222,23.0456],[120.5196,23.0449],[120.5139,23.0387],[120.509,23.0351],[120.5037,23.0286],[120.4913,23.0209],[120.487,23.019],[120.4827,23.0156],[120.4813,23.0111],[120.48,23.0036],[120.4708,23.0024],[120.4672,23.0036],[120.4604,23.0035],[120.4595,23.0008],[120.4615,22.9982],[120.4591,22.9959],[120.461,22.9924],[120.4597,22.9899],[120.455,22.991],[120.4532,22.9849],[120.4548,22.9826],[120.4531,22.9785],[120.4496,22.9772],[120.4455,22.9794],[120.4426,22.9773],[120.4422,22.9738],[120.4383,22.966],[120.4362,22.9605],[120.4329,22.9555],[120.4327,22.9526],[120.4307,22.9484],[120.4286,22.9408],[120.4261,22.9394],[120.4257,22.9358],[120.422,22.9294],[120.4221,22.9276],[120.4184,22.9212],[120.4162,22.9161],[120.4108,22.9144],[120.4089,22.9126],[120.4063,22.9147],[120.4053,22.9182],[120.4011,22.9185],[120.399,22.9223],[120.3922,22.9223],[120.3887,22.9207],[120.3869,22.9183],[120.383,22.92],[120.3775,22.9182],[120.3768,22.9149],[120.3738,22.9142],[120.3713,22.9114],[120.3723,22.9079],[120.3663,22.9051],[120.366,22.9022],[120.3596,22.9015],[120.3611,22.8979],[120.3556,22.8939],[120.3509,22.8893],[120.3488,22.8906],[120.3451,22.8894],[120.3323,22.8893],[120.3309,22.8905],[120.3278,22.897],[120.3249,22.9005],[120.3209,22.8956],[120.3192,22.8951],[120.3169,22.8981],[120.3142,22.8998],[120.3091,22.9006],[120.3034,22.9004],[120.2848,22.9047],[120.2797,22.9049],[120.2778,22.9019],[120.2796,22.8964],[120.2734,22.8953],[120.2605,22.9018],[120.2579,22.9017],[120.2569,22.899],[120.2588,22.8969],[120.2565,22.894],[120.252,22.8951],[120.2476,22.8982],[120.2429,22.9035],[120.2331,22.9054],[120.2315,22.9092],[120.2317,22.9154],[120.228,22.9169],[120.2259,22.9156],[120.2226,22.9113],[120.2203,22.9096],[120.2161,22.9099],[120.2117,22.912],[120.2081,22.9152],[120.2023,22.9154],[120.1947,22.9203],[120.1921,22.9212],[120.1866,22.9197],[120.1814,22.9164],[120.1769,22.9124],[120.1747,22.9117],[120.1801,22.8956],[120.1821,22.8919],[120.1898,22.874],[120.1928,22.8648],[120.1904,22.8641],[120.1897,22.8607],[120.1924,22.8577],[120.1953,22.85],[120.1929,22.8484],[120.1966,22.8447],[120.1991,22.8434],[120.2005,22.8385],[120.2052,22.8252],[120.2073,22.8228],[120.206,22.8202],[120.1905,22.8153],[120.1902,22.8136],[120.1933,22.8074],[120.1979,22.8053],[120.2124,22.8076],[120.2146,22.8044],[120.2189,22.7955],[120.2206,22.7905],[120.2291,22.7733],[120.2324,22.7661],[120.2324,22.7625],[120.2346,22.7599],[120.2397,22.7507],[120.2455,22.7387],[120.2453,22.7378],[120.2503,22.7279],[120.2499,22.7242],[120.2536,22.7232],[120.2565,22.7184],[120.2581,22.7103],[120.2616,22.7015],[120.2616,22.6967],[120.2581,22.6956],[120.2581,22.6893],[120.2628,22.689],[120.2631,22.684],[120.2644,22.6809],[120.2645,22.6752],[120.2593,22.6693],[120.2562,22.6685],[120.2512,22.6619],[120.2504,22.6573],[120.2517,22.645],[120.2551,22.6397],[120.2564,22.6359],[120.2595,22.6337],[120.2633,22.6274],[120.2633,22.624],[120.2567,22.6209],[120.2562,22.6179],[120.2624,22.6138],[120.266,22.6088],[120.2632,22.6036],[120.2668,22.6],[120.2713,22.5928],[120.2784,22.5844],[120.2858,22.5779],[120.3028,22.5578],[120.3034,22.5543],[120.3006,22.5512],[120.2986,22.5475],[120.3018,22.5458],[120.3076,22.5452],[120.3218,22.5278],[120.3168,22.5242],[120.3076,22.5354],[120.3038,22.5327],[120.297,22.541],[120.2932,22.5383],[120.3124,22.5149],[120.3334,22.5288],[120.337,22.5249],[120.3338,22.5214],[120.3419,22.5152],[120.3435,22.5147],[120.351,22.5095],[120.3559,22.5043],[120.3733,22.4912],[120.3849,22.4849],[120.3869,22.4831],[120.3937,22.479],[120.3957,22.477],[120.4019,22.4739],[120.4092,22.4711],[120.4139,22.4705],[120.4208,22.4685],[120.4244,22.4687],[120.424,22.4775],[120.4257,22.4986],[120.4243,22.5034],[120.423,22.511],[120.4229,22.5188],[120.4245,22.5238],[120.4251,22.5285],[120.4294,22.5391],[120.4311,22.5445],[120.4366,22.5476],[120.4383,22.5535],[120.4426,22.5618],[120.4442,22.569],[120.4471,22.587],[120.4468,22.5934],[120.4455,22.5996],[120.4427,22.6034],[120.4374,22.6075],[120.4346,22.6134],[120.4336,22.6182],[120.4335,22.6235],[120.4359,22.6308],[120.4353,22.6403],[120.4362,22.6482],[120.4361,22.6618],[120.4402,22.6741],[120.4396,22.6783],[120.4426,22.6846],[120.4477,22.6885],[120.451,22.6974],[120.4528,22.7041],[120.4558,22.7186],[120.456,22.731],[120.4548,22.7403],[120.4546,22.7477],[120.4537,22.7567],[120.4544,22.7644],[120.4538,22.7675],[120.4543,22.7718],[120.4557,22.7745],[120.4559,22.7798],[120.4574,22.7854],[120.46,22.7906],[120.4641,22.8006],[120.4655,22.8128],[120.4674,22.8155],[120.4675,22.8224],[120.4692,22.825],[120.4687,22.8306],[120.4762,22.8382],[120.4823,22.8359],[120.4908,22.8353],[120.494,22.8368],[120.4965,22.8324],[120.4993,22.8313],[120.5053,22.8315],[120.51,22.8285],[120.5157,22.8316],[120.5199,22.8314],[120.5235,22.8329],[120.5382,22.8292],[120.5441,22.8298],[120.548,22.8284],[120.5533,22.8284],[120.5576,22.8321],[120.5615,22.8338],[120.5667,22.8383],[120.5696,22.8432],[120.5748,22.8482],[120.5952,22.8636],[120.5983,22.8671],[120.6054,22.873],[120.6141,22.8765],[120.6174,22.8767],[120.6212,22.8757],[120.6273,22.8789],[120.6349,22.8809],[120.645,22.8852],[120.6465,22.8838],[120.6484,22.8771],[120.651,22.8772],[120.6532,22.8804],[120.6557,22.8817],[120.6581,22.8797],[120.6584,22.8743],[120.6597,22.87],[120.6587,22.8659],[120.6596,22.8615],[120.6609,22.8597],[120.6686,22.8587],[120.6726,22.8564],[120.677,22.8575],[120.6789,22.8627],[120.6904,22.8648],[120.692,22.8685],[120.6979,22.8731],[120.7045,22.8807],[120.7083,22.8816],[120.7159,22.8808],[120.7205,22.882],[120.7248,22.8809],[120.7286,22.8778],[120.7332,22.8753],[120.7427,22.8736],[120.7466,22.8678],[120.75,22.8653],[120.7539,22.8652],[120.7591,22.8606],[120.7622,22.8568],[120.7642,22.849],[120.7661,22.8486],[120.7685,22.8452],[120.7729,22.8411],[120.7741,22.838],[120.7774,22.8357],[120.7815,22.8361],[120.7858,22.8399],[120.7902,22.8401],[120.793,22.8423],[120.7917,22.8484],[120.7937,22.8522],[120.8011,22.851],[120.8071,22.8549],[120.8138,22.8577],[120.8142,22.8605],[120.8163,22.8622],[120.8191,22.8623],[120.823,22.8657],[120.8261,22.8664],[120.829,22.8657],[120.833,22.8663],[120.8373,22.8642],[120.8417,22.8585],[120.8413,22.8568],[120.8438,22.8534],[120.8478,22.8518],[120.853,22.8576],[120.8562,22.8551],[120.857,22.853],[120.86,22.8512],[120.8594,22.8492],[120.862,22.8474],[120.8646,22.8431],[120.8653,22.8466],[120.8684,22.8507],[120.8666,22.8534],[120.8695,22.8569],[120.8691,22.8582],[120.8617,22.8614],[120.8592,22.8636],[120.8644,22.867],[120.8655,22.8699],[120.8644,22.8729],[120.8597,22.8784],[120.8521,22.8781],[120.842,22.8812],[120.8388,22.8846],[120.8382,22.8899],[120.8348,22.8935],[120.8335,22.8998],[120.8289,22.9036],[120.8285,22.9052],[120.8304,22.9103],[120.8333,22.9123],[120.8317,22.919],[120.8289,22.9213],[120.8269,22.9281],[120.8219,22.935],[120.8218,22.9451],[120.8248,22.9525],[120.8231,22.9549],[120.8208,22.9615],[120.8222,22.9646],[120.8301,22.97],[120.8289,22.9735],[120.8307,22.9758],[120.8322,22.9801],[120.8412,22.984],[120.8426,22.9914],[120.8467,22.9926],[120.8497,22.9957],[120.8521,22.9999],[120.851,23.005],[120.8584,23.0051],[120.8607,23.0081],[120.8605,23.0105],[120.862,23.0221],[120.8608,23.0253],[120.8613,23.0303],[120.8634,23.0323],[120.8662,23.0323],[120.872,23.0345],[120.8789,23.0344],[120.88,23.0355],[120.8813,23.0442],[120.8787,23.049],[120.8745,23.0509],[120.8716,23.0547],[120.8692,23.0595],[120.8753,23.0685],[120.8779,23.0779],[120.8826,23.0833],[120.8836,23.0866],[120.8858,23.0896],[120.8855,23.0924],[120.8892,23.1005],[120.8881,23.1042],[120.8894,23.1104],[120.8868,23.1136],[120.885,23.12],[120.8881,23.1224],[120.8862,23.1271],[120.8862,23.1319],[120.8879,23.1364],[120.8858,23.1443],[120.8814,23.1462],[120.8767,23.1516],[120.8833,23.1534],[120.8865,23.1558],[120.887,23.1579],[120.8912,23.1587],[120.895,23.1607],[120.8961,23.172],[120.8983,23.1731],[120.8984,23.1763],[120.9059,23.1806],[120.9091,23.1798],[120.9113,23.1828],[120.9125,23.1868],[120.9109,23.1922],[120.9064,23.1967],[120.9057,23.1996],[120.9072,23.2011],[120.9067,23.2057],[120.9105,23.2081],[120.9117,23.2102],[120.912,23.217],[120.9116,23.2279],[120.9143,23.2325],[120.9157,23.2379],[120.9194,23.241],[120.924,23.242],[120.9265,23.2446],[120.9301,23.2425],[120.9379,23.245],[120.9383,23.2475],[120.9414,23.2521],[120.9464,23.2529],[120.9507,23.2591],[120.9536,23.2608],[120.9581,23.2652],[120.9594,23.2705],[120.9634,23.2721],[120.9661,23.2766],[120.9687,23.2779],[120.9708,23.2812],[120.9786,23.2823],[120.9861,23.2803],[120.9906,23.2841],[120.994,23.2844],[121.0014,23.2874],[121.0056,23.2906],[121.0108,23.2928],[121.0172,23.2928],[121.0198,23.2945],[121.0238,23.2937],[121.0283,23.2971],[121.0314,23.3004],[121.0319,23.3037],[121.0369,23.304],[121.042,23.3072],[121.0462,23.3085],[121.0481,23.3146],[121.0472,23.32],[121.0488,23.3253],[121.045,23.3278],[121.0394,23.3291],[121.0365,23.3335],[121.0328,23.3339],[121.0307,23.3372],[121.027,23.3376],[121.0247,23.3399],[121.0223,23.3466],[121.02,23.3504],[121.0152,23.3463],[121.0101,23.3459],[121.0075,23.3492],[121.0076,23.352],[121.0001,23.3565],[120.9941,23.3565],[120.9871,23.3587],[120.9869,23.3663],[120.9881,23.3707],[120.9912,23.3714],[120.9943,23.3764],[121.0001,23.3824],[121.0061,23.3836],[121.0077,23.3867],[121.0037,23.3889],[121.0011,23.3917],[121.0032,23.3948],[121.0064,23.3966],[121.0105,23.3951],[121.0155,23.3971],[121.0192,23.4015],[121.0223,23.4001],[121.0258,23.4029],[121.0274,23.4102],[121.0269,23.4131],[121.0294,23.4202],[121.0292,23.4228],[121.0227,23.4248],[121.0211,23.4294],[121.0166,23.431],[121.0142,23.4309],[121.0129,23.4332],[121.0153,23.4354]]]]},"properties":{"COUNTYID":"E","COUNTYCODE":"64000","COUNTYNAME":"高雄市","COUNTYENG":"Kaohsiung City"}}, -{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[121.6118,21.9429],[121.616,21.9445],[121.6162,21.9523],[121.6149,21.9549],[121.6044,21.9524],[121.6035,21.9516],[121.6067,21.9467],[121.608,21.9428],[121.6118,21.9429]]],[[[121.5047,22.0848],[121.5022,22.084],[121.4993,22.0805],[121.5087,22.0702],[121.5107,22.0633],[121.5086,22.0569],[121.5108,22.0496],[121.5089,22.0477],[121.5152,22.0469],[121.5217,22.039],[121.524,22.0392],[121.5274,22.0344],[121.5375,22.0249],[121.5422,22.0247],[121.5436,22.0257],[121.5489,22.0257],[121.553,22.0244],[121.5623,22.0173],[121.567,22.011],[121.5694,22.0088],[121.5698,22.004],[121.5764,22.0029],[121.581,22.0038],[121.5863,22.0001],[121.5908,22.0002],[121.5931,22.0018],[121.5979,22.0093],[121.5986,22.0119],[121.6021,22.0152],[121.6029,22.0185],[121.6021,22.0206],[121.5964,22.0253],[121.5787,22.0324],[121.568,22.0408],[121.5641,22.0487],[121.5637,22.0534],[121.5677,22.0581],[121.5741,22.0614],[121.5709,22.0647],[121.5701,22.0701],[121.5678,22.0732],[121.5678,22.0755],[121.5701,22.0824],[121.5654,22.084],[121.5606,22.0807],[121.5581,22.0805],[121.5545,22.0825],[121.5442,22.0826],[121.5371,22.0815],[121.5329,22.0817],[121.5289,22.0796],[121.5256,22.0811],[121.5134,22.0804],[121.5085,22.0823],[121.5047,22.0848]]],[[[121.4915,22.6775],[121.4841,22.6771],[121.4801,22.6741],[121.4728,22.6749],[121.4697,22.6763],[121.4654,22.6751],[121.4643,22.6733],[121.4656,22.6701],[121.4685,22.6676],[121.4753,22.6587],[121.4748,22.6514],[121.4735,22.6465],[121.4776,22.6461],[121.4859,22.644],[121.4921,22.6391],[121.4952,22.6325],[121.4977,22.6318],[121.4997,22.6351],[121.5025,22.6341],[121.505,22.6357],[121.5046,22.6383],[121.5021,22.6414],[121.5021,22.6439],[121.4995,22.6459],[121.5022,22.6522],[121.5051,22.6515],[121.5088,22.6538],[121.5069,22.6568],[121.5088,22.6602],[121.5091,22.6648],[121.5112,22.6697],[121.5091,22.6728],[121.51,22.6771],[121.5071,22.6786],[121.5048,22.677],[121.4987,22.6758],[121.496,22.6765],[121.4935,22.6751],[121.4915,22.6775]]],[[[121.4961,23.4348],[121.4911,23.4353],[121.4869,23.4335],[121.4841,23.4305],[121.4803,23.4308],[121.4734,23.4404],[121.4706,23.4408],[121.4668,23.4397],[121.462,23.4395],[121.4617,23.4415],[121.4567,23.4422],[121.4551,23.4411],[121.451,23.4432],[121.4461,23.4436],[121.4443,23.4388],[121.4421,23.4369],[121.4411,23.4341],[121.4334,23.4329],[121.4328,23.4314],[121.4289,23.4294],[121.4196,23.4196],[121.42,23.4169],[121.4151,23.4074],[121.4131,23.4051],[121.4095,23.3973],[121.4071,23.394],[121.4,23.3866],[121.4015,23.3808],[121.4037,23.3756],[121.4044,23.3673],[121.4076,23.3646],[121.4101,23.3649],[121.4139,23.3634],[121.4178,23.3607],[121.423,23.3599],[121.4226,23.3558],[121.4183,23.3522],[121.4168,23.3494],[121.414,23.3474],[121.4102,23.3463],[121.4061,23.3391],[121.4038,23.3372],[121.4011,23.3316],[121.3996,23.3267],[121.3997,23.324],[121.3979,23.3217],[121.392,23.3217],[121.3902,23.3206],[121.3901,23.3157],[121.3877,23.3105],[121.3831,23.3074],[121.3778,23.3008],[121.3782,23.2992],[121.3763,23.2958],[121.3772,23.2914],[121.3769,23.2815],[121.3783,23.2775],[121.3779,23.2696],[121.3738,23.269],[121.3716,23.2668],[121.3712,23.2633],[121.3631,23.2571],[121.3619,23.2542],[121.3594,23.2527],[121.3589,23.2497],[121.3616,23.2467],[121.3579,23.2386],[121.3534,23.2333],[121.3526,23.2302],[121.3545,23.2278],[121.3559,23.2239],[121.3533,23.22],[121.3501,23.218],[121.3466,23.2172],[121.3457,23.2134],[121.3469,23.2092],[121.3453,23.2083],[121.3438,23.2044],[121.3432,23.1985],[121.3422,23.1959],[121.3398,23.1939],[121.3376,23.1886],[121.338,23.1858],[121.3353,23.1813],[121.3349,23.1779],[121.3284,23.1793],[121.324,23.1787],[121.324,23.175],[121.3222,23.1732],[121.3219,23.1694],[121.3187,23.1683],[121.3174,23.1645],[121.3238,23.1551],[121.3272,23.1521],[121.3244,23.149],[121.3244,23.1463],[121.3221,23.1396],[121.3204,23.1381],[121.3222,23.1315],[121.3218,23.1276],[121.3229,23.1234],[121.3219,23.117],[121.3196,23.1136],[121.316,23.1105],[121.3087,23.1112],[121.3028,23.111],[121.3,23.1093],[121.2978,23.1099],[121.2914,23.1094],[121.2873,23.1067],[121.2844,23.1066],[121.283,23.1038],[121.2809,23.104],[121.2782,23.1007],[121.2723,23.0979],[121.271,23.1009],[121.2643,23.104],[121.2674,23.1093],[121.2673,23.1141],[121.2595,23.1211],[121.2578,23.126],[121.2491,23.1315],[121.2483,23.1296],[121.2425,23.128],[121.2385,23.1287],[121.2346,23.1334],[121.231,23.1392],[121.2248,23.1399],[121.2146,23.1439],[121.212,23.1442],[121.2106,23.148],[121.2125,23.1547],[121.2103,23.1599],[121.2067,23.1625],[121.2057,23.1669],[121.2028,23.1698],[121.1991,23.1758],[121.1998,23.1783],[121.1979,23.186],[121.1983,23.1884],[121.1944,23.1925],[121.1907,23.2026],[121.1893,23.2039],[121.1844,23.2049],[121.1795,23.2086],[121.1756,23.2102],[121.17,23.2071],[121.1654,23.2072],[121.1606,23.2058],[121.1547,23.1991],[121.1493,23.1986],[121.1394,23.2019],[121.1377,23.2088],[121.1344,23.2114],[121.1323,23.2157],[121.1314,23.2198],[121.1294,23.2233],[121.125,23.225],[121.1196,23.2246],[121.1147,23.225],[121.1083,23.2235],[121.1056,23.2242],[121.1045,23.2262],[121.0964,23.2296],[121.0939,23.2332],[121.0865,23.2339],[121.0843,23.233],[121.078,23.2339],[121.0785,23.2376],[121.0738,23.2447],[121.071,23.2468],[121.0698,23.2495],[121.0692,23.2552],[121.0662,23.2573],[121.0642,23.2631],[121.0624,23.2658],[121.0607,23.2769],[121.0621,23.2792],[121.0598,23.2836],[121.0595,23.286],[121.0573,23.2876],[121.0561,23.2905],[121.0527,23.2914],[121.0459,23.2958],[121.0433,23.2962],[121.0389,23.3007],[121.0346,23.2998],[121.0283,23.2971],[121.0238,23.2937],[121.0198,23.2945],[121.0172,23.2928],[121.0108,23.2928],[121.0056,23.2906],[121.0014,23.2874],[120.994,23.2844],[120.9906,23.2841],[120.9861,23.2803],[120.9786,23.2823],[120.9708,23.2812],[120.9687,23.2779],[120.9661,23.2766],[120.9634,23.2721],[120.9594,23.2705],[120.9581,23.2652],[120.9536,23.2608],[120.9507,23.2591],[120.9464,23.2529],[120.9414,23.2521],[120.9383,23.2475],[120.9379,23.245],[120.9301,23.2425],[120.9265,23.2446],[120.924,23.242],[120.9194,23.241],[120.9157,23.2379],[120.9143,23.2325],[120.9116,23.2279],[120.912,23.217],[120.9117,23.2102],[120.9105,23.2081],[120.9067,23.2057],[120.9072,23.2011],[120.9057,23.1996],[120.9064,23.1967],[120.9109,23.1922],[120.9125,23.1868],[120.9113,23.1828],[120.9091,23.1798],[120.9059,23.1806],[120.8984,23.1763],[120.8983,23.1731],[120.8961,23.172],[120.895,23.1607],[120.8912,23.1587],[120.887,23.1579],[120.8865,23.1558],[120.8833,23.1534],[120.8767,23.1516],[120.8814,23.1462],[120.8858,23.1443],[120.8879,23.1364],[120.8862,23.1319],[120.8862,23.1271],[120.8881,23.1224],[120.885,23.12],[120.8868,23.1136],[120.8894,23.1104],[120.8881,23.1042],[120.8892,23.1005],[120.8855,23.0924],[120.8858,23.0896],[120.8836,23.0866],[120.8826,23.0833],[120.8779,23.0779],[120.8753,23.0685],[120.8692,23.0595],[120.8716,23.0547],[120.8745,23.0509],[120.8787,23.049],[120.8813,23.0442],[120.88,23.0355],[120.8789,23.0344],[120.872,23.0345],[120.8662,23.0323],[120.8634,23.0323],[120.8613,23.0303],[120.8608,23.0253],[120.862,23.0221],[120.8605,23.0105],[120.8607,23.0081],[120.8584,23.0051],[120.851,23.005],[120.8521,22.9999],[120.8497,22.9957],[120.8467,22.9926],[120.8426,22.9914],[120.8412,22.984],[120.8322,22.9801],[120.8307,22.9758],[120.8289,22.9735],[120.8301,22.97],[120.8222,22.9646],[120.8208,22.9615],[120.8231,22.9549],[120.8248,22.9525],[120.8218,22.9451],[120.8219,22.935],[120.8269,22.9281],[120.8289,22.9213],[120.8317,22.919],[120.8333,22.9123],[120.8304,22.9103],[120.8285,22.9052],[120.8289,22.9036],[120.8335,22.8998],[120.8348,22.8935],[120.8382,22.8899],[120.8388,22.8846],[120.842,22.8812],[120.8521,22.8781],[120.8597,22.8784],[120.8644,22.8729],[120.8655,22.8699],[120.8644,22.867],[120.8592,22.8636],[120.8617,22.8614],[120.8691,22.8582],[120.8695,22.8569],[120.8666,22.8534],[120.8684,22.8507],[120.8653,22.8466],[120.8646,22.8431],[120.864,22.8398],[120.8653,22.8361],[120.8646,22.8322],[120.8616,22.8267],[120.8647,22.8253],[120.8684,22.8171],[120.8717,22.8148],[120.8747,22.8153],[120.8773,22.8131],[120.8816,22.8145],[120.889,22.8118],[120.891,22.8117],[120.8944,22.8085],[120.8965,22.808],[120.9017,22.8033],[120.9037,22.7982],[120.9033,22.7934],[120.9017,22.7875],[120.9042,22.7832],[120.9032,22.7805],[120.9039,22.7758],[120.9005,22.7698],[120.8931,22.7663],[120.8949,22.7623],[120.8945,22.7591],[120.8956,22.7557],[120.8941,22.7516],[120.8954,22.7482],[120.8942,22.7442],[120.8955,22.7421],[120.8947,22.7376],[120.8924,22.7356],[120.891,22.7287],[120.8883,22.7267],[120.8874,22.7227],[120.8835,22.7171],[120.8792,22.7161],[120.8755,22.7172],[120.8691,22.7159],[120.8672,22.7169],[120.8614,22.7167],[120.8586,22.7136],[120.8551,22.7175],[120.8487,22.717],[120.8442,22.7106],[120.8431,22.7075],[120.8402,22.7067],[120.838,22.7018],[120.8383,22.6989],[120.835,22.6966],[120.8276,22.6974],[120.8261,22.6959],[120.8199,22.6956],[120.8191,22.691],[120.8133,22.6921],[120.8108,22.6916],[120.808,22.6892],[120.7977,22.6891],[120.7891,22.6933],[120.7867,22.6927],[120.7894,22.6869],[120.7895,22.6832],[120.7916,22.6792],[120.7862,22.672],[120.7864,22.663],[120.7798,22.6525],[120.7738,22.6462],[120.772,22.6422],[120.7677,22.6362],[120.7642,22.6337],[120.7613,22.63],[120.761,22.6258],[120.758,22.6231],[120.7529,22.6121],[120.7541,22.6086],[120.7547,22.6008],[120.7523,22.5971],[120.7484,22.5933],[120.7458,22.5896],[120.7465,22.5846],[120.7493,22.5773],[120.748,22.5711],[120.7415,22.5687],[120.7396,22.5625],[120.74,22.5583],[120.7394,22.5517],[120.7457,22.5407],[120.748,22.5385],[120.75,22.534],[120.7501,22.5286],[120.7517,22.5253],[120.7513,22.5224],[120.7528,22.519],[120.7536,22.511],[120.7571,22.5089],[120.7627,22.5011],[120.7643,22.4944],[120.7637,22.4909],[120.7613,22.4889],[120.7586,22.4884],[120.7575,22.4818],[120.7515,22.4797],[120.7542,22.4731],[120.7542,22.4694],[120.7516,22.4642],[120.7513,22.4586],[120.7542,22.4573],[120.7591,22.4573],[120.7655,22.4529],[120.7687,22.4526],[120.7759,22.4504],[120.7765,22.4489],[120.7751,22.4433],[120.7768,22.44],[120.7803,22.4371],[120.7828,22.4333],[120.7849,22.4279],[120.7869,22.4252],[120.7882,22.4194],[120.7877,22.4168],[120.7846,22.4128],[120.78,22.4093],[120.7753,22.4096],[120.7734,22.4069],[120.7649,22.4089],[120.7627,22.4069],[120.7554,22.4033],[120.7576,22.3981],[120.7538,22.3964],[120.7521,22.3927],[120.7565,22.3884],[120.7505,22.3841],[120.7487,22.3801],[120.7488,22.3732],[120.7448,22.3702],[120.7435,22.3676],[120.7524,22.3605],[120.7581,22.3594],[120.7614,22.3603],[120.7632,22.359],[120.7636,22.3522],[120.767,22.3478],[120.7758,22.3487],[120.7811,22.3464],[120.7851,22.3455],[120.7866,22.3421],[120.7885,22.3416],[120.7897,22.3376],[120.7925,22.3356],[120.7925,22.3284],[120.7934,22.3236],[120.7964,22.3199],[120.7964,22.3168],[120.793,22.3124],[120.7871,22.3092],[120.7832,22.3095],[120.7782,22.3085],[120.7768,22.3026],[120.7777,22.298],[120.7813,22.2947],[120.7887,22.294],[120.7911,22.2907],[120.7911,22.2882],[120.7934,22.2857],[120.7992,22.2854],[120.8007,22.2842],[120.8055,22.2841],[120.8068,22.2772],[120.8006,22.2774],[120.7981,22.2744],[120.7962,22.2678],[120.7994,22.2654],[120.7986,22.2638],[120.7991,22.2572],[120.8156,22.263],[120.8229,22.2577],[120.826,22.2565],[120.8315,22.2501],[120.8325,22.2473],[120.8396,22.2436],[120.8414,22.2446],[120.8449,22.2428],[120.8508,22.2437],[120.8585,22.2409],[120.859,22.2386],[120.8616,22.2375],[120.8643,22.2338],[120.8623,22.2313],[120.8664,22.2298],[120.8715,22.233],[120.8795,22.2352],[120.8805,22.2346],[120.884,22.2406],[120.8963,22.2464],[120.8958,22.2542],[120.8946,22.2589],[120.8953,22.2619],[120.8931,22.2665],[120.8919,22.2769],[120.8917,22.3044],[120.8924,22.3181],[120.8949,22.3347],[120.8965,22.3373],[120.8988,22.3441],[120.9035,22.354],[120.9089,22.3594],[120.9115,22.3726],[120.9148,22.3847],[120.9189,22.393],[120.9206,22.3949],[120.9252,22.409],[120.9288,22.4172],[120.9316,22.4204],[120.9391,22.4392],[120.9415,22.446],[120.9447,22.4526],[120.949,22.4662],[120.9501,22.4714],[120.9545,22.4855],[120.9558,22.4928],[120.9581,22.4988],[120.9599,22.5065],[120.9683,22.5266],[120.9746,22.5468],[120.9771,22.5541],[120.9809,22.5623],[120.9849,22.5687],[120.99,22.5733],[120.9979,22.578],[121.008,22.587],[121.0092,22.589],[121.0113,22.605],[121.0118,22.6138],[121.0126,22.6195],[121.0176,22.6369],[121.0225,22.6498],[121.0255,22.6555],[121.0308,22.6628],[121.035,22.6673],[121.0385,22.6699],[121.0456,22.6729],[121.048,22.6732],[121.0554,22.6761],[121.0596,22.6794],[121.0642,22.682],[121.0731,22.6918],[121.0812,22.6981],[121.0929,22.7036],[121.1018,22.7054],[121.1069,22.7079],[121.1183,22.7144],[121.1237,22.7162],[121.1281,22.7194],[121.1374,22.7296],[121.1451,22.7344],[121.1479,22.7382],[121.1566,22.7472],[121.1609,22.7497],[121.166,22.7512],[121.1738,22.7561],[121.177,22.7601],[121.1787,22.7646],[121.1803,22.7713],[121.1803,22.7783],[121.1814,22.7829],[121.1879,22.7907],[121.1949,22.7903],[121.201,22.7962],[121.1988,22.8067],[121.1971,22.8098],[121.1965,22.8162],[121.1936,22.8184],[121.1918,22.8229],[121.1924,22.8254],[121.1874,22.8294],[121.1864,22.8343],[121.1888,22.8379],[121.1901,22.8441],[121.1896,22.8469],[121.1915,22.8497],[121.209,22.8631],[121.2175,22.8649],[121.2201,22.8649],[121.2247,22.8672],[121.2321,22.8641],[121.2362,22.868],[121.2351,22.8695],[121.2362,22.8738],[121.2399,22.8796],[121.2471,22.8813],[121.2527,22.8893],[121.2556,22.8952],[121.2592,22.8983],[121.2599,22.9014],[121.2624,22.9067],[121.2694,22.9119],[121.2728,22.9178],[121.2749,22.9249],[121.2789,22.9314],[121.2798,22.9393],[121.2817,22.9452],[121.2843,22.9496],[121.2874,22.9528],[121.2914,22.9555],[121.2952,22.9546],[121.296,22.9567],[121.2997,22.9598],[121.3083,22.9708],[121.3111,22.9734],[121.3165,22.9812],[121.3197,22.9879],[121.3238,22.9939],[121.3216,22.9971],[121.3216,23.0002],[121.3232,23.0048],[121.3264,23.0057],[121.3283,23.0092],[121.3287,23.0152],[121.3304,23.017],[121.3346,23.0183],[121.3372,23.0201],[121.3351,23.0219],[121.3366,23.0252],[121.3392,23.0259],[121.3382,23.0293],[121.3384,23.0328],[121.3416,23.0424],[121.3433,23.0436],[121.3437,23.0483],[121.3459,23.0511],[121.3465,23.0589],[121.3493,23.0667],[121.3568,23.0744],[121.3551,23.0797],[121.358,23.0826],[121.3578,23.0854],[121.3623,23.0927],[121.3661,23.0962],[121.3751,23.0965],[121.3829,23.0955],[121.3847,23.0968],[121.3848,23.1001],[121.3876,23.1023],[121.3877,23.1051],[121.3921,23.1088],[121.3952,23.1134],[121.3975,23.1146],[121.401,23.1135],[121.407,23.1159],[121.4125,23.1223],[121.4154,23.1234],[121.4185,23.1227],[121.4223,23.1247],[121.4209,23.1268],[121.4164,23.1268],[121.4137,23.1241],[121.4111,23.124],[121.4052,23.1263],[121.3998,23.1351],[121.401,23.142],[121.4011,23.146],[121.3993,23.1484],[121.4,23.1503],[121.4031,23.1513],[121.4053,23.155],[121.4076,23.1623],[121.4078,23.1668],[121.4068,23.1703],[121.4029,23.1718],[121.4036,23.1787],[121.4006,23.1814],[121.3987,23.1845],[121.3975,23.1929],[121.3961,23.1992],[121.397,23.2051],[121.4024,23.2119],[121.4048,23.2131],[121.4101,23.2137],[121.4144,23.2197],[121.4171,23.222],[121.4207,23.227],[121.4187,23.2283],[121.4161,23.2275],[121.4151,23.2302],[121.4151,23.2354],[121.4169,23.2386],[121.417,23.2414],[121.4208,23.25],[121.4208,23.2576],[121.4241,23.2642],[121.4274,23.266],[121.4274,23.2727],[121.4297,23.2814],[121.4329,23.2881],[121.4382,23.2941],[121.4392,23.2969],[121.444,23.3042],[121.4471,23.3053],[121.447,23.3089],[121.454,23.3135],[121.4622,23.3133],[121.4629,23.3177],[121.4658,23.3222],[121.4658,23.3263],[121.4681,23.3344],[121.4678,23.345],[121.4687,23.3487],[121.4721,23.3523],[121.4708,23.3567],[121.4737,23.3642],[121.4722,23.3715],[121.4739,23.3779],[121.4751,23.3874],[121.4767,23.3891],[121.4779,23.3952],[121.4814,23.3967],[121.4818,23.4022],[121.4835,23.4041],[121.4839,23.4102],[121.4862,23.4138],[121.4897,23.4243],[121.4925,23.4268],[121.4961,23.4348]]]]},"properties":{"COUNTYID":"V","COUNTYCODE":"10014","COUNTYNAME":"臺東縣","COUNTYENG":"Taitung County"}}, -{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[121.7741,24.3153],[121.7699,24.3131],[121.7598,24.314],[121.7556,24.3161],[121.7447,24.3229],[121.74,24.3236],[121.735,24.3231],[121.7279,24.326],[121.723,24.3255],[121.7133,24.3269],[121.7047,24.3298],[121.6973,24.3343],[121.6936,24.3349],[121.6897,24.3336],[121.6873,24.3346],[121.6867,24.3394],[121.684,24.3408],[121.6768,24.3375],[121.6735,24.3398],[121.6733,24.3438],[121.6701,24.3428],[121.6675,24.3462],[121.6638,24.3494],[121.6634,24.3524],[121.6596,24.3511],[121.6566,24.3533],[121.6533,24.3529],[121.6536,24.3563],[121.6511,24.3596],[121.648,24.3582],[121.6501,24.3546],[121.6507,24.3509],[121.6487,24.3495],[121.6436,24.3538],[121.6401,24.3577],[121.6384,24.3622],[121.6348,24.364],[121.6343,24.3666],[121.6309,24.3661],[121.6309,24.3706],[121.6267,24.3694],[121.6217,24.3666],[121.6204,24.3628],[121.6236,24.3619],[121.6212,24.358],[121.6271,24.3536],[121.6268,24.3495],[121.63,24.3484],[121.6351,24.3484],[121.6358,24.3453],[121.6318,24.3445],[121.6332,24.3357],[121.6289,24.3335],[121.6266,24.3363],[121.6281,24.3386],[121.6275,24.3411],[121.6229,24.3394],[121.6205,24.3451],[121.6186,24.3453],[121.6165,24.3406],[121.6161,24.3374],[121.6186,24.3346],[121.6152,24.3333],[121.6126,24.3358],[121.6075,24.3351],[121.6066,24.3303],[121.6039,24.329],[121.6005,24.3311],[121.5994,24.3334],[121.5957,24.3316],[121.5966,24.3281],[121.6014,24.3231],[121.6012,24.3204],[121.6045,24.3184],[121.6051,24.3154],[121.607,24.313],[121.6051,24.3107],[121.6012,24.3147],[121.5972,24.3163],[121.5936,24.3164],[121.5894,24.3138],[121.5873,24.3162],[121.5819,24.3179],[121.5785,24.3181],[121.5758,24.3197],[121.5696,24.3179],[121.5666,24.3191],[121.5635,24.3221],[121.5601,24.3226],[121.5583,24.3249],[121.5561,24.3312],[121.5507,24.3342],[121.5465,24.3373],[121.5442,24.3378],[121.5405,24.3359],[121.5366,24.3371],[121.533,24.3371],[121.5281,24.3389],[121.5253,24.3424],[121.5204,24.3426],[121.518,24.341],[121.5099,24.3411],[121.5073,24.3433],[121.5037,24.3427],[121.4998,24.3395],[121.4981,24.3392],[121.4922,24.3421],[121.4854,24.3485],[121.4814,24.3489],[121.4783,24.352],[121.4758,24.3513],[121.4654,24.3553],[121.461,24.358],[121.4543,24.3636],[121.452,24.3647],[121.4487,24.3628],[121.4473,24.3595],[121.4416,24.3586],[121.4399,24.3545],[121.4378,24.3521],[121.4358,24.3463],[121.4378,24.3423],[121.4345,24.3387],[121.4325,24.3296],[121.4345,24.3256],[121.4348,24.322],[121.4316,24.3205],[121.4261,24.314],[121.4232,24.3082],[121.4202,24.3076],[121.4167,24.3092],[121.412,24.3073],[121.4054,24.3083],[121.4046,24.3023],[121.403,24.2962],[121.397,24.2902],[121.3935,24.2882],[121.3909,24.2897],[121.3866,24.2841],[121.3805,24.2798],[121.3822,24.2762],[121.3831,24.2684],[121.3855,24.2644],[121.3858,24.2586],[121.3851,24.2551],[121.3802,24.2533],[121.3766,24.253],[121.3731,24.2541],[121.367,24.2522],[121.3643,24.2471],[121.3607,24.2439],[121.3562,24.2446],[121.3525,24.2432],[121.3532,24.2401],[121.3522,24.2343],[121.343,24.2236],[121.3433,24.2221],[121.3494,24.2104],[121.3483,24.2073],[121.3497,24.2002],[121.3451,24.2],[121.3403,24.1985],[121.3358,24.1991],[121.3258,24.1962],[121.3231,24.1921],[121.32,24.1914],[121.3154,24.1849],[121.3106,24.183],[121.3071,24.1803],[121.2986,24.18],[121.2968,24.1785],[121.2922,24.1771],[121.2881,24.1777],[121.2862,24.176],[121.2877,24.1733],[121.2883,24.1667],[121.2883,24.1576],[121.2854,24.1571],[121.2803,24.1579],[121.2809,24.1546],[121.2847,24.1523],[121.2842,24.1458],[121.2814,24.1359],[121.2959,24.1324],[121.3012,24.1278],[121.3044,24.1239],[121.308,24.1224],[121.3135,24.1189],[121.3159,24.1164],[121.325,24.1161],[121.3285,24.1144],[121.3269,24.1103],[121.3258,24.1027],[121.3223,24.0995],[121.3191,24.0954],[121.3192,24.0928],[121.3231,24.0849],[121.3177,24.0795],[121.3141,24.0776],[121.3081,24.0732],[121.3061,24.0695],[121.3023,24.0663],[121.2989,24.0616],[121.2955,24.0638],[121.2891,24.0587],[121.2865,24.058],[121.2833,24.0545],[121.2826,24.0513],[121.285,24.0486],[121.2857,24.0395],[121.2824,24.0347],[121.2787,24.0268],[121.2768,24.0249],[121.2764,24.0204],[121.2736,24.0149],[121.2719,24.0133],[121.2694,24.0063],[121.2657,24.0014],[121.2639,23.9977],[121.26,23.9921],[121.2616,23.9812],[121.2651,23.9753],[121.2737,23.9752],[121.2756,23.9684],[121.2778,23.9652],[121.2751,23.9597],[121.2758,23.9565],[121.2747,23.9514],[121.2718,23.9482],[121.2743,23.9457],[121.274,23.942],[121.2721,23.9382],[121.2737,23.9366],[121.2747,23.9301],[121.2735,23.9281],[121.2765,23.9229],[121.2751,23.9189],[121.2761,23.9101],[121.2749,23.9075],[121.27,23.9065],[121.2663,23.9073],[121.2611,23.9023],[121.264,23.8986],[121.266,23.8944],[121.2655,23.8911],[121.2672,23.8894],[121.2683,23.8834],[121.2659,23.8832],[121.2629,23.8795],[121.2653,23.8729],[121.2581,23.8725],[121.2571,23.8697],[121.253,23.8679],[121.253,23.8634],[121.2499,23.8596],[121.2502,23.8566],[121.2488,23.8521],[121.2453,23.8497],[121.2435,23.845],[121.2393,23.8401],[121.2393,23.8371],[121.2377,23.8325],[121.2381,23.8296],[121.2369,23.8238],[121.2379,23.8214],[121.2347,23.8177],[121.2346,23.8122],[121.2274,23.8083],[121.2255,23.7981],[121.2266,23.7961],[121.2271,23.7913],[121.2306,23.7899],[121.2305,23.7881],[121.2279,23.7848],[121.2237,23.7824],[121.2195,23.7818],[121.2183,23.7797],[121.213,23.7769],[121.2089,23.776],[121.2047,23.7724],[121.2066,23.7674],[121.2087,23.7658],[121.2064,23.7628],[121.211,23.7611],[121.2132,23.7576],[121.2175,23.757],[121.2215,23.7527],[121.225,23.7518],[121.2293,23.7523],[121.2323,23.7508],[121.2332,23.748],[121.2299,23.7469],[121.2288,23.7445],[121.2284,23.7365],[121.2298,23.73],[121.232,23.7295],[121.2359,23.7245],[121.2393,23.7244],[121.2378,23.7199],[121.2396,23.7154],[121.2388,23.7129],[121.2412,23.709],[121.2412,23.7064],[121.2394,23.6998],[121.2412,23.6984],[121.2393,23.6943],[121.2395,23.6872],[121.2343,23.681],[121.2324,23.6775],[121.236,23.6708],[121.2358,23.6622],[121.2319,23.6579],[121.2307,23.6535],[121.2312,23.6514],[121.2299,23.6474],[121.2278,23.6454],[121.2241,23.6389],[121.224,23.6329],[121.2249,23.6274],[121.2233,23.6226],[121.22,23.6169],[121.2173,23.6147],[121.2158,23.607],[121.2136,23.6006],[121.2081,23.5982],[121.2065,23.5958],[121.2001,23.5964],[121.1943,23.6006],[121.1912,23.5982],[121.1894,23.5948],[121.1832,23.593],[121.1801,23.5882],[121.1785,23.5828],[121.1714,23.5841],[121.1694,23.5866],[121.1608,23.5871],[121.1582,23.5857],[121.1533,23.5867],[121.152,23.5817],[121.1519,23.5739],[121.1536,23.5715],[121.1604,23.5698],[121.1603,23.5678],[121.1579,23.5637],[121.1573,23.5597],[121.1512,23.5599],[121.15,23.5573],[121.1462,23.5542],[121.1481,23.5524],[121.1511,23.5452],[121.1484,23.5395],[121.1482,23.5359],[121.1469,23.534],[121.1507,23.529],[121.1511,23.527],[121.147,23.5272],[121.1391,23.5214],[121.1355,23.5151],[121.1324,23.515],[121.1309,23.5177],[121.1283,23.5185],[121.1264,23.517],[121.1212,23.5206],[121.1181,23.5216],[121.1155,23.5202],[121.1103,23.519],[121.1037,23.5189],[121.1014,23.521],[121.0976,23.5217],[121.0931,23.5176],[121.0919,23.5145],[121.0881,23.514],[121.0831,23.5146],[121.0787,23.5164],[121.0685,23.5185],[121.0688,23.5148],[121.066,23.5076],[121.066,23.5061],[121.0629,23.5036],[121.0621,23.4994],[121.0549,23.4961],[121.0528,23.4938],[121.0541,23.4903],[121.0536,23.4878],[121.05,23.4864],[121.0483,23.4823],[121.0453,23.4808],[121.0394,23.4749],[121.0392,23.4734],[121.0444,23.4701],[121.0497,23.4678],[121.0513,23.4643],[121.059,23.4615],[121.0559,23.4593],[121.0533,23.4556],[121.0518,23.4508],[121.0465,23.4509],[121.0442,23.4491],[121.0335,23.4453],[121.0318,23.4424],[121.0285,23.4415],[121.0264,23.4391],[121.022,23.439],[121.0196,23.4364],[121.0153,23.4354],[121.0129,23.4332],[121.0142,23.4309],[121.0166,23.431],[121.0211,23.4294],[121.0227,23.4248],[121.0292,23.4228],[121.0294,23.4202],[121.0269,23.4131],[121.0274,23.4102],[121.0258,23.4029],[121.0223,23.4001],[121.0192,23.4015],[121.0155,23.3971],[121.0105,23.3951],[121.0064,23.3966],[121.0032,23.3948],[121.0011,23.3917],[121.0037,23.3889],[121.0077,23.3867],[121.0061,23.3836],[121.0001,23.3824],[120.9943,23.3764],[120.9912,23.3714],[120.9881,23.3707],[120.9869,23.3663],[120.9871,23.3587],[120.9941,23.3565],[121.0001,23.3565],[121.0076,23.352],[121.0075,23.3492],[121.0101,23.3459],[121.0152,23.3463],[121.02,23.3504],[121.0223,23.3466],[121.0247,23.3399],[121.027,23.3376],[121.0307,23.3372],[121.0328,23.3339],[121.0365,23.3335],[121.0394,23.3291],[121.045,23.3278],[121.0488,23.3253],[121.0472,23.32],[121.0481,23.3146],[121.0462,23.3085],[121.042,23.3072],[121.0369,23.304],[121.0319,23.3037],[121.0314,23.3004],[121.0283,23.2971],[121.0346,23.2998],[121.0389,23.3007],[121.0433,23.2962],[121.0459,23.2958],[121.0527,23.2914],[121.0561,23.2905],[121.0573,23.2876],[121.0595,23.286],[121.0598,23.2836],[121.0621,23.2792],[121.0607,23.2769],[121.0624,23.2658],[121.0642,23.2631],[121.0662,23.2573],[121.0692,23.2552],[121.0698,23.2495],[121.071,23.2468],[121.0738,23.2447],[121.0785,23.2376],[121.078,23.2339],[121.0843,23.233],[121.0865,23.2339],[121.0939,23.2332],[121.0964,23.2296],[121.1045,23.2262],[121.1056,23.2242],[121.1083,23.2235],[121.1147,23.225],[121.1196,23.2246],[121.125,23.225],[121.1294,23.2233],[121.1314,23.2198],[121.1323,23.2157],[121.1344,23.2114],[121.1377,23.2088],[121.1394,23.2019],[121.1493,23.1986],[121.1547,23.1991],[121.1606,23.2058],[121.1654,23.2072],[121.17,23.2071],[121.1756,23.2102],[121.1795,23.2086],[121.1844,23.2049],[121.1893,23.2039],[121.1907,23.2026],[121.1944,23.1925],[121.1983,23.1884],[121.1979,23.186],[121.1998,23.1783],[121.1991,23.1758],[121.2028,23.1698],[121.2057,23.1669],[121.2067,23.1625],[121.2103,23.1599],[121.2125,23.1547],[121.2106,23.148],[121.212,23.1442],[121.2146,23.1439],[121.2248,23.1399],[121.231,23.1392],[121.2346,23.1334],[121.2385,23.1287],[121.2425,23.128],[121.2483,23.1296],[121.2491,23.1315],[121.2578,23.126],[121.2595,23.1211],[121.2673,23.1141],[121.2674,23.1093],[121.2643,23.104],[121.271,23.1009],[121.2723,23.0979],[121.2782,23.1007],[121.2809,23.104],[121.283,23.1038],[121.2844,23.1066],[121.2873,23.1067],[121.2914,23.1094],[121.2978,23.1099],[121.3,23.1093],[121.3028,23.111],[121.3087,23.1112],[121.316,23.1105],[121.3196,23.1136],[121.3219,23.117],[121.3229,23.1234],[121.3218,23.1276],[121.3222,23.1315],[121.3204,23.1381],[121.3221,23.1396],[121.3244,23.1463],[121.3244,23.149],[121.3272,23.1521],[121.3238,23.1551],[121.3174,23.1645],[121.3187,23.1683],[121.3219,23.1694],[121.3222,23.1732],[121.324,23.175],[121.324,23.1787],[121.3284,23.1793],[121.3349,23.1779],[121.3353,23.1813],[121.338,23.1858],[121.3376,23.1886],[121.3398,23.1939],[121.3422,23.1959],[121.3432,23.1985],[121.3438,23.2044],[121.3453,23.2083],[121.3469,23.2092],[121.3457,23.2134],[121.3466,23.2172],[121.3501,23.218],[121.3533,23.22],[121.3559,23.2239],[121.3545,23.2278],[121.3526,23.2302],[121.3534,23.2333],[121.3579,23.2386],[121.3616,23.2467],[121.3589,23.2497],[121.3594,23.2527],[121.3619,23.2542],[121.3631,23.2571],[121.3712,23.2633],[121.3716,23.2668],[121.3738,23.269],[121.3779,23.2696],[121.3783,23.2775],[121.3769,23.2815],[121.3772,23.2914],[121.3763,23.2958],[121.3782,23.2992],[121.3778,23.3008],[121.3831,23.3074],[121.3877,23.3105],[121.3901,23.3157],[121.3902,23.3206],[121.392,23.3217],[121.3979,23.3217],[121.3997,23.324],[121.3996,23.3267],[121.4011,23.3316],[121.4038,23.3372],[121.4061,23.3391],[121.4102,23.3463],[121.414,23.3474],[121.4168,23.3494],[121.4183,23.3522],[121.4226,23.3558],[121.423,23.3599],[121.4178,23.3607],[121.4139,23.3634],[121.4101,23.3649],[121.4076,23.3646],[121.4044,23.3673],[121.4037,23.3756],[121.4015,23.3808],[121.4,23.3866],[121.4071,23.394],[121.4095,23.3973],[121.4131,23.4051],[121.4151,23.4074],[121.42,23.4169],[121.4196,23.4196],[121.4289,23.4294],[121.4328,23.4314],[121.4334,23.4329],[121.4411,23.4341],[121.4421,23.4369],[121.4443,23.4388],[121.4461,23.4436],[121.451,23.4432],[121.4551,23.4411],[121.4567,23.4422],[121.4617,23.4415],[121.462,23.4395],[121.4668,23.4397],[121.4706,23.4408],[121.4734,23.4404],[121.4803,23.4308],[121.4841,23.4305],[121.4869,23.4335],[121.4911,23.4353],[121.4961,23.4348],[121.4981,23.448],[121.4999,23.4564],[121.5017,23.4598],[121.5041,23.4685],[121.5081,23.4717],[121.5097,23.4794],[121.5126,23.4824],[121.514,23.4871],[121.5125,23.4918],[121.5081,23.4912],[121.5063,23.4997],[121.5061,23.505],[121.5044,23.5084],[121.5049,23.5138],[121.5037,23.5174],[121.5054,23.5294],[121.508,23.5315],[121.507,23.5342],[121.5081,23.5371],[121.5113,23.5515],[121.5169,23.5601],[121.5186,23.5635],[121.522,23.5671],[121.5238,23.573],[121.5263,23.5764],[121.5261,23.5824],[121.5301,23.5972],[121.5305,23.6018],[121.5298,23.6091],[121.531,23.6184],[121.5312,23.6265],[121.5335,23.6344],[121.5359,23.6456],[121.5399,23.6516],[121.5428,23.6526],[121.5438,23.656],[121.541,23.6605],[121.5454,23.6646],[121.546,23.6743],[121.5472,23.6796],[121.5488,23.6832],[121.5507,23.6924],[121.5534,23.6983],[121.5506,23.7005],[121.5499,23.7028],[121.5493,23.7106],[121.5499,23.7166],[121.5522,23.7227],[121.5567,23.725],[121.5611,23.7333],[121.5632,23.7358],[121.5638,23.739],[121.5657,23.7404],[121.5698,23.7495],[121.5725,23.7566],[121.5731,23.7623],[121.5713,23.7657],[121.5708,23.7824],[121.5721,23.7912],[121.5724,23.7979],[121.5746,23.8063],[121.5765,23.8109],[121.5813,23.816],[121.5834,23.8198],[121.5854,23.8285],[121.5874,23.8311],[121.5896,23.8374],[121.5939,23.8446],[121.5982,23.857],[121.5996,23.8637],[121.5998,23.8676],[121.6016,23.8735],[121.6041,23.8874],[121.6057,23.8994],[121.6049,23.9039],[121.605,23.9094],[121.6066,23.9183],[121.6092,23.9237],[121.61,23.9304],[121.6119,23.9333],[121.6105,23.942],[121.6069,23.9526],[121.6079,23.9602],[121.6124,23.9668],[121.6158,23.9732],[121.6222,23.9779],[121.6266,23.9737],[121.6283,23.9695],[121.635,23.9798],[121.6348,23.9846],[121.6414,23.999],[121.6431,23.9996],[121.6445,24.0031],[121.6475,24.007],[121.6479,24.0089],[121.6437,24.0194],[121.6362,24.0241],[121.6302,24.0306],[121.6264,24.0368],[121.6197,24.0508],[121.6165,24.0612],[121.6157,24.0692],[121.6159,24.0772],[121.6191,24.0896],[121.6257,24.0994],[121.6291,24.1035],[121.6341,24.1079],[121.6449,24.1136],[121.6521,24.1185],[121.6551,24.1215],[121.6583,24.1271],[121.6638,24.1345],[121.6651,24.1404],[121.6642,24.1554],[121.6607,24.1617],[121.6585,24.1706],[121.6587,24.1791],[121.6598,24.1844],[121.6633,24.1941],[121.6664,24.1982],[121.6696,24.2009],[121.6739,24.2076],[121.6849,24.2122],[121.6905,24.2169],[121.6989,24.222],[121.7061,24.2256],[121.7112,24.236],[121.716,24.2421],[121.7192,24.2438],[121.724,24.244],[121.7283,24.2457],[121.7356,24.2528],[121.7392,24.2569],[121.7439,24.2607],[121.7462,24.2711],[121.747,24.2765],[121.7485,24.2808],[121.7512,24.2854],[121.7614,24.2959],[121.7695,24.3027],[121.773,24.3088],[121.7741,24.3153]]]},"properties":{"COUNTYID":"U","COUNTYCODE":"10015","COUNTYNAME":"花蓮縣","COUNTYENG":"Hualien County"}}, -{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[119.4383,23.2015],[119.443,23.2006],[119.4438,23.2145],[119.4466,23.2171],[119.4476,23.2204],[119.4398,23.2214],[119.4237,23.219],[119.4197,23.2174],[119.4147,23.2173],[119.4097,23.2153],[119.4125,23.2115],[119.4207,23.2031],[119.4218,23.192],[119.4277,23.1896],[119.4304,23.1867],[119.4318,23.1899],[119.4291,23.1935],[119.4299,23.1968],[119.433,23.1979],[119.4358,23.2018],[119.4382,23.2015],[119.4383,23.2015],[119.4382,23.2015],[119.4383,23.2015]]],[[[119.6179,23.2445],[119.6214,23.247],[119.6196,23.2488],[119.621,23.2532],[119.6138,23.2536],[119.6088,23.2515],[119.6087,23.2489],[119.612,23.2456],[119.6152,23.2441],[119.6179,23.2445]]],[[[119.6774,23.2642],[119.6753,23.2629],[119.6713,23.2633],[119.6668,23.2615],[119.6655,23.2579],[119.6679,23.2555],[119.6653,23.2513],[119.6708,23.2458],[119.6732,23.2477],[119.6724,23.2506],[119.6746,23.2538],[119.6782,23.2565],[119.6781,23.2597],[119.6795,23.2629],[119.6774,23.2642]]],[[[119.6609,23.2644],[119.6575,23.2633],[119.6573,23.2606],[119.6601,23.2602],[119.6609,23.2644]]],[[[119.5198,23.2646],[119.5184,23.2652],[119.514,23.2622],[119.5142,23.2597],[119.5116,23.2555],[119.5147,23.2557],[119.5176,23.2576],[119.519,23.2602],[119.5213,23.2612],[119.5198,23.2646]]],[[[119.5067,23.2726],[119.5034,23.2725],[119.505,23.2682],[119.5109,23.2671],[119.511,23.2707],[119.5098,23.2724],[119.5067,23.2726]]],[[[119.5018,23.2763],[119.5018,23.2764],[119.5017,23.2764],[119.5018,23.2763],[119.5018,23.2764],[119.5018,23.2763]]],[[[119.3228,23.3246],[119.3227,23.3246],[119.3228,23.3246],[119.3227,23.3246],[119.3227,23.3241],[119.3228,23.3246]]],[[[119.3227,23.3241],[119.3202,23.3266],[119.3187,23.325],[119.3186,23.3249],[119.3187,23.325],[119.3185,23.3251],[119.3186,23.3249],[119.3227,23.3241]]],[[[119.5424,23.367],[119.5402,23.3732],[119.5363,23.374],[119.5268,23.371],[119.5276,23.3687],[119.5228,23.3659],[119.5195,23.3667],[119.5186,23.364],[119.5263,23.3587],[119.5257,23.3624],[119.528,23.3646],[119.5323,23.3669],[119.5377,23.3655],[119.5424,23.367]]],[[[119.5141,23.3713],[119.5084,23.3714],[119.5103,23.3745],[119.5083,23.3769],[119.509,23.3787],[119.5072,23.3882],[119.508,23.3909],[119.5042,23.3917],[119.5016,23.3891],[119.4975,23.3906],[119.4973,23.3941],[119.495,23.397],[119.491,23.397],[119.4905,23.3936],[119.493,23.392],[119.4931,23.3893],[119.4956,23.388],[119.4951,23.3846],[119.4922,23.3823],[119.4917,23.3792],[119.4937,23.3782],[119.4935,23.3751],[119.4949,23.3727],[119.4933,23.3707],[119.4946,23.3654],[119.49,23.3614],[119.4892,23.359],[119.4867,23.3567],[119.4906,23.3531],[119.4969,23.3547],[119.4993,23.3542],[119.5024,23.3557],[119.5074,23.3539],[119.5138,23.3535],[119.5095,23.3564],[119.5081,23.359],[119.5076,23.3647],[119.5097,23.3663],[119.5163,23.3678],[119.5141,23.3713]]],[[[119.3221,23.3992],[119.3277,23.4009],[119.3276,23.403],[119.3307,23.4049],[119.3286,23.4072],[119.3251,23.4083],[119.3217,23.4109],[119.3188,23.4113],[119.3187,23.4077],[119.3171,23.4042],[119.3145,23.403],[119.3147,23.3999],[119.3198,23.398],[119.3221,23.3992]]],[[[119.5411,23.496],[119.5374,23.4981],[119.535,23.4959],[119.5299,23.496],[119.5254,23.4927],[119.5208,23.4923],[119.5209,23.4905],[119.5171,23.4865],[119.5141,23.487],[119.5123,23.4913],[119.5095,23.4907],[119.5089,23.4864],[119.511,23.4831],[119.515,23.4847],[119.5247,23.4866],[119.5286,23.4866],[119.535,23.4908],[119.5397,23.4931],[119.5411,23.496]]],[[[119.5205,23.515],[119.5172,23.5147],[119.5143,23.5098],[119.5197,23.5088],[119.522,23.51],[119.5218,23.5145],[119.5205,23.515]]],[[[119.7001,23.62],[119.699,23.6174],[119.6988,23.6172],[119.699,23.6174],[119.7001,23.6198],[119.7001,23.6199],[119.7001,23.62],[119.7001,23.6199],[119.7001,23.6198],[119.7001,23.62]]],[[[119.5708,23.6177],[119.5698,23.6215],[119.5652,23.6191],[119.5669,23.6178],[119.5708,23.6177]]],[[[119.6344,23.6515],[119.6316,23.6502],[119.6317,23.6456],[119.6361,23.6477],[119.6369,23.6505],[119.6344,23.6515]]],[[[119.6661,23.6616],[119.6658,23.6667],[119.6636,23.6664],[119.6606,23.6628],[119.6581,23.6628],[119.6593,23.6589],[119.6643,23.6588],[119.6661,23.6616]]],[[[119.6302,23.6044],[119.6303,23.606],[119.6242,23.6078],[119.6203,23.6066],[119.6217,23.6031],[119.6168,23.601],[119.6156,23.6036],[119.6132,23.602],[119.6126,23.6066],[119.6099,23.6105],[119.6137,23.614],[119.6132,23.6203],[119.6059,23.621],[119.6046,23.6254],[119.6023,23.6285],[119.6046,23.6316],[119.6095,23.6326],[119.6072,23.6367],[119.6025,23.6336],[119.5992,23.6363],[119.5976,23.6412],[119.6017,23.6425],[119.6011,23.6479],[119.6036,23.6495],[119.6102,23.6481],[119.6124,23.6526],[119.61,23.6542],[119.6065,23.6588],[119.6083,23.6629],[119.6029,23.6645],[119.6036,23.6689],[119.5996,23.6717],[119.5999,23.6738],[119.5966,23.6744],[119.5949,23.6719],[119.5918,23.6716],[119.5876,23.6728],[119.5855,23.676],[119.5825,23.6775],[119.5787,23.6762],[119.577,23.674],[119.57,23.6711],[119.5606,23.6707],[119.5552,23.6686],[119.5508,23.6627],[119.554,23.6575],[119.5416,23.6429],[119.5401,23.6402],[119.5357,23.6387],[119.5319,23.6389],[119.5253,23.6422],[119.5226,23.6423],[119.5198,23.644],[119.5197,23.6479],[119.5241,23.651],[119.5238,23.6558],[119.5179,23.6546],[119.5143,23.6556],[119.5153,23.6498],[119.512,23.6484],[119.5097,23.6415],[119.5068,23.6356],[119.5034,23.6345],[119.5022,23.631],[119.5041,23.6238],[119.5011,23.6222],[119.4995,23.6198],[119.5018,23.6169],[119.5038,23.6165],[119.5087,23.6132],[119.5082,23.6107],[119.5045,23.6098],[119.5022,23.6011],[119.5035,23.6001],[119.5042,23.597],[119.5001,23.5955],[119.4975,23.5968],[119.4978,23.6008],[119.493,23.6005],[119.4903,23.5954],[119.5002,23.5921],[119.5035,23.589],[119.5046,23.586],[119.5033,23.5834],[119.5029,23.5784],[119.5006,23.575],[119.4988,23.5747],[119.4929,23.5701],[119.4889,23.57],[119.4834,23.5754],[119.4817,23.575],[119.4773,23.5685],[119.4696,23.5654],[119.4673,23.5614],[119.4719,23.5593],[119.4765,23.5598],[119.479,23.5618],[119.4796,23.5641],[119.4831,23.5643],[119.4896,23.5626],[119.494,23.5675],[119.4979,23.5682],[119.5017,23.5667],[119.5051,23.5665],[119.511,23.5642],[119.5151,23.5641],[119.518,23.567],[119.5147,23.5685],[119.5132,23.5705],[119.5147,23.5748],[119.512,23.5795],[119.512,23.5819],[119.5158,23.5829],[119.5163,23.5855],[119.5125,23.5921],[119.515,23.5947],[119.5193,23.5943],[119.5231,23.6015],[119.5216,23.6079],[119.5203,23.6094],[119.5218,23.6146],[119.5195,23.6187],[119.5211,23.6209],[119.5177,23.6268],[119.5182,23.6287],[119.5217,23.6313],[119.5245,23.6301],[119.5303,23.6302],[119.5319,23.6323],[119.5404,23.6344],[119.5427,23.6378],[119.5407,23.6406],[119.5465,23.6484],[119.5532,23.6562],[119.5586,23.6556],[119.5623,23.6526],[119.5665,23.6567],[119.5676,23.6601],[119.5723,23.6626],[119.5778,23.6625],[119.5816,23.6609],[119.5807,23.6576],[119.5833,23.6554],[119.5824,23.6526],[119.5861,23.6499],[119.5887,23.6469],[119.5891,23.6443],[119.5938,23.6416],[119.5958,23.6355],[119.5943,23.6319],[119.5907,23.6296],[119.5913,23.628],[119.5891,23.6252],[119.5894,23.6223],[119.593,23.6246],[119.5955,23.6247],[119.6009,23.6227],[119.6046,23.625],[119.6054,23.6201],[119.6027,23.6174],[119.5975,23.6156],[119.6013,23.6126],[119.6043,23.6091],[119.6096,23.6104],[119.6124,23.6056],[119.6058,23.6056],[119.6057,23.6025],[119.6034,23.6013],[119.6048,23.5959],[119.607,23.5924],[119.6066,23.5852],[119.6006,23.5847],[119.5984,23.5827],[119.5997,23.581],[119.599,23.578],[119.5971,23.572],[119.5939,23.5707],[119.5943,23.5745],[119.5909,23.5743],[119.5873,23.5718],[119.5872,23.5716],[119.5873,23.5718],[119.5857,23.5732],[119.5853,23.5784],[119.5827,23.5798],[119.5826,23.5833],[119.5847,23.585],[119.5857,23.589],[119.5833,23.5907],[119.5801,23.5896],[119.577,23.5861],[119.5711,23.5859],[119.5717,23.5849],[119.5699,23.5853],[119.5701,23.5856],[119.5706,23.5855],[119.5701,23.5856],[119.5699,23.5853],[119.5645,23.5858],[119.5619,23.5838],[119.5667,23.5776],[119.5673,23.5758],[119.5663,23.5734],[119.5599,23.5704],[119.5601,23.5645],[119.5571,23.5636],[119.5579,23.5613],[119.5621,23.5625],[119.567,23.5627],[119.5703,23.5666],[119.572,23.5657],[119.5743,23.568],[119.5795,23.5634],[119.5768,23.5605],[119.5771,23.5587],[119.5751,23.5554],[119.5714,23.5529],[119.5667,23.5555],[119.5627,23.5563],[119.5619,23.5548],[119.5627,23.55],[119.5686,23.5484],[119.5723,23.5491],[119.573,23.5462],[119.5815,23.5497],[119.5839,23.5484],[119.589,23.5514],[119.5924,23.5525],[119.5931,23.5504],[119.5997,23.55],[119.6024,23.5478],[119.6001,23.5454],[119.6006,23.5402],[119.5994,23.5384],[119.5961,23.5392],[119.5949,23.5369],[119.5972,23.5328],[119.5995,23.5309],[119.5935,23.5272],[119.5908,23.5307],[119.5864,23.5291],[119.5844,23.5319],[119.5807,23.5319],[119.5803,23.5237],[119.5786,23.522],[119.574,23.52],[119.5717,23.5243],[119.5723,23.5283],[119.5705,23.5318],[119.5661,23.5316],[119.5646,23.5298],[119.5608,23.5308],[119.5574,23.5267],[119.5547,23.5293],[119.5545,23.5313],[119.557,23.5333],[119.5568,23.538],[119.5498,23.5407],[119.5509,23.5478],[119.5471,23.5524],[119.5445,23.546],[119.5414,23.5431],[119.5413,23.5387],[119.5433,23.5378],[119.5477,23.5395],[119.5544,23.5299],[119.5535,23.5283],[119.5571,23.5234],[119.5603,23.5239],[119.5635,23.5263],[119.5679,23.5256],[119.5725,23.5221],[119.574,23.5179],[119.5707,23.5129],[119.572,23.5085],[119.5754,23.5073],[119.5782,23.5093],[119.5859,23.5098],[119.5918,23.5129],[119.5987,23.5118],[119.6025,23.5091],[119.6063,23.5078],[119.608,23.509],[119.6079,23.5128],[119.6056,23.5166],[119.6116,23.519],[119.6118,23.5217],[119.6063,23.5224],[119.6045,23.5251],[119.605,23.5277],[119.6117,23.5341],[119.6133,23.5373],[119.616,23.5389],[119.621,23.5377],[119.6215,23.542],[119.6245,23.5449],[119.6288,23.5475],[119.6317,23.5461],[119.6353,23.5471],[119.6353,23.5513],[119.6386,23.553],[119.6394,23.5557],[119.6418,23.5583],[119.6463,23.5605],[119.6557,23.5608],[119.6638,23.5603],[119.6675,23.562],[119.672,23.5614],[119.6761,23.5597],[119.677,23.5569],[119.6744,23.5543],[119.678,23.5513],[119.6823,23.5535],[119.6851,23.5527],[119.6883,23.5547],[119.6917,23.5544],[119.6937,23.5564],[119.692,23.5606],[119.687,23.562],[119.6834,23.5651],[119.6821,23.5718],[119.6806,23.573],[119.6812,23.5821],[119.6805,23.5852],[119.6754,23.5943],[119.6716,23.5988],[119.6699,23.5966],[119.6685,23.5917],[119.6657,23.5907],[119.6602,23.5916],[119.6608,23.5961],[119.6548,23.5993],[119.6551,23.6016],[119.6574,23.6039],[119.6572,23.6065],[119.6552,23.6085],[119.6511,23.6099],[119.6499,23.6036],[119.6467,23.601],[119.6465,23.597],[119.6444,23.5963],[119.6413,23.5889],[119.6377,23.5914],[119.6414,23.5964],[119.6397,23.5992],[119.6375,23.5988],[119.6329,23.5953],[119.6343,23.5897],[119.6289,23.5803],[119.6248,23.5811],[119.6266,23.584],[119.624,23.5868],[119.6246,23.5927],[119.6278,23.5953],[119.6251,23.6004],[119.6278,23.6038],[119.6302,23.6044]]],[[[119.6723,23.6899],[119.6708,23.6875],[119.6723,23.6898],[119.6723,23.6899]]],[[[119.5521,23.7208],[119.5541,23.7182],[119.5556,23.7138],[119.5533,23.7112],[119.5564,23.7096],[119.5586,23.711],[119.557,23.7135],[119.5577,23.7161],[119.557,23.7207],[119.5521,23.7208]]],[[[119.6248,23.749],[119.6246,23.7492],[119.6247,23.749],[119.6248,23.749]]],[[[119.6246,23.7515],[119.6249,23.7518],[119.6248,23.7518],[119.6246,23.7515]]],[[[119.6191,23.7406],[119.6204,23.743],[119.6238,23.7436],[119.6226,23.7478],[119.6204,23.7498],[119.6152,23.7515],[119.6116,23.7539],[119.6117,23.7577],[119.6057,23.7526],[119.6074,23.7524],[119.6076,23.7536],[119.6074,23.7524],[119.6052,23.7496],[119.6041,23.7456],[119.6023,23.7438],[119.5973,23.7418],[119.5958,23.7377],[119.6006,23.734],[119.602,23.7302],[119.6048,23.7327],[119.6064,23.7368],[119.6105,23.7396],[119.6163,23.7419],[119.6191,23.7406]]],[[[119.6025,23.7673],[119.6074,23.7706],[119.6079,23.7732],[119.606,23.7757],[119.6059,23.7757],[119.606,23.7757],[119.606,23.7746],[119.6059,23.7744],[119.606,23.7746],[119.6059,23.7744],[119.603,23.7709],[119.5999,23.7696],[119.5989,23.7658],[119.5965,23.762],[119.5994,23.76],[119.6024,23.7671],[119.6025,23.7673]]],[[[119.6113,23.7791],[119.6112,23.7801],[119.6112,23.78],[119.6112,23.7799],[119.6112,23.78],[119.6112,23.7799],[119.6108,23.7778],[119.6113,23.7791],[119.6112,23.7788],[119.6113,23.7791]]],[[[119.6072,23.7818],[119.6071,23.7819],[119.6071,23.7818],[119.6072,23.7818],[119.6071,23.7818],[119.607,23.7818],[119.6077,23.7797],[119.6079,23.7801],[119.6077,23.7818],[119.6075,23.7819],[119.6073,23.7819],[119.6072,23.7818]]],[[[119.6071,23.7819],[119.6069,23.7823],[119.6068,23.7823],[119.6066,23.782],[119.607,23.7818],[119.6071,23.7819]]],[[[119.608,23.7824],[119.6067,23.7826],[119.6068,23.7823],[119.6069,23.7823],[119.6073,23.7819],[119.6075,23.7819],[119.6077,23.7818],[119.608,23.7824]]],[[[119.5974,23.7959],[119.5967,23.796],[119.5976,23.7954],[119.5974,23.7959],[119.5976,23.796],[119.5974,23.7959]]]]},"properties":{"COUNTYID":"X","COUNTYCODE":"10016","COUNTYNAME":"澎湖縣","COUNTYENG":"Penghu County"}}, -{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[120.9354,24.7126],[120.9386,24.7166],[120.9391,24.7227],[120.9389,24.7298],[120.9432,24.7389],[120.9442,24.7444],[120.9513,24.7445],[120.9542,24.7434],[120.9578,24.7463],[120.9572,24.7482],[120.9615,24.7512],[120.9635,24.7555],[120.9665,24.7558],[120.9675,24.7606],[120.9698,24.7652],[120.9774,24.7631],[120.9795,24.7633],[120.9821,24.7675],[120.9872,24.7698],[120.9858,24.7769],[120.9907,24.7773],[120.993,24.7806],[120.9955,24.7802],[121.0066,24.7743],[121.0081,24.7745],[121.0137,24.7708],[121.0169,24.7649],[121.0185,24.7635],[121.0205,24.7566],[121.0238,24.7568],[121.0287,24.7588],[121.0323,24.7616],[121.0335,24.7641],[121.0299,24.7664],[121.0282,24.7736],[121.0297,24.7764],[121.0249,24.78],[121.0275,24.7825],[121.0248,24.786],[121.0246,24.7892],[121.0219,24.791],[121.0206,24.794],[121.0229,24.7956],[121.0207,24.7985],[121.0257,24.799],[121.0213,24.8016],[121.0177,24.8077],[121.0152,24.8085],[121.0082,24.8163],[121.0004,24.8221],[120.992,24.8236],[120.9871,24.8262],[120.9854,24.8294],[120.9812,24.8312],[120.9783,24.8297],[120.9737,24.8302],[120.9672,24.8327],[120.9628,24.8325],[120.9548,24.8346],[120.9473,24.8399],[120.9448,24.841],[120.9426,24.8474],[120.9403,24.8501],[120.9336,24.8528],[120.9313,24.8526],[120.9252,24.8548],[120.9212,24.8535],[120.9133,24.852],[120.9167,24.8487],[120.9155,24.8458],[120.9157,24.8411],[120.914,24.8377],[120.9093,24.8342],[120.9074,24.8302],[120.9028,24.8241],[120.8969,24.8092],[120.8961,24.8008],[120.8926,24.7944],[120.8921,24.7919],[120.8928,24.7862],[120.8929,24.7788],[120.8914,24.7761],[120.8927,24.7732],[120.8926,24.7696],[120.8967,24.7681],[120.8977,24.7645],[120.8932,24.7614],[120.8884,24.7542],[120.8851,24.7506],[120.8826,24.7465],[120.8778,24.7426],[120.8745,24.7383],[120.881,24.7333],[120.8847,24.7328],[120.8873,24.7339],[120.8908,24.7318],[120.8971,24.7333],[120.9014,24.7363],[120.9061,24.7408],[120.9086,24.7405],[120.9084,24.7367],[120.9125,24.7315],[120.9138,24.7276],[120.9138,24.7241],[120.9162,24.7218],[120.9136,24.7174],[120.9178,24.7162],[120.9196,24.717],[120.9231,24.7146],[120.9287,24.7153],[120.9354,24.7126]]]},"properties":{"COUNTYID":"O","COUNTYCODE":"10018","COUNTYNAME":"新竹市","COUNTYENG":"Hsinchu City"}}, -{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[121.403,24.5917],[121.3957,24.5889],[121.3917,24.5865],[121.3876,24.5865],[121.3812,24.5904],[121.3734,24.5934],[121.3715,24.5973],[121.3673,24.5988],[121.3633,24.6031],[121.3635,24.608],[121.3612,24.6101],[121.3588,24.6165],[121.3633,24.6232],[121.3654,24.6283],[121.3651,24.6319],[121.3612,24.6338],[121.3581,24.6335],[121.3574,24.6376],[121.3556,24.6414],[121.3524,24.6434],[121.353,24.6488],[121.3522,24.6525],[121.3532,24.6548],[121.3537,24.6647],[121.3485,24.6679],[121.3455,24.6664],[121.3439,24.6694],[121.3404,24.6664],[121.339,24.6791],[121.3359,24.6836],[121.3298,24.691],[121.3231,24.6954],[121.321,24.6955],[121.3179,24.6981],[121.3132,24.6977],[121.3039,24.6929],[121.3006,24.6941],[121.2995,24.6966],[121.3023,24.7019],[121.3032,24.7082],[121.3064,24.7131],[121.3076,24.7202],[121.3056,24.7241],[121.3007,24.7297],[121.2987,24.7307],[121.2982,24.7338],[121.3001,24.7374],[121.3008,24.7414],[121.3052,24.7461],[121.3051,24.7502],[121.3077,24.7552],[121.3041,24.7574],[121.3003,24.7636],[121.2986,24.7629],[121.2936,24.7643],[121.2925,24.7677],[121.2875,24.7687],[121.2843,24.7704],[121.2788,24.7707],[121.2731,24.7748],[121.2713,24.7748],[121.2706,24.7784],[121.2598,24.7822],[121.2588,24.7845],[121.2612,24.79],[121.2605,24.793],[121.2575,24.7928],[121.2522,24.7939],[121.2479,24.7965],[121.2468,24.7985],[121.2477,24.8025],[121.2454,24.807],[121.2434,24.8087],[121.2405,24.8057],[121.228,24.8028],[121.2215,24.7995],[121.2196,24.804],[121.2187,24.8086],[121.2197,24.8117],[121.217,24.8124],[121.2096,24.8095],[121.2083,24.8074],[121.2046,24.8074],[121.2028,24.8099],[121.2059,24.8124],[121.2031,24.8146],[121.2033,24.8173],[121.201,24.8179],[121.1989,24.8149],[121.1966,24.8177],[121.1835,24.8249],[121.1762,24.8275],[121.1759,24.8311],[121.1738,24.8335],[121.1602,24.8373],[121.1548,24.8422],[121.1518,24.8438],[121.1535,24.8486],[121.1557,24.8503],[121.1564,24.8558],[121.1613,24.8593],[121.1594,24.869],[121.1569,24.8737],[121.1579,24.8773],[121.1557,24.8807],[121.1522,24.8802],[121.1493,24.8812],[121.1444,24.8805],[121.1395,24.8824],[121.1342,24.8784],[121.1329,24.8798],[121.1281,24.881],[121.124,24.8799],[121.1149,24.8826],[121.1136,24.8825],[121.1078,24.8864],[121.111,24.891],[121.1091,24.8977],[121.1007,24.895],[121.0928,24.8934],[121.0865,24.8965],[121.0834,24.8989],[121.077,24.8987],[121.0709,24.9012],[121.0684,24.9031],[121.0612,24.9037],[121.0576,24.9058],[121.0592,24.9081],[121.0582,24.9139],[121.0608,24.9204],[121.0609,24.9241],[121.0593,24.9266],[121.0577,24.9333],[121.0584,24.9367],[121.0554,24.9363],[121.0518,24.9386],[121.0484,24.9396],[121.0463,24.9436],[121.0405,24.9433],[121.0382,24.9464],[121.0306,24.9439],[121.0294,24.9452],[121.0259,24.9405],[121.0223,24.9414],[121.0193,24.9404],[121.0096,24.9442],[121.0072,24.9462],[121.0044,24.9434],[121.0025,24.9399],[120.9982,24.9408],[120.9939,24.939],[120.9918,24.935],[120.9875,24.939],[120.982,24.94],[120.9697,24.9285],[120.9663,24.9218],[120.9645,24.9158],[120.9589,24.9029],[120.9526,24.8954],[120.9517,24.8907],[120.9473,24.8838],[120.9465,24.8787],[120.943,24.8722],[120.9398,24.8678],[120.933,24.8613],[120.9274,24.859],[120.9269,24.8554],[120.9252,24.8548],[120.9313,24.8526],[120.9336,24.8528],[120.9403,24.8501],[120.9426,24.8474],[120.9448,24.841],[120.9473,24.8399],[120.9548,24.8346],[120.9628,24.8325],[120.9672,24.8327],[120.9737,24.8302],[120.9783,24.8297],[120.9812,24.8312],[120.9854,24.8294],[120.9871,24.8262],[120.992,24.8236],[121.0004,24.8221],[121.0082,24.8163],[121.0152,24.8085],[121.0177,24.8077],[121.0213,24.8016],[121.0257,24.799],[121.0207,24.7985],[121.0229,24.7956],[121.0206,24.794],[121.0219,24.791],[121.0246,24.7892],[121.0248,24.786],[121.0275,24.7825],[121.0249,24.78],[121.0297,24.7764],[121.0282,24.7736],[121.0299,24.7664],[121.0335,24.7641],[121.0323,24.7616],[121.0287,24.7588],[121.0238,24.7568],[121.0205,24.7566],[121.0185,24.7635],[121.0169,24.7649],[121.0137,24.7708],[121.0081,24.7745],[121.0066,24.7743],[120.9955,24.7802],[120.993,24.7806],[120.9907,24.7773],[120.9858,24.7769],[120.9872,24.7698],[120.9821,24.7675],[120.9795,24.7633],[120.9774,24.7631],[120.9698,24.7652],[120.9675,24.7606],[120.9665,24.7558],[120.9635,24.7555],[120.9615,24.7512],[120.9572,24.7482],[120.9578,24.7463],[120.9542,24.7434],[120.9513,24.7445],[120.9442,24.7444],[120.9432,24.7389],[120.9389,24.7298],[120.9391,24.7227],[120.9386,24.7166],[120.9354,24.7126],[120.9365,24.7108],[120.9421,24.7073],[120.9454,24.7083],[120.9481,24.7112],[120.9498,24.7112],[120.9509,24.7077],[120.9549,24.7044],[120.9568,24.7066],[120.9596,24.7069],[120.9606,24.709],[120.9639,24.7116],[120.9661,24.7096],[120.9707,24.712],[120.9738,24.7119],[120.9767,24.7065],[120.9758,24.7049],[120.9724,24.7042],[120.9741,24.6994],[120.97,24.6939],[120.9663,24.6911],[120.9652,24.688],[120.97,24.6845],[120.9727,24.6859],[120.9754,24.6847],[120.9775,24.6782],[120.9765,24.6754],[120.9798,24.6735],[120.9832,24.6698],[120.9871,24.6635],[120.9891,24.663],[120.9917,24.6595],[120.9949,24.6595],[120.997,24.6547],[121.0002,24.6547],[121.0035,24.6563],[121.0058,24.6553],[121.0103,24.6562],[121.0107,24.6523],[121.0082,24.65],[121.0101,24.644],[121.0141,24.6409],[121.0189,24.6408],[121.0237,24.6418],[121.026,24.6399],[121.0262,24.6356],[121.0293,24.6329],[121.0335,24.6321],[121.0405,24.627],[121.0434,24.6271],[121.0495,24.6185],[121.0532,24.6154],[121.0586,24.6201],[121.0615,24.6218],[121.0661,24.618],[121.068,24.6149],[121.0743,24.6129],[121.0761,24.6085],[121.0757,24.6036],[121.0813,24.6006],[121.0831,24.5899],[121.0796,24.5882],[121.079,24.5842],[121.0755,24.581],[121.0745,24.5759],[121.0727,24.5728],[121.0715,24.5661],[121.0703,24.5631],[121.0682,24.5623],[121.0628,24.5575],[121.0617,24.5597],[121.0584,24.5606],[121.0582,24.5579],[121.0623,24.5561],[121.0702,24.5504],[121.0735,24.5494],[121.076,24.544],[121.0806,24.5409],[121.0801,24.5378],[121.0778,24.5342],[121.0784,24.529],[121.072,24.5263],[121.067,24.523],[121.0667,24.5206],[121.0685,24.5166],[121.0685,24.5124],[121.0703,24.5061],[121.0721,24.5034],[121.0719,24.4984],[121.0754,24.4995],[121.0791,24.4991],[121.0844,24.5013],[121.0908,24.4977],[121.0981,24.4964],[121.1025,24.4983],[121.1056,24.5007],[121.1089,24.5009],[121.1133,24.5065],[121.1173,24.5085],[121.121,24.5084],[121.1237,24.5101],[121.1297,24.5067],[121.1368,24.5066],[121.1434,24.5109],[121.1458,24.51],[121.1503,24.5062],[121.155,24.5068],[121.1618,24.5035],[121.1693,24.5026],[121.1705,24.5041],[121.1747,24.5048],[121.1779,24.5077],[121.183,24.508],[121.1868,24.5054],[121.1916,24.5075],[121.1953,24.507],[121.2005,24.5115],[121.2067,24.513],[121.2097,24.5115],[121.2138,24.5147],[121.2176,24.514],[121.2174,24.5097],[121.2224,24.5074],[121.2219,24.5048],[121.2186,24.4984],[121.2229,24.4948],[121.2289,24.4923],[121.2297,24.4891],[121.2336,24.4874],[121.2346,24.4838],[121.2427,24.4782],[121.244,24.4756],[121.2444,24.4699],[121.2491,24.466],[121.2581,24.4632],[121.258,24.4575],[121.2626,24.4553],[121.2606,24.4517],[121.2621,24.4476],[121.2617,24.4442],[121.2589,24.4407],[121.2589,24.438],[121.26,24.4362],[121.2591,24.4309],[121.2608,24.4286],[121.2654,24.4286],[121.2693,24.4274],[121.2716,24.4298],[121.2785,24.4293],[121.2843,24.4306],[121.2932,24.4311],[121.2976,24.4331],[121.3057,24.4326],[121.3103,24.4364],[121.313,24.4368],[121.3177,24.4415],[121.3233,24.4558],[121.3299,24.4643],[121.3362,24.4678],[121.3356,24.4715],[121.3401,24.4749],[121.3428,24.4823],[121.3463,24.4847],[121.3507,24.4843],[121.3575,24.4864],[121.3617,24.4905],[121.365,24.4959],[121.3709,24.498],[121.3719,24.4996],[121.3733,24.5099],[121.3793,24.5095],[121.3836,24.5102],[121.3853,24.5134],[121.3853,24.5171],[121.3885,24.5178],[121.3907,24.5232],[121.3933,24.5246],[121.3975,24.5247],[121.4016,24.5291],[121.3989,24.5324],[121.3985,24.5363],[121.3967,24.5398],[121.3987,24.547],[121.3983,24.5494],[121.3954,24.553],[121.3947,24.5556],[121.3976,24.5597],[121.4014,24.5622],[121.4012,24.5645],[121.4039,24.569],[121.4071,24.5698],[121.4122,24.5731],[121.4121,24.5749],[121.4093,24.5811],[121.4035,24.5897],[121.403,24.5917]]]},"properties":{"COUNTYID":"J","COUNTYCODE":"10004","COUNTYNAME":"新竹縣","COUNTYENG":"Hsinchu County"}}, -{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[120.3796,22.356],[120.377,22.3557],[120.3721,22.3532],[120.3674,22.3521],[120.3609,22.346],[120.3626,22.3434],[120.3632,22.34],[120.3617,22.3388],[120.3603,22.3347],[120.3536,22.3294],[120.3531,22.3258],[120.3541,22.3237],[120.3599,22.3222],[120.3674,22.3263],[120.3715,22.3311],[120.3755,22.3336],[120.3768,22.3357],[120.388,22.3427],[120.389,22.3495],[120.3796,22.356]]],[[[120.8646,22.8431],[120.862,22.8474],[120.8594,22.8492],[120.86,22.8512],[120.857,22.853],[120.8562,22.8551],[120.853,22.8576],[120.8478,22.8518],[120.8438,22.8534],[120.8413,22.8568],[120.8417,22.8585],[120.8373,22.8642],[120.833,22.8663],[120.829,22.8657],[120.8261,22.8664],[120.823,22.8657],[120.8191,22.8623],[120.8163,22.8622],[120.8142,22.8605],[120.8138,22.8577],[120.8071,22.8549],[120.8011,22.851],[120.7937,22.8522],[120.7917,22.8484],[120.793,22.8423],[120.7902,22.8401],[120.7858,22.8399],[120.7815,22.8361],[120.7774,22.8357],[120.7741,22.838],[120.7729,22.8411],[120.7685,22.8452],[120.7661,22.8486],[120.7642,22.849],[120.7622,22.8568],[120.7591,22.8606],[120.7539,22.8652],[120.75,22.8653],[120.7466,22.8678],[120.7427,22.8736],[120.7332,22.8753],[120.7286,22.8778],[120.7248,22.8809],[120.7205,22.882],[120.7159,22.8808],[120.7083,22.8816],[120.7045,22.8807],[120.6979,22.8731],[120.692,22.8685],[120.6904,22.8648],[120.6789,22.8627],[120.677,22.8575],[120.6726,22.8564],[120.6686,22.8587],[120.6609,22.8597],[120.6596,22.8615],[120.6587,22.8659],[120.6597,22.87],[120.6584,22.8743],[120.6581,22.8797],[120.6557,22.8817],[120.6532,22.8804],[120.651,22.8772],[120.6484,22.8771],[120.6465,22.8838],[120.645,22.8852],[120.6349,22.8809],[120.6273,22.8789],[120.6212,22.8757],[120.6174,22.8767],[120.6141,22.8765],[120.6054,22.873],[120.5983,22.8671],[120.5952,22.8636],[120.5748,22.8482],[120.5696,22.8432],[120.5667,22.8383],[120.5615,22.8338],[120.5576,22.8321],[120.5533,22.8284],[120.548,22.8284],[120.5441,22.8298],[120.5382,22.8292],[120.5235,22.8329],[120.5199,22.8314],[120.5157,22.8316],[120.51,22.8285],[120.5053,22.8315],[120.4993,22.8313],[120.4965,22.8324],[120.494,22.8368],[120.4908,22.8353],[120.4823,22.8359],[120.4762,22.8382],[120.4687,22.8306],[120.4692,22.825],[120.4675,22.8224],[120.4674,22.8155],[120.4655,22.8128],[120.4641,22.8006],[120.46,22.7906],[120.4574,22.7854],[120.4559,22.7798],[120.4557,22.7745],[120.4543,22.7718],[120.4538,22.7675],[120.4544,22.7644],[120.4537,22.7567],[120.4546,22.7477],[120.4548,22.7403],[120.456,22.731],[120.4558,22.7186],[120.4528,22.7041],[120.451,22.6974],[120.4477,22.6885],[120.4426,22.6846],[120.4396,22.6783],[120.4402,22.6741],[120.4361,22.6618],[120.4362,22.6482],[120.4353,22.6403],[120.4359,22.6308],[120.4335,22.6235],[120.4336,22.6182],[120.4346,22.6134],[120.4374,22.6075],[120.4427,22.6034],[120.4455,22.5996],[120.4468,22.5934],[120.4471,22.587],[120.4442,22.569],[120.4426,22.5618],[120.4383,22.5535],[120.4366,22.5476],[120.4311,22.5445],[120.4294,22.5391],[120.4251,22.5285],[120.4245,22.5238],[120.4229,22.5188],[120.423,22.511],[120.4243,22.5034],[120.4257,22.4986],[120.424,22.4775],[120.4244,22.4687],[120.4331,22.4684],[120.435,22.4646],[120.436,22.4595],[120.4385,22.4594],[120.4397,22.4568],[120.4471,22.4493],[120.4585,22.4394],[120.4764,22.4289],[120.4921,22.4216],[120.5055,22.4144],[120.5085,22.4122],[120.5158,22.4111],[120.5175,22.409],[120.5242,22.4053],[120.5496,22.3924],[120.5604,22.3861],[120.5708,22.3794],[120.5712,22.378],[120.5764,22.3752],[120.5801,22.3723],[120.5856,22.3694],[120.5894,22.3664],[120.5943,22.3598],[120.5989,22.3557],[120.6051,22.3427],[120.6056,22.3402],[120.6104,22.3361],[120.6208,22.3281],[120.6305,22.3192],[120.6362,22.3128],[120.6376,22.309],[120.6404,22.3058],[120.6427,22.3016],[120.6431,22.2926],[120.6427,22.2911],[120.648,22.2801],[120.6489,22.2755],[120.6521,22.2682],[120.6493,22.2559],[120.6504,22.2518],[120.6528,22.251],[120.6579,22.2471],[120.6579,22.2429],[120.6705,22.2351],[120.6734,22.2299],[120.6722,22.227],[120.674,22.2232],[120.6768,22.2227],[120.6784,22.2185],[120.6804,22.2168],[120.6849,22.2103],[120.6858,22.2032],[120.6839,22.1974],[120.6855,22.1925],[120.689,22.188],[120.6911,22.1814],[120.6911,22.1751],[120.6938,22.1725],[120.694,22.1674],[120.6955,22.1665],[120.696,22.1597],[120.6946,22.1574],[120.6961,22.1542],[120.6995,22.1501],[120.6998,22.1469],[120.698,22.1439],[120.6976,22.1405],[120.6985,22.1368],[120.7015,22.1342],[120.7023,22.1298],[120.7066,22.126],[120.7091,22.1228],[120.7104,22.118],[120.7131,22.1115],[120.7125,22.1083],[120.7152,22.1065],[120.7161,22.1005],[120.7156,22.0969],[120.7169,22.0933],[120.7056,22.0871],[120.7007,22.0855],[120.6993,22.0825],[120.7006,22.0801],[120.7033,22.0783],[120.7057,22.0707],[120.7048,22.0679],[120.706,22.0609],[120.7045,22.056],[120.7,22.0561],[120.6976,22.055],[120.6944,22.0483],[120.6964,22.0431],[120.6895,22.036],[120.6863,22.0305],[120.6852,22.0239],[120.6889,22.0156],[120.6909,22.013],[120.6932,22.0076],[120.6938,22.0026],[120.7007,21.996],[120.7056,21.9935],[120.7069,21.9875],[120.7101,21.9856],[120.7136,21.9806],[120.7152,21.9729],[120.715,21.9711],[120.7115,21.9639],[120.7117,21.9555],[120.7099,21.9415],[120.7106,21.9341],[120.7127,21.9333],[120.716,21.9349],[120.7193,21.9329],[120.719,21.9273],[120.7229,21.922],[120.7284,21.9183],[120.7396,21.9197],[120.7399,21.9264],[120.742,21.9275],[120.7469,21.9342],[120.7454,21.9383],[120.7454,21.9425],[120.7485,21.9418],[120.749,21.945],[120.7484,21.9495],[120.7539,21.9524],[120.7532,21.9552],[120.7574,21.9573],[120.7606,21.9572],[120.7614,21.9589],[120.766,21.9582],[120.7711,21.9515],[120.7776,21.9493],[120.783,21.9435],[120.7943,21.9432],[120.798,21.9405],[120.7985,21.9378],[120.8018,21.9372],[120.8029,21.9398],[120.8126,21.9335],[120.8222,21.9344],[120.8235,21.9315],[120.8302,21.9253],[120.8316,21.9247],[120.8355,21.9172],[120.8373,21.916],[120.8461,21.9137],[120.846,21.906],[120.8479,21.8999],[120.8511,21.8964],[120.8586,21.8956],[120.8657,21.8987],[120.8671,21.9027],[120.8633,21.9056],[120.8619,21.9097],[120.8629,21.9138],[120.8626,21.9176],[120.8585,21.9226],[120.8578,21.9247],[120.8534,21.9303],[120.8489,21.9338],[120.8476,21.9386],[120.8455,21.9413],[120.8433,21.9462],[120.8423,21.9513],[120.843,21.9542],[120.8414,21.9565],[120.8416,21.9599],[120.8445,21.9683],[120.8445,21.9738],[120.8454,21.9754],[120.8443,21.9809],[120.8461,21.9862],[120.8485,21.9882],[120.8558,21.989],[120.8616,21.9908],[120.8673,21.995],[120.8758,21.9988],[120.8793,22.0057],[120.8782,22.0107],[120.8837,22.0132],[120.8871,22.0165],[120.8871,22.0204],[120.8892,22.0258],[120.8966,22.0309],[120.9011,22.0332],[120.8951,22.0467],[120.8939,22.0484],[120.8942,22.056],[120.893,22.0693],[120.894,22.0809],[120.8941,22.0886],[120.8985,22.0946],[120.8989,22.1014],[120.9019,22.1056],[120.8981,22.1068],[120.8926,22.1098],[120.8886,22.1191],[120.8875,22.1227],[120.8867,22.1297],[120.8879,22.1333],[120.8911,22.1346],[120.8966,22.1408],[120.8971,22.144],[120.8926,22.1503],[120.894,22.1557],[120.8934,22.1604],[120.8921,22.1624],[120.8938,22.1684],[120.8942,22.1726],[120.8919,22.1841],[120.8907,22.1953],[120.8935,22.1979],[120.8964,22.2034],[120.8958,22.2089],[120.8942,22.2166],[120.8947,22.2237],[120.8969,22.2288],[120.8989,22.2298],[120.8989,22.2338],[120.8963,22.2464],[120.884,22.2406],[120.8805,22.2346],[120.8795,22.2352],[120.8715,22.233],[120.8664,22.2298],[120.8623,22.2313],[120.8643,22.2338],[120.8616,22.2375],[120.859,22.2386],[120.8585,22.2409],[120.8508,22.2437],[120.8449,22.2428],[120.8414,22.2446],[120.8396,22.2436],[120.8325,22.2473],[120.8315,22.2501],[120.826,22.2565],[120.8229,22.2577],[120.8156,22.263],[120.7991,22.2572],[120.7986,22.2638],[120.7994,22.2654],[120.7962,22.2678],[120.7981,22.2744],[120.8006,22.2774],[120.8068,22.2772],[120.8055,22.2841],[120.8007,22.2842],[120.7992,22.2854],[120.7934,22.2857],[120.7911,22.2882],[120.7911,22.2907],[120.7887,22.294],[120.7813,22.2947],[120.7777,22.298],[120.7768,22.3026],[120.7782,22.3085],[120.7832,22.3095],[120.7871,22.3092],[120.793,22.3124],[120.7964,22.3168],[120.7964,22.3199],[120.7934,22.3236],[120.7925,22.3284],[120.7925,22.3356],[120.7897,22.3376],[120.7885,22.3416],[120.7866,22.3421],[120.7851,22.3455],[120.7811,22.3464],[120.7758,22.3487],[120.767,22.3478],[120.7636,22.3522],[120.7632,22.359],[120.7614,22.3603],[120.7581,22.3594],[120.7524,22.3605],[120.7435,22.3676],[120.7448,22.3702],[120.7488,22.3732],[120.7487,22.3801],[120.7505,22.3841],[120.7565,22.3884],[120.7521,22.3927],[120.7538,22.3964],[120.7576,22.3981],[120.7554,22.4033],[120.7627,22.4069],[120.7649,22.4089],[120.7734,22.4069],[120.7753,22.4096],[120.78,22.4093],[120.7846,22.4128],[120.7877,22.4168],[120.7882,22.4194],[120.7869,22.4252],[120.7849,22.4279],[120.7828,22.4333],[120.7803,22.4371],[120.7768,22.44],[120.7751,22.4433],[120.7765,22.4489],[120.7759,22.4504],[120.7687,22.4526],[120.7655,22.4529],[120.7591,22.4573],[120.7542,22.4573],[120.7513,22.4586],[120.7516,22.4642],[120.7542,22.4694],[120.7542,22.4731],[120.7515,22.4797],[120.7575,22.4818],[120.7586,22.4884],[120.7613,22.4889],[120.7637,22.4909],[120.7643,22.4944],[120.7627,22.5011],[120.7571,22.5089],[120.7536,22.511],[120.7528,22.519],[120.7513,22.5224],[120.7517,22.5253],[120.7501,22.5286],[120.75,22.534],[120.748,22.5385],[120.7457,22.5407],[120.7394,22.5517],[120.74,22.5583],[120.7396,22.5625],[120.7415,22.5687],[120.748,22.5711],[120.7493,22.5773],[120.7465,22.5846],[120.7458,22.5896],[120.7484,22.5933],[120.7523,22.5971],[120.7547,22.6008],[120.7541,22.6086],[120.7529,22.6121],[120.758,22.6231],[120.761,22.6258],[120.7613,22.63],[120.7642,22.6337],[120.7677,22.6362],[120.772,22.6422],[120.7738,22.6462],[120.7798,22.6525],[120.7864,22.663],[120.7862,22.672],[120.7916,22.6792],[120.7895,22.6832],[120.7894,22.6869],[120.7867,22.6927],[120.7891,22.6933],[120.7977,22.6891],[120.808,22.6892],[120.8108,22.6916],[120.8133,22.6921],[120.8191,22.691],[120.8199,22.6956],[120.8261,22.6959],[120.8276,22.6974],[120.835,22.6966],[120.8383,22.6989],[120.838,22.7018],[120.8402,22.7067],[120.8431,22.7075],[120.8442,22.7106],[120.8487,22.717],[120.8551,22.7175],[120.8586,22.7136],[120.8614,22.7167],[120.8672,22.7169],[120.8691,22.7159],[120.8755,22.7172],[120.8792,22.7161],[120.8835,22.7171],[120.8874,22.7227],[120.8883,22.7267],[120.891,22.7287],[120.8924,22.7356],[120.8947,22.7376],[120.8955,22.7421],[120.8942,22.7442],[120.8954,22.7482],[120.8941,22.7516],[120.8956,22.7557],[120.8945,22.7591],[120.8949,22.7623],[120.8931,22.7663],[120.9005,22.7698],[120.9039,22.7758],[120.9032,22.7805],[120.9042,22.7832],[120.9017,22.7875],[120.9033,22.7934],[120.9037,22.7982],[120.9017,22.8033],[120.8965,22.808],[120.8944,22.8085],[120.891,22.8117],[120.889,22.8118],[120.8816,22.8145],[120.8773,22.8131],[120.8747,22.8153],[120.8717,22.8148],[120.8684,22.8171],[120.8647,22.8253],[120.8616,22.8267],[120.8646,22.8322],[120.8653,22.8361],[120.864,22.8398],[120.8646,22.8431]]]]},"properties":{"COUNTYID":"T","COUNTYCODE":"10013","COUNTYNAME":"屏東縣","COUNTYENG":"Pingtung County"}} -]} \ No newline at end of file diff --git a/public/tauri.svg b/public/tauri.svg deleted file mode 100644 index 31b62c9..0000000 --- a/public/tauri.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/public/vite.svg b/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src-tauri/.gitignore b/src-tauri/.gitignore index aec9078..b21bd68 100644 --- a/src-tauri/.gitignore +++ b/src-tauri/.gitignore @@ -2,4 +2,6 @@ # will have compiled files and executables /target/ -/gen/ \ No newline at end of file +# Generated by Tauri +# will have schema files for capabilities auto-completion +/gen/schemas diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 902765e..3180c51 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ "gimli", ] @@ -17,15 +17,57 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + [[package]] name = "ahash" -version = "0.7.8" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ - "getrandom 0.2.12", + "cfg-if", "once_cell", "version_check", + "zerocopy", ] [[package]] @@ -52,6 +94,12 @@ dependencies = [ "alloc-no-stdlib", ] +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + [[package]] name = "android-tzdata" version = "0.1.1" @@ -59,116 +107,184 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" [[package]] -name = "android_log-sys" -version = "0.2.0" +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85965b6739a430150bdd138e2374a98af0c3ee0d030b3bb7fc3bddff58d0102e" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] -name = "android_logger" -version = "0.11.3" +name = "arbitrary" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8619b80c242aa7bd638b5c7ddd952addeecb71f69c75e33f1d47b2804f8f883a" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" dependencies = [ - "android_log-sys", - "env_logger", - "log", - "once_cell", + "derive_arbitrary", ] [[package]] -name = "android_system_properties" -version = "0.1.5" +name = "arrayref" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "async-broadcast" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" dependencies = [ - "libc", + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", ] [[package]] -name = "anstream" -version = "0.6.13" +name = "async-channel" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "utf8parse", + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", ] [[package]] -name = "anstyle" -version = "1.0.6" +name = "async-executor" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] [[package]] -name = "anstyle-parse" -version = "0.2.3" +name = "async-fs" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" dependencies = [ - "utf8parse", + "async-lock", + "blocking", + "futures-lite", ] [[package]] -name = "anstyle-query" -version = "1.0.2" +name = "async-io" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "tracing", "windows-sys 0.52.0", ] [[package]] -name = "anstyle-wincon" -version = "3.0.2" +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "f7eda79bbd84e29c2b308d1dc099d7de8dcc7035e48f4bf5dc4a531a44ff5e2a" dependencies = [ - "anstyle", + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix", + "tracing", "windows-sys 0.52.0", ] [[package]] -name = "anyhow" -version = "1.0.81" +name = "async-recursion" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] [[package]] -name = "arboard" -version = "3.3.2" +name = "async-signal" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2041f1943049c7978768d84e6d0fd95de98b76d6c4727b09e78ec253d29fa58" +checksum = "dfb3634b73397aa844481f814fad23bbf07fdb0eabec10f2eb95e58944b1ec32" dependencies = [ - "clipboard-win", - "core-graphics 0.23.1", - "image", - "log", - "objc", - "objc-foundation", - "objc_id", - "parking_lot", - "thiserror", - "windows-sys 0.48.0", - "x11rb", + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.52.0", ] [[package]] -name = "arrayvec" -version = "0.7.4" +name = "async-task" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] -name = "as-raw-xcb-connection" -version = "1.0.1" +name = "async-trait" +version = "0.1.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] [[package]] name = "atk" @@ -194,27 +310,22 @@ dependencies = [ ] [[package]] -name = "auto-launch" -version = "0.5.0" +name = "atomic-waker" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f012b8cc0c850f34117ec8252a44418f2e34a2cf501de89e29b241ae5f79471" -dependencies = [ - "dirs", - "thiserror", - "winreg 0.10.1", -] +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ "addr2line", "cc", @@ -225,6 +336,18 @@ dependencies = [ "rustc-demangle", ] +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + [[package]] name = "base64" version = "0.21.7" @@ -233,9 +356,24 @@ checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64" -version = "0.22.0" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] [[package]] name = "bitflags" @@ -245,23 +383,31 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" dependencies = [ "serde", ] [[package]] -name = "bitvec" -version = "1.0.1" +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" dependencies = [ - "funty", - "radium", - "tap", - "wyz", + "arrayref", + "arrayvec", + "constant_time_eq 0.3.0", ] [[package]] @@ -280,27 +426,34 @@ dependencies = [ ] [[package]] -name = "borsh" -version = "1.3.0" +name = "block-padding" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d4d6dafc1a3bb54687538972158f07b2c948bc57d5890df22c0739098b3028" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" dependencies = [ - "borsh-derive", - "cfg_aliases 0.1.1", + "generic-array", ] [[package]] -name = "borsh-derive" -version = "1.3.0" +name = "block2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4918709cc4dd777ad2b6303ed03cb37f3ca0ccede8c1b0d28ac6db8f4710e0" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" dependencies = [ - "once_cell", - "proc-macro-crate 2.0.2", - "proc-macro2", - "quote", - "syn 2.0.53", - "syn_derive", + "objc2", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", ] [[package]] @@ -326,62 +479,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.15.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" - -[[package]] -name = "byte-unit" -version = "5.1.4" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ac19bdf0b2665407c39d82dbc937e951e7e2001609f0fb32edd0af45a2d63e" -dependencies = [ - "rust_decimal", - "serde", - "utf8-width", -] - -[[package]] -name = "bytecheck" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" -dependencies = [ - "bytecheck_derive", - "ptr_meta", - "simdutf8", -] - -[[package]] -name = "bytecheck_derive" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.15.0" +version = "1.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" -dependencies = [ - "bytemuck_derive", -] - -[[package]] -name = "bytemuck_derive" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.53", -] +checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" [[package]] name = "byteorder" @@ -391,9 +497,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" dependencies = [ "serde", ] @@ -404,7 +510,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cairo-sys-rs", "glib", "libc", @@ -425,9 +531,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" dependencies = [ "serde", ] @@ -467,9 +573,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.90" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" +checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc" [[package]] name = "cesu8" @@ -490,9 +596,9 @@ dependencies = [ [[package]] name = "cfg-expr" -version = "0.15.7" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa50868b64a9a6fda9d593ce778849ea8715cd2a3d2cc17ffdb4a2f2f2f1961d" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" dependencies = [ "smallvec", "target-lexicon", @@ -506,79 +612,56 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - -[[package]] -name = "cfg_aliases" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e53693616d3075149f4ead59bdeecd204ac6b8192d8969757601b74bddf00f" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] -name = "chrono" -version = "0.4.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "num-traits", - "serde", - "windows-targets 0.52.4", -] - -[[package]] -name = "clap" -version = "4.5.3" +name = "chacha20" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" dependencies = [ - "clap_builder", + "cfg-if", + "cipher", + "cpufeatures", ] [[package]] -name = "clap_builder" -version = "4.5.2" +name = "chacha20poly1305" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim 0.11.0", + "aead", + "chacha20", + "cipher", + "poly1305", + "zeroize", ] [[package]] -name = "clap_lex" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" - -[[package]] -name = "clipboard-win" -version = "5.3.0" +name = "chrono" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d517d4b86184dbb111d3556a10f1c8a04da7428d2987bf1081602bf11c3aa9ee" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ - "error-code", + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-targets 0.52.6", ] [[package]] -name = "cocoa" -version = "0.24.1" +name = "cipher" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "bitflags 1.3.2", - "block", - "cocoa-foundation", - "core-foundation", - "core-graphics 0.22.3", - "foreign-types 0.3.2", - "libc", - "objc", + "crypto-common", + "inout", + "zeroize", ] [[package]] @@ -591,8 +674,8 @@ dependencies = [ "block", "cocoa-foundation", "core-foundation", - "core-graphics 0.23.1", - "foreign-types 0.5.0", + "core-graphics", + "foreign-types", "libc", "objc", ] @@ -612,26 +695,41 @@ dependencies = [ ] [[package]] -name = "color_quant" -version = "1.1.0" +name = "combine" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] [[package]] -name = "colorchoice" -version = "1.0.0" +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "const-oid" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] -name = "combine" -version = "4.6.6" +name = "constant_time_eq" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" -dependencies = [ - "bytes", - "memchr", -] +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" [[package]] name = "convert_case" @@ -639,6 +737,34 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "cookie_store" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4934e6b7e8419148b6ef56950d277af8561060b56afd59e2aadf98b59fce6baa" +dependencies = [ + "cookie", + "idna 0.5.0", + "log", + "publicsuffix", + "serde", + "serde_derive", + "serde_json", + "time", + "url", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -657,39 +783,35 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core-graphics" -version = "0.22.3" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", "core-foundation", "core-graphics-types", - "foreign-types 0.3.2", + "foreign-types", "libc", ] [[package]] -name = "core-graphics" -version = "0.23.1" +name = "core-graphics-types" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", "core-foundation", - "core-graphics-types", - "foreign-types 0.5.0", "libc", ] [[package]] -name = "core-graphics-types" -version = "0.1.3" +name = "core2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "libc", + "memchr", ] [[package]] @@ -703,27 +825,45 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-channel" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] [[package]] name = "crypto-common" @@ -759,24 +899,73 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.53", + "syn 2.0.72", ] [[package]] name = "ctor" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad291aa74992b9b7a7e88c38acbbf6ad7e107f1d90ee8775b7bc1fc3394f485c" +checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" dependencies = [ "quote", - "syn 2.0.53", + "syn 2.0.72", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "curve25519-dalek" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", ] [[package]] name = "darling" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ "darling_core", "darling_macro", @@ -784,35 +973,57 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim 0.10.0", - "syn 2.0.53", + "strsim", + "syn 2.0.72", ] [[package]] name = "darling_macro" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.53", + "syn 2.0.72", ] +[[package]] +name = "dary_heap" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7762d17f1241643615821a8455a0b2c3e803784b058693d990b11f2dce25a0ca" + +[[package]] +name = "data-encoding" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" + [[package]] name = "data-url" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a" +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "zeroize", +] + [[package]] name = "deranged" version = "0.3.11" @@ -823,17 +1034,48 @@ dependencies = [ "serde", ] +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + [[package]] name = "derive_more" -version = "0.99.17" +version = "0.99.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "convert_case", "proc-macro2", "quote", "rustc_version", - "syn 1.0.109", + "syn 2.0.72", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", ] [[package]] @@ -843,7 +1085,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", + "const-oid", "crypto-common", + "subtle", ] [[package]] @@ -852,7 +1096,16 @@ version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" dependencies = [ - "dirs-sys", + "dirs-sys 0.3.7", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys 0.4.1", ] [[package]] @@ -867,13 +1120,25 @@ dependencies = [ [[package]] name = "dirs-sys" -version = "0.3.7" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", + "option-ext", "redox_users", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -894,12 +1159,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" [[package]] -name = "dlib" -version = "0.5.2" +name = "displaydoc" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ - "libloading 0.8.3", + "proc-macro2", + "quote", + "syn 2.0.72", ] [[package]] @@ -922,93 +1189,114 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.72", ] [[package]] -name = "downcast-rs" -version = "1.2.0" +name = "dpi" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" +dependencies = [ + "serde", +] [[package]] -name = "drm" -version = "0.11.1" +name = "dtoa" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde" -dependencies = [ - "bitflags 2.5.0", - "bytemuck", - "drm-ffi", - "drm-fourcc", - "rustix", -] +checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" [[package]] -name = "drm-ffi" -version = "0.7.1" +name = "dtoa-short" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41334f8405792483e32ad05fbb9c5680ff4e84491883d2947a4757dc54cb2ac6" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" dependencies = [ - "drm-sys", - "rustix", + "dtoa", ] [[package]] -name = "drm-fourcc" -version = "2.2.0" +name = "dunce" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" [[package]] -name = "drm-sys" -version = "0.6.1" +name = "dyn-clone" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d09ff881f92f118b11105ba5e34ff8f4adf27b30dae8f12e28c193af1c83176" -dependencies = [ - "libc", - "linux-raw-sys 0.6.4", -] +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] -name = "dtoa" -version = "1.0.9" +name = "ecdsa" +version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] [[package]] -name = "dtoa-short" -version = "0.3.4" +name = "ed25519" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbaceec3c6e4211c79e7b1800fb9680527106beb2f9c51904a3210c03a448c74" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "dtoa", + "signature", ] [[package]] -name = "dunce" -version = "1.0.4" +name = "ed25519-zebra" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" +checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" +dependencies = [ + "curve25519-dalek 4.1.3", + "ed25519", + "hashbrown 0.14.5", + "hex", + "rand_core 0.6.4", + "sha2", + "zeroize", +] [[package]] -name = "dyn-clone" -version = "1.0.17" +name = "elliptic-curve" +version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] [[package]] name = "embed-resource" -version = "2.4.2" +version = "2.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6985554d0688b687c5cb73898a34fbe3ad6c24c58c238a4d91d5e840670ee9d" +checksum = "4edcacde9351c33139a41e3c97eb2334351a81a2791bebb0b243df837128f602" dependencies = [ "cc", "memchr", "rustc_version", "toml 0.8.2", "vswhom", - "winreg 0.52.0", + "winreg", ] [[package]] @@ -1019,21 +1307,38 @@ checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" [[package]] name = "encoding_rs" -version = "0.8.33" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] [[package]] -name = "env_logger" -version = "0.10.2" +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enumflags2" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" dependencies = [ - "log", - "regex", + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", ] [[package]] @@ -1042,27 +1347,52 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "erased-serde" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" +dependencies = [ + "serde", + "typeid", +] + [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", ] [[package]] -name = "error-code" -version = "3.2.0" +name = "event-listener" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +dependencies = [ + "event-listener", + "pin-project-lite", +] [[package]] name = "fastrand" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "fdeflate" @@ -1074,29 +1404,48 @@ dependencies = [ ] [[package]] -name = "fern" -version = "0.6.2" +name = "ff" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ - "log", + "rand_core 0.6.4", + "subtle", ] +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + [[package]] name = "field-offset" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" dependencies = [ - "memoffset", + "memoffset 0.9.1", "rustc_version", ] +[[package]] +name = "filetime" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.4.1", + "windows-sys 0.52.0", +] + [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", "miniz_oxide", @@ -1108,15 +1457,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared 0.1.1", -] - [[package]] name = "foreign-types" version = "0.5.0" @@ -1124,7 +1464,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" dependencies = [ "foreign-types-macros", - "foreign-types-shared 0.3.1", + "foreign-types-shared", ] [[package]] @@ -1135,15 +1475,9 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.72", ] -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - [[package]] name = "foreign-types-shared" version = "0.3.1" @@ -1159,12 +1493,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - [[package]] name = "futf" version = "0.1.5" @@ -1207,6 +1535,19 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +[[package]] +name = "futures-lite" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + [[package]] name = "futures-macro" version = "0.3.30" @@ -1215,7 +1556,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.72", ] [[package]] @@ -1376,6 +1717,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -1401,20 +1743,32 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", ] [[package]] name = "gimli" -version = "0.28.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "gio" @@ -1454,7 +1808,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "futures-channel", "futures-core", "futures-executor", @@ -1482,7 +1836,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.72", ] [[package]] @@ -1512,6 +1866,17 @@ dependencies = [ "system-deps", ] +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "gtk" version = "0.18.1" @@ -1561,20 +1926,20 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.72", ] [[package]] name = "h2" -version = "0.3.26" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" dependencies = [ + "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "futures-util", "http", "indexmap 2.2.6", "slab", @@ -1588,15 +1953,16 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash", -] [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] [[package]] name = "heck" @@ -1616,12 +1982,36 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + [[package]] name = "html5ever" version = "0.26.0" @@ -1638,60 +2028,100 @@ dependencies = [ [[package]] name = "http" -version = "0.2.12" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ "bytes", "fnv", - "itoa 1.0.10", + "itoa 1.0.11", ] [[package]] name = "http-body" -version = "0.4.6" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http", - "pin-project-lite", ] [[package]] -name = "httparse" -version = "1.8.0" +name = "http-body-util" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", +] [[package]] -name = "httpdate" -version = "1.0.3" +name = "httparse" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "hyper" -version = "0.14.28" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", - "futures-core", "futures-util", "h2", "http", "http-body", "httparse", - "httpdate", - "itoa 1.0.10", + "itoa 1.0.11", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +dependencies = [ + "futures-util", + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots", +] + +[[package]] +name = "hyper-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", "pin-project-lite", "socket2", "tokio", + "tower", "tower-service", "tracing", - "want", ] [[package]] @@ -1705,7 +2135,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows-core 0.52.0", ] [[package]] @@ -1735,26 +2165,22 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" dependencies = [ "unicode-bidi", "unicode-normalization", ] [[package]] -name = "image" -version = "0.24.9" +name = "idna" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ - "bytemuck", - "byteorder", - "color_quant", - "num-traits", - "png", - "tiff", + "unicode-bidi", + "unicode-normalization", ] [[package]] @@ -1775,7 +2201,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "serde", ] @@ -1789,12 +2215,74 @@ dependencies = [ ] [[package]] -name = "instant" -version = "0.1.12" +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "block-padding", + "generic-array", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "iota-crypto" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5db0e2d85e258d6d0db66f4a6bf1e8bdf5b10c3353aa87d98b168778d13fdc1" +dependencies = [ + "aead", + "aes", + "aes-gcm", + "autocfg", + "base64 0.21.7", + "blake2", + "chacha20poly1305", + "cipher", + "curve25519-dalek 3.2.0", + "digest 0.10.7", + "ed25519-zebra", + "generic-array", + "getrandom 0.2.15", + "hkdf", + "hmac", + "iterator-sorted", + "k256", + "pbkdf2", + "rand 0.8.5", + "scrypt", + "serde", + "sha2", + "tiny-keccak", + "unicode-normalization", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "iota_stronghold" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "8c0d301c7edbc31494d183b7d24c1bb51d3fb10fce2f3793df1baf45b6988e10" dependencies = [ - "cfg-if", + "bincode", + "hkdf", + "iota-crypto", + "rust-argon2 1.0.0", + "serde", + "stronghold-derive", + "stronghold-utils", + "stronghold_engine", + "thiserror", + "zeroize", ] [[package]] @@ -1822,6 +2310,12 @@ dependencies = [ "once_cell", ] +[[package]] +name = "iterator-sorted" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d101775d2bc8f99f4ac18bf29b9ed70c0dd138b9a1e88d7b80179470cbbe8bd2" + [[package]] name = "itoa" version = "0.4.8" @@ -1830,9 +2324,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "javascriptcore-rs" @@ -1879,12 +2373,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" -[[package]] -name = "jpeg-decoder" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" - [[package]] name = "js-sys" version = "0.3.69" @@ -1896,14 +2384,26 @@ dependencies = [ [[package]] name = "json-patch" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ff1e1486799e3f64129f8ccad108b38290df9cd7015cd31bed17239f0789d6" +checksum = "ec9ad60d674508f3ca8f380a928cfe7b096bc729c4e2dbfe3852bc45da3ab30b" dependencies = [ "serde", "serde_json", "thiserror", - "treediff", +] + +[[package]] +name = "k256" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", ] [[package]] @@ -1912,7 +2412,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "serde", "unicode-segmentation", ] @@ -1932,9 +2432,9 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libappindicator" @@ -1956,86 +2456,104 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" dependencies = [ "gtk-sys", - "libloading 0.7.4", + "libloading", "once_cell", ] [[package]] name = "libc" -version = "0.2.153" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] -name = "libloading" -version = "0.7.4" +name = "libflate" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "45d9dfdc14ea4ef0900c1cddbc8dcd553fbaacd8a4a282cf4018ae9dd04fb21e" dependencies = [ - "cfg-if", - "winapi", + "adler32", + "core2", + "crc32fast", + "dary_heap", + "libflate_lz77", +] + +[[package]] +name = "libflate_lz77" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e0d73b369f386f1c44abd9c570d5318f55ccde816ff4b562fa452e5182863d" +dependencies = [ + "core2", + "hashbrown 0.14.5", + "rle-decode-fast", ] [[package]] name = "libloading" -version = "0.8.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" dependencies = [ "cfg-if", - "windows-targets 0.52.4", + "winapi", ] [[package]] name = "libredox" -version = "0.0.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", - "redox_syscall", ] [[package]] -name = "line-wrap" -version = "0.1.1" +name = "libsodium-sys-stable" +version = "1.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" +checksum = "ad52c454200cd0178a04ef7642a240a7e81b4d8c59f0865eb98c477daf7d3b84" dependencies = [ - "safemem", + "cc", + "libc", + "libflate", + "minisign-verify", + "pkg-config", + "tar", + "ureq", + "vcpkg", + "zip", ] [[package]] name = "linux-raw-sys" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" - -[[package]] -name = "linux-raw-sys" -version = "0.6.4" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0b5399f6804fbab912acbd8878ed3532d506b7c951b8f9f164ef90fef39e3f4" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", ] +[[package]] +name = "lockfree-object-pool" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" + [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" -dependencies = [ - "value-bag", -] +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "loom" @@ -2098,24 +2616,24 @@ checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] -name = "memmap2" -version = "0.9.4" +name = "memoffset" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" dependencies = [ - "libc", + "autocfg", ] [[package]] name = "memoffset" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] @@ -2126,11 +2644,17 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "minisign-verify" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "933dca44d65cdd53b355d0b73d380a2ff5da71f87f036053188bf1eab6a19881" + [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", "simd-adler32", @@ -2138,23 +2662,25 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "muda" -version = "0.12.1" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e27c56b8cb9b3214d196556227b0eaa12db8393b4f919a0a93ffb67ed17d185" +checksum = "86b959f97c97044e4c96e32e1db292a7d594449546a3c6b77ae613dc3a5b5145" dependencies = [ - "cocoa 0.25.0", + "cocoa", "crossbeam-channel", + "dpi", "gtk", "keyboard-types", "objc", @@ -2200,6 +2726,30 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" +[[package]] +name = "nix" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset 0.6.5", +] + +[[package]] +name = "nix" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "libc", + "memoffset 0.9.1", +] + [[package]] name = "nodrop" version = "0.1.14" @@ -2224,23 +2774,13 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "num_enum" version = "0.5.11" @@ -2263,33 +2803,113 @@ dependencies = [ ] [[package]] -name = "num_threads" -version = "0.1.7" +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ + "bitflags 2.6.0", + "block2", "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", ] [[package]] -name = "objc" -version = "0.2.7" +name = "objc2-core-data" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "malloc_buf", - "objc_exception", + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", ] [[package]] -name = "objc-foundation" -version = "0.1.1" +name = "objc2-core-image" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ - "block", - "objc", - "objc_id", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-encode" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.6.0", + "block2", + "dispatch", + "libc", + "objc2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", ] [[package]] @@ -2312,9 +2932,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" dependencies = [ "memchr", ] @@ -2325,22 +2945,55 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + [[package]] name = "open" -version = "5.1.2" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "449f0ff855d85ddbf1edd5b646d65249ead3f5e422aaa86b7d2d0b049b103e32" +checksum = "61a877bf6abd716642a53ef1b89fb498923a4afca5c754f9050b4d081c05c4b3" dependencies = [ "is-wsl", "libc", "pathdiff", ] +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "os_info" +version = "3.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae99c7fa6dd38c7cafe1ec085e804f8f555a2f8659b0dbe03f1f9963a9b51092" +dependencies = [ + "log", + "serde", + "windows-sys 0.52.0", +] + [[package]] name = "os_pipe" -version = "1.1.5" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57119c3b893986491ec9aa85056780d3a0f3cf4da7cc09dd3650dbd6c6738fb9" +checksum = "29d73ba8daf8fac13b0501d1abeddcfe21ba7401ada61a819144b6c2a4f32209" dependencies = [ "libc", "windows-sys 0.52.0", @@ -2377,11 +3030,17 @@ dependencies = [ "system-deps", ] +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -2389,23 +3048,39 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.5.3", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + [[package]] name = "pathdiff" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -2516,7 +3191,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.72", ] [[package]] @@ -2546,11 +3221,31 @@ dependencies = [ "siphasher", ] +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -2558,6 +3253,27 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piper" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + [[package]] name = "pkg-config" version = "0.3.30" @@ -2566,13 +3282,12 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "plist" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5699cc8a63d1aa2b1ee8e12b9ad70ac790d65788cd36101fa37f87ea46c4cef" +checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "indexmap 2.2.6", - "line-wrap", "quick-xml", "serde", "time", @@ -2582,13 +3297,51 @@ dependencies = [ name = "png" version = "0.17.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi 0.4.0", + "pin-project-lite", + "rustix", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" dependencies = [ - "bitflags 1.3.2", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", ] [[package]] @@ -2661,56 +3414,92 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] -name = "ptr_meta" -version = "0.1.4" +name = "psl-types" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" -dependencies = [ - "ptr_meta_derive", -] +checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" [[package]] -name = "ptr_meta_derive" -version = "0.1.4" +name = "publicsuffix" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +checksum = "96a8c1bda5ae1af7f99a2962e49df150414a43d62404644d98dd5c3a93d07457" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "idna 0.3.0", + "psl-types", ] [[package]] name = "quick-xml" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" dependencies = [ "memchr", ] [[package]] -name = "quote" -version = "1.0.35" +name = "quinn" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad" dependencies = [ - "proc-macro2", + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "thiserror", + "tokio", + "tracing", ] [[package]] -name = "radium" -version = "0.7.0" +name = "quinn-proto" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" +dependencies = [ + "bytes", + "rand 0.8.5", + "ring", + "rustc-hash", + "rustls", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" +dependencies = [ + "libc", + "once_cell", + "socket2", + "windows-sys 0.52.0", +] + +[[package]] +name = "quote" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] [[package]] name = "rand" @@ -2772,7 +3561,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.12", + "getrandom 0.2.15", ] [[package]] @@ -2801,9 +3590,9 @@ checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" [[package]] name = "raw-window-handle" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "redox_syscall" @@ -2814,27 +3603,36 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +dependencies = [ + "bitflags 2.6.0", +] + [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ - "getrandom 0.2.12", + "getrandom 0.2.15", "libredox", "thiserror", ] [[package]] name = "regex" -version = "1.10.3" +version = "1.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.6", - "regex-syntax 0.8.2", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", ] [[package]] @@ -2848,13 +3646,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.2", + "regex-syntax 0.8.4", ] [[package]] @@ -2865,34 +3663,30 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" - -[[package]] -name = "rend" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" -dependencies = [ - "bytecheck", -] +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "reqwest" -version = "0.11.27" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "bytes", + "cookie", + "cookie_store", "encoding_rs", "futures-core", "futures-util", "h2", "http", "http-body", + "http-body-util", "hyper", + "hyper-rustls", + "hyper-util", "ipnet", "js-sys", "log", @@ -2900,12 +3694,17 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", + "quinn", + "rustls", + "rustls-pemfile", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper", "system-configuration", "tokio", + "tokio-rustls", "tokio-util", "tower-service", "url", @@ -2913,59 +3712,75 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "winreg 0.50.0", + "webpki-roots", + "winreg", ] [[package]] -name = "rkyv" -version = "0.7.44" +name = "rfc6979" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" dependencies = [ - "bitvec", - "bytecheck", - "bytes", - "hashbrown 0.12.3", - "ptr_meta", - "rend", - "rkyv_derive", - "seahash", - "tinyvec", - "uuid", + "hmac", + "subtle", ] [[package]] -name = "rkyv_derive" -version = "0.7.44" +name = "ring" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "cc", + "cfg-if", + "getrandom 0.2.15", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rle-decode-fast" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" + +[[package]] +name = "rust-argon2" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50162d19404029c1ceca6f6980fe40d45c8b369f6f44446fa14bb39573b5bb9" +dependencies = [ + "base64 0.13.1", + "blake2b_simd", + "constant_time_eq 0.1.5", + "crossbeam-utils", ] [[package]] -name = "rust_decimal" -version = "1.34.3" +name = "rust-argon2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39449a79f45e8da28c57c341891b69a183044b29518bb8f86dbac9df60bb7df" +checksum = "9d9848531d60c9cbbcf9d166c885316c24bc0e2a9d3eba0956bb6cbbd79bc6e8" dependencies = [ - "arrayvec", - "borsh", - "bytes", - "num-traits", - "rand 0.8.5", - "rkyv", - "serde", - "serde_json", + "base64 0.21.7", + "blake2b_simd", + "constant_time_eq 0.3.0", ] [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc_version" @@ -2978,34 +3793,78 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.32" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno", "libc", - "linux-raw-sys 0.4.13", + "linux-raw-sys", "windows-sys 0.52.0", ] +[[package]] +name = "rustls" +version = "0.23.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +dependencies = [ + "base64 0.22.1", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" + +[[package]] +name = "rustls-webpki" +version = "0.102.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] -name = "safemem" -version = "0.3.3" +name = "salsa20" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] [[package]] name = "same-file" @@ -3018,9 +3877,9 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.16" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" dependencies = [ "dyn-clone", "indexmap 1.9.3", @@ -3032,14 +3891,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.16" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 1.0.109", + "syn 2.0.72", ] [[package]] @@ -3055,10 +3914,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] -name = "seahash" -version = "4.1.0" +name = "scrypt" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" +dependencies = [ + "pbkdf2", + "salsa20", + "sha2", +] + +[[package]] +name = "sec1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] [[package]] name = "selectors" @@ -3082,71 +3960,83 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ "serde", ] [[package]] name = "serde" -version = "1.0.197" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] +[[package]] +name = "serde-untagged" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2676ba99bd82f75cae5cbd2c8eda6fa0b8760f18978ea840e980dd5567b5c5b6" +dependencies = [ + "erased-serde", + "serde", + "typeid", +] + [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.72", ] [[package]] name = "serde_derive_internals" -version = "0.26.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.72", ] [[package]] name = "serde_json" -version = "1.0.114" +version = "1.0.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +checksum = "4ab380d7d9f22ef3f21ad3e6c1ebe8e4fc7a2000ccba2e4d71fc96f15b2cb609" dependencies = [ - "itoa 1.0.10", + "itoa 1.0.11", + "memchr", "ryu", "serde", ] [[package]] name = "serde_repr" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.72", ] [[package]] name = "serde_spanned" -version = "0.6.5" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -3158,18 +4048,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.10", + "itoa 1.0.11", "ryu", "serde", ] [[package]] name = "serde_with" -version = "3.7.0" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee80b0e361bbf88fd2f6e242ccd19cfda072cb0faa6ae694ecee08199938569a" +checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", @@ -3183,14 +4073,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.7.0" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6561dc161a9224638a31d876ccdfefbc1df91d3f3a8342eddb35f055d48c7655" +checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.72", ] [[package]] @@ -3225,6 +4115,17 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + [[package]] name = "sha2" version = "0.10.8" @@ -3233,7 +4134,7 @@ checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.7", ] [[package]] @@ -3256,16 +4157,29 @@ dependencies = [ ] [[package]] -name = "simd-adler32" -version = "0.3.7" +name = "signal-hook-registry" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] [[package]] -name = "simdutf8" -version = "0.1.4" +name = "simd-adler32" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "siphasher" @@ -3290,9 +4204,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -3300,33 +4214,25 @@ dependencies = [ [[package]] name = "softbuffer" -version = "0.4.1" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071916a85d1db274b4ed57af3a14afb66bd836ae7f82ebb6f1fd3455107830d9" +checksum = "d623bff5d06f60d738990980d782c8c866997d9194cfe79ecad00aa2f76826dd" dependencies = [ - "as-raw-xcb-connection", "bytemuck", - "cfg_aliases 0.2.0", - "cocoa 0.25.0", - "core-graphics 0.23.1", - "drm", - "fastrand", - "foreign-types 0.5.0", + "cfg_aliases", + "core-graphics", + "foreign-types", "js-sys", "log", - "memmap2", - "objc", - "raw-window-handle 0.6.0", - "redox_syscall", - "rustix", - "tiny-xlib", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle 0.6.2", + "redox_syscall 0.5.3", "wasm-bindgen", - "wayland-backend", - "wayland-client", - "wayland-sys", "web-sys", "windows-sys 0.52.0", - "x11rb", ] [[package]] @@ -3355,6 +4261,22 @@ dependencies = [ "system-deps", ] +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -3370,6 +4292,12 @@ dependencies = [ "loom", ] +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + [[package]] name = "string_cache" version = "0.8.7" @@ -3397,16 +4325,74 @@ dependencies = [ ] [[package]] -name = "strsim" -version = "0.10.0" +name = "stronghold-derive" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2835db23c4724c05a2f85b81c4681f4aa8ea158edc8a7f4ad791c916fb766c2e" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "stronghold-runtime" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18db7cc51450cefdab5f4990e128dd02c98da6d2992b93ffef8992ac0d2f3ddf" +dependencies = [ + "dirs 4.0.0", + "iota-crypto", + "libc", + "libsodium-sys-stable", + "log", + "nix 0.24.3", + "rand 0.8.5", + "serde", + "thiserror", + "windows 0.36.1", + "zeroize", +] + +[[package]] +name = "stronghold-utils" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8300214898af5e153e7f66e49dbd1c6a21585f2d592d9f24f58b969792475ed6" +dependencies = [ + "rand 0.8.5", + "stronghold-derive", +] + +[[package]] +name = "stronghold_engine" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "2fd7371c42e557dd71a7f860bb2ec6b6fdb32f97a97987ccc2435fdd1f3a8615" +dependencies = [ + "anyhow", + "dirs-next", + "hex", + "iota-crypto", + "once_cell", + "paste", + "serde", + "stronghold-runtime", + "thiserror", + "zeroize", +] [[package]] name = "strsim" -version = "0.11.0" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "subtle" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "swift-rs" @@ -3432,9 +4418,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.53" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -3442,22 +4428,19 @@ dependencies = [ ] [[package]] -name = "syn_derive" -version = "0.1.8" +name = "sync_wrapper" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.53", -] +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" [[package]] -name = "sync_wrapper" -version = "0.1.2" +name = "sys-locale" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "e801cf239ecd6ccd71f03d270d67dd53d13e90aab208bf4b8fe4ad957ea949b0" +dependencies = [ + "libc", +] [[package]] name = "system-configuration" @@ -3495,21 +4478,21 @@ dependencies = [ [[package]] name = "tao" -version = "0.26.1" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccba570365293ca309d60f30fdac2c5271b732dc762e6154e59c85d2c762a0a1" +checksum = "ea538df05fbc2dcbbd740ba0cfe8607688535f4798d213cbbfa13ce494f3451f" dependencies = [ - "bitflags 1.3.2", - "cocoa 0.25.0", + "bitflags 2.6.0", + "cocoa", "core-foundation", - "core-graphics 0.23.1", + "core-graphics", "crossbeam-channel", "dispatch", "dlopen2", + "dpi", "gdkwayland-sys", "gdkx11-sys", "gtk", - "image", "instant", "jni", "lazy_static", @@ -3521,14 +4504,13 @@ dependencies = [ "objc", "once_cell", "parking_lot", - "png", - "raw-window-handle 0.6.0", + "raw-window-handle 0.6.2", "scopeguard", "tao-macros", "unicode-segmentation", "url", - "windows 0.52.0", - "windows-implement", + "windows 0.57.0", + "windows-core 0.57.0", "windows-version", "x11-dl", ] @@ -3545,33 +4527,39 @@ dependencies = [ ] [[package]] -name = "tap" -version = "1.0.1" +name = "tar" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" +dependencies = [ + "filetime", + "libc", + "xattr", +] [[package]] name = "target-lexicon" -version = "0.12.14" +version = "0.12.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2" [[package]] name = "tauri" -version = "2.0.0-beta.13" +version = "2.0.0-beta.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b119a486a9075ae20bfb8ed9a1883aff862c61a9c1cb1ef1336620536f032cc" +checksum = "4339c67eb7700fe4a80ad6507e3b9af0b4159959f3d74aae48feed298baf4cbf" dependencies = [ "anyhow", "bytes", - "cocoa 0.25.0", - "dirs-next", + "cocoa", + "dirs 5.0.1", + "dunce", "embed_plist", "futures-util", - "getrandom 0.2.12", + "getrandom 0.2.15", "glob", "gtk", - "heck 0.4.1", + "heck 0.5.0", "http", "jni", "libc", @@ -3580,7 +4568,7 @@ dependencies = [ "muda", "objc", "percent-encoding", - "raw-window-handle 0.6.0", + "raw-window-handle 0.6.2", "reqwest", "serde", "serde_json", @@ -3601,20 +4589,20 @@ dependencies = [ "webkit2gtk", "webview2-com", "window-vibrancy", - "windows 0.52.0", + "windows 0.57.0", ] [[package]] name = "tauri-build" -version = "2.0.0-beta.10" +version = "2.0.0-beta.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e851a54f222a49babb6b8b94869307e0bf95be086ed92983c42a56d5ed92132" +checksum = "498f587026501e4bbc5d6273b63f8956b03c37b3d3b2027f9c756fcd468e9c62" dependencies = [ "anyhow", "cargo_toml", - "dirs-next", + "dirs 5.0.1", "glob", - "heck 0.4.1", + "heck 0.5.0", "json-patch", "schemars", "semver", @@ -3628,11 +4616,11 @@ dependencies = [ [[package]] name = "tauri-codegen" -version = "2.0.0-beta.10" +version = "2.0.0-beta.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff9b1089989eecc839680cb6b52f6e7ee4733d09fa31861fc4a855996006fe5" +checksum = "43bbc731067e319ef60601bf5716d1e706ee9ae28e38c0587f7165c7d6824cdf" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "brotli", "ico", "json-patch", @@ -3644,7 +4632,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "syn 2.0.53", + "syn 2.0.72", "tauri-utils", "thiserror", "time", @@ -3655,23 +4643,23 @@ dependencies = [ [[package]] name = "tauri-macros" -version = "2.0.0-beta.10" +version = "2.0.0-beta.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4b56c7b752b2b70b74299ff5421795e0e287b6748dd7ec8d44ae8e1637216a7" +checksum = "36b4a44346577ccde75a24c62405a4c3b4f7a3a76614ee6cf1ed14a0b756795c" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.72", "tauri-codegen", "tauri-utils", ] [[package]] name = "tauri-plugin" -version = "2.0.0-beta.10" +version = "2.0.0-beta.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233d4ed7ba51ff398831204ed6c8971b9565c91077e3fdef4711fe7b7715b23a" +checksum = "1abe0b85472516d1033ba251ac81b9f18f02725aadcaad697c8b727e6505a6ad" dependencies = [ "anyhow", "glob", @@ -3685,162 +4673,172 @@ dependencies = [ ] [[package]] -name = "tauri-plugin-autostart" -version = "2.0.0-beta.3" +name = "tauri-plugin-fs" +version = "2.0.0-beta.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b63713a19ca3ed653face06f5a36145aa06c775bdaedfe52e9e5fb8394f9df2e" +checksum = "461853268fe115ca19ee21e5986d505944f0b826048fe1bd726d74753fdf1df6" dependencies = [ - "auto-launch", - "log", + "anyhow", + "glob", + "schemars", "serde", "serde_json", + "serde_repr", "tauri", "tauri-plugin", "thiserror", + "url", + "uuid", ] [[package]] -name = "tauri-plugin-cli" -version = "2.0.0-beta.3" +name = "tauri-plugin-http" +version = "2.0.0-beta.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b079f01e923f7d3bf175e8d31b18861e6580f4b57ce0fdc16fbf69f9acd158c" +checksum = "1b804bdf8fcb469951380221001c4037528df9b75e15b179f78710c7db906017" dependencies = [ - "clap", - "log", + "data-url", + "http", + "regex", + "reqwest", + "schemars", "serde", "serde_json", "tauri", "tauri-plugin", + "tauri-plugin-fs", "thiserror", + "tokio", + "url", + "urlpattern", ] [[package]] -name = "tauri-plugin-clipboard-manager" -version = "2.0.0-beta.2" +name = "tauri-plugin-os" +version = "2.0.0-beta.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8cf4b7fde295126b30b8279aa2addedda7689027a6a7fc4cdf9bea43a86ad84" +checksum = "79a0466f11f45fd3f640a17b5ba5e34c62912c9b391141c818155125ae9f0917" dependencies = [ - "arboard", + "gethostname", "log", + "os_info", "serde", "serde_json", + "serialize-to-javascript", + "sys-locale", "tauri", "tauri-plugin", "thiserror", ] [[package]] -name = "tauri-plugin-fs" -version = "2.0.0-beta.3" +name = "tauri-plugin-shell" +version = "2.0.0-beta.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31961707e3be23c95f5fe39cb7688217e3c571a9a88aa9a03149b56bffd8036c" +checksum = "8a9fa8c4e3d9ec343f6c3eb081672045566128a6c48ff6f6eeea85251ff38d3f" dependencies = [ - "anyhow", - "glob", + "encoding_rs", + "log", + "open", + "os_pipe", + "regex", "schemars", "serde", "serde_json", - "serde_repr", + "shared_child", "tauri", "tauri-plugin", "thiserror", - "url", - "uuid", + "tokio", ] [[package]] -name = "tauri-plugin-http" -version = "2.0.0-beta.3" +name = "tauri-plugin-single-instance" +version = "2.0.0-beta.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a41e41d72f967b1c17417b9060bebf513f65895f94ba68c453218287d44346" +checksum = "b21866e185e2f9c5d40afb851441e3292a4f94f4a26af6ae0dff6e7e5ba03f42" dependencies = [ - "data-url", - "http", - "regex", - "reqwest", - "schemars", + "log", "serde", "serde_json", "tauri", - "tauri-plugin", - "tauri-plugin-fs", "thiserror", - "url", - "urlpattern", + "windows-sys 0.52.0", + "zbus", ] [[package]] -name = "tauri-plugin-log" -version = "2.0.0-beta.3" +name = "tauri-plugin-stronghold" +version = "2.0.0-beta.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6813eccea6d148421f59a3f9ff45e1c71bff2566759ce82666cf0999572b9457" +checksum = "168beb4832b9ee0bb7375c393afeed2418b93eaa7a2eca9d0df6dc7a0f80d15c" dependencies = [ - "android_logger", - "byte-unit", - "cocoa 0.24.1", - "fern", + "hex", + "iota-crypto", + "iota_stronghold", "log", - "objc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "rust-argon2 2.1.0", "serde", "serde_json", - "serde_repr", - "swift-rs", "tauri", "tauri-plugin", - "time", + "thiserror", + "zeroize", ] [[package]] -name = "tauri-plugin-shell" -version = "2.0.0-beta.3" +name = "tauri-plugin-websocket" +version = "2.0.0-beta.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5624537650f627707f3bd9c6562efe2116c7fb043fcfc2e3d10f802d7870a1cd" +checksum = "5e9b9e3f320c0b42b9fef4dd96a996567e9d06523aaf6e89ae77b02148e4194e" dependencies = [ - "encoding_rs", + "futures-util", + "http", "log", - "open", - "os_pipe", - "regex", - "schemars", + "rand 0.8.5", "serde", "serde_json", - "shared_child", "tauri", "tauri-plugin", "thiserror", + "tokio", + "tokio-tungstenite", ] [[package]] name = "tauri-runtime" -version = "2.0.0-beta.10" +version = "2.0.0-beta.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ddcf3c08632714e854e38105b39260ec239edd05a77ffcf5f4b3a51f97b119" +checksum = "189510033be50f6fde35cfa50b50c7ab4e0ced0c867ae0f643b4907b8385bbe5" dependencies = [ + "dpi", "gtk", "http", "jni", - "raw-window-handle 0.6.0", + "raw-window-handle 0.6.2", "serde", "serde_json", "tauri-utils", "thiserror", "url", - "windows 0.52.0", + "windows 0.57.0", ] [[package]] name = "tauri-runtime-wry" -version = "2.0.0-beta.10" +version = "2.0.0-beta.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2694f090a001c55536bbafb45f813229f06e461b3878a5c8280a98e52abb501" +checksum = "6938bd63b6658e7b08f0fe2151390148ee5a8ccdba100d4dff961d2c8734d9a9" dependencies = [ - "cocoa 0.25.0", + "cocoa", "gtk", "http", "jni", "log", "percent-encoding", - "raw-window-handle 0.6.0", + "raw-window-handle 0.6.2", "softbuffer", "tao", "tauri-runtime", @@ -3848,22 +4846,21 @@ dependencies = [ "url", "webkit2gtk", "webview2-com", - "windows 0.52.0", + "windows 0.57.0", "wry", ] [[package]] name = "tauri-utils" -version = "2.0.0-beta.10" +version = "2.0.0-beta.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef6a9ec42c3429fac6d46f4af147c765963a6fca18062dd73833032d812231af" +checksum = "e20e51856f343c503892749b27d34042e6ca83a0369a12de3c5552d9874d04e8" dependencies = [ "brotli", "cargo_metadata", "ctor", "dunce", "glob", - "heck 0.4.1", "html5ever", "infer", "json-patch", @@ -3877,6 +4874,7 @@ dependencies = [ "schemars", "semver", "serde", + "serde-untagged", "serde_json", "serde_with", "swift-rs", @@ -3897,6 +4895,18 @@ dependencies = [ "toml 0.7.8", ] +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + [[package]] name = "tendril" version = "0.4.3" @@ -3916,22 +4926,22 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.72", ] [[package]] @@ -3944,28 +4954,15 @@ dependencies = [ "once_cell", ] -[[package]] -name = "tiff" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" -dependencies = [ - "flate2", - "jpeg-decoder", - "weezl", -] - [[package]] name = "time" -version = "0.3.34" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", - "itoa 1.0.10", - "libc", + "itoa 1.0.11", "num-conv", - "num_threads", "powerfmt", "serde", "time-core", @@ -3980,31 +4977,28 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ "num-conv", "time-core", ] [[package]] -name = "tiny-xlib" -version = "0.2.2" +name = "tiny-keccak" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4098d49269baa034a8d1eae9bd63e9fa532148d772121dace3bcd6a6c98eb6d" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" dependencies = [ - "as-raw-xcb-connection", - "ctor", - "libloading 0.8.3", - "tracing", + "crunchy", ] [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -4017,32 +5011,69 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.36.0" +version = "1.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "pin-project-lite", "socket2", - "windows-sys 0.48.0", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" +dependencies = [ + "futures-util", + "log", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tungstenite", + "webpki-roots", ] [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] @@ -4104,6 +5135,27 @@ dependencies = [ "winnow", ] +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + [[package]] name = "tower-service" version = "0.3.2" @@ -4129,7 +5181,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.72", ] [[package]] @@ -4173,14 +5225,14 @@ dependencies = [ [[package]] name = "tray-icon" -version = "0.12.0" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "454035ff34b8430638c894e6197748578d6b4d449c6edaf8ea854d94e2dd862b" +checksum = "3ad8319cca93189ea9ab1b290de0595960529750b6b8b501a399ed1ec3775d60" dependencies = [ - "cocoa 0.25.0", - "core-graphics 0.23.1", + "cocoa", + "core-graphics", "crossbeam-channel", - "dirs-next", + "dirs 5.0.1", "libappindicator", "muda", "objc", @@ -4191,30 +5243,24 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "treediff" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d127780145176e2b5d16611cc25a900150e86e9fd79d3bde6ff3a37359c9cb5" -dependencies = [ - "serde_json", -] - [[package]] name = "trem-tauri" -version = "0.0.0" +version = "0.1.0" dependencies = [ + "rust-argon2 2.1.0", "serde", "serde_json", "tauri", "tauri-build", - "tauri-plugin-autostart", - "tauri-plugin-cli", - "tauri-plugin-clipboard-manager", "tauri-plugin-fs", "tauri-plugin-http", - "tauri-plugin-log", + "tauri-plugin-os", "tauri-plugin-shell", + "tauri-plugin-single-instance", + "tauri-plugin-stronghold", + "tauri-plugin-websocket", + "whoami", + "windows 0.56.0", ] [[package]] @@ -4223,12 +5269,49 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tungstenite" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.8.5", + "rustls", + "rustls-pki-types", + "sha1", + "thiserror", + "utf-8", +] + +[[package]] +name = "typeid" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "059d83cc991e7a42fc37bd50941885db0888e34209f8cfd9aab07ddec03bc9cf" + [[package]] name = "typenum" version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset 0.9.1", + "tempfile", + "winapi", +] + [[package]] name = "unic-char-property" version = "0.9.0" @@ -4297,14 +5380,42 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "ureq" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72139d247e5f97a3eff96229a7ae85ead5328a39efe76f8bf5a06313d505b6ea" +dependencies = [ + "base64 0.22.1", + "log", + "once_cell", + "url", +] + [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", - "idna", + "idna 0.5.0", "percent-encoding", "serde", ] @@ -4328,25 +5439,13 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -[[package]] -name = "utf8-width" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" - -[[package]] -name = "utf8parse" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" - [[package]] name = "uuid" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" dependencies = [ - "getrandom 0.2.12", + "getrandom 0.2.15", ] [[package]] @@ -4356,10 +5455,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] -name = "value-bag" -version = "1.8.1" +name = "vcpkg" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74797339c3b98616c009c7c3eb53a0ce41e85c8ec66bd3db96ed132d20cfdee8" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version-compare" @@ -4369,9 +5468,9 @@ checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "vswhom" @@ -4424,6 +5523,12 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + [[package]] name = "wasm-bindgen" version = "0.2.92" @@ -4445,7 +5550,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.72", "wasm-bindgen-shared", ] @@ -4475,81 +5580,32 @@ dependencies = [ name = "wasm-bindgen-macro-support" version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.53", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" - -[[package]] -name = "wasm-streams" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" -dependencies = [ - "futures-util", - "js-sys", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "wayland-backend" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" -dependencies = [ - "cc", - "downcast-rs", - "rustix", - "scoped-tls", - "smallvec", - "wayland-sys", -] - -[[package]] -name = "wayland-client" -version = "0.31.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" -dependencies = [ - "bitflags 2.5.0", - "rustix", - "wayland-backend", - "wayland-scanner", -] - -[[package]] -name = "wayland-scanner" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", - "quick-xml", "quote", + "syn 2.0.72", + "wasm-bindgen-backend", + "wasm-bindgen-shared", ] [[package]] -name = "wayland-sys" -version = "0.31.1" +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "wasm-streams" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" +checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" dependencies = [ - "dlib", - "log", - "once_cell", - "pkg-config", + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", ] [[package]] @@ -4606,18 +5662,27 @@ dependencies = [ "system-deps", ] +[[package]] +name = "webpki-roots" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "webview2-com" -version = "0.28.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ae9c7e420783826cf769d2c06ac9ba462f450eca5893bb8c6c6529a4e5dd33" +checksum = "6516cfa64c6b3212686080eeec378e662c2af54bb2a5b2a22749673f5cb2226f" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.52.0", - "windows-core", - "windows-implement", - "windows-interface", + "windows 0.57.0", + "windows-core 0.57.0", + "windows-implement 0.57.0", + "windows-interface 0.57.0", ] [[package]] @@ -4628,25 +5693,30 @@ checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.72", ] [[package]] name = "webview2-com-sys" -version = "0.28.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ad85fceee6c42fa3d61239eba5a11401bf38407a849ed5ea1b407df08cca72" +checksum = "c76d5b77320ff155660be1df3e6588bc85c75f1a9feef938cc4dc4dd60d1d7cf" dependencies = [ "thiserror", - "windows 0.52.0", - "windows-core", + "windows 0.57.0", + "windows-core 0.57.0", ] [[package]] -name = "weezl" -version = "0.1.8" +name = "whoami" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" +checksum = "a44ab49fad634e88f55bf8f9bb3abd2f27d7204172a112c7c9987e01c1c94ea9" +dependencies = [ + "redox_syscall 0.4.1", + "wasite", + "web-sys", +] [[package]] name = "winapi" @@ -4666,11 +5736,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -4685,13 +5755,26 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33082acd404763b315866e14a0d5193f3422c81086657583937a750cdd3ec340" dependencies = [ - "cocoa 0.25.0", + "cocoa", "objc", - "raw-window-handle 0.6.0", + "raw-window-handle 0.6.2", "windows-sys 0.52.0", "windows-version", ] +[[package]] +name = "windows" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e53b97a83176b369b0eb2fd8158d4ae215357d02df9d40c1e1bf1879c5482c80" +dependencies = [ + "windows_aarch64_msvc 0.36.1", + "windows_i686_gnu 0.36.1", + "windows_i686_msvc 0.36.1", + "windows_x86_64_gnu 0.36.1", + "windows_x86_64_msvc 0.36.1", +] + [[package]] name = "windows" version = "0.48.0" @@ -4703,14 +5786,22 @@ dependencies = [ [[package]] name = "windows" -version = "0.52.0" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132" +dependencies = [ + "windows-core 0.56.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" dependencies = [ - "windows-core", - "windows-implement", - "windows-interface", - "windows-targets 0.52.4", + "windows-core 0.57.0", + "windows-targets 0.52.6", ] [[package]] @@ -4719,29 +5810,84 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" +dependencies = [ + "windows-implement 0.56.0", + "windows-interface 0.56.0", + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement 0.57.0", + "windows-interface 0.57.0", + "windows-result", + "windows-targets 0.52.6", ] [[package]] name = "windows-implement" -version = "0.52.0" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "windows-implement" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12168c33176773b86799be25e2a2ba07c7aab9968b37541f1094dbd7a60c8946" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.72", ] [[package]] name = "windows-interface" -version = "0.52.0" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d8dc32e0095a7eeccebd0e3f09e9509365ecb3fc6ac4d6f5f14a3f6392942d1" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.72", +] + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -4768,7 +5914,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.6", ] [[package]] @@ -4803,26 +5949,27 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] name = "windows-version" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75aa004c988e080ad34aff5739c39d0312f4684699d6d71fc8a198d057b8b9b4" +checksum = "6998aa457c9ba8ff2fb9f13e9d2a930dabcea28f1d0ab94d687d8b3654844515" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.6", ] [[package]] @@ -4839,9 +5986,15 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.4" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" [[package]] name = "windows_aarch64_msvc" @@ -4857,9 +6010,15 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.4" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" [[package]] name = "windows_i686_gnu" @@ -4875,9 +6034,21 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.4" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" [[package]] name = "windows_i686_msvc" @@ -4893,9 +6064,15 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.4" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" [[package]] name = "windows_x86_64_gnu" @@ -4911,9 +6088,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -4929,9 +6106,15 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.4" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" [[package]] name = "windows_x86_64_msvc" @@ -4947,9 +6130,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -4960,25 +6143,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winreg" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" -dependencies = [ - "winapi", -] - -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "winreg" version = "0.52.0" @@ -4991,16 +6155,16 @@ dependencies = [ [[package]] name = "wry" -version = "0.37.0" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b717040ba9771fd88eb428c6ea6b555f8e734ff8534f02c13e8f10d97f5935e" +checksum = "68b00c945786b02d7805d09a969fa36d0eee4e0bd4fb3ec2a79d2bf45a1b44cd" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "block", - "cfg_aliases 0.1.1", - "cocoa 0.25.0", - "core-graphics 0.23.1", + "cocoa", + "core-graphics", "crossbeam-channel", + "dpi", "dunce", "gdkx11", "gtk", @@ -5010,7 +6174,6 @@ dependencies = [ "jni", "kuchikiki", "libc", - "log", "ndk", "ndk-context", "ndk-sys", @@ -5018,9 +6181,7 @@ dependencies = [ "objc_id", "once_cell", "percent-encoding", - "raw-window-handle 0.6.0", - "serde", - "serde_json", + "raw-window-handle 0.6.2", "sha2", "soup3", "tao-macros", @@ -5028,21 +6189,12 @@ dependencies = [ "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.52.0", - "windows-implement", + "windows 0.57.0", + "windows-core 0.57.0", "windows-version", "x11-dl", ] -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - [[package]] name = "x11" version = "2.21.0" @@ -5065,22 +6217,206 @@ dependencies = [ ] [[package]] -name = "x11rb" -version = "0.13.0" +name = "x25519-dalek" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a" +checksum = "5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4f" +dependencies = [ + "curve25519-dalek 3.2.0", + "rand_core 0.5.1", + "zeroize", +] + +[[package]] +name = "xattr" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ - "as-raw-xcb-connection", - "gethostname", "libc", - "libloading 0.8.3", - "once_cell", + "linux-raw-sys", "rustix", - "x11rb-protocol", ] [[package]] -name = "x11rb-protocol" -version = "0.13.0" +name = "xdg-home" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca91dcf8f93db085f3a0a29358cd0b9d670915468f4290e8b85d118a34211ab8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "zbus" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b8e3d6ae3342792a6cc2340e4394334c7402f3d793b390d2c5494a4032b3030" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "derivative", + "enumflags2", + "event-listener", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix 0.27.1", + "ordered-stream", + "rand 0.8.5", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tracing", + "uds_windows", + "windows-sys 0.52.0", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7a3e850ff1e7217a3b7a07eba90d37fe9bb9e89a310f718afcde5885ca9b6d7" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "regex", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" +dependencies = [ + "serde", + "static_assertions", + "zvariant", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "serde", + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "zip" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b895748a3ebcb69b9d38dcfdf21760859a4b0d0b0015277640c2ef4c69640e6f" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "flate2", + "indexmap 2.2.6", + "memchr", + "thiserror", + "zopfli", +] + +[[package]] +name = "zopfli" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" +dependencies = [ + "bumpalo", + "crc32fast", + "lockfree-object-pool", + "log", + "once_cell", + "simd-adler32", +] + +[[package]] +name = "zvariant" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e09e8be97d44eeab994d752f341e67b3b0d80512a8b315a0671d47232ef1b65" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a5857e2856435331636a9fbb415b09243df4521a267c5bedcd5289b4d5799e" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34" +checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 082f88d..26dee6c 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,33 +1,26 @@ [package] name = "trem-tauri" -version = "0.0.0" -description = "Taiwan Realtime Earthquake Monitoring" -authors = ["ExpTechTW"] -license = "APGL-3.0" -repository = "" +version = "0.1.0" +description = "Taiwan Real-time Earthquake Monitoring" +authors = ["ExpTech Studio"] edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html -[lib] -name = "app_lib" -crate-type = ["staticlib", "cdylib", "rlib"] [build-dependencies] tauri-build = { version = "2.0.0-beta", features = [] } [dependencies] -tauri = { version = "2.0.0-beta", features = ["devtools", "tray-icon"] } -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" -tauri-plugin-autostart = "2.0.0-beta" -tauri-plugin-cli = "2.0.0-beta" -tauri-plugin-clipboard-manager = "2.0.0-beta" -tauri-plugin-fs = "2.0.0-beta" +tauri = { version = "2.0.0-beta", features = [] } tauri-plugin-http = "2.0.0-beta" -tauri-plugin-log = "2.0.0-beta" tauri-plugin-shell = "2.0.0-beta" - -[features] -# this feature is used for production builds or when `devPath` points to the filesystem -# DO NOT REMOVE!! -custom-protocol = ["tauri/custom-protocol"] +tauri-plugin-single-instance = "2.0.0-beta" +tauri-plugin-websocket = "2.0.0-beta" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +tauri-plugin-fs = "2.0.0-beta.6" +tauri-plugin-os = "2.0.0-beta.4" +whoami = "1.5.1" +windows = { version = "0.56.0", features = ["Win32_UI_Shell"] } +tauri-plugin-stronghold = "2.0.0-beta.7" +rust-argon2 = "2.1.0" diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json new file mode 100644 index 0000000..a870090 --- /dev/null +++ b/src-tauri/capabilities/default.json @@ -0,0 +1,62 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "Capability for the main window", + "windows": [ + "main" + ], + "permissions": [ + "path:default", + "event:default", + "window:default", + "window:allow-start-dragging", + "window:allow-set-title", + "window:allow-is-maximized", + "window:allow-minimize", + "window:allow-maximize", + "window:allow-unmaximize", + "window:allow-close", + "window:allow-theme", + "app:default", + "image:default", + "resources:default", + "menu:default", + "tray:default", + "shell:allow-open", + { + "identifier": "http:default", + "allow": [ + { + "url": "https://lb-*.exptech.dev" + }, + { + "url": "https://api-*.exptech.dev" + } + ] + }, + "fs:allow-read-file", + "fs:allow-mkdir", + "fs:allow-exists", + "fs:allow-write-text-file", + "fs:allow-read-text-file", + { + "identifier": "fs:scope", + "allow": [ + "$APPCONFIG", + "$APPCONFIG/*" + ] + }, + "os:allow-os-type", + "os:allow-hostname", + "os:allow-arch", + "os:allow-family", + "os:allow-version", + "stronghold:allow-initialize", + "stronghold:allow-create-client", + "stronghold:allow-load-client", + "stronghold:allow-save", + "stronghold:allow-save-store-record", + "stronghold:allow-get-store-record", + "stronghold:allow-remove-store-record" + ] +} \ No newline at end of file diff --git a/src-tauri/capabilities/desktop-capability.json b/src-tauri/capabilities/desktop-capability.json deleted file mode 100644 index af8afc0..0000000 --- a/src-tauri/capabilities/desktop-capability.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "identifier": "desktop-capability", - "description": "Capability for the main window", - "context": "local", - "windows": [ - "main" - ], - "permissions": [ - "app:default", - "autostart:allow-disable", - "autostart:allow-enable", - "autostart:allow-is-enabled", - "cli:default", - "event:default", - "menu:default", - "path:default", - "resources:default", - "tray:default", - "window:default", - "window:allow-request-user-attention", - "window:allow-set-title", - "window:allow-show", - "window:allow-hide", - "window:allow-close", - "window:allow-set-always-on-top", - "window:allow-set-focus", - "window:allow-set-skip-taskbar", - "window:allow-set-title", - { - "identifier": "http:default", - "allow": [ - "https://*.exptech.com.tw/*" - ] - }, - "fs:default", - "fs:allow-mkdir", - "fs:read-files", - "fs:write-files", - "log:default", - "shell:allow-open", - { - "identifier": "fs:scope", - "allow": [ - { "path": "$APPCONFIG" }, - { "path": "$APPCONFIG/*" } - ] - } - ], - "platforms": [ - "linux", - "macOS", - "windows" - ] -} \ No newline at end of file diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs deleted file mode 100644 index 9b28c35..0000000 --- a/src-tauri/src/lib.rs +++ /dev/null @@ -1,64 +0,0 @@ -use tauri::{ - menu::{MenuBuilder, MenuItemBuilder}, - tray::{ClickType, TrayIconBuilder}, - Manager, -}; -use tauri_plugin_autostart::MacosLauncher; -use tauri_plugin_log::{Target, TargetKind}; - -#[cfg_attr(mobile, tauri::mobile_entry_point)] -pub fn run() { - tauri::Builder::default() - .setup(|app| { - #[cfg(desktop)] - app.handle().plugin(tauri_plugin_cli::init())?; - - let version = MenuItemBuilder::with_id( - "version", - format!("TREM Tauri v{}", app.package_info().version), - ) - .enabled(false) - .build(app)?; - - let quit = MenuItemBuilder::with_id("quit", "關閉").build(app)?; - let menu = MenuBuilder::new(app).items(&[&version, &quit]).build()?; - let _ = TrayIconBuilder::new() - .menu(&menu) - .icon(app.default_window_icon().unwrap().clone()) - .tooltip("TREM Tauri 臺灣即時地震監測") - .on_menu_event(move |_, event| match event.id().as_ref() { - "quit" => { - std::process::exit(0); - } - _ => (), - }) - .on_tray_icon_event(|tray, event| { - if event.click_type == ClickType::Left { - let app = tray.app_handle(); - if let Some(webview_window) = app.get_webview_window("main") { - let _ = webview_window.show(); - let _ = webview_window.set_focus(); - } - } - }) - .build(app)?; - - Ok(()) - }) - .plugin(tauri_plugin_autostart::init( - MacosLauncher::LaunchAgent, - Some(vec!["--quiet"]), - )) - .plugin(tauri_plugin_clipboard_manager::init()) - .plugin(tauri_plugin_fs::init()) - .plugin(tauri_plugin_http::init()) - .plugin(tauri_plugin_log::Builder::new().targets([ - Target::new(TargetKind::Stdout), - Target::new(TargetKind::LogDir { file_name: Some("webview".into()) }).filter(|metadata| metadata.target().starts_with("webview")), - Target::new(TargetKind::LogDir { file_name: Some("runtime".into()) }).filter(|metadata| !metadata.target().starts_with("webview")), - Target::new(TargetKind::Webview), - ]).build()) - .plugin(tauri_plugin_shell::init()) - .run(tauri::generate_context!()) - .expect("error while running tauri application"); -} diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index c672c6a..d12afb4 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -1,5 +1,49 @@ +// Prevents additional console window on Windows in release, DO NOT REMOVE!! #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] +use ::windows::Win32::UI::Shell::SHQueryUserNotificationState; +use tauri::Emitter; +use tauri::Manager; + +#[derive(Clone, serde::Serialize)] +struct Payload { + args: Vec, + cwd: String, +} + +#[tauri::command] +async fn check_notification_state() -> Result { + let result = unsafe { SHQueryUserNotificationState() }; + match result { + Ok(state) => Ok(state.0), + Err(_) => Err("Not supported on this machine.".into()), + } +} + fn main() { - app_lib::run(); + tauri::Builder::default() + .plugin(tauri_plugin_fs::init()) + .plugin(tauri_plugin_http::init()) + .plugin(tauri_plugin_os::init()) + .plugin(tauri_plugin_shell::init()) + .plugin(tauri_plugin_single_instance::init(|app, argv, cwd| { + println!("{}, {argv:?}, {cwd}", app.package_info().name); + app.emit("single-instance", Payload { args: argv, cwd }) + .unwrap(); + })) + .setup(|app| { + let salt_path = app + .path() + .app_local_data_dir() + .expect("could not resolve app local data path") + .join("salt.txt"); + + app.handle() + .plugin(tauri_plugin_stronghold::Builder::with_argon2(&salt_path).build())?; + + Ok(()) + }) + .invoke_handler(tauri::generate_handler![check_notification_state]) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); } diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 41f3c09..c0cc4e0 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,29 +1,34 @@ { - "productName": "TREM Tauri", - "version": "0.0.0", + "productName": "trem-tauri", + "version": "0.1.0", + "identifier": "tw.com.exptech.trem", + "build": { + "beforeDevCommand": "npm run dev", + "beforeBuildCommand": "npm run generate", + "devUrl": "http://localhost:3000", + "frontendDist": "../dist" + }, "app": { - "security": { - "csp": null - }, "windows": [ { - "label": "main", - "fullscreen": false, - "height": 720, + "title": "TREM Tauri", + "width": 1000, + "height": 600, "resizable": true, - "title": "TREM Tauri | 臺灣即時地震監測", - "width": 1200 + "decorations": false, + "transparent": true, + "windowEffects": { + "effects": ["mica"] + } } - ] - }, - "build": { - "beforeBuildCommand": "npm run build", - "beforeDevCommand": "npm run dev", - "devUrl": "http://localhost:1420", - "frontendDist": "../dist" + ], + "security": { + "csp": null + } }, "bundle": { "active": true, + "targets": "all", "icon": [ "icons/32x32.png", "icons/128x128.png", @@ -32,32 +37,16 @@ "icons/icon.ico" ], "licenseFile": "./assets/terms.rtf", - "targets": "all", "windows": { - "wix":{ - "language": "zh-TW" - }, "nsis": { "installMode": "currentUser", "installerIcon": "icons/icon.ico", - "languages": [ - "English", - "TradChinese", - "Japanese" - ], + "languages": ["English", "TradChinese", "Japanese"], "sidebarImage": "./assets/sidebar.bmp" + }, + "wix":{ + "language": "zh-TW" } } - }, - "identifier": "tauri.trem.tw.com.exptech", - "plugins": { - "cli": { - "args": [ - { - "name": "quiet", - "short": "q" - } - ] - } } -} \ No newline at end of file +} diff --git a/src/App.vue b/src/App.vue deleted file mode 100644 index d82bc3e..0000000 --- a/src/App.vue +++ /dev/null @@ -1,564 +0,0 @@ - - - - - diff --git a/public/favicon.ico b/src/assets/app.ico similarity index 100% rename from public/favicon.ico rename to src/assets/app.ico diff --git a/public/audio/trem_default/cwa.wav b/src/assets/audio/cwa.wav similarity index 100% rename from public/audio/trem_default/cwa.wav rename to src/assets/audio/cwa.wav diff --git a/src/assets/audio/eew.wav b/src/assets/audio/eew.wav new file mode 100644 index 0000000..9ed22e4 Binary files /dev/null and b/src/assets/audio/eew.wav differ diff --git a/src/assets/audio/intensity1.wav b/src/assets/audio/intensity1.wav new file mode 100644 index 0000000..0924e2c Binary files /dev/null and b/src/assets/audio/intensity1.wav differ diff --git a/src/assets/audio/intensity2.wav b/src/assets/audio/intensity2.wav new file mode 100644 index 0000000..2da804d Binary files /dev/null and b/src/assets/audio/intensity2.wav differ diff --git a/src/assets/audio/intensity3.wav b/src/assets/audio/intensity3.wav new file mode 100644 index 0000000..857994d Binary files /dev/null and b/src/assets/audio/intensity3.wav differ diff --git a/src/assets/audio/intensity4.wav b/src/assets/audio/intensity4.wav new file mode 100644 index 0000000..7d2212a Binary files /dev/null and b/src/assets/audio/intensity4.wav differ diff --git a/src/assets/audio/trem.wav b/src/assets/audio/trem.wav new file mode 100644 index 0000000..954013e Binary files /dev/null and b/src/assets/audio/trem.wav differ diff --git a/src/assets/audio/update.wav b/src/assets/audio/update.wav new file mode 100644 index 0000000..21bec07 Binary files /dev/null and b/src/assets/audio/update.wav differ diff --git a/src/assets/json/county_code.json b/src/assets/json/county_code.json new file mode 100644 index 0000000..20ceeb9 --- /dev/null +++ b/src/assets/json/county_code.json @@ -0,0 +1 @@ +{"10002":"宜蘭縣","10004":"新竹縣","10005":"苗栗縣","10007":"彰化縣","10008":"南投縣","10009":"雲林縣","10010":"嘉義縣","10013":"屏東縣","10014":"臺東縣","10015":"花蓮縣","10016":"澎湖縣","10017":"基隆市","10018":"新竹市","10020":"嘉義市","63000":"臺北市","64000":"高雄市","65000":"新北市","66000":"臺中市","67000":"臺南市","68000":"桃園市","連江縣":"09007","09007":"連江縣","宜蘭縣":"10002","彰化縣":"10007","南投縣":"10008","雲林縣":"10009","基隆市":"10017","臺北市":"63000","新北市":"65000","臺中市":"66000","臺南市":"67000","桃園市":"68000","苗栗縣":"10005","嘉義市":"10020","嘉義縣":"10010","金門縣":"09020","09020":"金門縣","高雄市":"64000","臺東縣":"10014","花蓮縣":"10015","澎湖縣":"10016","新竹市":"10018","新竹縣":"10004","屏東縣":"10013"} \ No newline at end of file diff --git a/src/assets/json/county_coordinates.json b/src/assets/json/county_coordinates.json new file mode 100644 index 0000000..71945b0 --- /dev/null +++ b/src/assets/json/county_coordinates.json @@ -0,0 +1 @@ +{"連江縣":[119.914866265902,26.15970896534525],"宜蘭縣":[121.661978553808,24.559468651085613],"彰化縣":[120.47825143662402,23.97056535449821],"南投縣":[120.96223955470164,23.822943683405732],"雲林縣":[120.42728010756315,23.71382153643351],"基隆市":[121.72027470746073,25.12639592707742],"臺北市":[121.55679408709062,25.084562663830425],"新北市":[121.51368000949736,24.88453554553223],"臺中市":[120.74195891868992,24.18861164112716],"臺南市":[120.32381615623879,23.115438452916294],"桃園市":[121.23800247890674,24.953469718589044],"苗栗縣":[120.90762487612525,24.467803649342535],"嘉義市":[120.44554203750086,23.484341489936153],"嘉義縣":[120.2441576221997,23.45497667555334],"金門縣":[118.36551334554787,24.452918568282954],"高雄市":[120.6086917647141,22.96756638113356],"臺東縣":[121.02210703314664,22.926447169134704],"花蓮縣":[121.38985672982776,23.736636808275076],"澎湖縣":[119.56994157709325,23.573799862010997],"新竹市":[120.96170449731314,24.8290719742451],"新竹縣":[121.15439752353421,24.705305395864332],"屏東縣":[120.60323283365837,22.56201699875994]} \ No newline at end of file diff --git a/src/assets/json/code.json b/src/assets/json/town_code.json similarity index 100% rename from src/assets/json/code.json rename to src/assets/json/town_code.json diff --git a/public/map/box.json b/src/assets/map/box.json similarity index 100% rename from public/map/box.json rename to src/assets/map/box.json diff --git a/public/map/cn.json b/src/assets/map/cn.json similarity index 100% rename from public/map/cn.json rename to src/assets/map/cn.json diff --git a/public/map/jp.json b/src/assets/map/jp.json similarity index 100% rename from public/map/jp.json rename to src/assets/map/jp.json diff --git a/public/map/kp.json b/src/assets/map/kp.json similarity index 100% rename from public/map/kp.json rename to src/assets/map/kp.json diff --git a/public/map/kr.json b/src/assets/map/kr.json similarity index 100% rename from public/map/kr.json rename to src/assets/map/kr.json diff --git a/src/assets/map/tw_county.json b/src/assets/map/tw_county.json new file mode 100644 index 0000000..a7e6288 --- /dev/null +++ b/src/assets/map/tw_county.json @@ -0,0 +1 @@ +{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[119.9848,25.9644],[119.9887,25.9688],[119.9862,25.9706],[119.982,25.969],[119.9799,25.9664],[119.9746,25.9685],[119.9719,25.967],[119.9697,25.9606],[119.9659,25.9583],[119.9627,25.9524],[119.962,25.9494],[119.9649,25.9492],[119.9712,25.9555],[119.975,25.9539],[119.9783,25.959],[119.9849,25.9625],[119.9848,25.9644]]],[[[119.9667,25.9744],[119.9662,25.9749],[119.9662,25.975],[119.9661,25.975],[119.9654,25.9744],[119.9652,25.9743],[119.9667,25.9744]]],[[[119.9664,25.9759],[119.966,25.9758],[119.9663,25.9752],[119.9663,25.9753],[119.9664,25.9754],[119.9665,25.9756],[119.9664,25.9754],[119.9665,25.9756],[119.9664,25.9759]]],[[[119.9759,25.9759],[119.9756,25.9758],[119.9756,25.9757],[119.9756,25.9758],[119.9756,25.9757],[119.9753,25.9757],[119.9753,25.9756],[119.9746,25.9748],[119.9745,25.9748],[119.9746,25.9748],[119.9745,25.9748],[119.9744,25.9729],[119.9744,25.9728],[119.9744,25.9729],[119.9744,25.9728],[119.9765,25.9729],[119.9765,25.973],[119.9765,25.9729],[119.9765,25.973],[119.9766,25.9733],[119.9766,25.9734],[119.9766,25.9733],[119.9766,25.9734],[119.9766,25.9735],[119.9767,25.9735],[119.9766,25.9735],[119.9767,25.9735],[119.9774,25.9749],[119.9773,25.9749],[119.9774,25.9749],[119.9773,25.9749],[119.9765,25.9752],[119.9764,25.9753],[119.9759,25.9754],[119.976,25.9754],[119.9759,25.9754],[119.976,25.9754],[119.976,25.9756],[119.9759,25.9756],[119.976,25.9756],[119.9759,25.9756],[119.976,25.9759],[119.9759,25.9759]]],[[[119.976,25.9761],[119.9759,25.9759],[119.976,25.9759],[119.976,25.976],[119.976,25.9761],[119.976,25.976],[119.976,25.9761]]],[[[119.9761,25.9766],[119.976,25.9762],[119.976,25.9761],[119.976,25.9762],[119.9768,25.9765],[119.9767,25.9765],[119.9768,25.9765],[119.9767,25.9765],[119.9767,25.9766],[119.9767,25.9765],[119.9767,25.9766],[119.9763,25.9765],[119.9763,25.9766],[119.9763,25.9765],[119.9762,25.9766],[119.9763,25.9766],[119.9762,25.9766],[119.9761,25.9766],[119.9762,25.9766],[119.9761,25.9766]]],[[[119.9446,25.9821],[119.9374,25.9818],[119.9334,25.98],[119.9317,25.9816],[119.9269,25.9816],[119.9241,25.9794],[119.9289,25.9725],[119.9332,25.9701],[119.935,25.9677],[119.9372,25.972],[119.9397,25.974],[119.9419,25.9729],[119.9477,25.9781],[119.9484,25.9811],[119.9446,25.9821]]],[[[119.9619,26.0862],[119.9618,26.0861],[119.9619,26.0861],[119.9619,26.0862],[119.9619,26.0861],[119.9619,26.0862]]],[[[119.9628,26.0862],[119.9627,26.0862],[119.9621,26.0861],[119.9619,26.0861],[119.9618,26.0861],[119.9616,26.0849],[119.9628,26.0852],[119.9628,26.0862],[119.9627,26.0862],[119.9628,26.0862]]],[[[119.9653,26.0918],[119.9652,26.0918],[119.9653,26.0917],[119.9653,26.0918]]],[[[119.9649,26.1449],[119.9646,26.1445],[119.9646,26.1444],[119.9646,26.1445],[119.9646,26.1444],[119.9647,26.1443],[119.9647,26.1442],[119.9647,26.1443],[119.9648,26.1443],[119.9648,26.1444],[119.9648,26.1443],[119.9648,26.1444],[119.9651,26.1444],[119.9652,26.1445],[119.9651,26.1444],[119.9652,26.1445],[119.965,26.1448],[119.965,26.1449],[119.9649,26.1449],[119.965,26.1449],[119.965,26.1448],[119.9649,26.1449]]],[[[119.9705,26.1617],[119.9735,26.1654],[119.9707,26.1672],[119.9705,26.1617]]],[[[119.922,26.1722],[119.9194,26.1748],[119.9165,26.1744],[119.9156,26.1724],[119.917,26.1678],[119.9189,26.1671],[119.9174,26.1625],[119.9136,26.161],[119.9177,26.1579],[119.9151,26.1532],[119.9105,26.1494],[119.9089,26.1453],[119.913,26.1453],[119.9135,26.1427],[119.9174,26.1415],[119.9235,26.142],[119.9233,26.1382],[119.9292,26.1406],[119.9318,26.1438],[119.937,26.146],[119.938,26.1429],[119.942,26.1433],[119.9439,26.1457],[119.9481,26.1484],[119.9484,26.1521],[119.9519,26.1535],[119.955,26.1506],[119.9583,26.1548],[119.9595,26.1576],[119.9622,26.1584],[119.9628,26.1632],[119.9652,26.1665],[119.9601,26.1684],[119.953,26.1676],[119.9511,26.1682],[119.9442,26.165],[119.9395,26.1658],[119.9401,26.1621],[119.9419,26.1589],[119.9358,26.1542],[119.9358,26.1585],[119.9311,26.1581],[119.9289,26.1604],[119.9242,26.1616],[119.9238,26.1646],[119.9277,26.1696],[119.928,26.1717],[119.922,26.1722]]],[[[119.9731,26.1946],[119.9736,26.1976],[119.9717,26.1998],[119.9729,26.2015],[119.9726,26.2118],[119.9756,26.2151],[119.9819,26.2169],[119.9838,26.2187],[119.9873,26.2187],[119.9896,26.2172],[119.9929,26.2184],[119.9972,26.2184],[119.9979,26.2223],[120.0065,26.2226],[120.0076,26.2193],[120.0145,26.2235],[120.0154,26.2268],[120.0141,26.2285],[120.0106,26.2285],[120.0066,26.2266],[120.0057,26.2233],[120.0034,26.2238],[120.0065,26.2278],[120.0054,26.23],[120.0064,26.2341],[120.0012,26.2341],[120.0001,26.238],[119.9958,26.2382],[119.9931,26.2364],[119.9933,26.234],[119.9885,26.2309],[119.9843,26.2257],[119.9825,26.2247],[119.9786,26.226],[119.9712,26.2208],[119.9685,26.2207],[119.9685,26.2157],[119.9711,26.2127],[119.9656,26.2048],[119.9666,26.2036],[119.9659,26.1996],[119.9664,26.194],[119.9707,26.1952],[119.9731,26.1946]]],[[[120.0032,26.2457],[120.005,26.2471],[120.0062,26.2509],[120.0039,26.2513],[120.0008,26.2485],[119.9982,26.2495],[119.9953,26.2433],[119.9984,26.2429],[120.0032,26.2457]]],[[[119.99,26.282],[119.9868,26.2801],[119.984,26.2771],[119.9829,26.2734],[119.98,26.2724],[119.9789,26.2694],[119.9827,26.2663],[119.9859,26.2665],[119.9904,26.2697],[119.9888,26.273],[119.9922,26.2749],[119.9888,26.2796],[119.9903,26.2821],[119.99,26.282]]],[[[120.2272,26.3438],[120.2272,26.3443],[120.2271,26.344],[120.2272,26.3438]]],[[[120.2272,26.3443],[120.2252,26.345],[120.2228,26.3419],[120.22,26.3412],[120.218,26.3373],[120.2202,26.3369],[120.2241,26.3398],[120.2271,26.344],[120.2272,26.3443]]],[[[120.4796,26.3829],[120.4743,26.3835],[120.4747,26.3797],[120.4703,26.3781],[120.4706,26.3745],[120.4772,26.3788],[120.4777,26.3738],[120.4773,26.3689],[120.481,26.3708],[120.4853,26.369],[120.4854,26.3655],[120.4832,26.3606],[120.4911,26.3581],[120.4946,26.3581],[120.4961,26.3611],[120.4985,26.3618],[120.5009,26.3651],[120.5008,26.3675],[120.503,26.3688],[120.5049,26.3655],[120.5091,26.3647],[120.5108,26.3678],[120.5058,26.373],[120.5032,26.3711],[120.5013,26.3732],[120.4985,26.3729],[120.5005,26.3776],[120.4955,26.3786],[120.4922,26.3746],[120.492,26.3706],[120.4875,26.3715],[120.4852,26.3698],[120.4816,26.3712],[120.4834,26.3772],[120.4823,26.3807],[120.4796,26.3829]]]]},"properties":{"COUNTYID":"Z","COUNTYCODE":"09007","COUNTYNAME":"連江縣","COUNTYENG":"Lienchiang County"},"id":"09007"},{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[121.9597,24.8449],[121.9598,24.847],[121.9562,24.8507],[121.9495,24.8518],[121.9475,24.8513],[121.9433,24.8446],[121.9417,24.8443],[121.9361,24.847],[121.9342,24.8456],[121.9383,24.8424],[121.9402,24.8386],[121.9457,24.8355],[121.9571,24.8368],[121.9615,24.8353],[121.9651,24.839],[121.9649,24.8405],[121.9603,24.843],[121.9597,24.8449]]],[[[121.966,24.9831],[121.9628,24.9878],[121.9596,24.9883],[121.9502,24.9883],[121.9481,24.9867],[121.9446,24.9882],[121.9429,24.9863],[121.9385,24.9848],[121.9375,24.983],[121.9344,24.9831],[121.9336,24.9809],[121.9286,24.9797],[121.9162,24.9795],[121.912,24.978],[121.91,24.9748],[121.9068,24.9756],[121.9054,24.9734],[121.9026,24.9742],[121.8971,24.967],[121.8896,24.9648],[121.8824,24.9642],[121.8763,24.9616],[121.8715,24.9607],[121.8612,24.9637],[121.8581,24.9632],[121.8517,24.9599],[121.8469,24.9603],[121.8414,24.9543],[121.8418,24.9514],[121.839,24.9446],[121.8424,24.9394],[121.8466,24.9379],[121.8491,24.9303],[121.8539,24.9278],[121.8538,24.9253],[121.8455,24.9193],[121.8434,24.9154],[121.8395,24.9127],[121.8379,24.9099],[121.8319,24.9049],[121.828,24.9054],[121.8224,24.9046],[121.8183,24.9027],[121.8117,24.9065],[121.8105,24.9036],[121.8022,24.901],[121.7964,24.9012],[121.792,24.8999],[121.7923,24.8956],[121.7898,24.8933],[121.7859,24.8926],[121.7858,24.8908],[121.7817,24.8895],[121.7822,24.8792],[121.7848,24.8764],[121.7832,24.8742],[121.7789,24.8713],[121.7752,24.8668],[121.7755,24.8651],[121.771,24.8649],[121.7692,24.8659],[121.7644,24.8599],[121.7604,24.8568],[121.7536,24.8561],[121.7508,24.8545],[121.748,24.855],[121.7456,24.8528],[121.7418,24.8525],[121.7385,24.8552],[121.7326,24.8558],[121.7273,24.8533],[121.7251,24.8507],[121.7222,24.85],[121.7185,24.8456],[121.7153,24.844],[121.7137,24.8416],[121.709,24.8406],[121.7021,24.8345],[121.6969,24.8346],[121.6964,24.8303],[121.6922,24.8272],[121.6887,24.8261],[121.6898,24.8226],[121.6893,24.8172],[121.6806,24.8175],[121.6772,24.8141],[121.6742,24.8141],[121.669,24.818],[121.663,24.8126],[121.6596,24.811],[121.6534,24.8112],[121.6474,24.814],[121.6461,24.8101],[121.644,24.8093],[121.6388,24.8107],[121.6376,24.8096],[121.6314,24.8092],[121.6282,24.8079],[121.6248,24.8012],[121.6258,24.7953],[121.6206,24.7925],[121.6168,24.7939],[121.6135,24.7932],[121.6096,24.7938],[121.6056,24.7891],[121.6029,24.7894],[121.599,24.7877],[121.5937,24.7873],[121.5932,24.7823],[121.5976,24.7726],[121.5955,24.7691],[121.5963,24.767],[121.591,24.7618],[121.5908,24.7587],[121.589,24.7552],[121.5903,24.7512],[121.5946,24.7502],[121.5947,24.7464],[121.5917,24.7451],[121.5919,24.7433],[121.5951,24.7405],[121.5942,24.7355],[121.595,24.7325],[121.5942,24.7292],[121.5976,24.7278],[121.5907,24.7237],[121.5877,24.7203],[121.5832,24.7206],[121.5791,24.7225],[121.5776,24.7212],[121.5773,24.7149],[121.5746,24.71],[121.572,24.7107],[121.571,24.7132],[121.5675,24.7115],[121.5623,24.7128],[121.5581,24.7109],[121.5565,24.7113],[121.5543,24.7082],[121.5498,24.7057],[121.5437,24.7058],[121.5381,24.7003],[121.5389,24.6949],[121.5366,24.6883],[121.5291,24.6876],[121.5238,24.6833],[121.5148,24.6832],[121.5137,24.6843],[121.5072,24.6823],[121.5049,24.6794],[121.5003,24.6786],[121.493,24.6732],[121.4869,24.6752],[121.4847,24.6738],[121.48,24.6739],[121.4722,24.6731],[121.4692,24.6718],[121.4598,24.6733],[121.455,24.6679],[121.4539,24.6644],[121.4497,24.6623],[121.4477,24.6584],[121.4488,24.6532],[121.4513,24.6517],[121.4488,24.646],[121.4454,24.6438],[121.4456,24.6391],[121.4447,24.6369],[121.4404,24.635],[121.4348,24.6245],[121.4357,24.6213],[121.4335,24.6188],[121.4329,24.6162],[121.4306,24.6145],[121.4276,24.6057],[121.4226,24.6022],[121.4183,24.601],[121.4158,24.6023],[121.4089,24.5994],[121.403,24.5917],[121.4035,24.5897],[121.4093,24.5811],[121.4121,24.5749],[121.4122,24.5731],[121.4071,24.5698],[121.4039,24.569],[121.4012,24.5645],[121.4014,24.5622],[121.3976,24.5597],[121.3947,24.5556],[121.3954,24.553],[121.3983,24.5494],[121.3987,24.547],[121.3967,24.5398],[121.3985,24.5363],[121.3989,24.5324],[121.4016,24.5291],[121.3975,24.5247],[121.3933,24.5246],[121.3907,24.5232],[121.3885,24.5178],[121.3853,24.5171],[121.3853,24.5134],[121.3836,24.5102],[121.3793,24.5095],[121.3733,24.5099],[121.3719,24.4996],[121.3709,24.498],[121.365,24.4959],[121.3617,24.4905],[121.3575,24.4864],[121.3507,24.4843],[121.3463,24.4847],[121.3428,24.4823],[121.3401,24.4749],[121.3356,24.4715],[121.3362,24.4678],[121.3299,24.4643],[121.3233,24.4558],[121.3177,24.4415],[121.3206,24.4411],[121.3283,24.4335],[121.3277,24.4306],[121.3287,24.4274],[121.3274,24.4215],[121.3274,24.4127],[121.325,24.4069],[121.3261,24.4006],[121.3279,24.3983],[121.3311,24.3985],[121.3383,24.3902],[121.3426,24.3928],[121.3553,24.3931],[121.3594,24.3904],[121.3647,24.3892],[121.3688,24.3849],[121.3698,24.3821],[121.3671,24.3787],[121.3693,24.3725],[121.3738,24.368],[121.3774,24.3684],[121.3804,24.367],[121.3879,24.37],[121.3902,24.3753],[121.3932,24.3753],[121.3958,24.378],[121.3983,24.3778],[121.4019,24.3796],[121.4041,24.3778],[121.4085,24.3781],[121.4132,24.3798],[121.4196,24.3792],[121.4233,24.3814],[121.4294,24.3831],[121.4378,24.3829],[121.4429,24.3732],[121.448,24.3748],[121.4487,24.3715],[121.452,24.3647],[121.4543,24.3636],[121.461,24.358],[121.4654,24.3553],[121.4758,24.3513],[121.4783,24.352],[121.4814,24.3489],[121.4854,24.3485],[121.4922,24.3421],[121.4981,24.3392],[121.4998,24.3395],[121.5037,24.3427],[121.5073,24.3433],[121.5099,24.3411],[121.518,24.341],[121.5204,24.3426],[121.5253,24.3424],[121.5281,24.3389],[121.533,24.3371],[121.5366,24.3371],[121.5405,24.3359],[121.5442,24.3378],[121.5465,24.3373],[121.5507,24.3342],[121.5561,24.3312],[121.5583,24.3249],[121.5601,24.3226],[121.5635,24.3221],[121.5666,24.3191],[121.5696,24.3179],[121.5758,24.3197],[121.5785,24.3181],[121.5819,24.3179],[121.5873,24.3162],[121.5894,24.3138],[121.5936,24.3164],[121.5972,24.3163],[121.6012,24.3147],[121.6051,24.3107],[121.607,24.313],[121.6051,24.3154],[121.6045,24.3184],[121.6012,24.3204],[121.6014,24.3231],[121.5966,24.3281],[121.5957,24.3316],[121.5994,24.3334],[121.6005,24.3311],[121.6039,24.329],[121.6066,24.3303],[121.6075,24.3351],[121.6126,24.3358],[121.6152,24.3333],[121.6186,24.3346],[121.6161,24.3374],[121.6165,24.3406],[121.6186,24.3453],[121.6205,24.3451],[121.6229,24.3394],[121.6275,24.3411],[121.6281,24.3386],[121.6266,24.3363],[121.6289,24.3335],[121.6332,24.3357],[121.6318,24.3445],[121.6358,24.3453],[121.6351,24.3484],[121.63,24.3484],[121.6268,24.3495],[121.6271,24.3536],[121.6212,24.358],[121.6236,24.3619],[121.6204,24.3628],[121.6217,24.3666],[121.6267,24.3694],[121.6309,24.3706],[121.6309,24.3661],[121.6343,24.3666],[121.6348,24.364],[121.6384,24.3622],[121.6401,24.3577],[121.6436,24.3538],[121.6487,24.3495],[121.6507,24.3509],[121.6501,24.3546],[121.648,24.3582],[121.6511,24.3596],[121.6536,24.3563],[121.6533,24.3529],[121.6566,24.3533],[121.6596,24.3511],[121.6634,24.3524],[121.6638,24.3494],[121.6675,24.3462],[121.6701,24.3428],[121.6733,24.3438],[121.6735,24.3398],[121.6768,24.3375],[121.684,24.3408],[121.6867,24.3394],[121.6873,24.3346],[121.6897,24.3336],[121.6936,24.3349],[121.6973,24.3343],[121.7047,24.3298],[121.7133,24.3269],[121.723,24.3255],[121.7279,24.326],[121.735,24.3231],[121.74,24.3236],[121.7447,24.3229],[121.7556,24.3161],[121.7598,24.314],[121.7699,24.3131],[121.7741,24.3153],[121.774,24.3196],[121.7709,24.3326],[121.7716,24.3376],[121.7736,24.3437],[121.778,24.3523],[121.7786,24.356],[121.7823,24.3616],[121.7837,24.3665],[121.787,24.3725],[121.7885,24.3881],[121.789,24.3975],[121.7911,24.4082],[121.7939,24.4163],[121.7987,24.428],[121.8019,24.4343],[121.8078,24.4398],[121.8108,24.4415],[121.8172,24.4502],[121.8218,24.4557],[121.8202,24.4582],[121.8204,24.4614],[121.8247,24.4646],[121.8326,24.4674],[121.8342,24.4696],[121.8439,24.4769],[121.8461,24.4769],[121.8487,24.4791],[121.8554,24.4806],[121.8597,24.4786],[121.8624,24.4812],[121.8592,24.4839],[121.853,24.4836],[121.8507,24.4848],[121.8497,24.4926],[121.851,24.4941],[121.845,24.4973],[121.8402,24.498],[121.8385,24.5009],[121.8383,24.5085],[121.8396,24.5155],[121.8419,24.5203],[121.845,24.5217],[121.8496,24.5221],[121.8563,24.5239],[121.8609,24.5272],[121.8678,24.5276],[121.8726,24.5311],[121.8737,24.5342],[121.8724,24.542],[121.8741,24.5456],[121.8712,24.5524],[121.8707,24.5593],[121.8712,24.5639],[121.8692,24.5713],[121.8698,24.5761],[121.877,24.5781],[121.8776,24.5798],[121.8726,24.5853],[121.8752,24.5858],[121.8792,24.591],[121.8734,24.5966],[121.8836,24.6014],[121.8802,24.6058],[121.8753,24.6056],[121.8729,24.6089],[121.8692,24.6087],[121.8661,24.6099],[121.8591,24.6163],[121.8554,24.6219],[121.8512,24.6299],[121.845,24.6449],[121.8405,24.66],[121.8382,24.672],[121.8384,24.6819],[121.8373,24.6898],[121.8363,24.7084],[121.8366,24.7107],[121.8395,24.7159],[121.8383,24.7181],[121.8327,24.72],[121.8279,24.7286],[121.8248,24.7355],[121.8209,24.7479],[121.8184,24.7649],[121.818,24.7738],[121.8182,24.7863],[121.819,24.7976],[121.8202,24.8071],[121.8224,24.8201],[121.8243,24.829],[121.8292,24.8468],[121.8306,24.8505],[121.8427,24.8762],[121.8481,24.8843],[121.8508,24.8864],[121.8514,24.8901],[121.8605,24.8945],[121.8639,24.8984],[121.8659,24.902],[121.8718,24.9049],[121.8743,24.9071],[121.8796,24.9134],[121.8821,24.9147],[121.8854,24.9189],[121.8854,24.9232],[121.8869,24.925],[121.8869,24.9292],[121.8879,24.9351],[121.8891,24.937],[121.8949,24.9407],[121.9009,24.9399],[121.9048,24.942],[121.9054,24.9466],[121.9113,24.9507],[121.9163,24.9519],[121.9206,24.9558],[121.92,24.9584],[121.9256,24.9686],[121.9315,24.9718],[121.9381,24.9737],[121.9412,24.9733],[121.9443,24.9768],[121.9486,24.9789],[121.9545,24.98],[121.9583,24.9826],[121.9622,24.9818],[121.966,24.9831]]],[[[123.5558,25.7214],[123.5537,25.7245],[123.5498,25.7259],[123.5453,25.7246],[123.5453,25.7225],[123.5529,25.7203],[123.5558,25.7214]]],[[[123.5448,25.7292],[123.5414,25.7338],[123.5385,25.7315],[123.5415,25.7272],[123.5442,25.7259],[123.545,25.7292],[123.5448,25.7292]]],[[[123.4906,25.7406],[123.4905,25.7407],[123.4905,25.7405],[123.4906,25.7405],[123.4906,25.7406]]],[[[123.4837,25.7406],[123.4893,25.7403],[123.494,25.7423],[123.4938,25.7442],[123.4872,25.7496],[123.4805,25.7501],[123.4776,25.7518],[123.4708,25.7506],[123.4651,25.748],[123.4595,25.7438],[123.4579,25.7408],[123.4583,25.7376],[123.4622,25.7348],[123.4734,25.7385],[123.477,25.7412],[123.4837,25.7406],[123.4837,25.7405],[123.4837,25.7406]]],[[[124.5564,25.9218],[124.5565,25.9216],[124.5565,25.9217],[124.5564,25.9218],[124.5565,25.9218],[124.5564,25.9218]]],[[[124.5596,25.9233],[124.5567,25.9222],[124.5565,25.9219],[124.5565,25.9218],[124.5565,25.9217],[124.5565,25.9216],[124.5596,25.9233]]],[[[123.6875,25.9241],[123.6835,25.9286],[123.6804,25.9288],[123.6764,25.9242],[123.6784,25.9205],[123.6814,25.9193],[123.6873,25.9204],[123.6875,25.9241]]]]},"properties":{"COUNTYID":"G","COUNTYCODE":"10002","COUNTYNAME":"宜蘭縣","COUNTYENG":"Yilan County"},"id":"10002"},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[120.4566,24.2072],[120.4538,24.2041],[120.4507,24.1979],[120.4471,24.1943],[120.4449,24.1901],[120.4392,24.1857],[120.4327,24.1867],[120.4297,24.1845],[120.4247,24.1833],[120.4262,24.1797],[120.4234,24.1761],[120.4183,24.1737],[120.4161,24.1695],[120.416,24.166],[120.4139,24.1572],[120.4104,24.1567],[120.4082,24.1543],[120.4128,24.1522],[120.4102,24.1476],[120.409,24.1427],[120.4071,24.1396],[120.4026,24.1387],[120.4,24.1353],[120.4,24.1317],[120.4012,24.1299],[120.3973,24.1211],[120.3968,24.1175],[120.3825,24.0984],[120.3863,24.097],[120.3842,24.0877],[120.3754,24.083],[120.3708,24.0817],[120.3634,24.0809],[120.3612,24.0763],[120.3592,24.0743],[120.3502,24.0714],[120.3453,24.0668],[120.3421,24.0601],[120.3417,24.0566],[120.3425,24.0532],[120.3414,24.0396],[120.3404,24.0351],[120.3374,24.0298],[120.3361,24.0179],[120.3341,24.0139],[120.3299,24.0115],[120.3224,24.0054],[120.3165,23.9992],[120.3119,23.9898],[120.3087,23.9871],[120.3084,23.9753],[120.3077,23.9731],[120.2987,23.9664],[120.2918,23.9605],[120.2903,23.9582],[120.284,23.9558],[120.2816,23.9525],[120.2803,23.9484],[120.2816,23.9435],[120.2795,23.9349],[120.2755,23.9321],[120.2691,23.9306],[120.2652,23.9237],[120.261,23.9197],[120.2609,23.915],[120.2562,23.9079],[120.2556,23.9034],[120.2577,23.8993],[120.2552,23.8942],[120.2471,23.8884],[120.2395,23.8877],[120.2353,23.8853],[120.2307,23.8806],[120.2261,23.8769],[120.2262,23.8741],[120.2243,23.8703],[120.2204,23.8662],[120.224,23.8615],[120.2324,23.8517],[120.2383,23.8459],[120.2447,23.8406],[120.2492,23.8375],[120.2564,23.8337],[120.3081,23.8203],[120.3181,23.8203],[120.3331,23.8223],[120.3524,23.8223],[120.3604,23.8234],[120.3703,23.8286],[120.3817,23.8286],[120.4103,23.8264],[120.4187,23.8271],[120.4253,23.8303],[120.4331,23.8302],[120.4395,23.8269],[120.4431,23.8229],[120.4506,23.8187],[120.4521,23.8172],[120.4581,23.8161],[120.4753,23.809],[120.4832,23.8066],[120.4984,23.8036],[120.51,23.8002],[120.5213,23.7998],[120.5289,23.7991],[120.535,23.8013],[120.5409,23.801],[120.5459,23.8015],[120.5509,23.8012],[120.5583,23.7994],[120.5603,23.7981],[120.5735,23.7963],[120.5788,23.7951],[120.587,23.7919],[120.5931,23.7911],[120.6159,23.7913],[120.633,23.789],[120.6352,23.7867],[120.6404,23.7861],[120.6425,23.7857],[120.6587,23.7912],[120.6638,23.7921],[120.6753,23.7999],[120.6801,23.8017],[120.6839,23.8014],[120.6834,23.8054],[120.6791,23.8058],[120.678,23.8139],[120.6787,23.8166],[120.6744,23.8201],[120.6698,23.8185],[120.665,23.815],[120.6589,23.8146],[120.6556,23.8128],[120.6509,23.8125],[120.6487,23.8161],[120.6445,23.8176],[120.6401,23.8206],[120.6386,23.824],[120.64,23.8251],[120.6369,23.8329],[120.6335,23.8339],[120.6264,23.84],[120.6224,23.84],[120.6213,23.8417],[120.6163,23.8394],[120.616,23.8412],[120.6235,23.8479],[120.6237,23.8503],[120.6259,23.852],[120.6274,23.8569],[120.6234,23.86],[120.6234,23.8622],[120.6201,23.8653],[120.6215,23.8698],[120.6234,23.8694],[120.6258,23.8736],[120.6248,23.8771],[120.6267,23.8794],[120.6275,23.8836],[120.6302,23.8898],[120.6341,23.8919],[120.6351,23.8986],[120.6322,23.9053],[120.6342,23.9078],[120.6323,23.9107],[120.6344,23.9141],[120.6339,23.919],[120.6366,23.92],[120.6373,23.9246],[120.633,23.9282],[120.6293,23.9296],[120.6323,23.9331],[120.6327,23.9355],[120.635,23.939],[120.6322,23.9417],[120.6346,23.9436],[120.6276,23.9518],[120.6341,23.9542],[120.6354,23.9522],[120.6396,23.9551],[120.6427,23.9583],[120.6442,23.9621],[120.6467,23.9633],[120.647,23.9715],[120.6466,23.9748],[120.65,23.9827],[120.6499,23.9853],[120.6451,23.9898],[120.6375,23.9937],[120.6361,23.9984],[120.6382,24.0038],[120.6414,24.008],[120.6462,24.0092],[120.6473,24.0084],[120.66,24.0084],[120.6659,24.0078],[120.6728,24.0061],[120.6738,24.0079],[120.671,24.0099],[120.6764,24.0109],[120.6786,24.014],[120.6684,24.0207],[120.6635,24.025],[120.6611,24.0257],[120.6557,24.0307],[120.6518,24.0285],[120.6467,24.0338],[120.6444,24.0323],[120.6462,24.0283],[120.6446,24.0259],[120.6375,24.0285],[120.6361,24.0311],[120.6278,24.0296],[120.6248,24.0305],[120.6242,24.0334],[120.6277,24.0376],[120.626,24.0416],[120.6258,24.0468],[120.6234,24.052],[120.6257,24.0569],[120.6254,24.0687],[120.6242,24.0713],[120.6195,24.0732],[120.6149,24.085],[120.6149,24.0902],[120.6125,24.0991],[120.6124,24.1024],[120.6026,24.1029],[120.6,24.1052],[120.5949,24.1049],[120.5864,24.107],[120.5836,24.1095],[120.5766,24.1096],[120.5731,24.1083],[120.5653,24.1099],[120.5578,24.1126],[120.5537,24.1128],[120.549,24.1142],[120.5452,24.1166],[120.5403,24.124],[120.5335,24.1258],[120.5234,24.1399],[120.525,24.1436],[120.5259,24.1485],[120.5242,24.1529],[120.5208,24.1585],[120.5175,24.1653],[120.5103,24.1825],[120.5081,24.1872],[120.5044,24.1911],[120.4979,24.1934],[120.4566,24.2072]]]},"properties":{"COUNTYID":"N","COUNTYCODE":"10007","COUNTYNAME":"彰化縣","COUNTYENG":"Changhua County"},"id":"10007"},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[121.343,24.2236],[121.3403,24.2259],[121.3302,24.2312],[121.3248,24.233],[121.3194,24.2319],[121.3163,24.2345],[121.3086,24.2349],[121.3039,24.2337],[121.3025,24.2363],[121.2989,24.2358],[121.2951,24.2322],[121.2941,24.2296],[121.2889,24.2302],[121.2862,24.2291],[121.2832,24.231],[121.2799,24.2298],[121.2767,24.2356],[121.2707,24.2366],[121.2687,24.2383],[121.265,24.2459],[121.2609,24.2456],[121.2546,24.2428],[121.2512,24.238],[121.2474,24.2288],[121.2442,24.2225],[121.2407,24.2217],[121.238,24.2197],[121.2304,24.2235],[121.2308,24.2261],[121.2271,24.2256],[121.2188,24.2289],[121.2168,24.2261],[121.2082,24.2217],[121.2016,24.2216],[121.1965,24.2231],[121.1888,24.215],[121.1852,24.2145],[121.1822,24.2121],[121.1785,24.214],[121.1735,24.2203],[121.1676,24.2254],[121.1644,24.2218],[121.1641,24.2199],[121.161,24.2152],[121.157,24.2148],[121.1515,24.2129],[121.1481,24.2131],[121.1461,24.2088],[121.143,24.2053],[121.1414,24.1996],[121.1364,24.1963],[121.1317,24.1969],[121.1229,24.196],[121.1184,24.1973],[121.1134,24.1968],[121.1093,24.198],[121.0963,24.1921],[121.0941,24.188],[121.0911,24.1849],[121.0908,24.182],[121.0849,24.1759],[121.081,24.1748],[121.075,24.17],[121.0728,24.17],[121.0663,24.1655],[121.0646,24.163],[121.0593,24.1627],[121.0574,24.1587],[121.0527,24.1548],[121.0507,24.1581],[121.0474,24.1601],[121.0429,24.1586],[121.038,24.1582],[121.0358,24.1532],[121.0357,24.1509],[121.0335,24.1486],[121.0309,24.1495],[121.0314,24.1526],[121.0298,24.1573],[121.0274,24.1587],[121.0239,24.1579],[121.0199,24.1589],[121.0158,24.1562],[121.0082,24.147],[121.0069,24.1411],[121.0026,24.133],[121.0006,24.1325],[120.9996,24.1278],[120.9923,24.1254],[120.9919,24.1208],[120.989,24.1187],[120.9852,24.1202],[120.9836,24.1191],[120.9753,24.1169],[120.9736,24.1196],[120.971,24.1203],[120.961,24.1202],[120.9571,24.1242],[120.9519,24.1273],[120.9494,24.1275],[120.9484,24.1249],[120.9445,24.1229],[120.9396,24.1183],[120.9355,24.1157],[120.9319,24.1122],[120.9271,24.1117],[120.9231,24.1099],[120.9199,24.1074],[120.9149,24.1075],[120.9132,24.109],[120.9096,24.1092],[120.9073,24.1105],[120.9052,24.1141],[120.8962,24.1165],[120.8919,24.1161],[120.8902,24.1135],[120.8942,24.1107],[120.8941,24.1064],[120.891,24.1017],[120.8915,24.0982],[120.89,24.0966],[120.8861,24.0956],[120.882,24.0884],[120.8803,24.0886],[120.8783,24.0852],[120.8769,24.0914],[120.8782,24.0935],[120.8791,24.0984],[120.8814,24.1005],[120.8778,24.1097],[120.8723,24.1169],[120.8689,24.1176],[120.8657,24.1155],[120.8586,24.1162],[120.8572,24.1173],[120.8562,24.1215],[120.8536,24.1246],[120.8489,24.1239],[120.8451,24.1246],[120.8362,24.1169],[120.8345,24.1132],[120.8346,24.1078],[120.8303,24.1021],[120.8324,24.0981],[120.8285,24.0945],[120.8281,24.0864],[120.8289,24.0837],[120.8284,24.0766],[120.8294,24.0725],[120.8207,24.0698],[120.8194,24.0685],[120.8158,24.0687],[120.8118,24.066],[120.8089,24.0662],[120.8069,24.0642],[120.8063,24.0604],[120.8033,24.0564],[120.8033,24.0521],[120.8011,24.0515],[120.8007,24.0486],[120.7966,24.0428],[120.7974,24.0411],[120.7921,24.036],[120.7915,24.0306],[120.7896,24.0313],[120.7855,24.0287],[120.7847,24.0242],[120.783,24.0238],[120.7798,24.0203],[120.7752,24.0185],[120.7714,24.0144],[120.7707,24.0091],[120.7678,24.0092],[120.7625,24.0062],[120.7578,24.006],[120.7556,24.0034],[120.7511,24.0029],[120.7476,23.9991],[120.7454,23.9992],[120.7436,24.0022],[120.7318,24.009],[120.7192,24.0097],[120.7064,24.0052],[120.6949,24.0071],[120.686,24.0105],[120.6786,24.014],[120.6764,24.0109],[120.671,24.0099],[120.6738,24.0079],[120.6728,24.0061],[120.6659,24.0078],[120.66,24.0084],[120.6473,24.0084],[120.6462,24.0092],[120.6414,24.008],[120.6382,24.0038],[120.6361,23.9984],[120.6375,23.9937],[120.6451,23.9898],[120.6499,23.9853],[120.65,23.9827],[120.6466,23.9748],[120.647,23.9715],[120.6467,23.9633],[120.6442,23.9621],[120.6427,23.9583],[120.6396,23.9551],[120.6354,23.9522],[120.6341,23.9542],[120.6276,23.9518],[120.6346,23.9436],[120.6322,23.9417],[120.635,23.939],[120.6327,23.9355],[120.6323,23.9331],[120.6293,23.9296],[120.633,23.9282],[120.6373,23.9246],[120.6366,23.92],[120.6339,23.919],[120.6344,23.9141],[120.6323,23.9107],[120.6342,23.9078],[120.6322,23.9053],[120.6351,23.8986],[120.6341,23.8919],[120.6302,23.8898],[120.6275,23.8836],[120.6267,23.8794],[120.6248,23.8771],[120.6258,23.8736],[120.6234,23.8694],[120.6215,23.8698],[120.6201,23.8653],[120.6234,23.8622],[120.6234,23.86],[120.6274,23.8569],[120.6259,23.852],[120.6237,23.8503],[120.6235,23.8479],[120.616,23.8412],[120.6163,23.8394],[120.6213,23.8417],[120.6224,23.84],[120.6264,23.84],[120.6335,23.8339],[120.6369,23.8329],[120.64,23.8251],[120.6386,23.824],[120.6401,23.8206],[120.6445,23.8176],[120.6487,23.8161],[120.6509,23.8125],[120.6556,23.8128],[120.6589,23.8146],[120.665,23.815],[120.6698,23.8185],[120.6744,23.8201],[120.6787,23.8166],[120.678,23.8139],[120.6791,23.8058],[120.6834,23.8054],[120.6839,23.8014],[120.6801,23.8017],[120.6753,23.7999],[120.6638,23.7921],[120.6587,23.7912],[120.6425,23.7857],[120.6404,23.7861],[120.6421,23.7822],[120.6485,23.7732],[120.6558,23.7547],[120.6546,23.7483],[120.6544,23.74],[120.6558,23.7357],[120.6544,23.7345],[120.6443,23.7364],[120.6421,23.7306],[120.6402,23.7308],[120.6397,23.7266],[120.6417,23.7223],[120.6404,23.7194],[120.6406,23.7132],[120.6393,23.7109],[120.6415,23.7055],[120.6456,23.7032],[120.6436,23.6999],[120.6466,23.6917],[120.6455,23.6902],[120.6462,23.6848],[120.6483,23.6828],[120.6461,23.6773],[120.6469,23.6726],[120.6449,23.6716],[120.6445,23.6678],[120.6405,23.6643],[120.64,23.6609],[120.6368,23.6569],[120.6351,23.652],[120.6351,23.6426],[120.6317,23.64],[120.6291,23.6349],[120.6302,23.6326],[120.6287,23.6298],[120.63,23.6271],[120.6309,23.6219],[120.6337,23.6191],[120.6357,23.6202],[120.639,23.625],[120.6439,23.6282],[120.6451,23.631],[120.6536,23.6289],[120.6514,23.6161],[120.6587,23.6136],[120.6616,23.6104],[120.6637,23.6112],[120.6691,23.6093],[120.6778,23.6111],[120.6837,23.6109],[120.6855,23.6128],[120.6861,23.6182],[120.6913,23.6204],[120.6964,23.6201],[120.7018,23.6175],[120.7052,23.6173],[120.714,23.6209],[120.713,23.6278],[120.7184,23.63],[120.7205,23.6261],[120.7239,23.6218],[120.7307,23.6183],[120.7309,23.6108],[120.7359,23.6095],[120.739,23.6101],[120.7412,23.6122],[120.746,23.6126],[120.7476,23.6112],[120.7509,23.6145],[120.7537,23.6148],[120.7584,23.6124],[120.7637,23.6125],[120.7694,23.6084],[120.7699,23.6062],[120.7742,23.6054],[120.7777,23.6023],[120.7837,23.6007],[120.7909,23.6009],[120.7949,23.5972],[120.8033,23.5966],[120.8058,23.5988],[120.8098,23.5987],[120.8139,23.601],[120.8183,23.5991],[120.8169,23.5954],[120.8206,23.5896],[120.8255,23.5864],[120.8213,23.5813],[120.8196,23.5745],[120.8218,23.5713],[120.8199,23.5645],[120.8207,23.5626],[120.814,23.5554],[120.8159,23.5531],[120.8115,23.5511],[120.8088,23.5459],[120.8082,23.5418],[120.8088,23.5358],[120.8121,23.5331],[120.8181,23.5235],[120.8204,23.5213],[120.8191,23.5195],[120.8201,23.5141],[120.8232,23.5109],[120.8228,23.5086],[120.8241,23.5053],[120.8228,23.4992],[120.8254,23.4948],[120.8253,23.4897],[120.8271,23.4834],[120.8299,23.4807],[120.8326,23.4747],[120.8393,23.4712],[120.8421,23.4733],[120.8499,23.4722],[120.8542,23.4733],[120.8581,23.4728],[120.8632,23.4736],[120.8731,23.4685],[120.8808,23.4676],[120.8848,23.4747],[120.8867,23.4756],[120.8996,23.4754],[120.902,23.4761],[120.9113,23.4761],[120.9151,23.4746],[120.9175,23.4757],[120.9265,23.473],[120.9312,23.4706],[120.9342,23.473],[120.9376,23.4731],[120.9423,23.4693],[120.9475,23.4671],[120.9522,23.4677],[120.9575,23.4695],[120.9614,23.4708],[120.9685,23.4712],[120.9706,23.469],[120.9783,23.4694],[120.9817,23.4688],[120.9836,23.467],[120.9997,23.4622],[121.0038,23.463],[121.0081,23.4624],[121.0116,23.4573],[121.0151,23.4541],[121.0158,23.4509],[121.0107,23.4467],[121.0106,23.4412],[121.0141,23.4379],[121.0153,23.4354],[121.0196,23.4364],[121.022,23.439],[121.0264,23.4391],[121.0285,23.4415],[121.0318,23.4424],[121.0335,23.4453],[121.0442,23.4491],[121.0465,23.4509],[121.0518,23.4508],[121.0533,23.4556],[121.0559,23.4593],[121.059,23.4615],[121.0513,23.4643],[121.0497,23.4678],[121.0444,23.4701],[121.0392,23.4734],[121.0394,23.4749],[121.0453,23.4808],[121.0483,23.4823],[121.05,23.4864],[121.0536,23.4878],[121.0541,23.4903],[121.0528,23.4938],[121.0549,23.4961],[121.0621,23.4994],[121.0629,23.5036],[121.066,23.5061],[121.066,23.5076],[121.0688,23.5148],[121.0685,23.5185],[121.0787,23.5164],[121.0831,23.5146],[121.0881,23.514],[121.0919,23.5145],[121.0931,23.5176],[121.0976,23.5217],[121.1014,23.521],[121.1037,23.5189],[121.1103,23.519],[121.1155,23.5202],[121.1181,23.5216],[121.1212,23.5206],[121.1264,23.517],[121.1283,23.5185],[121.1309,23.5177],[121.1324,23.515],[121.1355,23.5151],[121.1391,23.5214],[121.147,23.5272],[121.1511,23.527],[121.1507,23.529],[121.1469,23.534],[121.1482,23.5359],[121.1484,23.5395],[121.1511,23.5452],[121.1481,23.5524],[121.1462,23.5542],[121.15,23.5573],[121.1512,23.5599],[121.1573,23.5597],[121.1579,23.5637],[121.1603,23.5678],[121.1604,23.5698],[121.1536,23.5715],[121.1519,23.5739],[121.152,23.5817],[121.1533,23.5867],[121.1582,23.5857],[121.1608,23.5871],[121.1694,23.5866],[121.1714,23.5841],[121.1785,23.5828],[121.1801,23.5882],[121.1832,23.593],[121.1894,23.5948],[121.1912,23.5982],[121.1943,23.6006],[121.2001,23.5964],[121.2065,23.5958],[121.2081,23.5982],[121.2136,23.6006],[121.2158,23.607],[121.2173,23.6147],[121.22,23.6169],[121.2233,23.6226],[121.2249,23.6274],[121.224,23.6329],[121.2241,23.6389],[121.2278,23.6454],[121.2299,23.6474],[121.2312,23.6514],[121.2307,23.6535],[121.2319,23.6579],[121.2358,23.6622],[121.236,23.6708],[121.2324,23.6775],[121.2343,23.681],[121.2395,23.6872],[121.2393,23.6943],[121.2412,23.6984],[121.2394,23.6998],[121.2412,23.7064],[121.2412,23.709],[121.2388,23.7129],[121.2396,23.7154],[121.2378,23.7199],[121.2393,23.7244],[121.2359,23.7245],[121.232,23.7295],[121.2298,23.73],[121.2284,23.7365],[121.2288,23.7445],[121.2299,23.7469],[121.2332,23.748],[121.2323,23.7508],[121.2293,23.7523],[121.225,23.7518],[121.2215,23.7527],[121.2175,23.757],[121.2132,23.7576],[121.211,23.7611],[121.2064,23.7628],[121.2087,23.7658],[121.2066,23.7674],[121.2047,23.7724],[121.2089,23.776],[121.213,23.7769],[121.2183,23.7797],[121.2195,23.7818],[121.2237,23.7824],[121.2279,23.7848],[121.2305,23.7881],[121.2306,23.7899],[121.2271,23.7913],[121.2266,23.7961],[121.2255,23.7981],[121.2274,23.8083],[121.2346,23.8122],[121.2347,23.8177],[121.2379,23.8214],[121.2369,23.8238],[121.2381,23.8296],[121.2377,23.8325],[121.2393,23.8371],[121.2393,23.8401],[121.2435,23.845],[121.2453,23.8497],[121.2488,23.8521],[121.2502,23.8566],[121.2499,23.8596],[121.253,23.8634],[121.253,23.8679],[121.2571,23.8697],[121.2581,23.8725],[121.2653,23.8729],[121.2629,23.8795],[121.2659,23.8832],[121.2683,23.8834],[121.2672,23.8894],[121.2655,23.8911],[121.266,23.8944],[121.264,23.8986],[121.2611,23.9023],[121.2663,23.9073],[121.27,23.9065],[121.2749,23.9075],[121.2761,23.9101],[121.2751,23.9189],[121.2765,23.9229],[121.2735,23.9281],[121.2747,23.9301],[121.2737,23.9366],[121.2721,23.9382],[121.274,23.942],[121.2743,23.9457],[121.2718,23.9482],[121.2747,23.9514],[121.2758,23.9565],[121.2751,23.9597],[121.2778,23.9652],[121.2756,23.9684],[121.2737,23.9752],[121.2651,23.9753],[121.2616,23.9812],[121.26,23.9921],[121.2639,23.9977],[121.2657,24.0014],[121.2694,24.0063],[121.2719,24.0133],[121.2736,24.0149],[121.2764,24.0204],[121.2768,24.0249],[121.2787,24.0268],[121.2824,24.0347],[121.2857,24.0395],[121.285,24.0486],[121.2826,24.0513],[121.2833,24.0545],[121.2865,24.058],[121.2891,24.0587],[121.2955,24.0638],[121.2989,24.0616],[121.3023,24.0663],[121.3061,24.0695],[121.3081,24.0732],[121.3141,24.0776],[121.3177,24.0795],[121.3231,24.0849],[121.3192,24.0928],[121.3191,24.0954],[121.3223,24.0995],[121.3258,24.1027],[121.3269,24.1103],[121.3285,24.1144],[121.325,24.1161],[121.3159,24.1164],[121.3135,24.1189],[121.308,24.1224],[121.3044,24.1239],[121.3012,24.1278],[121.2959,24.1324],[121.2814,24.1359],[121.2842,24.1458],[121.2847,24.1523],[121.2809,24.1546],[121.2803,24.1579],[121.2854,24.1571],[121.2883,24.1576],[121.2883,24.1667],[121.2877,24.1733],[121.2862,24.176],[121.2881,24.1777],[121.2922,24.1771],[121.2968,24.1785],[121.2986,24.18],[121.3071,24.1803],[121.3106,24.183],[121.3154,24.1849],[121.32,24.1914],[121.3231,24.1921],[121.3258,24.1962],[121.3358,24.1991],[121.3403,24.1985],[121.3451,24.2],[121.3497,24.2002],[121.3483,24.2073],[121.3494,24.2104],[121.3433,24.2221],[121.343,24.2236]]]},"properties":{"COUNTYID":"M","COUNTYCODE":"10008","COUNTYNAME":"南投縣","COUNTYENG":"Nantou County"},"id":"10008"},{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[120.0811,23.5241],[120.0733,23.5207],[120.0689,23.5178],[120.0669,23.5153],[120.0638,23.515],[120.0621,23.5123],[120.0578,23.5095],[120.0527,23.5074],[120.0521,23.5056],[120.049,23.5044],[120.0403,23.4989],[120.0376,23.4962],[120.0352,23.4956],[120.0302,23.4922],[120.0277,23.4916],[120.025,23.489],[120.0161,23.4842],[120.0125,23.4805],[120.0102,23.4795],[120.0042,23.4742],[120.0003,23.4729],[119.9969,23.4658],[120.0045,23.4603],[120.0081,23.452],[120.012,23.4484],[120.0155,23.4438],[120.0142,23.4418],[120.0173,23.4406],[120.019,23.4364],[120.0208,23.4394],[120.0199,23.4436],[120.016,23.4481],[120.0141,23.4531],[120.0127,23.4538],[120.0107,23.458],[120.0076,23.4611],[120.0096,23.4649],[120.0143,23.4688],[120.0167,23.468],[120.0139,23.46],[120.0154,23.4589],[120.0197,23.4588],[120.0247,23.4607],[120.0235,23.4654],[120.0252,23.469],[120.0229,23.4709],[120.0259,23.473],[120.0248,23.4752],[120.0298,23.4796],[120.033,23.4796],[120.035,23.4774],[120.04,23.4799],[120.044,23.4843],[120.045,23.4937],[120.0486,23.492],[120.0455,23.4875],[120.0456,23.4842],[120.042,23.4795],[120.0423,23.4775],[120.0465,23.4777],[120.0518,23.4811],[120.0543,23.4881],[120.057,23.4856],[120.0583,23.4827],[120.0549,23.4788],[120.0588,23.4789],[120.0626,23.4809],[120.0641,23.4876],[120.0628,23.4895],[120.0561,23.4902],[120.056,23.4912],[120.0653,23.4919],[120.0693,23.4913],[120.0703,23.4939],[120.0692,23.4967],[120.0665,23.4986],[120.0686,23.5022],[120.0722,23.502],[120.0751,23.503],[120.0766,23.5073],[120.0793,23.509],[120.0827,23.5092],[120.083,23.5111],[120.0868,23.5122],[120.0915,23.5121],[120.0958,23.5106],[120.0952,23.5155],[120.0908,23.5203],[120.0886,23.5203],[120.0859,23.5228],[120.0811,23.5241]]],[[[120.0994,23.5417],[120.0969,23.5395],[120.0911,23.5308],[120.0965,23.5214],[120.0999,23.5295],[120.1036,23.5292],[120.1073,23.5275],[120.1103,23.5281],[120.1086,23.532],[120.1023,23.5402],[120.0994,23.5417]]],[[[120.1324,23.5467],[120.1295,23.5441],[120.1264,23.5445],[120.1274,23.5381],[120.1267,23.5321],[120.1323,23.5345],[120.1367,23.5434],[120.1324,23.5467]]],[[[120.1323,23.5632],[120.129,23.5639],[120.1245,23.5629],[120.1236,23.5596],[120.1202,23.5565],[120.1153,23.5566],[120.1114,23.5554],[120.1112,23.5539],[120.1051,23.548],[120.1037,23.5438],[120.1056,23.5406],[120.1081,23.5396],[120.1096,23.5426],[120.1094,23.545],[120.1168,23.5495],[120.1198,23.5499],[120.1225,23.5555],[120.1254,23.5588],[120.1277,23.5573],[120.1278,23.5533],[120.1317,23.5572],[120.1307,23.5621],[120.1323,23.5632]]],[[[120.1304,23.569],[120.1325,23.5737],[120.1304,23.5768],[120.1284,23.5739],[120.1304,23.569]]],[[[120.6404,23.7861],[120.6352,23.7867],[120.633,23.789],[120.6159,23.7913],[120.5931,23.7911],[120.587,23.7919],[120.5788,23.7951],[120.5735,23.7963],[120.5603,23.7981],[120.5583,23.7994],[120.5509,23.8012],[120.5459,23.8015],[120.5409,23.801],[120.535,23.8013],[120.5289,23.7991],[120.5213,23.7998],[120.51,23.8002],[120.4984,23.8036],[120.4832,23.8066],[120.4753,23.809],[120.4581,23.8161],[120.4521,23.8172],[120.4506,23.8187],[120.4431,23.8229],[120.4395,23.8269],[120.4331,23.8302],[120.4253,23.8303],[120.4187,23.8271],[120.4103,23.8264],[120.3817,23.8286],[120.3703,23.8286],[120.3604,23.8234],[120.3524,23.8223],[120.3331,23.8223],[120.3181,23.8203],[120.3081,23.8203],[120.2564,23.8337],[120.2492,23.8375],[120.2447,23.8406],[120.2383,23.8459],[120.2324,23.8517],[120.224,23.8615],[120.2204,23.8662],[120.2192,23.8585],[120.2134,23.85],[120.2046,23.8477],[120.2045,23.8449],[120.2084,23.8419],[120.2077,23.8372],[120.206,23.8343],[120.2001,23.8267],[120.1956,23.8231],[120.1917,23.8182],[120.1857,23.8162],[120.1825,23.8162],[120.1814,23.8104],[120.178,23.8091],[120.175,23.8058],[120.1755,23.8031],[120.1649,23.7942],[120.1601,23.7867],[120.1568,23.7846],[120.1629,23.7797],[120.1629,23.7725],[120.1692,23.7589],[120.1668,23.7556],[120.1658,23.7419],[120.1558,23.7194],[120.1562,23.7155],[120.1527,23.7131],[120.149,23.7082],[120.1469,23.7067],[120.1472,23.7019],[120.1455,23.6989],[120.1464,23.6963],[120.1454,23.6919],[120.141,23.6875],[120.1392,23.6842],[120.1352,23.6671],[120.1276,23.6522],[120.1255,23.6457],[120.124,23.6432],[120.1181,23.6394],[120.115,23.6362],[120.1151,23.6314],[120.1183,23.6266],[120.1235,23.6218],[120.1285,23.6219],[120.1312,23.6244],[120.1344,23.6342],[120.1371,23.6362],[120.1383,23.6318],[120.1372,23.6246],[120.1372,23.6204],[120.1335,23.6194],[120.133,23.6157],[120.14,23.6141],[120.1403,23.6087],[120.1394,23.5996],[120.1404,23.5975],[120.1446,23.5982],[120.1447,23.5951],[120.1414,23.5914],[120.1407,23.5838],[120.1406,23.5733],[120.1433,23.5721],[120.1431,23.5676],[120.1399,23.5591],[120.1404,23.5543],[120.1396,23.5502],[120.1413,23.545],[120.1456,23.5391],[120.1486,23.5369],[120.1503,23.5319],[120.1455,23.5265],[120.1464,23.5239],[120.1458,23.5208],[120.1493,23.5189],[120.1581,23.5159],[120.1646,23.5158],[120.1666,23.5172],[120.1724,23.5147],[120.1796,23.5104],[120.1825,23.5098],[120.1872,23.5106],[120.1899,23.51],[120.1966,23.513],[120.2045,23.5119],[120.2158,23.5069],[120.223,23.5043],[120.2309,23.5054],[120.2394,23.5078],[120.2431,23.5101],[120.2468,23.5141],[120.2471,23.5162],[120.2442,23.5319],[120.2419,23.5392],[120.2433,23.5436],[120.2464,23.5451],[120.2526,23.5463],[120.2561,23.5461],[120.2594,23.5412],[120.2617,23.5357],[120.2673,23.5307],[120.2719,23.5308],[120.2734,23.5335],[120.276,23.543],[120.2805,23.546],[120.2867,23.5478],[120.2908,23.5505],[120.2891,23.5574],[120.2892,23.5612],[120.2932,23.5642],[120.2972,23.5646],[120.3061,23.5629],[120.3106,23.5645],[120.3098,23.5679],[120.3067,23.5715],[120.3074,23.5747],[120.3119,23.575],[120.3191,23.5724],[120.3265,23.5739],[120.3323,23.578],[120.3334,23.5818],[120.3336,23.5915],[120.335,23.593],[120.3433,23.5919],[120.3514,23.5929],[120.3593,23.5952],[120.3659,23.603],[120.3665,23.6078],[120.3706,23.6094],[120.3798,23.6099],[120.3831,23.6126],[120.3828,23.6147],[120.386,23.6207],[120.3924,23.6224],[120.3922,23.6236],[120.4026,23.6269],[120.4009,23.6322],[120.4048,23.6342],[120.4064,23.6327],[120.4066,23.6252],[120.413,23.624],[120.4156,23.6214],[120.4201,23.6252],[120.422,23.6193],[120.4254,23.618],[120.427,23.6193],[120.4301,23.6184],[120.4336,23.6229],[120.4367,23.6217],[120.4376,23.6265],[120.441,23.6259],[120.4447,23.6306],[120.4499,23.6294],[120.4512,23.6271],[120.4543,23.6263],[120.4585,23.6277],[120.4602,23.6293],[120.474,23.6311],[120.4775,23.6299],[120.4787,23.6328],[120.4879,23.6307],[120.4872,23.6339],[120.4887,23.6359],[120.4929,23.6332],[120.4995,23.6351],[120.5036,23.6353],[120.5075,23.6312],[120.5064,23.6259],[120.5102,23.6194],[120.5151,23.6151],[120.518,23.6105],[120.5225,23.6075],[120.5281,23.6028],[120.529,23.6004],[120.533,23.597],[120.5369,23.5947],[120.548,23.5938],[120.5523,23.5939],[120.5566,23.5929],[120.5578,23.5892],[120.5611,23.5886],[120.5655,23.5895],[120.5671,23.5877],[120.5711,23.5879],[120.5767,23.5835],[120.5802,23.5823],[120.5861,23.5827],[120.5898,23.5857],[120.5975,23.5847],[120.5999,23.5832],[120.6063,23.5842],[120.6102,23.5826],[120.6155,23.5853],[120.6187,23.5841],[120.6252,23.5907],[120.6306,23.5899],[120.6369,23.592],[120.6436,23.5927],[120.6451,23.5935],[120.6491,23.5925],[120.6471,23.5878],[120.6493,23.5857],[120.6483,23.5815],[120.6434,23.578],[120.6492,23.575],[120.6507,23.5724],[120.6581,23.5729],[120.6605,23.5762],[120.67,23.5788],[120.6725,23.5766],[120.6733,23.5737],[120.676,23.5707],[120.6826,23.5721],[120.687,23.5751],[120.6942,23.5765],[120.7013,23.576],[120.7043,23.575],[120.709,23.5757],[120.7106,23.5709],[120.7161,23.5711],[120.7183,23.569],[120.7247,23.5719],[120.7279,23.5703],[120.7338,23.571],[120.7361,23.5704],[120.7351,23.5752],[120.7321,23.5772],[120.734,23.5844],[120.7327,23.5894],[120.7299,23.5934],[120.7325,23.5974],[120.7284,23.5993],[120.7278,23.6014],[120.7246,23.6038],[120.7264,23.607],[120.7309,23.6108],[120.7307,23.6183],[120.7239,23.6218],[120.7205,23.6261],[120.7184,23.63],[120.713,23.6278],[120.714,23.6209],[120.7052,23.6173],[120.7018,23.6175],[120.6964,23.6201],[120.6913,23.6204],[120.6861,23.6182],[120.6855,23.6128],[120.6837,23.6109],[120.6778,23.6111],[120.6691,23.6093],[120.6637,23.6112],[120.6616,23.6104],[120.6587,23.6136],[120.6514,23.6161],[120.6536,23.6289],[120.6451,23.631],[120.6439,23.6282],[120.639,23.625],[120.6357,23.6202],[120.6337,23.6191],[120.6309,23.6219],[120.63,23.6271],[120.6287,23.6298],[120.6302,23.6326],[120.6291,23.6349],[120.6317,23.64],[120.6351,23.6426],[120.6351,23.652],[120.6368,23.6569],[120.64,23.6609],[120.6405,23.6643],[120.6445,23.6678],[120.6449,23.6716],[120.6469,23.6726],[120.6461,23.6773],[120.6483,23.6828],[120.6462,23.6848],[120.6455,23.6902],[120.6466,23.6917],[120.6436,23.6999],[120.6456,23.7032],[120.6415,23.7055],[120.6393,23.7109],[120.6406,23.7132],[120.6404,23.7194],[120.6417,23.7223],[120.6397,23.7266],[120.6402,23.7308],[120.6421,23.7306],[120.6443,23.7364],[120.6544,23.7345],[120.6558,23.7357],[120.6544,23.74],[120.6546,23.7483],[120.6558,23.7547],[120.6485,23.7732],[120.6421,23.7822],[120.6404,23.7861]]]]},"properties":{"COUNTYID":"P","COUNTYCODE":"10009","COUNTYNAME":"雲林縣","COUNTYENG":"Yunlin County"},"id":"10009"},{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[121.8035,25.1362],[121.8043,25.1381],[121.8031,25.142],[121.8046,25.1445],[121.8082,25.1474],[121.807,25.1491],[121.8005,25.1475],[121.7953,25.1481],[121.7932,25.1469],[121.7851,25.1496],[121.7833,25.1521],[121.7799,25.1532],[121.7779,25.1515],[121.7747,25.156],[121.7768,25.1595],[121.7647,25.1638],[121.7603,25.1604],[121.7561,25.1596],[121.7485,25.1563],[121.7426,25.1573],[121.7381,25.1609],[121.7366,25.1593],[121.7295,25.1636],[121.7237,25.1652],[121.7127,25.166],[121.7112,25.1649],[121.7072,25.166],[121.7099,25.171],[121.7096,25.1766],[121.7064,25.1739],[121.7021,25.1734],[121.7009,25.1692],[121.699,25.1673],[121.6912,25.1663],[121.6873,25.1616],[121.6831,25.1606],[121.6782,25.1572],[121.6776,25.1557],[121.6715,25.1556],[121.6692,25.1534],[121.6637,25.1522],[121.6581,25.1522],[121.655,25.1488],[121.6512,25.1475],[121.6497,25.1449],[121.6463,25.1458],[121.6345,25.1439],[121.6293,25.1418],[121.6269,25.1399],[121.6282,25.1352],[121.6346,25.1305],[121.6381,25.1308],[121.6429,25.1279],[121.6444,25.125],[121.6464,25.1135],[121.6503,25.1095],[121.6522,25.1044],[121.6489,25.1019],[121.6506,25.0985],[121.6562,25.0947],[121.6558,25.0934],[121.6646,25.0893],[121.668,25.0857],[121.674,25.0829],[121.6792,25.0877],[121.6816,25.0876],[121.6817,25.0848],[121.679,25.0789],[121.6884,25.0717],[121.6921,25.0703],[121.6965,25.0701],[121.6994,25.0674],[121.7043,25.0679],[121.7069,25.0666],[121.7104,25.068],[121.7148,25.0666],[121.7191,25.0615],[121.7225,25.0585],[121.7258,25.0584],[121.7301,25.0533],[121.7378,25.0547],[121.7397,25.0531],[121.7459,25.053],[121.7511,25.0573],[121.7593,25.0595],[121.7625,25.057],[121.7649,25.0597],[121.77,25.0635],[121.772,25.0635],[121.773,25.0668],[121.7757,25.0701],[121.7715,25.0759],[121.7684,25.0785],[121.7616,25.0784],[121.7591,25.0845],[121.7598,25.0901],[121.7584,25.0937],[121.7599,25.1006],[121.7558,25.1086],[121.7528,25.1069],[121.75,25.1097],[121.7518,25.111],[121.7575,25.1109],[121.7594,25.1126],[121.763,25.1134],[121.7667,25.1125],[121.7694,25.1146],[121.7734,25.1203],[121.7795,25.1175],[121.7839,25.1168],[121.7861,25.118],[121.7902,25.1122],[121.7948,25.1126],[121.7977,25.1143],[121.7988,25.1185],[121.7971,25.1213],[121.7942,25.1233],[121.7945,25.1263],[121.7972,25.1254],[121.8023,25.1218],[121.805,25.1252],[121.8038,25.1272],[121.8051,25.1317],[121.8025,25.1343],[121.8035,25.1362]]],[[[121.7881,25.1957],[121.7845,25.1949],[121.7815,25.1909],[121.783,25.1897],[121.7889,25.1921],[121.7881,25.1957]]],[[[121.9466,25.4246],[121.9468,25.4242],[121.9467,25.4246],[121.9466,25.4246],[121.9467,25.4246],[121.9466,25.4246]]],[[[122.1033,25.486],[122.1037,25.4831],[122.1057,25.482],[122.1072,25.487],[122.1033,25.486]]],[[[122.0844,25.6275],[122.0845,25.6324],[122.0806,25.6334],[122.0738,25.6321],[122.0723,25.6288],[122.0742,25.6255],[122.0774,25.6235],[122.0844,25.6275]]]]},"properties":{"COUNTYID":"C","COUNTYCODE":"10017","COUNTYNAME":"基隆市","COUNTYENG":"Keelung City"},"id":"10017"},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[121.5837,25.1946],[121.5805,25.1954],[121.5792,25.1941],[121.5754,25.1956],[121.5719,25.1953],[121.57,25.1983],[121.5662,25.1996],[121.5636,25.2056],[121.5628,25.2092],[121.5593,25.2102],[121.5549,25.2083],[121.5531,25.2042],[121.5517,25.2036],[121.5526,25.1988],[121.549,25.1982],[121.5432,25.1937],[121.5428,25.1888],[121.5406,25.1871],[121.5358,25.1867],[121.5334,25.1836],[121.5258,25.1829],[121.5217,25.1791],[121.5226,25.1747],[121.5196,25.1692],[121.5139,25.171],[121.5104,25.1694],[121.5047,25.1733],[121.5026,25.1733],[121.5019,25.1695],[121.4989,25.1652],[121.4929,25.1609],[121.4866,25.1508],[121.4839,25.1508],[121.4816,25.1479],[121.4694,25.136],[121.4656,25.1316],[121.4643,25.1273],[121.4643,25.124],[121.4591,25.123],[121.4609,25.116],[121.4577,25.1104],[121.4579,25.1064],[121.4616,25.1037],[121.4667,25.1016],[121.4786,25.1014],[121.4811,25.1009],[121.4887,25.0972],[121.5,25.087],[121.5026,25.083],[121.5062,25.0744],[121.507,25.0711],[121.5068,25.0645],[121.5054,25.0597],[121.5064,25.056],[121.5045,25.0495],[121.5004,25.0452],[121.4955,25.0429],[121.4888,25.0426],[121.4847,25.0387],[121.4836,25.0362],[121.485,25.0313],[121.4885,25.0239],[121.4887,25.0154],[121.4896,25.0132],[121.4931,25.0092],[121.4973,25.01],[121.5013,25.0129],[121.5048,25.0174],[121.5088,25.0212],[121.5143,25.0214],[121.5189,25.0198],[121.5216,25.0176],[121.5262,25.0114],[121.5309,25.0097],[121.5339,25.0036],[121.5318,25.0014],[121.5305,24.9978],[121.5317,24.9947],[121.535,24.9951],[121.5371,24.9923],[121.5368,24.9887],[121.5392,24.9877],[121.544,24.9883],[121.5442,24.9846],[121.5461,24.9833],[121.5492,24.9838],[121.5517,24.9874],[121.5538,24.9852],[121.5531,24.9813],[121.5537,24.9773],[121.5575,24.9723],[121.5585,24.9683],[121.5612,24.9647],[121.5653,24.9641],[121.5728,24.964],[121.5745,24.9668],[121.5786,24.9666],[121.5857,24.9632],[121.5912,24.9646],[121.5934,24.9642],[121.5969,24.9606],[121.602,24.9611],[121.6058,24.9631],[121.6084,24.9631],[121.6102,24.9649],[121.6171,24.9675],[121.6198,24.9674],[121.6198,24.9701],[121.6114,24.9746],[121.6051,24.9744],[121.6001,24.977],[121.6007,24.9803],[121.5998,24.9863],[121.6019,24.988],[121.602,24.9904],[121.5991,24.9916],[121.5981,24.9945],[121.6005,24.9984],[121.6005,25.0011],[121.5956,25.007],[121.5975,25.0148],[121.6027,25.0151],[121.6041,25.0191],[121.6102,25.0199],[121.6206,25.0184],[121.6227,25.0173],[121.6288,25.0198],[121.6309,25.0247],[121.6326,25.0256],[121.6357,25.0232],[121.6408,25.0235],[121.6429,25.0246],[121.6462,25.0217],[121.6499,25.024],[121.6541,25.0244],[121.6576,25.0232],[121.6641,25.0233],[121.6654,25.026],[121.6648,25.0295],[121.6615,25.0305],[121.6551,25.0275],[121.6488,25.0279],[121.638,25.0337],[121.634,25.0348],[121.6264,25.0379],[121.6249,25.0377],[121.6191,25.0435],[121.6169,25.0475],[121.6163,25.0506],[121.6209,25.0534],[121.6202,25.0557],[121.6243,25.0555],[121.6208,25.0614],[121.6185,25.0631],[121.6176,25.0676],[121.6208,25.0691],[121.6206,25.0733],[121.6232,25.0758],[121.6242,25.0803],[121.6277,25.0826],[121.6286,25.0865],[121.626,25.0905],[121.625,25.0937],[121.6261,25.0957],[121.6175,25.101],[121.6154,25.1039],[121.6105,25.1051],[121.608,25.1068],[121.5975,25.1095],[121.5955,25.1134],[121.5988,25.1196],[121.6008,25.1218],[121.6017,25.126],[121.6041,25.1257],[121.6076,25.1293],[121.6046,25.1308],[121.6053,25.1355],[121.5983,25.1404],[121.5938,25.1499],[121.5894,25.1523],[121.5916,25.1551],[121.5918,25.1577],[121.5899,25.1637],[121.5878,25.163],[121.5848,25.1647],[121.5793,25.1655],[121.577,25.1671],[121.5774,25.1702],[121.583,25.1755],[121.5833,25.1776],[121.5809,25.1815],[121.5839,25.1887],[121.5837,25.1946]]]},"properties":{"COUNTYID":"A","COUNTYCODE":"63000","COUNTYNAME":"臺北市","COUNTYENG":"Taipei City"},"id":"63000"},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[121.6621,25.2084],[121.6608,25.2088],[121.6536,25.216],[121.6502,25.2229],[121.6535,25.229],[121.6485,25.2327],[121.6459,25.2301],[121.6431,25.2307],[121.6364,25.2364],[121.6339,25.2402],[121.6359,25.2501],[121.6341,25.26],[121.6297,25.2668],[121.6231,25.2739],[121.6168,25.2788],[121.6079,25.2815],[121.6024,25.2877],[121.5976,25.29],[121.5972,25.2915],[121.5906,25.2921],[121.5867,25.2934],[121.5775,25.299],[121.5693,25.2985],[121.5648,25.2931],[121.5605,25.292],[121.5533,25.293],[121.5504,25.2916],[121.5455,25.2924],[121.5413,25.2945],[121.5407,25.2978],[121.5369,25.3001],[121.5338,25.2971],[121.5348,25.2925],[121.5333,25.2899],[121.5259,25.286],[121.5212,25.2868],[121.5169,25.2849],[121.514,25.2867],[121.5128,25.2909],[121.5093,25.2913],[121.5083,25.2887],[121.5093,25.2832],[121.5043,25.2815],[121.5028,25.2798],[121.4994,25.2795],[121.4866,25.2727],[121.4809,25.2709],[121.477,25.2663],[121.4749,25.2606],[121.4716,25.256],[121.4673,25.2533],[121.4625,25.2521],[121.4562,25.2532],[121.4527,25.2528],[121.4476,25.2467],[121.4458,25.2426],[121.4461,25.2404],[121.4373,25.2197],[121.4371,25.2175],[121.4309,25.2159],[121.4287,25.2123],[121.4247,25.2079],[121.4189,25.1993],[121.4177,25.1944],[121.4187,25.1915],[121.4142,25.1901],[121.41,25.1907],[121.4048,25.1898],[121.4043,25.1831],[121.4164,25.1807],[121.4188,25.1774],[121.4125,25.1685],[121.4098,25.166],[121.4055,25.1604],[121.4023,25.1588],[121.3916,25.1677],[121.388,25.152],[121.3897,25.1477],[121.3794,25.143],[121.3717,25.141],[121.3645,25.1379],[121.3599,25.1347],[121.3534,25.1316],[121.3469,25.1299],[121.345,25.1284],[121.3411,25.1286],[121.3386,25.127],[121.3269,25.1242],[121.3201,25.1234],[121.3165,25.1241],[121.3104,25.1238],[121.3096,25.1259],[121.3046,25.1261],[121.3006,25.1252],[121.2966,25.1231],[121.2926,25.1191],[121.2877,25.1179],[121.2834,25.1178],[121.2839,25.1124],[121.2827,25.1096],[121.2871,25.1068],[121.2902,25.1069],[121.2916,25.1026],[121.2955,25.103],[121.2983,25.1045],[121.3015,25.1011],[121.3015,25.0981],[121.3031,25.0967],[121.3107,25.0965],[121.3176,25.0932],[121.325,25.0926],[121.3278,25.0912],[121.33,25.0884],[121.3383,25.0837],[121.3438,25.0842],[121.3466,25.0836],[121.3491,25.0812],[121.345,25.0797],[121.3445,25.0751],[121.3485,25.074],[121.3478,25.0698],[121.3523,25.0688],[121.3551,25.0671],[121.355,25.0651],[121.3634,25.0649],[121.3769,25.0661],[121.3864,25.0633],[121.3889,25.0607],[121.3883,25.0571],[121.3865,25.0538],[121.3925,25.0537],[121.3975,25.0515],[121.4004,25.0515],[121.398,25.0468],[121.3985,25.0438],[121.3931,25.0436],[121.3944,25.0401],[121.4013,25.0374],[121.3985,25.0346],[121.3983,25.0301],[121.4015,25.028],[121.4045,25.0238],[121.4088,25.0208],[121.4091,25.0184],[121.4041,25.0172],[121.4017,25.0158],[121.3971,25.0162],[121.3927,25.0139],[121.3926,25.0105],[121.3997,25.0068],[121.4003,25.0041],[121.4033,25.0003],[121.3969,24.9973],[121.3943,24.9935],[121.3905,24.9933],[121.387,24.996],[121.3841,24.9957],[121.3835,24.9883],[121.3856,24.9865],[121.3819,24.9839],[121.379,24.9834],[121.3765,24.9811],[121.3722,24.9798],[121.3691,24.9768],[121.3639,24.9796],[121.3613,24.9779],[121.354,24.9778],[121.3523,24.9809],[121.3471,24.9788],[121.3428,24.9823],[121.341,24.9802],[121.3367,24.9807],[121.334,24.9787],[121.3303,24.9793],[121.3271,24.9777],[121.3276,24.9748],[121.3237,24.9728],[121.325,24.9711],[121.3281,24.9729],[121.3291,24.9623],[121.3281,24.9555],[121.328,24.949],[121.3316,24.9455],[121.3304,24.9445],[121.3248,24.9436],[121.316,24.9387],[121.3177,24.9354],[121.3232,24.9313],[121.3225,24.9281],[121.3341,24.9298],[121.3398,24.9285],[121.3352,24.9249],[121.3276,24.9247],[121.3247,24.9234],[121.3176,24.9165],[121.3226,24.9124],[121.3262,24.9072],[121.3219,24.9036],[121.3205,24.9002],[121.3278,24.8959],[121.3319,24.8999],[121.3337,24.899],[121.3321,24.8936],[121.3335,24.8922],[121.3382,24.8932],[121.3421,24.8908],[121.3413,24.8876],[121.3447,24.8859],[121.3456,24.8801],[121.3471,24.8787],[121.3506,24.8786],[121.3544,24.8732],[121.3529,24.8709],[121.3492,24.8687],[121.3459,24.8682],[121.3473,24.8621],[121.3494,24.8597],[121.3534,24.8587],[121.3556,24.8551],[121.3533,24.8505],[121.3485,24.8485],[121.3464,24.8502],[121.3428,24.8487],[121.3372,24.8484],[121.3359,24.844],[121.3395,24.8434],[121.3465,24.8459],[121.3549,24.844],[121.3578,24.8395],[121.3603,24.8381],[121.3642,24.8381],[121.3727,24.8351],[121.3735,24.8333],[121.3791,24.8351],[121.3846,24.8381],[121.385,24.8408],[121.3935,24.844],[121.3964,24.8436],[121.3981,24.8417],[121.4007,24.8417],[121.4028,24.8436],[121.4088,24.8406],[121.4104,24.8386],[121.4156,24.8356],[121.4138,24.832],[121.4161,24.8287],[121.4168,24.8257],[121.4235,24.8255],[121.4253,24.82],[121.4318,24.8137],[121.4366,24.8121],[121.438,24.8039],[121.4371,24.7981],[121.4385,24.7951],[121.4488,24.7882],[121.4496,24.7864],[121.446,24.7817],[121.4402,24.7788],[121.4379,24.7746],[121.4348,24.7726],[121.432,24.7722],[121.4254,24.767],[121.4234,24.7617],[121.4259,24.7605],[121.4256,24.7584],[121.4285,24.7535],[121.4286,24.7482],[121.4303,24.7437],[121.4321,24.7421],[121.4328,24.7373],[121.4354,24.7329],[121.4341,24.7304],[121.4383,24.7266],[121.441,24.7259],[121.4414,24.7235],[121.4451,24.7148],[121.4488,24.7122],[121.4501,24.7058],[121.4571,24.7031],[121.4599,24.7028],[121.4638,24.7009],[121.4696,24.6961],[121.4742,24.6961],[121.4748,24.6935],[121.473,24.6898],[121.4739,24.6853],[121.4754,24.6838],[121.4755,24.6807],[121.48,24.6739],[121.4847,24.6738],[121.4869,24.6752],[121.493,24.6732],[121.5003,24.6786],[121.5049,24.6794],[121.5072,24.6823],[121.5137,24.6843],[121.5148,24.6832],[121.5238,24.6833],[121.5291,24.6876],[121.5366,24.6883],[121.5389,24.6949],[121.5381,24.7003],[121.5437,24.7058],[121.5498,24.7057],[121.5543,24.7082],[121.5565,24.7113],[121.5581,24.7109],[121.5623,24.7128],[121.5675,24.7115],[121.571,24.7132],[121.572,24.7107],[121.5746,24.71],[121.5773,24.7149],[121.5776,24.7212],[121.5791,24.7225],[121.5832,24.7206],[121.5877,24.7203],[121.5907,24.7237],[121.5976,24.7278],[121.5942,24.7292],[121.595,24.7325],[121.5942,24.7355],[121.5951,24.7405],[121.5919,24.7433],[121.5917,24.7451],[121.5947,24.7464],[121.5946,24.7502],[121.5903,24.7512],[121.589,24.7552],[121.5908,24.7587],[121.591,24.7618],[121.5963,24.767],[121.5955,24.7691],[121.5976,24.7726],[121.5932,24.7823],[121.5937,24.7873],[121.599,24.7877],[121.6029,24.7894],[121.6056,24.7891],[121.6096,24.7938],[121.6135,24.7932],[121.6168,24.7939],[121.6206,24.7925],[121.6258,24.7953],[121.6248,24.8012],[121.6282,24.8079],[121.6314,24.8092],[121.6376,24.8096],[121.6388,24.8107],[121.644,24.8093],[121.6461,24.8101],[121.6474,24.814],[121.6534,24.8112],[121.6596,24.811],[121.663,24.8126],[121.669,24.818],[121.6742,24.8141],[121.6772,24.8141],[121.6806,24.8175],[121.6893,24.8172],[121.6898,24.8226],[121.6887,24.8261],[121.6922,24.8272],[121.6964,24.8303],[121.6969,24.8346],[121.7021,24.8345],[121.709,24.8406],[121.7137,24.8416],[121.7153,24.844],[121.7185,24.8456],[121.7222,24.85],[121.7251,24.8507],[121.7273,24.8533],[121.7326,24.8558],[121.7385,24.8552],[121.7418,24.8525],[121.7456,24.8528],[121.748,24.855],[121.7508,24.8545],[121.7536,24.8561],[121.7604,24.8568],[121.7644,24.8599],[121.7692,24.8659],[121.771,24.8649],[121.7755,24.8651],[121.7752,24.8668],[121.7789,24.8713],[121.7832,24.8742],[121.7848,24.8764],[121.7822,24.8792],[121.7817,24.8895],[121.7858,24.8908],[121.7859,24.8926],[121.7898,24.8933],[121.7923,24.8956],[121.792,24.8999],[121.7964,24.9012],[121.8022,24.901],[121.8105,24.9036],[121.8117,24.9065],[121.8183,24.9027],[121.8224,24.9046],[121.828,24.9054],[121.8319,24.9049],[121.8379,24.9099],[121.8395,24.9127],[121.8434,24.9154],[121.8455,24.9193],[121.8538,24.9253],[121.8539,24.9278],[121.8491,24.9303],[121.8466,24.9379],[121.8424,24.9394],[121.839,24.9446],[121.8418,24.9514],[121.8414,24.9543],[121.8469,24.9603],[121.8517,24.9599],[121.8581,24.9632],[121.8612,24.9637],[121.8715,24.9607],[121.8763,24.9616],[121.8824,24.9642],[121.8896,24.9648],[121.8971,24.967],[121.9026,24.9742],[121.9054,24.9734],[121.9068,24.9756],[121.91,24.9748],[121.912,24.978],[121.9162,24.9795],[121.9286,24.9797],[121.9336,24.9809],[121.9344,24.9831],[121.9375,24.983],[121.9385,24.9848],[121.9429,24.9863],[121.9446,24.9882],[121.9481,24.9867],[121.9502,24.9883],[121.9596,24.9883],[121.9628,24.9878],[121.966,24.9831],[121.9677,24.9848],[121.9747,24.9853],[121.9761,24.9888],[121.9809,24.9911],[121.9839,24.9906],[121.9893,24.9938],[121.9907,24.9957],[121.9967,25.0008],[122.0036,25.002],[122.0052,25.0016],[122.0057,25.0079],[122.0066,25.0101],[122.0054,25.0148],[122.0018,25.0148],[121.9999,25.0184],[121.9976,25.0195],[121.9939,25.016],[121.9902,25.0211],[121.983,25.0249],[121.9779,25.0266],[121.9736,25.0266],[121.9669,25.0239],[121.9649,25.0247],[121.9609,25.023],[121.9528,25.0223],[121.9471,25.0211],[121.9422,25.0246],[121.9345,25.0324],[121.929,25.041],[121.9295,25.0502],[121.9316,25.0541],[121.9307,25.0609],[121.9317,25.0631],[121.9281,25.0688],[121.9284,25.0709],[121.9255,25.072],[121.9198,25.0763],[121.9167,25.076],[121.9154,25.0787],[121.9169,25.0814],[121.9144,25.0855],[121.9144,25.0898],[121.9164,25.0931],[121.9196,25.0949],[121.9186,25.1003],[121.9196,25.1026],[121.9265,25.1081],[121.9232,25.1133],[121.9186,25.1125],[121.916,25.1139],[121.9169,25.1162],[121.9208,25.1175],[121.9212,25.1213],[121.9241,25.124],[121.9268,25.1288],[121.924,25.1301],[121.9158,25.1268],[121.9147,25.1242],[121.9113,25.1235],[121.9045,25.1243],[121.9008,25.1208],[121.8971,25.1197],[121.8898,25.1199],[121.8888,25.1223],[121.883,25.124],[121.88,25.1231],[121.8774,25.125],[121.8695,25.1251],[121.8685,25.1231],[121.8641,25.1242],[121.8561,25.1248],[121.8491,25.1272],[121.845,25.1272],[121.841,25.1282],[121.8353,25.1282],[121.8337,25.127],[121.8288,25.1277],[121.8296,25.1244],[121.8278,25.1225],[121.8225,25.1214],[121.8191,25.1268],[121.8266,25.136],[121.8227,25.1363],[121.8174,25.1341],[121.8154,25.1348],[121.8104,25.1331],[121.8068,25.1356],[121.8035,25.1362],[121.8025,25.1343],[121.8051,25.1317],[121.8038,25.1272],[121.805,25.1252],[121.8023,25.1218],[121.7972,25.1254],[121.7945,25.1263],[121.7942,25.1233],[121.7971,25.1213],[121.7988,25.1185],[121.7977,25.1143],[121.7948,25.1126],[121.7902,25.1122],[121.7861,25.118],[121.7839,25.1168],[121.7795,25.1175],[121.7734,25.1203],[121.7694,25.1146],[121.7667,25.1125],[121.763,25.1134],[121.7594,25.1126],[121.7575,25.1109],[121.7518,25.111],[121.75,25.1097],[121.7528,25.1069],[121.7558,25.1086],[121.7599,25.1006],[121.7584,25.0937],[121.7598,25.0901],[121.7591,25.0845],[121.7616,25.0784],[121.7684,25.0785],[121.7715,25.0759],[121.7757,25.0701],[121.773,25.0668],[121.772,25.0635],[121.77,25.0635],[121.7649,25.0597],[121.7625,25.057],[121.7593,25.0595],[121.7511,25.0573],[121.7459,25.053],[121.7397,25.0531],[121.7378,25.0547],[121.7301,25.0533],[121.7258,25.0584],[121.7225,25.0585],[121.7191,25.0615],[121.7148,25.0666],[121.7104,25.068],[121.7069,25.0666],[121.7043,25.0679],[121.6994,25.0674],[121.6965,25.0701],[121.6921,25.0703],[121.6884,25.0717],[121.679,25.0789],[121.6817,25.0848],[121.6816,25.0876],[121.6792,25.0877],[121.674,25.0829],[121.668,25.0857],[121.6646,25.0893],[121.6558,25.0934],[121.6562,25.0947],[121.6506,25.0985],[121.6489,25.1019],[121.6522,25.1044],[121.6503,25.1095],[121.6464,25.1135],[121.6444,25.125],[121.6429,25.1279],[121.6381,25.1308],[121.6346,25.1305],[121.6282,25.1352],[121.6269,25.1399],[121.6293,25.1418],[121.6345,25.1439],[121.6463,25.1458],[121.6497,25.1449],[121.6512,25.1475],[121.655,25.1488],[121.6581,25.1522],[121.6637,25.1522],[121.6692,25.1534],[121.6715,25.1556],[121.6776,25.1557],[121.6782,25.1572],[121.6831,25.1606],[121.6873,25.1616],[121.6912,25.1663],[121.699,25.1673],[121.7009,25.1692],[121.7021,25.1734],[121.7064,25.1739],[121.7096,25.1766],[121.7046,25.1768],[121.7027,25.1806],[121.6961,25.1818],[121.6927,25.1801],[121.6877,25.1856],[121.6858,25.1895],[121.6858,25.1921],[121.6902,25.197],[121.6923,25.1978],[121.694,25.2015],[121.6918,25.2047],[121.6939,25.2081],[121.701,25.2142],[121.7013,25.2175],[121.6962,25.2143],[121.6928,25.2088],[121.6842,25.2072],[121.6793,25.2028],[121.6778,25.2046],[121.6724,25.2021],[121.6706,25.2027],[121.6621,25.2084]],[[121.5837,25.1946],[121.5839,25.1887],[121.5809,25.1815],[121.5833,25.1776],[121.583,25.1755],[121.5774,25.1702],[121.577,25.1671],[121.5793,25.1655],[121.5848,25.1647],[121.5878,25.163],[121.5899,25.1637],[121.5918,25.1577],[121.5916,25.1551],[121.5894,25.1523],[121.5938,25.1499],[121.5983,25.1404],[121.6053,25.1355],[121.6046,25.1308],[121.6076,25.1293],[121.6041,25.1257],[121.6017,25.126],[121.6008,25.1218],[121.5988,25.1196],[121.5955,25.1134],[121.5975,25.1095],[121.608,25.1068],[121.6105,25.1051],[121.6154,25.1039],[121.6175,25.101],[121.6261,25.0957],[121.625,25.0937],[121.626,25.0905],[121.6286,25.0865],[121.6277,25.0826],[121.6242,25.0803],[121.6232,25.0758],[121.6206,25.0733],[121.6208,25.0691],[121.6176,25.0676],[121.6185,25.0631],[121.6208,25.0614],[121.6243,25.0555],[121.6202,25.0557],[121.6209,25.0534],[121.6163,25.0506],[121.6169,25.0475],[121.6191,25.0435],[121.6249,25.0377],[121.6264,25.0379],[121.634,25.0348],[121.638,25.0337],[121.6488,25.0279],[121.6551,25.0275],[121.6615,25.0305],[121.6648,25.0295],[121.6654,25.026],[121.6641,25.0233],[121.6576,25.0232],[121.6541,25.0244],[121.6499,25.024],[121.6462,25.0217],[121.6429,25.0246],[121.6408,25.0235],[121.6357,25.0232],[121.6326,25.0256],[121.6309,25.0247],[121.6288,25.0198],[121.6227,25.0173],[121.6206,25.0184],[121.6102,25.0199],[121.6041,25.0191],[121.6027,25.0151],[121.5975,25.0148],[121.5956,25.007],[121.6005,25.0011],[121.6005,24.9984],[121.5981,24.9945],[121.5991,24.9916],[121.602,24.9904],[121.6019,24.988],[121.5998,24.9863],[121.6007,24.9803],[121.6001,24.977],[121.6051,24.9744],[121.6114,24.9746],[121.6198,24.9701],[121.6198,24.9674],[121.6171,24.9675],[121.6102,24.9649],[121.6084,24.9631],[121.6058,24.9631],[121.602,24.9611],[121.5969,24.9606],[121.5934,24.9642],[121.5912,24.9646],[121.5857,24.9632],[121.5786,24.9666],[121.5745,24.9668],[121.5728,24.964],[121.5653,24.9641],[121.5612,24.9647],[121.5585,24.9683],[121.5575,24.9723],[121.5537,24.9773],[121.5531,24.9813],[121.5538,24.9852],[121.5517,24.9874],[121.5492,24.9838],[121.5461,24.9833],[121.5442,24.9846],[121.544,24.9883],[121.5392,24.9877],[121.5368,24.9887],[121.5371,24.9923],[121.535,24.9951],[121.5317,24.9947],[121.5305,24.9978],[121.5318,25.0014],[121.5339,25.0036],[121.5309,25.0097],[121.5262,25.0114],[121.5216,25.0176],[121.5189,25.0198],[121.5143,25.0214],[121.5088,25.0212],[121.5048,25.0174],[121.5013,25.0129],[121.4973,25.01],[121.4931,25.0092],[121.4896,25.0132],[121.4887,25.0154],[121.4885,25.0239],[121.485,25.0313],[121.4836,25.0362],[121.4847,25.0387],[121.4888,25.0426],[121.4955,25.0429],[121.5004,25.0452],[121.5045,25.0495],[121.5064,25.056],[121.5054,25.0597],[121.5068,25.0645],[121.507,25.0711],[121.5062,25.0744],[121.5026,25.083],[121.5,25.087],[121.4887,25.0972],[121.4811,25.1009],[121.4786,25.1014],[121.4667,25.1016],[121.4616,25.1037],[121.4579,25.1064],[121.4577,25.1104],[121.4609,25.116],[121.4591,25.123],[121.4643,25.124],[121.4643,25.1273],[121.4656,25.1316],[121.4694,25.136],[121.4816,25.1479],[121.4839,25.1508],[121.4866,25.1508],[121.4929,25.1609],[121.4989,25.1652],[121.5019,25.1695],[121.5026,25.1733],[121.5047,25.1733],[121.5104,25.1694],[121.5139,25.171],[121.5196,25.1692],[121.5226,25.1747],[121.5217,25.1791],[121.5258,25.1829],[121.5334,25.1836],[121.5358,25.1867],[121.5406,25.1871],[121.5428,25.1888],[121.5432,25.1937],[121.549,25.1982],[121.5526,25.1988],[121.5517,25.2036],[121.5531,25.2042],[121.5549,25.2083],[121.5593,25.2102],[121.5628,25.2092],[121.5636,25.2056],[121.5662,25.1996],[121.57,25.1983],[121.5719,25.1953],[121.5754,25.1956],[121.5792,25.1941],[121.5805,25.1954],[121.5837,25.1946]]]},"properties":{"COUNTYID":"F","COUNTYCODE":"65000","COUNTYNAME":"新北市","COUNTYENG":"New Taipei City"},"id":"65000"},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[121.452,24.3647],[121.4487,24.3715],[121.448,24.3748],[121.4429,24.3732],[121.4378,24.3829],[121.4294,24.3831],[121.4233,24.3814],[121.4196,24.3792],[121.4132,24.3798],[121.4085,24.3781],[121.4041,24.3778],[121.4019,24.3796],[121.3983,24.3778],[121.3958,24.378],[121.3932,24.3753],[121.3902,24.3753],[121.3879,24.37],[121.3804,24.367],[121.3774,24.3684],[121.3738,24.368],[121.3693,24.3725],[121.3671,24.3787],[121.3698,24.3821],[121.3688,24.3849],[121.3647,24.3892],[121.3594,24.3904],[121.3553,24.3931],[121.3426,24.3928],[121.3383,24.3902],[121.3311,24.3985],[121.3279,24.3983],[121.3261,24.4006],[121.325,24.4069],[121.3274,24.4127],[121.3274,24.4215],[121.3287,24.4274],[121.3277,24.4306],[121.3283,24.4335],[121.3206,24.4411],[121.3177,24.4415],[121.313,24.4368],[121.3103,24.4364],[121.3057,24.4326],[121.2976,24.4331],[121.2932,24.4311],[121.2843,24.4306],[121.2785,24.4293],[121.2716,24.4298],[121.2693,24.4274],[121.2654,24.4286],[121.2608,24.4286],[121.2591,24.4309],[121.26,24.4362],[121.2589,24.438],[121.2589,24.4277],[121.2576,24.425],[121.25,24.4249],[121.2461,24.4228],[121.2436,24.4196],[121.2436,24.4166],[121.242,24.4142],[121.2434,24.4109],[121.2436,24.4059],[121.2401,24.4035],[121.2381,24.4004],[121.2346,24.3971],[121.2349,24.3915],[121.2316,24.3877],[121.2321,24.384],[121.2253,24.383],[121.2185,24.3813],[121.2159,24.3795],[121.2136,24.3817],[121.2135,24.384],[121.2104,24.3916],[121.2108,24.395],[121.2072,24.3979],[121.2007,24.3976],[121.1971,24.3964],[121.1969,24.392],[121.1902,24.3816],[121.1833,24.381],[121.1791,24.3782],[121.1733,24.3731],[121.1741,24.369],[121.169,24.3643],[121.1689,24.3615],[121.1594,24.3608],[121.1555,24.359],[121.1489,24.3579],[121.1443,24.3582],[121.1409,24.3596],[121.1356,24.3525],[121.1334,24.3516],[121.1302,24.3447],[121.1281,24.3419],[121.1253,24.342],[121.1222,24.3367],[121.1216,24.3307],[121.1185,24.3304],[121.1149,24.3286],[121.1085,24.331],[121.1036,24.3266],[121.1023,24.3246],[121.0982,24.3237],[121.0952,24.322],[121.094,24.3195],[121.0863,24.3177],[121.0815,24.3241],[121.0791,24.323],[121.0731,24.3228],[121.0739,24.3192],[121.0698,24.3156],[121.066,24.3157],[121.059,24.3129],[121.0553,24.3104],[121.055,24.3078],[121.0527,24.3047],[121.0523,24.2995],[121.0493,24.296],[121.0452,24.2953],[121.0381,24.2964],[121.0341,24.2978],[121.0313,24.3026],[121.0288,24.3052],[121.02,24.3092],[121.0177,24.3117],[121.0145,24.3201],[121.0116,24.324],[121.0082,24.3269],[121.0047,24.332],[121.0001,24.3325],[120.9976,24.3301],[120.9918,24.3296],[120.9854,24.3318],[120.982,24.3359],[120.9802,24.3346],[120.973,24.3336],[120.9662,24.3335],[120.96,24.3352],[120.9571,24.3392],[120.9425,24.3391],[120.9359,24.3429],[120.9328,24.3421],[120.9263,24.3386],[120.9201,24.3373],[120.9172,24.3359],[120.9167,24.3327],[120.9194,24.3251],[120.9207,24.3181],[120.9201,24.3112],[120.9225,24.3047],[120.9215,24.302],[120.9175,24.2995],[120.9119,24.2941],[120.9051,24.2923],[120.9022,24.2922],[120.8907,24.2942],[120.8761,24.295],[120.8657,24.2927],[120.8572,24.2891],[120.8505,24.2885],[120.8377,24.2893],[120.8336,24.2905],[120.8239,24.2983],[120.82,24.3031],[120.8184,24.3063],[120.8074,24.3152],[120.8047,24.3161],[120.796,24.3164],[120.7927,24.3175],[120.784,24.3183],[120.7721,24.3222],[120.767,24.3256],[120.7626,24.3262],[120.7583,24.3287],[120.7433,24.3405],[120.7385,24.3451],[120.7344,24.3479],[120.7301,24.352],[120.7231,24.3547],[120.7073,24.3579],[120.7075,24.3617],[120.7038,24.3617],[120.6923,24.3675],[120.6898,24.3745],[120.6862,24.3785],[120.6774,24.384],[120.6786,24.3871],[120.6724,24.3913],[120.671,24.3911],[120.6673,24.3966],[120.6657,24.4003],[120.6582,24.4066],[120.6487,24.4095],[120.6433,24.4153],[120.6432,24.4218],[120.6407,24.4235],[120.6397,24.4278],[120.6319,24.4326],[120.6288,24.4378],[120.6219,24.4403],[120.6193,24.4349],[120.6152,24.4321],[120.6147,24.4287],[120.6103,24.4259],[120.6102,24.4233],[120.6076,24.4195],[120.6026,24.4156],[120.5988,24.4078],[120.594,24.4039],[120.5898,24.3992],[120.5867,24.3923],[120.5836,24.3898],[120.5711,24.3742],[120.5704,24.3698],[120.5682,24.3661],[120.5656,24.3639],[120.5653,24.3637],[120.5653,24.3636],[120.5653,24.3637],[120.5656,24.3639],[120.5647,24.3637],[120.5628,24.3618],[120.5617,24.3579],[120.5593,24.3543],[120.5593,24.3502],[120.5558,24.3477],[120.5504,24.3415],[120.5458,24.3349],[120.5408,24.3354],[120.5391,24.3321],[120.5331,24.3231],[120.5323,24.3205],[120.526,24.3177],[120.5237,24.3158],[120.5189,24.3064],[120.5168,24.2985],[120.514,24.2948],[120.5111,24.2927],[120.5079,24.2836],[120.4982,24.2639],[120.4929,24.2659],[120.4889,24.2563],[120.4895,24.2533],[120.481,24.2334],[120.4797,24.2322],[120.4763,24.2243],[120.4723,24.2223],[120.4688,24.2145],[120.4657,24.215],[120.4603,24.2116],[120.4566,24.2072],[120.4979,24.1934],[120.5044,24.1911],[120.5081,24.1872],[120.5103,24.1825],[120.5175,24.1653],[120.5208,24.1585],[120.5242,24.1529],[120.5259,24.1485],[120.525,24.1436],[120.5234,24.1399],[120.5335,24.1258],[120.5403,24.124],[120.5452,24.1166],[120.549,24.1142],[120.5537,24.1128],[120.5578,24.1126],[120.5653,24.1099],[120.5731,24.1083],[120.5766,24.1096],[120.5836,24.1095],[120.5864,24.107],[120.5949,24.1049],[120.6,24.1052],[120.6026,24.1029],[120.6124,24.1024],[120.6125,24.0991],[120.6149,24.0902],[120.6149,24.085],[120.6195,24.0732],[120.6242,24.0713],[120.6254,24.0687],[120.6257,24.0569],[120.6234,24.052],[120.6258,24.0468],[120.626,24.0416],[120.6277,24.0376],[120.6242,24.0334],[120.6248,24.0305],[120.6278,24.0296],[120.6361,24.0311],[120.6375,24.0285],[120.6446,24.0259],[120.6462,24.0283],[120.6444,24.0323],[120.6467,24.0338],[120.6518,24.0285],[120.6557,24.0307],[120.6611,24.0257],[120.6635,24.025],[120.6684,24.0207],[120.6786,24.014],[120.686,24.0105],[120.6949,24.0071],[120.7064,24.0052],[120.7192,24.0097],[120.7318,24.009],[120.7436,24.0022],[120.7454,23.9992],[120.7476,23.9991],[120.7511,24.0029],[120.7556,24.0034],[120.7578,24.006],[120.7625,24.0062],[120.7678,24.0092],[120.7707,24.0091],[120.7714,24.0144],[120.7752,24.0185],[120.7798,24.0203],[120.783,24.0238],[120.7847,24.0242],[120.7855,24.0287],[120.7896,24.0313],[120.7915,24.0306],[120.7921,24.036],[120.7974,24.0411],[120.7966,24.0428],[120.8007,24.0486],[120.8011,24.0515],[120.8033,24.0521],[120.8033,24.0564],[120.8063,24.0604],[120.8069,24.0642],[120.8089,24.0662],[120.8118,24.066],[120.8158,24.0687],[120.8194,24.0685],[120.8207,24.0698],[120.8294,24.0725],[120.8284,24.0766],[120.8289,24.0837],[120.8281,24.0864],[120.8285,24.0945],[120.8324,24.0981],[120.8303,24.1021],[120.8346,24.1078],[120.8345,24.1132],[120.8362,24.1169],[120.8451,24.1246],[120.8489,24.1239],[120.8536,24.1246],[120.8562,24.1215],[120.8572,24.1173],[120.8586,24.1162],[120.8657,24.1155],[120.8689,24.1176],[120.8723,24.1169],[120.8778,24.1097],[120.8814,24.1005],[120.8791,24.0984],[120.8782,24.0935],[120.8769,24.0914],[120.8783,24.0852],[120.8803,24.0886],[120.882,24.0884],[120.8861,24.0956],[120.89,24.0966],[120.8915,24.0982],[120.891,24.1017],[120.8941,24.1064],[120.8942,24.1107],[120.8902,24.1135],[120.8919,24.1161],[120.8962,24.1165],[120.9052,24.1141],[120.9073,24.1105],[120.9096,24.1092],[120.9132,24.109],[120.9149,24.1075],[120.9199,24.1074],[120.9231,24.1099],[120.9271,24.1117],[120.9319,24.1122],[120.9355,24.1157],[120.9396,24.1183],[120.9445,24.1229],[120.9484,24.1249],[120.9494,24.1275],[120.9519,24.1273],[120.9571,24.1242],[120.961,24.1202],[120.971,24.1203],[120.9736,24.1196],[120.9753,24.1169],[120.9836,24.1191],[120.9852,24.1202],[120.989,24.1187],[120.9919,24.1208],[120.9923,24.1254],[120.9996,24.1278],[121.0006,24.1325],[121.0026,24.133],[121.0069,24.1411],[121.0082,24.147],[121.0158,24.1562],[121.0199,24.1589],[121.0239,24.1579],[121.0274,24.1587],[121.0298,24.1573],[121.0314,24.1526],[121.0309,24.1495],[121.0335,24.1486],[121.0357,24.1509],[121.0358,24.1532],[121.038,24.1582],[121.0429,24.1586],[121.0474,24.1601],[121.0507,24.1581],[121.0527,24.1548],[121.0574,24.1587],[121.0593,24.1627],[121.0646,24.163],[121.0663,24.1655],[121.0728,24.17],[121.075,24.17],[121.081,24.1748],[121.0849,24.1759],[121.0908,24.182],[121.0911,24.1849],[121.0941,24.188],[121.0963,24.1921],[121.1093,24.198],[121.1134,24.1968],[121.1184,24.1973],[121.1229,24.196],[121.1317,24.1969],[121.1364,24.1963],[121.1414,24.1996],[121.143,24.2053],[121.1461,24.2088],[121.1481,24.2131],[121.1515,24.2129],[121.157,24.2148],[121.161,24.2152],[121.1641,24.2199],[121.1644,24.2218],[121.1676,24.2254],[121.1735,24.2203],[121.1785,24.214],[121.1822,24.2121],[121.1852,24.2145],[121.1888,24.215],[121.1965,24.2231],[121.2016,24.2216],[121.2082,24.2217],[121.2168,24.2261],[121.2188,24.2289],[121.2271,24.2256],[121.2308,24.2261],[121.2304,24.2235],[121.238,24.2197],[121.2407,24.2217],[121.2442,24.2225],[121.2474,24.2288],[121.2512,24.238],[121.2546,24.2428],[121.2609,24.2456],[121.265,24.2459],[121.2687,24.2383],[121.2707,24.2366],[121.2767,24.2356],[121.2799,24.2298],[121.2832,24.231],[121.2862,24.2291],[121.2889,24.2302],[121.2941,24.2296],[121.2951,24.2322],[121.2989,24.2358],[121.3025,24.2363],[121.3039,24.2337],[121.3086,24.2349],[121.3163,24.2345],[121.3194,24.2319],[121.3248,24.233],[121.3302,24.2312],[121.3403,24.2259],[121.343,24.2236],[121.3522,24.2343],[121.3532,24.2401],[121.3525,24.2432],[121.3562,24.2446],[121.3607,24.2439],[121.3643,24.2471],[121.367,24.2522],[121.3731,24.2541],[121.3766,24.253],[121.3802,24.2533],[121.3851,24.2551],[121.3858,24.2586],[121.3855,24.2644],[121.3831,24.2684],[121.3822,24.2762],[121.3805,24.2798],[121.3866,24.2841],[121.3909,24.2897],[121.3935,24.2882],[121.397,24.2902],[121.403,24.2962],[121.4046,24.3023],[121.4054,24.3083],[121.412,24.3073],[121.4167,24.3092],[121.4202,24.3076],[121.4232,24.3082],[121.4261,24.314],[121.4316,24.3205],[121.4348,24.322],[121.4345,24.3256],[121.4325,24.3296],[121.4345,24.3387],[121.4378,24.3423],[121.4358,24.3463],[121.4378,24.3521],[121.4399,24.3545],[121.4416,24.3586],[121.4473,24.3595],[121.4487,24.3628],[121.452,24.3647]]]},"properties":{"COUNTYID":"B","COUNTYCODE":"66000","COUNTYNAME":"臺中市","COUNTYENG":"Taichung City"},"id":"66000"},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[120.6534,23.2245],[120.6482,23.2255],[120.6443,23.2253],[120.6389,23.228],[120.6282,23.2294],[120.625,23.2273],[120.6181,23.2255],[120.6168,23.2235],[120.6129,23.224],[120.6097,23.2227],[120.6065,23.2258],[120.6029,23.226],[120.5972,23.229],[120.5959,23.2365],[120.5923,23.2397],[120.5917,23.2361],[120.5902,23.2343],[120.5867,23.2243],[120.5801,23.2195],[120.5783,23.2148],[120.5747,23.2178],[120.571,23.2182],[120.5653,23.221],[120.5609,23.2173],[120.555,23.2175],[120.5527,23.2201],[120.5505,23.2207],[120.5489,23.2235],[120.544,23.2266],[120.5358,23.2293],[120.5318,23.2298],[120.5296,23.2326],[120.5257,23.2315],[120.5191,23.2393],[120.5242,23.242],[120.5303,23.2485],[120.5322,23.2553],[120.5307,23.256],[120.5261,23.2665],[120.5204,23.2718],[120.5223,23.2741],[120.521,23.2798],[120.5227,23.2814],[120.523,23.2843],[120.5218,23.2879],[120.5246,23.2917],[120.5263,23.2958],[120.524,23.302],[120.5232,23.3094],[120.5234,23.313],[120.5273,23.3146],[120.5316,23.3181],[120.5319,23.3212],[120.5338,23.322],[120.5369,23.3264],[120.54,23.3278],[120.537,23.333],[120.5303,23.3381],[120.5267,23.3394],[120.5245,23.3383],[120.5231,23.3407],[120.517,23.3425],[120.5155,23.3438],[120.5104,23.3441],[120.5077,23.343],[120.5044,23.3467],[120.5036,23.3512],[120.5057,23.3554],[120.5081,23.3528],[120.5122,23.3554],[120.5124,23.36],[120.5105,23.3644],[120.5082,23.3649],[120.5046,23.369],[120.4995,23.368],[120.4961,23.37],[120.4943,23.3695],[120.4914,23.3725],[120.4884,23.3731],[120.4861,23.3702],[120.4829,23.3723],[120.4836,23.3775],[120.4854,23.3803],[120.4933,23.3838],[120.4972,23.3845],[120.4992,23.3879],[120.4946,23.3945],[120.4902,23.3956],[120.4868,23.3924],[120.4794,23.3876],[120.474,23.3974],[120.4675,23.4011],[120.4651,23.4007],[120.4555,23.4067],[120.4445,23.411],[120.4412,23.4131],[120.4381,23.4134],[120.4321,23.4107],[120.4304,23.4065],[120.4219,23.407],[120.4197,23.4036],[120.4178,23.4088],[120.414,23.4112],[120.4107,23.4101],[120.4081,23.4134],[120.4042,23.41],[120.3964,23.4073],[120.381,23.4034],[120.3719,23.4033],[120.3598,23.4027],[120.3534,23.4012],[120.3494,23.4013],[120.343,23.3982],[120.3429,23.3965],[120.3333,23.3858],[120.3284,23.3861],[120.3218,23.3835],[120.3178,23.3884],[120.3148,23.3885],[120.311,23.3856],[120.3105,23.3821],[120.3109,23.3754],[120.308,23.3749],[120.3035,23.3759],[120.2929,23.3754],[120.2855,23.3666],[120.2837,23.3618],[120.2838,23.3587],[120.2861,23.354],[120.2862,23.3503],[120.2812,23.3482],[120.2765,23.3481],[120.2739,23.3525],[120.2705,23.3537],[120.2676,23.3535],[120.2646,23.3509],[120.2607,23.3445],[120.2675,23.3448],[120.2671,23.3407],[120.2564,23.3311],[120.2496,23.3291],[120.2466,23.327],[120.2397,23.3276],[120.2361,23.3245],[120.2345,23.3202],[120.2314,23.3165],[120.2284,23.3105],[120.2268,23.3048],[120.2209,23.296],[120.2144,23.2924],[120.2118,23.2927],[120.2086,23.2913],[120.2045,23.2918],[120.1996,23.2943],[120.1915,23.3004],[120.1884,23.3012],[120.1862,23.2981],[120.1861,23.2954],[120.189,23.2929],[120.1879,23.29],[120.1805,23.2909],[120.1759,23.294],[120.1739,23.2999],[120.1711,23.3044],[120.1662,23.3085],[120.1608,23.3106],[120.1557,23.3103],[120.1545,23.3129],[120.1499,23.3131],[120.1485,23.3146],[120.1486,23.3196],[120.1471,23.3211],[120.1377,23.3273],[120.1325,23.3297],[120.1181,23.3402],[120.114,23.3362],[120.111,23.3318],[120.1136,23.3223],[120.1125,23.3156],[120.1108,23.3104],[120.1068,23.3053],[120.1031,23.3045],[120.1019,23.3023],[120.0963,23.2991],[120.0943,23.295],[120.0951,23.2881],[120.095,23.2804],[120.0934,23.2661],[120.0921,23.2593],[120.0894,23.2498],[120.0877,23.2466],[120.0806,23.2376],[120.0807,23.229],[120.0819,23.2223],[120.0795,23.2069],[120.0775,23.2005],[120.0722,23.1911],[120.0696,23.1828],[120.0676,23.1795],[120.0632,23.1702],[120.0604,23.1633],[120.0589,23.1581],[120.0556,23.1362],[120.0537,23.1334],[120.0521,23.126],[120.0439,23.1192],[120.0408,23.113],[120.0388,23.1103],[120.0349,23.1016],[120.0316,23.087],[120.0278,23.0747],[120.0285,23.0724],[120.0269,23.0679],[120.0285,23.0665],[120.039,23.068],[120.0459,23.0586],[120.0515,23.0501],[120.0579,23.0431],[120.0619,23.0443],[120.0677,23.041],[120.0745,23.0389],[120.0871,23.0327],[120.1102,23.0189],[120.1196,23.0112],[120.1347,22.9994],[120.1411,22.996],[120.1407,22.9932],[120.1475,22.9878],[120.15,22.9842],[120.1532,22.9814],[120.1587,22.9749],[120.1598,22.9712],[120.1554,22.9675],[120.1554,22.9647],[120.1598,22.9636],[120.1629,22.9649],[120.1646,22.9617],[120.1687,22.9569],[120.1721,22.9495],[120.1738,22.9428],[120.1751,22.9344],[120.1749,22.9266],[120.173,22.9193],[120.1749,22.9142],[120.1747,22.9117],[120.1769,22.9124],[120.1814,22.9164],[120.1866,22.9197],[120.1921,22.9212],[120.1947,22.9203],[120.2023,22.9154],[120.2081,22.9152],[120.2117,22.912],[120.2161,22.9099],[120.2203,22.9096],[120.2226,22.9113],[120.2259,22.9156],[120.228,22.9169],[120.2317,22.9154],[120.2315,22.9092],[120.2331,22.9054],[120.2429,22.9035],[120.2476,22.8982],[120.252,22.8951],[120.2565,22.894],[120.2588,22.8969],[120.2569,22.899],[120.2579,22.9017],[120.2605,22.9018],[120.2734,22.8953],[120.2796,22.8964],[120.2778,22.9019],[120.2797,22.9049],[120.2848,22.9047],[120.3034,22.9004],[120.3091,22.9006],[120.3142,22.8998],[120.3169,22.8981],[120.3192,22.8951],[120.3209,22.8956],[120.3249,22.9005],[120.3278,22.897],[120.3309,22.8905],[120.3323,22.8893],[120.3451,22.8894],[120.3488,22.8906],[120.3509,22.8893],[120.3556,22.8939],[120.3611,22.8979],[120.3596,22.9015],[120.366,22.9022],[120.3663,22.9051],[120.3723,22.9079],[120.3713,22.9114],[120.3738,22.9142],[120.3768,22.9149],[120.3775,22.9182],[120.383,22.92],[120.3869,22.9183],[120.3887,22.9207],[120.3922,22.9223],[120.399,22.9223],[120.4011,22.9185],[120.4053,22.9182],[120.4063,22.9147],[120.4089,22.9126],[120.4108,22.9144],[120.4162,22.9161],[120.4184,22.9212],[120.4221,22.9276],[120.422,22.9294],[120.4257,22.9358],[120.4261,22.9394],[120.4286,22.9408],[120.4307,22.9484],[120.4327,22.9526],[120.4329,22.9555],[120.4362,22.9605],[120.4383,22.966],[120.4422,22.9738],[120.4426,22.9773],[120.4455,22.9794],[120.4496,22.9772],[120.4531,22.9785],[120.4548,22.9826],[120.4532,22.9849],[120.455,22.991],[120.4597,22.9899],[120.461,22.9924],[120.4591,22.9959],[120.4615,22.9982],[120.4595,23.0008],[120.4604,23.0035],[120.4672,23.0036],[120.4708,23.0024],[120.48,23.0036],[120.4813,23.0111],[120.4827,23.0156],[120.487,23.019],[120.4913,23.0209],[120.5037,23.0286],[120.509,23.0351],[120.5139,23.0387],[120.5196,23.0449],[120.5222,23.0456],[120.523,23.0496],[120.5265,23.053],[120.5316,23.0567],[120.5351,23.0574],[120.538,23.0607],[120.5465,23.0655],[120.5546,23.0689],[120.5591,23.0734],[120.56,23.0769],[120.5634,23.08],[120.5671,23.082],[120.5748,23.0914],[120.5741,23.0949],[120.5756,23.0956],[120.5773,23.0996],[120.5831,23.1079],[120.5882,23.1143],[120.5889,23.1201],[120.5884,23.1234],[120.5905,23.1272],[120.5948,23.1318],[120.5952,23.1345],[120.5975,23.1374],[120.6011,23.1442],[120.6055,23.1463],[120.612,23.152],[120.6112,23.156],[120.615,23.1595],[120.6165,23.1631],[120.6208,23.1628],[120.6231,23.164],[120.6252,23.1678],[120.6311,23.1704],[120.6298,23.1745],[120.6362,23.1751],[120.6374,23.1806],[120.6404,23.1832],[120.6384,23.1857],[120.6366,23.1904],[120.6389,23.1932],[120.6408,23.1984],[120.6431,23.2011],[120.6433,23.2033],[120.6461,23.207],[120.6488,23.2087],[120.6515,23.2085],[120.6538,23.2153],[120.6562,23.2176],[120.6552,23.2235],[120.6534,23.2245]]]},"properties":{"COUNTYID":"D","COUNTYCODE":"67000","COUNTYNAME":"臺南市","COUNTYENG":"Tainan City"},"id":"67000"},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[121.2834,25.1178],[121.269,25.1199],[121.2598,25.1236],[121.2576,25.1221],[121.2436,25.1186],[121.2392,25.1201],[121.2396,25.1157],[121.2364,25.116],[121.2294,25.1152],[121.2201,25.1119],[121.2121,25.11],[121.2012,25.1045],[121.1977,25.1041],[121.1972,25.1023],[121.1914,25.1008],[121.1886,25.098],[121.1843,25.0959],[121.1747,25.0937],[121.1701,25.0902],[121.1646,25.0874],[121.1551,25.0837],[121.1441,25.0806],[121.1374,25.0795],[121.1326,25.0781],[121.125,25.0768],[121.1121,25.0723],[121.1052,25.0692],[121.101,25.068],[121.0949,25.0634],[121.09,25.063],[121.0866,25.0564],[121.0847,25.056],[121.0721,25.0499],[121.066,25.0492],[121.0589,25.0475],[121.0561,25.0462],[121.0487,25.0408],[121.0438,25.0347],[121.0385,25.0309],[121.0286,25.0206],[121.0254,25.0146],[121.02,25.0082],[121.0184,25.0051],[121.0162,24.9954],[121.0146,24.9928],[121.0093,24.9902],[121.0112,24.9843],[121.011,24.9784],[121.0099,24.975],[121.0035,24.9676],[120.9984,24.9586],[120.9936,24.9555],[120.9865,24.9483],[120.9848,24.9436],[120.982,24.94],[120.9875,24.939],[120.9918,24.935],[120.9939,24.939],[120.9982,24.9408],[121.0025,24.9399],[121.0044,24.9434],[121.0072,24.9462],[121.0096,24.9442],[121.0193,24.9404],[121.0223,24.9414],[121.0259,24.9405],[121.0294,24.9452],[121.0306,24.9439],[121.0382,24.9464],[121.0405,24.9433],[121.0463,24.9436],[121.0484,24.9396],[121.0518,24.9386],[121.0554,24.9363],[121.0584,24.9367],[121.0577,24.9333],[121.0593,24.9266],[121.0609,24.9241],[121.0608,24.9204],[121.0582,24.9139],[121.0592,24.9081],[121.0576,24.9058],[121.0612,24.9037],[121.0684,24.9031],[121.0709,24.9012],[121.077,24.8987],[121.0834,24.8989],[121.0865,24.8965],[121.0928,24.8934],[121.1007,24.895],[121.1091,24.8977],[121.111,24.891],[121.1078,24.8864],[121.1136,24.8825],[121.1149,24.8826],[121.124,24.8799],[121.1281,24.881],[121.1329,24.8798],[121.1342,24.8784],[121.1395,24.8824],[121.1444,24.8805],[121.1493,24.8812],[121.1522,24.8802],[121.1557,24.8807],[121.1579,24.8773],[121.1569,24.8737],[121.1594,24.869],[121.1613,24.8593],[121.1564,24.8558],[121.1557,24.8503],[121.1535,24.8486],[121.1518,24.8438],[121.1548,24.8422],[121.1602,24.8373],[121.1738,24.8335],[121.1759,24.8311],[121.1762,24.8275],[121.1835,24.8249],[121.1966,24.8177],[121.1989,24.8149],[121.201,24.8179],[121.2033,24.8173],[121.2031,24.8146],[121.2059,24.8124],[121.2028,24.8099],[121.2046,24.8074],[121.2083,24.8074],[121.2096,24.8095],[121.217,24.8124],[121.2197,24.8117],[121.2187,24.8086],[121.2196,24.804],[121.2215,24.7995],[121.228,24.8028],[121.2405,24.8057],[121.2434,24.8087],[121.2454,24.807],[121.2477,24.8025],[121.2468,24.7985],[121.2479,24.7965],[121.2522,24.7939],[121.2575,24.7928],[121.2605,24.793],[121.2612,24.79],[121.2588,24.7845],[121.2598,24.7822],[121.2706,24.7784],[121.2713,24.7748],[121.2731,24.7748],[121.2788,24.7707],[121.2843,24.7704],[121.2875,24.7687],[121.2925,24.7677],[121.2936,24.7643],[121.2986,24.7629],[121.3003,24.7636],[121.3041,24.7574],[121.3077,24.7552],[121.3051,24.7502],[121.3052,24.7461],[121.3008,24.7414],[121.3001,24.7374],[121.2982,24.7338],[121.2987,24.7307],[121.3007,24.7297],[121.3056,24.7241],[121.3076,24.7202],[121.3064,24.7131],[121.3032,24.7082],[121.3023,24.7019],[121.2995,24.6966],[121.3006,24.6941],[121.3039,24.6929],[121.3132,24.6977],[121.3179,24.6981],[121.321,24.6955],[121.3231,24.6954],[121.3298,24.691],[121.3359,24.6836],[121.339,24.6791],[121.3404,24.6664],[121.3439,24.6694],[121.3455,24.6664],[121.3485,24.6679],[121.3537,24.6647],[121.3532,24.6548],[121.3522,24.6525],[121.353,24.6488],[121.3524,24.6434],[121.3556,24.6414],[121.3574,24.6376],[121.3581,24.6335],[121.3612,24.6338],[121.3651,24.6319],[121.3654,24.6283],[121.3633,24.6232],[121.3588,24.6165],[121.3612,24.6101],[121.3635,24.608],[121.3633,24.6031],[121.3673,24.5988],[121.3715,24.5973],[121.3734,24.5934],[121.3812,24.5904],[121.3876,24.5865],[121.3917,24.5865],[121.3957,24.5889],[121.403,24.5917],[121.4089,24.5994],[121.4158,24.6023],[121.4183,24.601],[121.4226,24.6022],[121.4276,24.6057],[121.4306,24.6145],[121.4329,24.6162],[121.4335,24.6188],[121.4357,24.6213],[121.4348,24.6245],[121.4404,24.635],[121.4447,24.6369],[121.4456,24.6391],[121.4454,24.6438],[121.4488,24.646],[121.4513,24.6517],[121.4488,24.6532],[121.4477,24.6584],[121.4497,24.6623],[121.4539,24.6644],[121.455,24.6679],[121.4598,24.6733],[121.4692,24.6718],[121.4722,24.6731],[121.48,24.6739],[121.4755,24.6807],[121.4754,24.6838],[121.4739,24.6853],[121.473,24.6898],[121.4748,24.6935],[121.4742,24.6961],[121.4696,24.6961],[121.4638,24.7009],[121.4599,24.7028],[121.4571,24.7031],[121.4501,24.7058],[121.4488,24.7122],[121.4451,24.7148],[121.4414,24.7235],[121.441,24.7259],[121.4383,24.7266],[121.4341,24.7304],[121.4354,24.7329],[121.4328,24.7373],[121.4321,24.7421],[121.4303,24.7437],[121.4286,24.7482],[121.4285,24.7535],[121.4256,24.7584],[121.4259,24.7605],[121.4234,24.7617],[121.4254,24.767],[121.432,24.7722],[121.4348,24.7726],[121.4379,24.7746],[121.4402,24.7788],[121.446,24.7817],[121.4496,24.7864],[121.4488,24.7882],[121.4385,24.7951],[121.4371,24.7981],[121.438,24.8039],[121.4366,24.8121],[121.4318,24.8137],[121.4253,24.82],[121.4235,24.8255],[121.4168,24.8257],[121.4161,24.8287],[121.4138,24.832],[121.4156,24.8356],[121.4104,24.8386],[121.4088,24.8406],[121.4028,24.8436],[121.4007,24.8417],[121.3981,24.8417],[121.3964,24.8436],[121.3935,24.844],[121.385,24.8408],[121.3846,24.8381],[121.3791,24.8351],[121.3735,24.8333],[121.3727,24.8351],[121.3642,24.8381],[121.3603,24.8381],[121.3578,24.8395],[121.3549,24.844],[121.3465,24.8459],[121.3395,24.8434],[121.3359,24.844],[121.3372,24.8484],[121.3428,24.8487],[121.3464,24.8502],[121.3485,24.8485],[121.3533,24.8505],[121.3556,24.8551],[121.3534,24.8587],[121.3494,24.8597],[121.3473,24.8621],[121.3459,24.8682],[121.3492,24.8687],[121.3529,24.8709],[121.3544,24.8732],[121.3506,24.8786],[121.3471,24.8787],[121.3456,24.8801],[121.3447,24.8859],[121.3413,24.8876],[121.3421,24.8908],[121.3382,24.8932],[121.3335,24.8922],[121.3321,24.8936],[121.3337,24.899],[121.3319,24.8999],[121.3278,24.8959],[121.3205,24.9002],[121.3219,24.9036],[121.3262,24.9072],[121.3226,24.9124],[121.3176,24.9165],[121.3247,24.9234],[121.3276,24.9247],[121.3352,24.9249],[121.3398,24.9285],[121.3341,24.9298],[121.3225,24.9281],[121.3232,24.9313],[121.3177,24.9354],[121.316,24.9387],[121.3248,24.9436],[121.3304,24.9445],[121.3316,24.9455],[121.328,24.949],[121.3281,24.9555],[121.3291,24.9623],[121.3281,24.9729],[121.325,24.9711],[121.3237,24.9728],[121.3276,24.9748],[121.3271,24.9777],[121.3303,24.9793],[121.334,24.9787],[121.3367,24.9807],[121.341,24.9802],[121.3428,24.9823],[121.3471,24.9788],[121.3523,24.9809],[121.354,24.9778],[121.3613,24.9779],[121.3639,24.9796],[121.3691,24.9768],[121.3722,24.9798],[121.3765,24.9811],[121.379,24.9834],[121.3819,24.9839],[121.3856,24.9865],[121.3835,24.9883],[121.3841,24.9957],[121.387,24.996],[121.3905,24.9933],[121.3943,24.9935],[121.3969,24.9973],[121.4033,25.0003],[121.4003,25.0041],[121.3997,25.0068],[121.3926,25.0105],[121.3927,25.0139],[121.3971,25.0162],[121.4017,25.0158],[121.4041,25.0172],[121.4091,25.0184],[121.4088,25.0208],[121.4045,25.0238],[121.4015,25.028],[121.3983,25.0301],[121.3985,25.0346],[121.4013,25.0374],[121.3944,25.0401],[121.3931,25.0436],[121.3985,25.0438],[121.398,25.0468],[121.4004,25.0515],[121.3975,25.0515],[121.3925,25.0537],[121.3865,25.0538],[121.3883,25.0571],[121.3889,25.0607],[121.3864,25.0633],[121.3769,25.0661],[121.3634,25.0649],[121.355,25.0651],[121.3551,25.0671],[121.3523,25.0688],[121.3478,25.0698],[121.3485,25.074],[121.3445,25.0751],[121.345,25.0797],[121.3491,25.0812],[121.3466,25.0836],[121.3438,25.0842],[121.3383,25.0837],[121.33,25.0884],[121.3278,25.0912],[121.325,25.0926],[121.3176,25.0932],[121.3107,25.0965],[121.3031,25.0967],[121.3015,25.0981],[121.3015,25.1011],[121.2983,25.1045],[121.2955,25.103],[121.2916,25.1026],[121.2902,25.1069],[121.2871,25.1068],[121.2827,25.1096],[121.2839,25.1124],[121.2834,25.1178]]]},"properties":{"COUNTYID":"H","COUNTYCODE":"68000","COUNTYNAME":"桃園市","COUNTYENG":"Taoyuan City"},"id":"68000"},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[121.2589,24.438],[121.2589,24.4407],[121.2617,24.4442],[121.2621,24.4476],[121.2606,24.4517],[121.2626,24.4553],[121.258,24.4575],[121.2581,24.4632],[121.2491,24.466],[121.2444,24.4699],[121.244,24.4756],[121.2427,24.4782],[121.2346,24.4838],[121.2336,24.4874],[121.2297,24.4891],[121.2289,24.4923],[121.2229,24.4948],[121.2186,24.4984],[121.2219,24.5048],[121.2224,24.5074],[121.2174,24.5097],[121.2176,24.514],[121.2138,24.5147],[121.2097,24.5115],[121.2067,24.513],[121.2005,24.5115],[121.1953,24.507],[121.1916,24.5075],[121.1868,24.5054],[121.183,24.508],[121.1779,24.5077],[121.1747,24.5048],[121.1705,24.5041],[121.1693,24.5026],[121.1618,24.5035],[121.155,24.5068],[121.1503,24.5062],[121.1458,24.51],[121.1434,24.5109],[121.1368,24.5066],[121.1297,24.5067],[121.1237,24.5101],[121.121,24.5084],[121.1173,24.5085],[121.1133,24.5065],[121.1089,24.5009],[121.1056,24.5007],[121.1025,24.4983],[121.0981,24.4964],[121.0908,24.4977],[121.0844,24.5013],[121.0791,24.4991],[121.0754,24.4995],[121.0719,24.4984],[121.0721,24.5034],[121.0703,24.5061],[121.0685,24.5124],[121.0685,24.5166],[121.0667,24.5206],[121.067,24.523],[121.072,24.5263],[121.0784,24.529],[121.0778,24.5342],[121.0801,24.5378],[121.0806,24.5409],[121.076,24.544],[121.0735,24.5494],[121.0702,24.5504],[121.0623,24.5561],[121.0582,24.5579],[121.0584,24.5606],[121.0617,24.5597],[121.0628,24.5575],[121.0682,24.5623],[121.0703,24.5631],[121.0715,24.5661],[121.0727,24.5728],[121.0745,24.5759],[121.0755,24.581],[121.079,24.5842],[121.0796,24.5882],[121.0831,24.5899],[121.0813,24.6006],[121.0757,24.6036],[121.0761,24.6085],[121.0743,24.6129],[121.068,24.6149],[121.0661,24.618],[121.0615,24.6218],[121.0586,24.6201],[121.0532,24.6154],[121.0495,24.6185],[121.0434,24.6271],[121.0405,24.627],[121.0335,24.6321],[121.0293,24.6329],[121.0262,24.6356],[121.026,24.6399],[121.0237,24.6418],[121.0189,24.6408],[121.0141,24.6409],[121.0101,24.644],[121.0082,24.65],[121.0107,24.6523],[121.0103,24.6562],[121.0058,24.6553],[121.0035,24.6563],[121.0002,24.6547],[120.997,24.6547],[120.9949,24.6595],[120.9917,24.6595],[120.9891,24.663],[120.9871,24.6635],[120.9832,24.6698],[120.9798,24.6735],[120.9765,24.6754],[120.9775,24.6782],[120.9754,24.6847],[120.9727,24.6859],[120.97,24.6845],[120.9652,24.688],[120.9663,24.6911],[120.97,24.6939],[120.9741,24.6994],[120.9724,24.7042],[120.9758,24.7049],[120.9767,24.7065],[120.9738,24.7119],[120.9707,24.712],[120.9661,24.7096],[120.9639,24.7116],[120.9606,24.709],[120.9596,24.7069],[120.9568,24.7066],[120.9549,24.7044],[120.9509,24.7077],[120.9498,24.7112],[120.9481,24.7112],[120.9454,24.7083],[120.9421,24.7073],[120.9365,24.7108],[120.9354,24.7126],[120.9287,24.7153],[120.9231,24.7146],[120.9196,24.717],[120.9178,24.7162],[120.9136,24.7174],[120.9162,24.7218],[120.9138,24.7241],[120.9138,24.7276],[120.9125,24.7315],[120.9084,24.7367],[120.9086,24.7405],[120.9061,24.7408],[120.9014,24.7363],[120.8971,24.7333],[120.8908,24.7318],[120.8873,24.7339],[120.8847,24.7328],[120.881,24.7333],[120.8745,24.7383],[120.864,24.7262],[120.8613,24.7217],[120.8577,24.7103],[120.8577,24.7067],[120.8562,24.7025],[120.8516,24.6994],[120.8461,24.6945],[120.8404,24.6879],[120.8326,24.6824],[120.8276,24.6768],[120.8231,24.6727],[120.8208,24.6728],[120.8094,24.6712],[120.8028,24.6691],[120.7886,24.667],[120.7822,24.6645],[120.7764,24.6609],[120.7692,24.6538],[120.7678,24.6504],[120.7636,24.6491],[120.7608,24.6431],[120.7571,24.6401],[120.7564,24.6325],[120.754,24.6312],[120.7524,24.6274],[120.7489,24.626],[120.7458,24.6217],[120.7382,24.6209],[120.735,24.6174],[120.7327,24.6133],[120.73,24.6108],[120.7238,24.6082],[120.7203,24.6042],[120.7158,24.601],[120.7135,24.5949],[120.7098,24.591],[120.7081,24.5825],[120.7039,24.5752],[120.7045,24.5728],[120.702,24.569],[120.7012,24.5615],[120.6982,24.5585],[120.6958,24.5512],[120.6934,24.5489],[120.691,24.539],[120.6883,24.5356],[120.6881,24.5305],[120.6847,24.5214],[120.6776,24.5145],[120.6743,24.5096],[120.6713,24.5021],[120.6684,24.4998],[120.6678,24.4934],[120.6653,24.4898],[120.6657,24.4875],[120.6658,24.4875],[120.6657,24.4875],[120.6651,24.4838],[120.6618,24.4838],[120.6585,24.4773],[120.6527,24.4707],[120.6485,24.4675],[120.6438,24.4626],[120.6403,24.4607],[120.6396,24.4567],[120.6352,24.4525],[120.6314,24.4477],[120.628,24.4458],[120.6219,24.4403],[120.6288,24.4378],[120.6319,24.4326],[120.6397,24.4278],[120.6407,24.4235],[120.6432,24.4218],[120.6433,24.4153],[120.6487,24.4095],[120.6582,24.4066],[120.6657,24.4003],[120.6673,24.3966],[120.671,24.3911],[120.6724,24.3913],[120.6786,24.3871],[120.6774,24.384],[120.6862,24.3785],[120.6898,24.3745],[120.6923,24.3675],[120.7038,24.3617],[120.7075,24.3617],[120.7073,24.3579],[120.7231,24.3547],[120.7301,24.352],[120.7344,24.3479],[120.7385,24.3451],[120.7433,24.3405],[120.7583,24.3287],[120.7626,24.3262],[120.767,24.3256],[120.7721,24.3222],[120.784,24.3183],[120.7927,24.3175],[120.796,24.3164],[120.8047,24.3161],[120.8074,24.3152],[120.8184,24.3063],[120.82,24.3031],[120.8239,24.2983],[120.8336,24.2905],[120.8377,24.2893],[120.8505,24.2885],[120.8572,24.2891],[120.8657,24.2927],[120.8761,24.295],[120.8907,24.2942],[120.9022,24.2922],[120.9051,24.2923],[120.9119,24.2941],[120.9175,24.2995],[120.9215,24.302],[120.9225,24.3047],[120.9201,24.3112],[120.9207,24.3181],[120.9194,24.3251],[120.9167,24.3327],[120.9172,24.3359],[120.9201,24.3373],[120.9263,24.3386],[120.9328,24.3421],[120.9359,24.3429],[120.9425,24.3391],[120.9571,24.3392],[120.96,24.3352],[120.9662,24.3335],[120.973,24.3336],[120.9802,24.3346],[120.982,24.3359],[120.9854,24.3318],[120.9918,24.3296],[120.9976,24.3301],[121.0001,24.3325],[121.0047,24.332],[121.0082,24.3269],[121.0116,24.324],[121.0145,24.3201],[121.0177,24.3117],[121.02,24.3092],[121.0288,24.3052],[121.0313,24.3026],[121.0341,24.2978],[121.0381,24.2964],[121.0452,24.2953],[121.0493,24.296],[121.0523,24.2995],[121.0527,24.3047],[121.055,24.3078],[121.0553,24.3104],[121.059,24.3129],[121.066,24.3157],[121.0698,24.3156],[121.0739,24.3192],[121.0731,24.3228],[121.0791,24.323],[121.0815,24.3241],[121.0863,24.3177],[121.094,24.3195],[121.0952,24.322],[121.0982,24.3237],[121.1023,24.3246],[121.1036,24.3266],[121.1085,24.331],[121.1149,24.3286],[121.1185,24.3304],[121.1216,24.3307],[121.1222,24.3367],[121.1253,24.342],[121.1281,24.3419],[121.1302,24.3447],[121.1334,24.3516],[121.1356,24.3525],[121.1409,24.3596],[121.1443,24.3582],[121.1489,24.3579],[121.1555,24.359],[121.1594,24.3608],[121.1689,24.3615],[121.169,24.3643],[121.1741,24.369],[121.1733,24.3731],[121.1791,24.3782],[121.1833,24.381],[121.1902,24.3816],[121.1969,24.392],[121.1971,24.3964],[121.2007,24.3976],[121.2072,24.3979],[121.2108,24.395],[121.2104,24.3916],[121.2135,24.384],[121.2136,24.3817],[121.2159,24.3795],[121.2185,24.3813],[121.2253,24.383],[121.2321,24.384],[121.2316,24.3877],[121.2349,24.3915],[121.2346,24.3971],[121.2381,24.4004],[121.2401,24.4035],[121.2436,24.4059],[121.2434,24.4109],[121.242,24.4142],[121.2436,24.4166],[121.2436,24.4196],[121.2461,24.4228],[121.25,24.4249],[121.2576,24.425],[121.2589,24.4277],[121.2589,24.438]]]},"properties":{"COUNTYID":"K","COUNTYCODE":"10005","COUNTYNAME":"苗栗縣","COUNTYENG":"Miaoli County"},"id":"10005"},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[120.4476,23.5182],[120.4445,23.5173],[120.4406,23.5183],[120.4421,23.5137],[120.4405,23.5119],[120.4371,23.5141],[120.435,23.5173],[120.4325,23.5137],[120.4334,23.509],[120.4263,23.5088],[120.425,23.5064],[120.4167,23.5054],[120.4133,23.5023],[120.4125,23.4995],[120.4083,23.4987],[120.4079,23.5033],[120.4038,23.5037],[120.401,23.5019],[120.3993,23.4988],[120.3944,23.5008],[120.3893,23.4986],[120.3898,23.4915],[120.3947,23.4907],[120.3939,23.489],[120.3934,23.4824],[120.3969,23.4804],[120.3988,23.478],[120.3993,23.4711],[120.3966,23.4677],[120.3942,23.4664],[120.3942,23.4625],[120.4051,23.4634],[120.4118,23.4647],[120.4152,23.4603],[120.4239,23.4614],[120.4293,23.461],[120.4301,23.4525],[120.4351,23.4489],[120.438,23.4447],[120.4359,23.4442],[120.4395,23.4396],[120.4416,23.4401],[120.4476,23.4436],[120.45,23.4434],[120.453,23.445],[120.4554,23.4503],[120.4574,23.4529],[120.4609,23.4553],[120.4643,23.4555],[120.465,23.4584],[120.4687,23.4616],[120.4768,23.462],[120.4808,23.4599],[120.4819,23.4578],[120.4896,23.4522],[120.4953,23.4529],[120.497,23.4567],[120.5007,23.461],[120.4998,23.4655],[120.5037,23.4672],[120.509,23.4752],[120.5018,23.4809],[120.5037,23.4852],[120.5019,23.4863],[120.5002,23.4907],[120.4946,23.4901],[120.4894,23.4914],[120.4839,23.4957],[120.4847,23.5014],[120.4833,23.5046],[120.48,23.5043],[120.4736,23.5069],[120.4709,23.504],[120.47,23.5],[120.4655,23.4987],[120.4626,23.5007],[120.4604,23.5066],[120.4576,23.5091],[120.4562,23.512],[120.457,23.5158],[120.4533,23.5159],[120.4476,23.5182]]]},"properties":{"COUNTYID":"I","COUNTYCODE":"10020","COUNTYNAME":"嘉義市","COUNTYENG":"Chiayi City"},"id":"10020"},{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[120.1519,23.3927],[120.1498,23.3985],[120.1447,23.4038],[120.1439,23.4029],[120.1477,23.3985],[120.1504,23.3893],[120.1519,23.3927]]],[[[120.7309,23.6108],[120.7264,23.607],[120.7246,23.6038],[120.7278,23.6014],[120.7284,23.5993],[120.7325,23.5974],[120.7299,23.5934],[120.7327,23.5894],[120.734,23.5844],[120.7321,23.5772],[120.7351,23.5752],[120.7361,23.5704],[120.7338,23.571],[120.7279,23.5703],[120.7247,23.5719],[120.7183,23.569],[120.7161,23.5711],[120.7106,23.5709],[120.709,23.5757],[120.7043,23.575],[120.7013,23.576],[120.6942,23.5765],[120.687,23.5751],[120.6826,23.5721],[120.676,23.5707],[120.6733,23.5737],[120.6725,23.5766],[120.67,23.5788],[120.6605,23.5762],[120.6581,23.5729],[120.6507,23.5724],[120.6492,23.575],[120.6434,23.578],[120.6483,23.5815],[120.6493,23.5857],[120.6471,23.5878],[120.6491,23.5925],[120.6451,23.5935],[120.6436,23.5927],[120.6369,23.592],[120.6306,23.5899],[120.6252,23.5907],[120.6187,23.5841],[120.6155,23.5853],[120.6102,23.5826],[120.6063,23.5842],[120.5999,23.5832],[120.5975,23.5847],[120.5898,23.5857],[120.5861,23.5827],[120.5802,23.5823],[120.5767,23.5835],[120.5711,23.5879],[120.5671,23.5877],[120.5655,23.5895],[120.5611,23.5886],[120.5578,23.5892],[120.5566,23.5929],[120.5523,23.5939],[120.548,23.5938],[120.5369,23.5947],[120.533,23.597],[120.529,23.6004],[120.5281,23.6028],[120.5225,23.6075],[120.518,23.6105],[120.5151,23.6151],[120.5102,23.6194],[120.5064,23.6259],[120.5075,23.6312],[120.5036,23.6353],[120.4995,23.6351],[120.4929,23.6332],[120.4887,23.6359],[120.4872,23.6339],[120.4879,23.6307],[120.4787,23.6328],[120.4775,23.6299],[120.474,23.6311],[120.4602,23.6293],[120.4585,23.6277],[120.4543,23.6263],[120.4512,23.6271],[120.4499,23.6294],[120.4447,23.6306],[120.441,23.6259],[120.4376,23.6265],[120.4367,23.6217],[120.4336,23.6229],[120.4301,23.6184],[120.427,23.6193],[120.4254,23.618],[120.422,23.6193],[120.4201,23.6252],[120.4156,23.6214],[120.413,23.624],[120.4066,23.6252],[120.4064,23.6327],[120.4048,23.6342],[120.4009,23.6322],[120.4026,23.6269],[120.3922,23.6236],[120.3924,23.6224],[120.386,23.6207],[120.3828,23.6147],[120.3831,23.6126],[120.3798,23.6099],[120.3706,23.6094],[120.3665,23.6078],[120.3659,23.603],[120.3593,23.5952],[120.3514,23.5929],[120.3433,23.5919],[120.335,23.593],[120.3336,23.5915],[120.3334,23.5818],[120.3323,23.578],[120.3265,23.5739],[120.3191,23.5724],[120.3119,23.575],[120.3074,23.5747],[120.3067,23.5715],[120.3098,23.5679],[120.3106,23.5645],[120.3061,23.5629],[120.2972,23.5646],[120.2932,23.5642],[120.2892,23.5612],[120.2891,23.5574],[120.2908,23.5505],[120.2867,23.5478],[120.2805,23.546],[120.276,23.543],[120.2734,23.5335],[120.2719,23.5308],[120.2673,23.5307],[120.2617,23.5357],[120.2594,23.5412],[120.2561,23.5461],[120.2526,23.5463],[120.2464,23.5451],[120.2433,23.5436],[120.2419,23.5392],[120.2442,23.5319],[120.2471,23.5162],[120.2468,23.5141],[120.2431,23.5101],[120.2394,23.5078],[120.2309,23.5054],[120.223,23.5043],[120.2158,23.5069],[120.2045,23.5119],[120.1966,23.513],[120.1899,23.51],[120.1872,23.5106],[120.1825,23.5098],[120.1796,23.5104],[120.1724,23.5147],[120.1666,23.5172],[120.1646,23.5158],[120.1581,23.5159],[120.1493,23.5189],[120.1458,23.5208],[120.1458,23.5185],[120.1424,23.5174],[120.1254,23.5205],[120.1215,23.5195],[120.1189,23.5157],[120.1193,23.4962],[120.1204,23.493],[120.1234,23.4896],[120.1274,23.4879],[120.1336,23.4882],[120.1578,23.495],[120.1587,23.4936],[120.1697,23.4922],[120.1676,23.4907],[120.1581,23.4917],[120.1552,23.4911],[120.1566,23.4875],[120.1558,23.4841],[120.1515,23.4807],[120.1498,23.4784],[120.1491,23.4749],[120.145,23.4719],[120.1443,23.468],[120.1469,23.4652],[120.1446,23.4597],[120.139,23.4581],[120.1344,23.4541],[120.1354,23.4511],[120.1388,23.4527],[120.1399,23.4507],[120.1491,23.454],[120.1526,23.4539],[120.151,23.449],[120.1546,23.4478],[120.1465,23.4375],[120.1455,23.4286],[120.1513,23.4261],[120.1536,23.4284],[120.1556,23.4272],[120.1495,23.423],[120.1495,23.4198],[120.1513,23.4183],[120.1482,23.4147],[120.1493,23.4131],[120.1494,23.4061],[120.1518,23.3986],[120.1538,23.3992],[120.1541,23.4043],[120.16,23.4061],[120.1616,23.3981],[120.1617,23.3947],[120.1635,23.3929],[120.1578,23.3858],[120.1584,23.3812],[120.1564,23.3798],[120.1552,23.3847],[120.152,23.3886],[120.1481,23.3855],[120.1317,23.3848],[120.1319,23.3763],[120.1309,23.3704],[120.1294,23.3688],[120.128,23.3636],[120.1227,23.3543],[120.1199,23.3483],[120.1181,23.3402],[120.1325,23.3297],[120.1377,23.3273],[120.1471,23.3211],[120.1486,23.3196],[120.1485,23.3146],[120.1499,23.3131],[120.1545,23.3129],[120.1557,23.3103],[120.1608,23.3106],[120.1662,23.3085],[120.1711,23.3044],[120.1739,23.2999],[120.1759,23.294],[120.1805,23.2909],[120.1879,23.29],[120.189,23.2929],[120.1861,23.2954],[120.1862,23.2981],[120.1884,23.3012],[120.1915,23.3004],[120.1996,23.2943],[120.2045,23.2918],[120.2086,23.2913],[120.2118,23.2927],[120.2144,23.2924],[120.2209,23.296],[120.2268,23.3048],[120.2284,23.3105],[120.2314,23.3165],[120.2345,23.3202],[120.2361,23.3245],[120.2397,23.3276],[120.2466,23.327],[120.2496,23.3291],[120.2564,23.3311],[120.2671,23.3407],[120.2675,23.3448],[120.2607,23.3445],[120.2646,23.3509],[120.2676,23.3535],[120.2705,23.3537],[120.2739,23.3525],[120.2765,23.3481],[120.2812,23.3482],[120.2862,23.3503],[120.2861,23.354],[120.2838,23.3587],[120.2837,23.3618],[120.2855,23.3666],[120.2929,23.3754],[120.3035,23.3759],[120.308,23.3749],[120.3109,23.3754],[120.3105,23.3821],[120.311,23.3856],[120.3148,23.3885],[120.3178,23.3884],[120.3218,23.3835],[120.3284,23.3861],[120.3333,23.3858],[120.3429,23.3965],[120.343,23.3982],[120.3494,23.4013],[120.3534,23.4012],[120.3598,23.4027],[120.3719,23.4033],[120.381,23.4034],[120.3964,23.4073],[120.4042,23.41],[120.4081,23.4134],[120.4107,23.4101],[120.414,23.4112],[120.4178,23.4088],[120.4197,23.4036],[120.4219,23.407],[120.4304,23.4065],[120.4321,23.4107],[120.4381,23.4134],[120.4412,23.4131],[120.4445,23.411],[120.4555,23.4067],[120.4651,23.4007],[120.4675,23.4011],[120.474,23.3974],[120.4794,23.3876],[120.4868,23.3924],[120.4902,23.3956],[120.4946,23.3945],[120.4992,23.3879],[120.4972,23.3845],[120.4933,23.3838],[120.4854,23.3803],[120.4836,23.3775],[120.4829,23.3723],[120.4861,23.3702],[120.4884,23.3731],[120.4914,23.3725],[120.4943,23.3695],[120.4961,23.37],[120.4995,23.368],[120.5046,23.369],[120.5082,23.3649],[120.5105,23.3644],[120.5124,23.36],[120.5122,23.3554],[120.5081,23.3528],[120.5057,23.3554],[120.5036,23.3512],[120.5044,23.3467],[120.5077,23.343],[120.5104,23.3441],[120.5155,23.3438],[120.517,23.3425],[120.5231,23.3407],[120.5245,23.3383],[120.5267,23.3394],[120.5303,23.3381],[120.537,23.333],[120.54,23.3278],[120.5369,23.3264],[120.5338,23.322],[120.5319,23.3212],[120.5316,23.3181],[120.5273,23.3146],[120.5234,23.313],[120.5232,23.3094],[120.524,23.302],[120.5263,23.2958],[120.5246,23.2917],[120.5218,23.2879],[120.523,23.2843],[120.5227,23.2814],[120.521,23.2798],[120.5223,23.2741],[120.5204,23.2718],[120.5261,23.2665],[120.5307,23.256],[120.5322,23.2553],[120.5303,23.2485],[120.5242,23.242],[120.5191,23.2393],[120.5257,23.2315],[120.5296,23.2326],[120.5318,23.2298],[120.5358,23.2293],[120.544,23.2266],[120.5489,23.2235],[120.5505,23.2207],[120.5527,23.2201],[120.555,23.2175],[120.5609,23.2173],[120.5653,23.221],[120.571,23.2182],[120.5747,23.2178],[120.5783,23.2148],[120.5801,23.2195],[120.5867,23.2243],[120.5902,23.2343],[120.5917,23.2361],[120.5923,23.2397],[120.5959,23.2365],[120.5972,23.229],[120.6029,23.226],[120.6065,23.2258],[120.6097,23.2227],[120.6129,23.224],[120.6168,23.2235],[120.6181,23.2255],[120.625,23.2273],[120.6282,23.2294],[120.6389,23.228],[120.6443,23.2253],[120.6482,23.2255],[120.6534,23.2245],[120.6496,23.2282],[120.6509,23.238],[120.6492,23.2404],[120.6479,23.2448],[120.6485,23.249],[120.6419,23.2572],[120.6421,23.2613],[120.6406,23.2667],[120.6385,23.2688],[120.6412,23.2715],[120.6406,23.2742],[120.6432,23.276],[120.6419,23.2785],[120.6441,23.2822],[120.6431,23.2865],[120.6437,23.2893],[120.642,23.2927],[120.6437,23.2961],[120.6472,23.2974],[120.6506,23.2917],[120.6545,23.2914],[120.6581,23.296],[120.6654,23.2932],[120.6676,23.2937],[120.6714,23.29],[120.6737,23.2911],[120.6762,23.2886],[120.6802,23.2886],[120.6935,23.2845],[120.6995,23.2844],[120.7035,23.2895],[120.7023,23.2941],[120.7044,23.302],[120.7071,23.305],[120.7122,23.3087],[120.7163,23.3076],[120.7213,23.3083],[120.7306,23.3056],[120.7303,23.3112],[120.7323,23.3139],[120.7401,23.3178],[120.7422,23.3215],[120.7479,23.3219],[120.7533,23.3282],[120.7525,23.3312],[120.7568,23.3331],[120.7589,23.3366],[120.7571,23.3388],[120.7594,23.3443],[120.7649,23.3417],[120.7685,23.3439],[120.7733,23.3418],[120.7777,23.3435],[120.7832,23.3422],[120.7886,23.3486],[120.7885,23.3528],[120.7913,23.3532],[120.7927,23.3576],[120.7957,23.3567],[120.802,23.3651],[120.8047,23.3672],[120.8033,23.3698],[120.8049,23.371],[120.8085,23.3684],[120.813,23.3693],[120.8159,23.3714],[120.8212,23.3705],[120.8285,23.375],[120.8294,23.3774],[120.8294,23.3832],[120.8312,23.3868],[120.835,23.3874],[120.8369,23.3934],[120.8397,23.3961],[120.8384,23.3982],[120.8441,23.4041],[120.8453,23.4088],[120.8493,23.412],[120.8495,23.4202],[120.854,23.4232],[120.8568,23.4219],[120.8598,23.4239],[120.8648,23.4241],[120.8662,23.4261],[120.8699,23.4267],[120.8717,23.4296],[120.8756,23.4316],[120.882,23.4333],[120.8838,23.4363],[120.887,23.435],[120.8926,23.4454],[120.8954,23.4462],[120.8968,23.4509],[120.8988,23.4511],[120.9024,23.4541],[120.9045,23.4529],[120.9085,23.4569],[120.9127,23.4585],[120.9216,23.459],[120.9283,23.4568],[120.9348,23.4584],[120.9345,23.4615],[120.9366,23.4638],[120.9407,23.463],[120.947,23.4638],[120.956,23.4673],[120.9575,23.4695],[120.9522,23.4677],[120.9475,23.4671],[120.9423,23.4693],[120.9376,23.4731],[120.9342,23.473],[120.9312,23.4706],[120.9265,23.473],[120.9175,23.4757],[120.9151,23.4746],[120.9113,23.4761],[120.902,23.4761],[120.8996,23.4754],[120.8867,23.4756],[120.8848,23.4747],[120.8808,23.4676],[120.8731,23.4685],[120.8632,23.4736],[120.8581,23.4728],[120.8542,23.4733],[120.8499,23.4722],[120.8421,23.4733],[120.8393,23.4712],[120.8326,23.4747],[120.8299,23.4807],[120.8271,23.4834],[120.8253,23.4897],[120.8254,23.4948],[120.8228,23.4992],[120.8241,23.5053],[120.8228,23.5086],[120.8232,23.5109],[120.8201,23.5141],[120.8191,23.5195],[120.8204,23.5213],[120.8181,23.5235],[120.8121,23.5331],[120.8088,23.5358],[120.8082,23.5418],[120.8088,23.5459],[120.8115,23.5511],[120.8159,23.5531],[120.814,23.5554],[120.8207,23.5626],[120.8199,23.5645],[120.8218,23.5713],[120.8196,23.5745],[120.8213,23.5813],[120.8255,23.5864],[120.8206,23.5896],[120.8169,23.5954],[120.8183,23.5991],[120.8139,23.601],[120.8098,23.5987],[120.8058,23.5988],[120.8033,23.5966],[120.7949,23.5972],[120.7909,23.6009],[120.7837,23.6007],[120.7777,23.6023],[120.7742,23.6054],[120.7699,23.6062],[120.7694,23.6084],[120.7637,23.6125],[120.7584,23.6124],[120.7537,23.6148],[120.7509,23.6145],[120.7476,23.6112],[120.746,23.6126],[120.7412,23.6122],[120.739,23.6101],[120.7359,23.6095],[120.7309,23.6108]],[[120.4476,23.5182],[120.4533,23.5159],[120.457,23.5158],[120.4562,23.512],[120.4576,23.5091],[120.4604,23.5066],[120.4626,23.5007],[120.4655,23.4987],[120.47,23.5],[120.4709,23.504],[120.4736,23.5069],[120.48,23.5043],[120.4833,23.5046],[120.4847,23.5014],[120.4839,23.4957],[120.4894,23.4914],[120.4946,23.4901],[120.5002,23.4907],[120.5019,23.4863],[120.5037,23.4852],[120.5018,23.4809],[120.509,23.4752],[120.5037,23.4672],[120.4998,23.4655],[120.5007,23.461],[120.497,23.4567],[120.4953,23.4529],[120.4896,23.4522],[120.4819,23.4578],[120.4808,23.4599],[120.4768,23.462],[120.4687,23.4616],[120.465,23.4584],[120.4643,23.4555],[120.4609,23.4553],[120.4574,23.4529],[120.4554,23.4503],[120.453,23.445],[120.45,23.4434],[120.4476,23.4436],[120.4416,23.4401],[120.4395,23.4396],[120.4359,23.4442],[120.438,23.4447],[120.4351,23.4489],[120.4301,23.4525],[120.4293,23.461],[120.4239,23.4614],[120.4152,23.4603],[120.4118,23.4647],[120.4051,23.4634],[120.3942,23.4625],[120.3942,23.4664],[120.3966,23.4677],[120.3993,23.4711],[120.3988,23.478],[120.3969,23.4804],[120.3934,23.4824],[120.3939,23.489],[120.3947,23.4907],[120.3898,23.4915],[120.3893,23.4986],[120.3944,23.5008],[120.3993,23.4988],[120.401,23.5019],[120.4038,23.5037],[120.4079,23.5033],[120.4083,23.4987],[120.4125,23.4995],[120.4133,23.5023],[120.4167,23.5054],[120.425,23.5064],[120.4263,23.5088],[120.4334,23.509],[120.4325,23.5137],[120.435,23.5173],[120.4371,23.5141],[120.4405,23.5119],[120.4421,23.5137],[120.4406,23.5183],[120.4445,23.5173],[120.4476,23.5182]]]]},"properties":{"COUNTYID":"Q","COUNTYCODE":"10010","COUNTYNAME":"嘉義縣","COUNTYENG":"Chiayi County"},"id":"10010"},{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[118.1604,24.3786],[118.1633,24.3813],[118.1535,24.3838],[118.1514,24.3823],[118.155,24.3783],[118.1604,24.3786]]],[[[118.1626,24.3949],[118.1593,24.3942],[118.1626,24.387],[118.1648,24.387],[118.169,24.3842],[118.1728,24.3863],[118.171,24.3896],[118.1652,24.3901],[118.1626,24.3949]]],[[[118.2628,24.4233],[118.2663,24.4281],[118.2657,24.4293],[118.2673,24.4339],[118.2697,24.4376],[118.2682,24.4397],[118.2692,24.446],[118.2658,24.4468],[118.2622,24.4495],[118.26,24.4528],[118.2553,24.4552],[118.2459,24.4562],[118.2434,24.455],[118.2414,24.4561],[118.2305,24.4521],[118.2273,24.4479],[118.2242,24.4397],[118.2239,24.4369],[118.221,24.4325],[118.2168,24.4281],[118.2174,24.4208],[118.2134,24.4099],[118.2221,24.4088],[118.226,24.405],[118.2293,24.4083],[118.2323,24.4128],[118.2377,24.4149],[118.2417,24.4141],[118.2468,24.4147],[118.25,24.4183],[118.2487,24.4194],[118.2508,24.4226],[118.2572,24.4254],[118.2601,24.4243],[118.262,24.4222],[118.2629,24.4233],[118.2628,24.4233],[118.2629,24.4233],[118.2628,24.4233]]],[[[118.2777,24.4538],[118.2727,24.458],[118.2691,24.4541],[118.2768,24.4524],[118.2777,24.4538]]],[[[118.4652,24.4777],[118.469,24.4804],[118.4689,24.4837],[118.4619,24.4843],[118.4596,24.4859],[118.4551,24.4928],[118.4558,24.4959],[118.4545,24.4982],[118.4517,24.4994],[118.4495,24.5047],[118.4506,24.5099],[118.4361,24.5143],[118.4342,24.5158],[118.4315,24.5219],[118.4336,24.525],[118.4295,24.5253],[118.4293,24.5274],[118.4241,24.5277],[118.4192,24.5304],[118.4144,24.5283],[118.4109,24.5306],[118.4093,24.534],[118.4059,24.5326],[118.4077,24.5301],[118.4049,24.5272],[118.4,24.5286],[118.3996,24.5255],[118.4008,24.5222],[118.3968,24.5196],[118.392,24.5116],[118.384,24.5081],[118.3837,24.5027],[118.3857,24.4936],[118.3848,24.4922],[118.3807,24.4912],[118.3791,24.485],[118.3631,24.4717],[118.3566,24.471],[118.3504,24.4717],[118.3465,24.4741],[118.3414,24.4743],[118.3363,24.476],[118.3313,24.479],[118.327,24.483],[118.3243,24.4877],[118.3182,24.4932],[118.3129,24.4955],[118.3075,24.4958],[118.2998,24.4937],[118.2945,24.4913],[118.2897,24.486],[118.2865,24.4789],[118.2862,24.4748],[118.2953,24.4624],[118.2955,24.456],[118.2994,24.4513],[118.3022,24.4462],[118.303,24.4412],[118.3022,24.4362],[118.2984,24.4296],[118.2921,24.4214],[118.2909,24.4188],[118.2815,24.4173],[118.278,24.4136],[118.2867,24.4064],[118.2895,24.4053],[118.2906,24.402],[118.2954,24.3994],[118.297,24.3957],[118.3024,24.3963],[118.3051,24.3957],[118.3111,24.3898],[118.3127,24.3905],[118.3182,24.3884],[118.3199,24.3861],[118.32,24.3858],[118.3199,24.3861],[118.32,24.3858],[118.3223,24.3856],[118.325,24.388],[118.3295,24.388],[118.3296,24.388],[118.3295,24.388],[118.3296,24.388],[118.3342,24.3911],[118.3365,24.3972],[118.3375,24.4018],[118.3413,24.4088],[118.3451,24.4116],[118.3477,24.415],[118.3483,24.4184],[118.3509,24.421],[118.3572,24.425],[118.3703,24.431],[118.3855,24.4351],[118.3879,24.4345],[118.3949,24.4359],[118.396,24.4351],[118.4017,24.4352],[118.4072,24.4322],[118.4105,24.4286],[118.4226,24.4258],[118.4275,24.4239],[118.4313,24.4201],[118.433,24.4165],[118.4268,24.4072],[118.4308,24.4069],[118.4358,24.4081],[118.4375,24.4102],[118.4436,24.4111],[118.4459,24.4139],[118.4491,24.4158],[118.456,24.4177],[118.4577,24.4241],[118.4618,24.4251],[118.4646,24.4279],[118.4665,24.4316],[118.4605,24.4363],[118.4636,24.4411],[118.4662,24.442],[118.4684,24.4404],[118.4688,24.4403],[118.469,24.4402],[118.4688,24.4403],[118.469,24.4402],[118.4703,24.4402],[118.4709,24.4413],[118.4736,24.4444],[118.4742,24.4496],[118.4775,24.4495],[118.4762,24.4533],[118.4703,24.4552],[118.4654,24.4627],[118.464,24.4677],[118.4632,24.475],[118.4652,24.4777]]],[[[119.474,24.986],[119.4717,24.9869],[119.4656,24.9824],[119.4665,24.9795],[119.4736,24.9776],[119.4776,24.9809],[119.479,24.9839],[119.4775,24.9864],[119.474,24.986]]],[[[119.4583,24.9895],[119.458,24.9924],[119.4558,24.995],[119.4448,24.9996],[119.4433,24.9967],[119.4463,24.9916],[119.4467,24.9884],[119.4512,24.9876],[119.4569,24.9852],[119.4583,24.9895]]]]},"properties":{"COUNTYID":"W","COUNTYCODE":"09020","COUNTYNAME":"金門縣","COUNTYENG":"Kinmen County"},"id":"09020"},{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[114.3625,10.3732],[114.3714,10.3785],[114.3691,10.3799],[114.3618,10.3773],[114.3611,10.3769],[114.361,10.3768],[114.3608,10.3767],[114.3607,10.3766],[114.3606,10.3766],[114.3607,10.3766],[114.3607,10.3767],[114.3608,10.3767],[114.361,10.3768],[114.3611,10.3769],[114.361,10.3768],[114.3608,10.3767],[114.3607,10.3767],[114.3606,10.3766],[114.3606,10.3735],[114.3625,10.3732],[114.3626,10.3732],[114.3625,10.3732]]],[[[116.7102,20.7042],[116.7155,20.7016],[116.7302,20.6974],[116.7342,20.6975],[116.7319,20.7033],[116.7275,20.706],[116.723,20.7066],[116.7184,20.7093],[116.7137,20.7094],[116.7115,20.7083],[116.7108,20.7071],[116.7123,20.7062],[116.7116,20.7069],[116.712,20.7076],[116.712,20.7075],[116.712,20.7076],[116.712,20.7075],[116.7132,20.7077],[116.7155,20.7074],[116.719,20.7056],[116.7241,20.7049],[116.7243,20.7048],[116.7244,20.7048],[116.7243,20.7048],[116.7241,20.7049],[116.7244,20.7048],[116.7232,20.6998],[116.7201,20.7015],[116.7148,20.7027],[116.7148,20.7026],[116.7148,20.7027],[116.7148,20.7026],[116.7127,20.7052],[116.7103,20.7042],[116.7102,20.7042],[116.7103,20.7042],[116.7102,20.7042]]],[[[121.0153,23.4354],[121.0141,23.4379],[121.0106,23.4412],[121.0107,23.4467],[121.0158,23.4509],[121.0151,23.4541],[121.0116,23.4573],[121.0081,23.4624],[121.0038,23.463],[120.9997,23.4622],[120.9836,23.467],[120.9817,23.4688],[120.9783,23.4694],[120.9706,23.469],[120.9685,23.4712],[120.9614,23.4708],[120.9575,23.4695],[120.956,23.4673],[120.947,23.4638],[120.9407,23.463],[120.9366,23.4638],[120.9345,23.4615],[120.9348,23.4584],[120.9283,23.4568],[120.9216,23.459],[120.9127,23.4585],[120.9085,23.4569],[120.9045,23.4529],[120.9024,23.4541],[120.8988,23.4511],[120.8968,23.4509],[120.8954,23.4462],[120.8926,23.4454],[120.887,23.435],[120.8838,23.4363],[120.882,23.4333],[120.8756,23.4316],[120.8717,23.4296],[120.8699,23.4267],[120.8662,23.4261],[120.8648,23.4241],[120.8598,23.4239],[120.8568,23.4219],[120.854,23.4232],[120.8495,23.4202],[120.8493,23.412],[120.8453,23.4088],[120.8441,23.4041],[120.8384,23.3982],[120.8397,23.3961],[120.8369,23.3934],[120.835,23.3874],[120.8312,23.3868],[120.8294,23.3832],[120.8294,23.3774],[120.8285,23.375],[120.8212,23.3705],[120.8159,23.3714],[120.813,23.3693],[120.8085,23.3684],[120.8049,23.371],[120.8033,23.3698],[120.8047,23.3672],[120.802,23.3651],[120.7957,23.3567],[120.7927,23.3576],[120.7913,23.3532],[120.7885,23.3528],[120.7886,23.3486],[120.7832,23.3422],[120.7777,23.3435],[120.7733,23.3418],[120.7685,23.3439],[120.7649,23.3417],[120.7594,23.3443],[120.7571,23.3388],[120.7589,23.3366],[120.7568,23.3331],[120.7525,23.3312],[120.7533,23.3282],[120.7479,23.3219],[120.7422,23.3215],[120.7401,23.3178],[120.7323,23.3139],[120.7303,23.3112],[120.7306,23.3056],[120.7213,23.3083],[120.7163,23.3076],[120.7122,23.3087],[120.7071,23.305],[120.7044,23.302],[120.7023,23.2941],[120.7035,23.2895],[120.6995,23.2844],[120.6935,23.2845],[120.6802,23.2886],[120.6762,23.2886],[120.6737,23.2911],[120.6714,23.29],[120.6676,23.2937],[120.6654,23.2932],[120.6581,23.296],[120.6545,23.2914],[120.6506,23.2917],[120.6472,23.2974],[120.6437,23.2961],[120.642,23.2927],[120.6437,23.2893],[120.6431,23.2865],[120.6441,23.2822],[120.6419,23.2785],[120.6432,23.276],[120.6406,23.2742],[120.6412,23.2715],[120.6385,23.2688],[120.6406,23.2667],[120.6421,23.2613],[120.6419,23.2572],[120.6485,23.249],[120.6479,23.2448],[120.6492,23.2404],[120.6509,23.238],[120.6496,23.2282],[120.6534,23.2245],[120.6552,23.2235],[120.6562,23.2176],[120.6538,23.2153],[120.6515,23.2085],[120.6488,23.2087],[120.6461,23.207],[120.6433,23.2033],[120.6431,23.2011],[120.6408,23.1984],[120.6389,23.1932],[120.6366,23.1904],[120.6384,23.1857],[120.6404,23.1832],[120.6374,23.1806],[120.6362,23.1751],[120.6298,23.1745],[120.6311,23.1704],[120.6252,23.1678],[120.6231,23.164],[120.6208,23.1628],[120.6165,23.1631],[120.615,23.1595],[120.6112,23.156],[120.612,23.152],[120.6055,23.1463],[120.6011,23.1442],[120.5975,23.1374],[120.5952,23.1345],[120.5948,23.1318],[120.5905,23.1272],[120.5884,23.1234],[120.5889,23.1201],[120.5882,23.1143],[120.5831,23.1079],[120.5773,23.0996],[120.5756,23.0956],[120.5741,23.0949],[120.5748,23.0914],[120.5671,23.082],[120.5634,23.08],[120.56,23.0769],[120.5591,23.0734],[120.5546,23.0689],[120.5465,23.0655],[120.538,23.0607],[120.5351,23.0574],[120.5316,23.0567],[120.5265,23.053],[120.523,23.0496],[120.5222,23.0456],[120.5196,23.0449],[120.5139,23.0387],[120.509,23.0351],[120.5037,23.0286],[120.4913,23.0209],[120.487,23.019],[120.4827,23.0156],[120.4813,23.0111],[120.48,23.0036],[120.4708,23.0024],[120.4672,23.0036],[120.4604,23.0035],[120.4595,23.0008],[120.4615,22.9982],[120.4591,22.9959],[120.461,22.9924],[120.4597,22.9899],[120.455,22.991],[120.4532,22.9849],[120.4548,22.9826],[120.4531,22.9785],[120.4496,22.9772],[120.4455,22.9794],[120.4426,22.9773],[120.4422,22.9738],[120.4383,22.966],[120.4362,22.9605],[120.4329,22.9555],[120.4327,22.9526],[120.4307,22.9484],[120.4286,22.9408],[120.4261,22.9394],[120.4257,22.9358],[120.422,22.9294],[120.4221,22.9276],[120.4184,22.9212],[120.4162,22.9161],[120.4108,22.9144],[120.4089,22.9126],[120.4063,22.9147],[120.4053,22.9182],[120.4011,22.9185],[120.399,22.9223],[120.3922,22.9223],[120.3887,22.9207],[120.3869,22.9183],[120.383,22.92],[120.3775,22.9182],[120.3768,22.9149],[120.3738,22.9142],[120.3713,22.9114],[120.3723,22.9079],[120.3663,22.9051],[120.366,22.9022],[120.3596,22.9015],[120.3611,22.8979],[120.3556,22.8939],[120.3509,22.8893],[120.3488,22.8906],[120.3451,22.8894],[120.3323,22.8893],[120.3309,22.8905],[120.3278,22.897],[120.3249,22.9005],[120.3209,22.8956],[120.3192,22.8951],[120.3169,22.8981],[120.3142,22.8998],[120.3091,22.9006],[120.3034,22.9004],[120.2848,22.9047],[120.2797,22.9049],[120.2778,22.9019],[120.2796,22.8964],[120.2734,22.8953],[120.2605,22.9018],[120.2579,22.9017],[120.2569,22.899],[120.2588,22.8969],[120.2565,22.894],[120.252,22.8951],[120.2476,22.8982],[120.2429,22.9035],[120.2331,22.9054],[120.2315,22.9092],[120.2317,22.9154],[120.228,22.9169],[120.2259,22.9156],[120.2226,22.9113],[120.2203,22.9096],[120.2161,22.9099],[120.2117,22.912],[120.2081,22.9152],[120.2023,22.9154],[120.1947,22.9203],[120.1921,22.9212],[120.1866,22.9197],[120.1814,22.9164],[120.1769,22.9124],[120.1747,22.9117],[120.1801,22.8956],[120.1821,22.8919],[120.1898,22.874],[120.1928,22.8648],[120.1904,22.8641],[120.1897,22.8607],[120.1924,22.8577],[120.1953,22.85],[120.1929,22.8484],[120.1966,22.8447],[120.1991,22.8434],[120.2005,22.8385],[120.2052,22.8252],[120.2073,22.8228],[120.206,22.8202],[120.1905,22.8153],[120.1902,22.8136],[120.1933,22.8074],[120.1979,22.8053],[120.2124,22.8076],[120.2146,22.8044],[120.2189,22.7955],[120.2206,22.7905],[120.2291,22.7733],[120.2324,22.7661],[120.2324,22.7625],[120.2346,22.7599],[120.2397,22.7507],[120.2455,22.7387],[120.2453,22.7378],[120.2503,22.7279],[120.2499,22.7242],[120.2536,22.7232],[120.2565,22.7184],[120.2581,22.7103],[120.2616,22.7015],[120.2616,22.6967],[120.2581,22.6956],[120.2581,22.6893],[120.2628,22.689],[120.2631,22.684],[120.2644,22.6809],[120.2645,22.6752],[120.2593,22.6693],[120.2562,22.6685],[120.2512,22.6619],[120.2504,22.6573],[120.2517,22.645],[120.2551,22.6397],[120.2564,22.6359],[120.2595,22.6337],[120.2633,22.6274],[120.2633,22.624],[120.2567,22.6209],[120.2562,22.6179],[120.2624,22.6138],[120.266,22.6088],[120.2632,22.6036],[120.2668,22.6],[120.2713,22.5928],[120.2784,22.5844],[120.2858,22.5779],[120.3028,22.5578],[120.3034,22.5543],[120.3006,22.5512],[120.2986,22.5475],[120.3018,22.5458],[120.3076,22.5452],[120.3218,22.5278],[120.3168,22.5242],[120.3076,22.5354],[120.3038,22.5327],[120.297,22.541],[120.2932,22.5383],[120.3124,22.5149],[120.3334,22.5288],[120.337,22.5249],[120.3338,22.5214],[120.3419,22.5152],[120.3435,22.5147],[120.351,22.5095],[120.3559,22.5043],[120.3733,22.4912],[120.3849,22.4849],[120.3869,22.4831],[120.3937,22.479],[120.3957,22.477],[120.4019,22.4739],[120.4092,22.4711],[120.4139,22.4705],[120.4208,22.4685],[120.4244,22.4687],[120.424,22.4775],[120.4257,22.4986],[120.4243,22.5034],[120.423,22.511],[120.4229,22.5188],[120.4245,22.5238],[120.4251,22.5285],[120.4294,22.5391],[120.4311,22.5445],[120.4366,22.5476],[120.4383,22.5535],[120.4426,22.5618],[120.4442,22.569],[120.4471,22.587],[120.4468,22.5934],[120.4455,22.5996],[120.4427,22.6034],[120.4374,22.6075],[120.4346,22.6134],[120.4336,22.6182],[120.4335,22.6235],[120.4359,22.6308],[120.4353,22.6403],[120.4362,22.6482],[120.4361,22.6618],[120.4402,22.6741],[120.4396,22.6783],[120.4426,22.6846],[120.4477,22.6885],[120.451,22.6974],[120.4528,22.7041],[120.4558,22.7186],[120.456,22.731],[120.4548,22.7403],[120.4546,22.7477],[120.4537,22.7567],[120.4544,22.7644],[120.4538,22.7675],[120.4543,22.7718],[120.4557,22.7745],[120.4559,22.7798],[120.4574,22.7854],[120.46,22.7906],[120.4641,22.8006],[120.4655,22.8128],[120.4674,22.8155],[120.4675,22.8224],[120.4692,22.825],[120.4687,22.8306],[120.4762,22.8382],[120.4823,22.8359],[120.4908,22.8353],[120.494,22.8368],[120.4965,22.8324],[120.4993,22.8313],[120.5053,22.8315],[120.51,22.8285],[120.5157,22.8316],[120.5199,22.8314],[120.5235,22.8329],[120.5382,22.8292],[120.5441,22.8298],[120.548,22.8284],[120.5533,22.8284],[120.5576,22.8321],[120.5615,22.8338],[120.5667,22.8383],[120.5696,22.8432],[120.5748,22.8482],[120.5952,22.8636],[120.5983,22.8671],[120.6054,22.873],[120.6141,22.8765],[120.6174,22.8767],[120.6212,22.8757],[120.6273,22.8789],[120.6349,22.8809],[120.645,22.8852],[120.6465,22.8838],[120.6484,22.8771],[120.651,22.8772],[120.6532,22.8804],[120.6557,22.8817],[120.6581,22.8797],[120.6584,22.8743],[120.6597,22.87],[120.6587,22.8659],[120.6596,22.8615],[120.6609,22.8597],[120.6686,22.8587],[120.6726,22.8564],[120.677,22.8575],[120.6789,22.8627],[120.6904,22.8648],[120.692,22.8685],[120.6979,22.8731],[120.7045,22.8807],[120.7083,22.8816],[120.7159,22.8808],[120.7205,22.882],[120.7248,22.8809],[120.7286,22.8778],[120.7332,22.8753],[120.7427,22.8736],[120.7466,22.8678],[120.75,22.8653],[120.7539,22.8652],[120.7591,22.8606],[120.7622,22.8568],[120.7642,22.849],[120.7661,22.8486],[120.7685,22.8452],[120.7729,22.8411],[120.7741,22.838],[120.7774,22.8357],[120.7815,22.8361],[120.7858,22.8399],[120.7902,22.8401],[120.793,22.8423],[120.7917,22.8484],[120.7937,22.8522],[120.8011,22.851],[120.8071,22.8549],[120.8138,22.8577],[120.8142,22.8605],[120.8163,22.8622],[120.8191,22.8623],[120.823,22.8657],[120.8261,22.8664],[120.829,22.8657],[120.833,22.8663],[120.8373,22.8642],[120.8417,22.8585],[120.8413,22.8568],[120.8438,22.8534],[120.8478,22.8518],[120.853,22.8576],[120.8562,22.8551],[120.857,22.853],[120.86,22.8512],[120.8594,22.8492],[120.862,22.8474],[120.8646,22.8431],[120.8653,22.8466],[120.8684,22.8507],[120.8666,22.8534],[120.8695,22.8569],[120.8691,22.8582],[120.8617,22.8614],[120.8592,22.8636],[120.8644,22.867],[120.8655,22.8699],[120.8644,22.8729],[120.8597,22.8784],[120.8521,22.8781],[120.842,22.8812],[120.8388,22.8846],[120.8382,22.8899],[120.8348,22.8935],[120.8335,22.8998],[120.8289,22.9036],[120.8285,22.9052],[120.8304,22.9103],[120.8333,22.9123],[120.8317,22.919],[120.8289,22.9213],[120.8269,22.9281],[120.8219,22.935],[120.8218,22.9451],[120.8248,22.9525],[120.8231,22.9549],[120.8208,22.9615],[120.8222,22.9646],[120.8301,22.97],[120.8289,22.9735],[120.8307,22.9758],[120.8322,22.9801],[120.8412,22.984],[120.8426,22.9914],[120.8467,22.9926],[120.8497,22.9957],[120.8521,22.9999],[120.851,23.005],[120.8584,23.0051],[120.8607,23.0081],[120.8605,23.0105],[120.862,23.0221],[120.8608,23.0253],[120.8613,23.0303],[120.8634,23.0323],[120.8662,23.0323],[120.872,23.0345],[120.8789,23.0344],[120.88,23.0355],[120.8813,23.0442],[120.8787,23.049],[120.8745,23.0509],[120.8716,23.0547],[120.8692,23.0595],[120.8753,23.0685],[120.8779,23.0779],[120.8826,23.0833],[120.8836,23.0866],[120.8858,23.0896],[120.8855,23.0924],[120.8892,23.1005],[120.8881,23.1042],[120.8894,23.1104],[120.8868,23.1136],[120.885,23.12],[120.8881,23.1224],[120.8862,23.1271],[120.8862,23.1319],[120.8879,23.1364],[120.8858,23.1443],[120.8814,23.1462],[120.8767,23.1516],[120.8833,23.1534],[120.8865,23.1558],[120.887,23.1579],[120.8912,23.1587],[120.895,23.1607],[120.8961,23.172],[120.8983,23.1731],[120.8984,23.1763],[120.9059,23.1806],[120.9091,23.1798],[120.9113,23.1828],[120.9125,23.1868],[120.9109,23.1922],[120.9064,23.1967],[120.9057,23.1996],[120.9072,23.2011],[120.9067,23.2057],[120.9105,23.2081],[120.9117,23.2102],[120.912,23.217],[120.9116,23.2279],[120.9143,23.2325],[120.9157,23.2379],[120.9194,23.241],[120.924,23.242],[120.9265,23.2446],[120.9301,23.2425],[120.9379,23.245],[120.9383,23.2475],[120.9414,23.2521],[120.9464,23.2529],[120.9507,23.2591],[120.9536,23.2608],[120.9581,23.2652],[120.9594,23.2705],[120.9634,23.2721],[120.9661,23.2766],[120.9687,23.2779],[120.9708,23.2812],[120.9786,23.2823],[120.9861,23.2803],[120.9906,23.2841],[120.994,23.2844],[121.0014,23.2874],[121.0056,23.2906],[121.0108,23.2928],[121.0172,23.2928],[121.0198,23.2945],[121.0238,23.2937],[121.0283,23.2971],[121.0314,23.3004],[121.0319,23.3037],[121.0369,23.304],[121.042,23.3072],[121.0462,23.3085],[121.0481,23.3146],[121.0472,23.32],[121.0488,23.3253],[121.045,23.3278],[121.0394,23.3291],[121.0365,23.3335],[121.0328,23.3339],[121.0307,23.3372],[121.027,23.3376],[121.0247,23.3399],[121.0223,23.3466],[121.02,23.3504],[121.0152,23.3463],[121.0101,23.3459],[121.0075,23.3492],[121.0076,23.352],[121.0001,23.3565],[120.9941,23.3565],[120.9871,23.3587],[120.9869,23.3663],[120.9881,23.3707],[120.9912,23.3714],[120.9943,23.3764],[121.0001,23.3824],[121.0061,23.3836],[121.0077,23.3867],[121.0037,23.3889],[121.0011,23.3917],[121.0032,23.3948],[121.0064,23.3966],[121.0105,23.3951],[121.0155,23.3971],[121.0192,23.4015],[121.0223,23.4001],[121.0258,23.4029],[121.0274,23.4102],[121.0269,23.4131],[121.0294,23.4202],[121.0292,23.4228],[121.0227,23.4248],[121.0211,23.4294],[121.0166,23.431],[121.0142,23.4309],[121.0129,23.4332],[121.0153,23.4354]]]]},"properties":{"COUNTYID":"E","COUNTYCODE":"64000","COUNTYNAME":"高雄市","COUNTYENG":"Kaohsiung City"},"id":"64000"},{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[121.6118,21.9429],[121.616,21.9445],[121.6162,21.9523],[121.6149,21.9549],[121.6044,21.9524],[121.6035,21.9516],[121.6067,21.9467],[121.608,21.9428],[121.6118,21.9429]]],[[[121.5047,22.0848],[121.5022,22.084],[121.4993,22.0805],[121.5087,22.0702],[121.5107,22.0633],[121.5086,22.0569],[121.5108,22.0496],[121.5089,22.0477],[121.5152,22.0469],[121.5217,22.039],[121.524,22.0392],[121.5274,22.0344],[121.5375,22.0249],[121.5422,22.0247],[121.5436,22.0257],[121.5489,22.0257],[121.553,22.0244],[121.5623,22.0173],[121.567,22.011],[121.5694,22.0088],[121.5698,22.004],[121.5764,22.0029],[121.581,22.0038],[121.5863,22.0001],[121.5908,22.0002],[121.5931,22.0018],[121.5979,22.0093],[121.5986,22.0119],[121.6021,22.0152],[121.6029,22.0185],[121.6021,22.0206],[121.5964,22.0253],[121.5787,22.0324],[121.568,22.0408],[121.5641,22.0487],[121.5637,22.0534],[121.5677,22.0581],[121.5741,22.0614],[121.5709,22.0647],[121.5701,22.0701],[121.5678,22.0732],[121.5678,22.0755],[121.5701,22.0824],[121.5654,22.084],[121.5606,22.0807],[121.5581,22.0805],[121.5545,22.0825],[121.5442,22.0826],[121.5371,22.0815],[121.5329,22.0817],[121.5289,22.0796],[121.5256,22.0811],[121.5134,22.0804],[121.5085,22.0823],[121.5047,22.0848]]],[[[121.4915,22.6775],[121.4841,22.6771],[121.4801,22.6741],[121.4728,22.6749],[121.4697,22.6763],[121.4654,22.6751],[121.4643,22.6733],[121.4656,22.6701],[121.4685,22.6676],[121.4753,22.6587],[121.4748,22.6514],[121.4735,22.6465],[121.4776,22.6461],[121.4859,22.644],[121.4921,22.6391],[121.4952,22.6325],[121.4977,22.6318],[121.4997,22.6351],[121.5025,22.6341],[121.505,22.6357],[121.5046,22.6383],[121.5021,22.6414],[121.5021,22.6439],[121.4995,22.6459],[121.5022,22.6522],[121.5051,22.6515],[121.5088,22.6538],[121.5069,22.6568],[121.5088,22.6602],[121.5091,22.6648],[121.5112,22.6697],[121.5091,22.6728],[121.51,22.6771],[121.5071,22.6786],[121.5048,22.677],[121.4987,22.6758],[121.496,22.6765],[121.4935,22.6751],[121.4915,22.6775]]],[[[121.4961,23.4348],[121.4911,23.4353],[121.4869,23.4335],[121.4841,23.4305],[121.4803,23.4308],[121.4734,23.4404],[121.4706,23.4408],[121.4668,23.4397],[121.462,23.4395],[121.4617,23.4415],[121.4567,23.4422],[121.4551,23.4411],[121.451,23.4432],[121.4461,23.4436],[121.4443,23.4388],[121.4421,23.4369],[121.4411,23.4341],[121.4334,23.4329],[121.4328,23.4314],[121.4289,23.4294],[121.4196,23.4196],[121.42,23.4169],[121.4151,23.4074],[121.4131,23.4051],[121.4095,23.3973],[121.4071,23.394],[121.4,23.3866],[121.4015,23.3808],[121.4037,23.3756],[121.4044,23.3673],[121.4076,23.3646],[121.4101,23.3649],[121.4139,23.3634],[121.4178,23.3607],[121.423,23.3599],[121.4226,23.3558],[121.4183,23.3522],[121.4168,23.3494],[121.414,23.3474],[121.4102,23.3463],[121.4061,23.3391],[121.4038,23.3372],[121.4011,23.3316],[121.3996,23.3267],[121.3997,23.324],[121.3979,23.3217],[121.392,23.3217],[121.3902,23.3206],[121.3901,23.3157],[121.3877,23.3105],[121.3831,23.3074],[121.3778,23.3008],[121.3782,23.2992],[121.3763,23.2958],[121.3772,23.2914],[121.3769,23.2815],[121.3783,23.2775],[121.3779,23.2696],[121.3738,23.269],[121.3716,23.2668],[121.3712,23.2633],[121.3631,23.2571],[121.3619,23.2542],[121.3594,23.2527],[121.3589,23.2497],[121.3616,23.2467],[121.3579,23.2386],[121.3534,23.2333],[121.3526,23.2302],[121.3545,23.2278],[121.3559,23.2239],[121.3533,23.22],[121.3501,23.218],[121.3466,23.2172],[121.3457,23.2134],[121.3469,23.2092],[121.3453,23.2083],[121.3438,23.2044],[121.3432,23.1985],[121.3422,23.1959],[121.3398,23.1939],[121.3376,23.1886],[121.338,23.1858],[121.3353,23.1813],[121.3349,23.1779],[121.3284,23.1793],[121.324,23.1787],[121.324,23.175],[121.3222,23.1732],[121.3219,23.1694],[121.3187,23.1683],[121.3174,23.1645],[121.3238,23.1551],[121.3272,23.1521],[121.3244,23.149],[121.3244,23.1463],[121.3221,23.1396],[121.3204,23.1381],[121.3222,23.1315],[121.3218,23.1276],[121.3229,23.1234],[121.3219,23.117],[121.3196,23.1136],[121.316,23.1105],[121.3087,23.1112],[121.3028,23.111],[121.3,23.1093],[121.2978,23.1099],[121.2914,23.1094],[121.2873,23.1067],[121.2844,23.1066],[121.283,23.1038],[121.2809,23.104],[121.2782,23.1007],[121.2723,23.0979],[121.271,23.1009],[121.2643,23.104],[121.2674,23.1093],[121.2673,23.1141],[121.2595,23.1211],[121.2578,23.126],[121.2491,23.1315],[121.2483,23.1296],[121.2425,23.128],[121.2385,23.1287],[121.2346,23.1334],[121.231,23.1392],[121.2248,23.1399],[121.2146,23.1439],[121.212,23.1442],[121.2106,23.148],[121.2125,23.1547],[121.2103,23.1599],[121.2067,23.1625],[121.2057,23.1669],[121.2028,23.1698],[121.1991,23.1758],[121.1998,23.1783],[121.1979,23.186],[121.1983,23.1884],[121.1944,23.1925],[121.1907,23.2026],[121.1893,23.2039],[121.1844,23.2049],[121.1795,23.2086],[121.1756,23.2102],[121.17,23.2071],[121.1654,23.2072],[121.1606,23.2058],[121.1547,23.1991],[121.1493,23.1986],[121.1394,23.2019],[121.1377,23.2088],[121.1344,23.2114],[121.1323,23.2157],[121.1314,23.2198],[121.1294,23.2233],[121.125,23.225],[121.1196,23.2246],[121.1147,23.225],[121.1083,23.2235],[121.1056,23.2242],[121.1045,23.2262],[121.0964,23.2296],[121.0939,23.2332],[121.0865,23.2339],[121.0843,23.233],[121.078,23.2339],[121.0785,23.2376],[121.0738,23.2447],[121.071,23.2468],[121.0698,23.2495],[121.0692,23.2552],[121.0662,23.2573],[121.0642,23.2631],[121.0624,23.2658],[121.0607,23.2769],[121.0621,23.2792],[121.0598,23.2836],[121.0595,23.286],[121.0573,23.2876],[121.0561,23.2905],[121.0527,23.2914],[121.0459,23.2958],[121.0433,23.2962],[121.0389,23.3007],[121.0346,23.2998],[121.0283,23.2971],[121.0238,23.2937],[121.0198,23.2945],[121.0172,23.2928],[121.0108,23.2928],[121.0056,23.2906],[121.0014,23.2874],[120.994,23.2844],[120.9906,23.2841],[120.9861,23.2803],[120.9786,23.2823],[120.9708,23.2812],[120.9687,23.2779],[120.9661,23.2766],[120.9634,23.2721],[120.9594,23.2705],[120.9581,23.2652],[120.9536,23.2608],[120.9507,23.2591],[120.9464,23.2529],[120.9414,23.2521],[120.9383,23.2475],[120.9379,23.245],[120.9301,23.2425],[120.9265,23.2446],[120.924,23.242],[120.9194,23.241],[120.9157,23.2379],[120.9143,23.2325],[120.9116,23.2279],[120.912,23.217],[120.9117,23.2102],[120.9105,23.2081],[120.9067,23.2057],[120.9072,23.2011],[120.9057,23.1996],[120.9064,23.1967],[120.9109,23.1922],[120.9125,23.1868],[120.9113,23.1828],[120.9091,23.1798],[120.9059,23.1806],[120.8984,23.1763],[120.8983,23.1731],[120.8961,23.172],[120.895,23.1607],[120.8912,23.1587],[120.887,23.1579],[120.8865,23.1558],[120.8833,23.1534],[120.8767,23.1516],[120.8814,23.1462],[120.8858,23.1443],[120.8879,23.1364],[120.8862,23.1319],[120.8862,23.1271],[120.8881,23.1224],[120.885,23.12],[120.8868,23.1136],[120.8894,23.1104],[120.8881,23.1042],[120.8892,23.1005],[120.8855,23.0924],[120.8858,23.0896],[120.8836,23.0866],[120.8826,23.0833],[120.8779,23.0779],[120.8753,23.0685],[120.8692,23.0595],[120.8716,23.0547],[120.8745,23.0509],[120.8787,23.049],[120.8813,23.0442],[120.88,23.0355],[120.8789,23.0344],[120.872,23.0345],[120.8662,23.0323],[120.8634,23.0323],[120.8613,23.0303],[120.8608,23.0253],[120.862,23.0221],[120.8605,23.0105],[120.8607,23.0081],[120.8584,23.0051],[120.851,23.005],[120.8521,22.9999],[120.8497,22.9957],[120.8467,22.9926],[120.8426,22.9914],[120.8412,22.984],[120.8322,22.9801],[120.8307,22.9758],[120.8289,22.9735],[120.8301,22.97],[120.8222,22.9646],[120.8208,22.9615],[120.8231,22.9549],[120.8248,22.9525],[120.8218,22.9451],[120.8219,22.935],[120.8269,22.9281],[120.8289,22.9213],[120.8317,22.919],[120.8333,22.9123],[120.8304,22.9103],[120.8285,22.9052],[120.8289,22.9036],[120.8335,22.8998],[120.8348,22.8935],[120.8382,22.8899],[120.8388,22.8846],[120.842,22.8812],[120.8521,22.8781],[120.8597,22.8784],[120.8644,22.8729],[120.8655,22.8699],[120.8644,22.867],[120.8592,22.8636],[120.8617,22.8614],[120.8691,22.8582],[120.8695,22.8569],[120.8666,22.8534],[120.8684,22.8507],[120.8653,22.8466],[120.8646,22.8431],[120.864,22.8398],[120.8653,22.8361],[120.8646,22.8322],[120.8616,22.8267],[120.8647,22.8253],[120.8684,22.8171],[120.8717,22.8148],[120.8747,22.8153],[120.8773,22.8131],[120.8816,22.8145],[120.889,22.8118],[120.891,22.8117],[120.8944,22.8085],[120.8965,22.808],[120.9017,22.8033],[120.9037,22.7982],[120.9033,22.7934],[120.9017,22.7875],[120.9042,22.7832],[120.9032,22.7805],[120.9039,22.7758],[120.9005,22.7698],[120.8931,22.7663],[120.8949,22.7623],[120.8945,22.7591],[120.8956,22.7557],[120.8941,22.7516],[120.8954,22.7482],[120.8942,22.7442],[120.8955,22.7421],[120.8947,22.7376],[120.8924,22.7356],[120.891,22.7287],[120.8883,22.7267],[120.8874,22.7227],[120.8835,22.7171],[120.8792,22.7161],[120.8755,22.7172],[120.8691,22.7159],[120.8672,22.7169],[120.8614,22.7167],[120.8586,22.7136],[120.8551,22.7175],[120.8487,22.717],[120.8442,22.7106],[120.8431,22.7075],[120.8402,22.7067],[120.838,22.7018],[120.8383,22.6989],[120.835,22.6966],[120.8276,22.6974],[120.8261,22.6959],[120.8199,22.6956],[120.8191,22.691],[120.8133,22.6921],[120.8108,22.6916],[120.808,22.6892],[120.7977,22.6891],[120.7891,22.6933],[120.7867,22.6927],[120.7894,22.6869],[120.7895,22.6832],[120.7916,22.6792],[120.7862,22.672],[120.7864,22.663],[120.7798,22.6525],[120.7738,22.6462],[120.772,22.6422],[120.7677,22.6362],[120.7642,22.6337],[120.7613,22.63],[120.761,22.6258],[120.758,22.6231],[120.7529,22.6121],[120.7541,22.6086],[120.7547,22.6008],[120.7523,22.5971],[120.7484,22.5933],[120.7458,22.5896],[120.7465,22.5846],[120.7493,22.5773],[120.748,22.5711],[120.7415,22.5687],[120.7396,22.5625],[120.74,22.5583],[120.7394,22.5517],[120.7457,22.5407],[120.748,22.5385],[120.75,22.534],[120.7501,22.5286],[120.7517,22.5253],[120.7513,22.5224],[120.7528,22.519],[120.7536,22.511],[120.7571,22.5089],[120.7627,22.5011],[120.7643,22.4944],[120.7637,22.4909],[120.7613,22.4889],[120.7586,22.4884],[120.7575,22.4818],[120.7515,22.4797],[120.7542,22.4731],[120.7542,22.4694],[120.7516,22.4642],[120.7513,22.4586],[120.7542,22.4573],[120.7591,22.4573],[120.7655,22.4529],[120.7687,22.4526],[120.7759,22.4504],[120.7765,22.4489],[120.7751,22.4433],[120.7768,22.44],[120.7803,22.4371],[120.7828,22.4333],[120.7849,22.4279],[120.7869,22.4252],[120.7882,22.4194],[120.7877,22.4168],[120.7846,22.4128],[120.78,22.4093],[120.7753,22.4096],[120.7734,22.4069],[120.7649,22.4089],[120.7627,22.4069],[120.7554,22.4033],[120.7576,22.3981],[120.7538,22.3964],[120.7521,22.3927],[120.7565,22.3884],[120.7505,22.3841],[120.7487,22.3801],[120.7488,22.3732],[120.7448,22.3702],[120.7435,22.3676],[120.7524,22.3605],[120.7581,22.3594],[120.7614,22.3603],[120.7632,22.359],[120.7636,22.3522],[120.767,22.3478],[120.7758,22.3487],[120.7811,22.3464],[120.7851,22.3455],[120.7866,22.3421],[120.7885,22.3416],[120.7897,22.3376],[120.7925,22.3356],[120.7925,22.3284],[120.7934,22.3236],[120.7964,22.3199],[120.7964,22.3168],[120.793,22.3124],[120.7871,22.3092],[120.7832,22.3095],[120.7782,22.3085],[120.7768,22.3026],[120.7777,22.298],[120.7813,22.2947],[120.7887,22.294],[120.7911,22.2907],[120.7911,22.2882],[120.7934,22.2857],[120.7992,22.2854],[120.8007,22.2842],[120.8055,22.2841],[120.8068,22.2772],[120.8006,22.2774],[120.7981,22.2744],[120.7962,22.2678],[120.7994,22.2654],[120.7986,22.2638],[120.7991,22.2572],[120.8156,22.263],[120.8229,22.2577],[120.826,22.2565],[120.8315,22.2501],[120.8325,22.2473],[120.8396,22.2436],[120.8414,22.2446],[120.8449,22.2428],[120.8508,22.2437],[120.8585,22.2409],[120.859,22.2386],[120.8616,22.2375],[120.8643,22.2338],[120.8623,22.2313],[120.8664,22.2298],[120.8715,22.233],[120.8795,22.2352],[120.8805,22.2346],[120.884,22.2406],[120.8963,22.2464],[120.8958,22.2542],[120.8946,22.2589],[120.8953,22.2619],[120.8931,22.2665],[120.8919,22.2769],[120.8917,22.3044],[120.8924,22.3181],[120.8949,22.3347],[120.8965,22.3373],[120.8988,22.3441],[120.9035,22.354],[120.9089,22.3594],[120.9115,22.3726],[120.9148,22.3847],[120.9189,22.393],[120.9206,22.3949],[120.9252,22.409],[120.9288,22.4172],[120.9316,22.4204],[120.9391,22.4392],[120.9415,22.446],[120.9447,22.4526],[120.949,22.4662],[120.9501,22.4714],[120.9545,22.4855],[120.9558,22.4928],[120.9581,22.4988],[120.9599,22.5065],[120.9683,22.5266],[120.9746,22.5468],[120.9771,22.5541],[120.9809,22.5623],[120.9849,22.5687],[120.99,22.5733],[120.9979,22.578],[121.008,22.587],[121.0092,22.589],[121.0113,22.605],[121.0118,22.6138],[121.0126,22.6195],[121.0176,22.6369],[121.0225,22.6498],[121.0255,22.6555],[121.0308,22.6628],[121.035,22.6673],[121.0385,22.6699],[121.0456,22.6729],[121.048,22.6732],[121.0554,22.6761],[121.0596,22.6794],[121.0642,22.682],[121.0731,22.6918],[121.0812,22.6981],[121.0929,22.7036],[121.1018,22.7054],[121.1069,22.7079],[121.1183,22.7144],[121.1237,22.7162],[121.1281,22.7194],[121.1374,22.7296],[121.1451,22.7344],[121.1479,22.7382],[121.1566,22.7472],[121.1609,22.7497],[121.166,22.7512],[121.1738,22.7561],[121.177,22.7601],[121.1787,22.7646],[121.1803,22.7713],[121.1803,22.7783],[121.1814,22.7829],[121.1879,22.7907],[121.1949,22.7903],[121.201,22.7962],[121.1988,22.8067],[121.1971,22.8098],[121.1965,22.8162],[121.1936,22.8184],[121.1918,22.8229],[121.1924,22.8254],[121.1874,22.8294],[121.1864,22.8343],[121.1888,22.8379],[121.1901,22.8441],[121.1896,22.8469],[121.1915,22.8497],[121.209,22.8631],[121.2175,22.8649],[121.2201,22.8649],[121.2247,22.8672],[121.2321,22.8641],[121.2362,22.868],[121.2351,22.8695],[121.2362,22.8738],[121.2399,22.8796],[121.2471,22.8813],[121.2527,22.8893],[121.2556,22.8952],[121.2592,22.8983],[121.2599,22.9014],[121.2624,22.9067],[121.2694,22.9119],[121.2728,22.9178],[121.2749,22.9249],[121.2789,22.9314],[121.2798,22.9393],[121.2817,22.9452],[121.2843,22.9496],[121.2874,22.9528],[121.2914,22.9555],[121.2952,22.9546],[121.296,22.9567],[121.2997,22.9598],[121.3083,22.9708],[121.3111,22.9734],[121.3165,22.9812],[121.3197,22.9879],[121.3238,22.9939],[121.3216,22.9971],[121.3216,23.0002],[121.3232,23.0048],[121.3264,23.0057],[121.3283,23.0092],[121.3287,23.0152],[121.3304,23.017],[121.3346,23.0183],[121.3372,23.0201],[121.3351,23.0219],[121.3366,23.0252],[121.3392,23.0259],[121.3382,23.0293],[121.3384,23.0328],[121.3416,23.0424],[121.3433,23.0436],[121.3437,23.0483],[121.3459,23.0511],[121.3465,23.0589],[121.3493,23.0667],[121.3568,23.0744],[121.3551,23.0797],[121.358,23.0826],[121.3578,23.0854],[121.3623,23.0927],[121.3661,23.0962],[121.3751,23.0965],[121.3829,23.0955],[121.3847,23.0968],[121.3848,23.1001],[121.3876,23.1023],[121.3877,23.1051],[121.3921,23.1088],[121.3952,23.1134],[121.3975,23.1146],[121.401,23.1135],[121.407,23.1159],[121.4125,23.1223],[121.4154,23.1234],[121.4185,23.1227],[121.4223,23.1247],[121.4209,23.1268],[121.4164,23.1268],[121.4137,23.1241],[121.4111,23.124],[121.4052,23.1263],[121.3998,23.1351],[121.401,23.142],[121.4011,23.146],[121.3993,23.1484],[121.4,23.1503],[121.4031,23.1513],[121.4053,23.155],[121.4076,23.1623],[121.4078,23.1668],[121.4068,23.1703],[121.4029,23.1718],[121.4036,23.1787],[121.4006,23.1814],[121.3987,23.1845],[121.3975,23.1929],[121.3961,23.1992],[121.397,23.2051],[121.4024,23.2119],[121.4048,23.2131],[121.4101,23.2137],[121.4144,23.2197],[121.4171,23.222],[121.4207,23.227],[121.4187,23.2283],[121.4161,23.2275],[121.4151,23.2302],[121.4151,23.2354],[121.4169,23.2386],[121.417,23.2414],[121.4208,23.25],[121.4208,23.2576],[121.4241,23.2642],[121.4274,23.266],[121.4274,23.2727],[121.4297,23.2814],[121.4329,23.2881],[121.4382,23.2941],[121.4392,23.2969],[121.444,23.3042],[121.4471,23.3053],[121.447,23.3089],[121.454,23.3135],[121.4622,23.3133],[121.4629,23.3177],[121.4658,23.3222],[121.4658,23.3263],[121.4681,23.3344],[121.4678,23.345],[121.4687,23.3487],[121.4721,23.3523],[121.4708,23.3567],[121.4737,23.3642],[121.4722,23.3715],[121.4739,23.3779],[121.4751,23.3874],[121.4767,23.3891],[121.4779,23.3952],[121.4814,23.3967],[121.4818,23.4022],[121.4835,23.4041],[121.4839,23.4102],[121.4862,23.4138],[121.4897,23.4243],[121.4925,23.4268],[121.4961,23.4348]]]]},"properties":{"COUNTYID":"V","COUNTYCODE":"10014","COUNTYNAME":"臺東縣","COUNTYENG":"Taitung County"},"id":"10014"},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[121.7741,24.3153],[121.7699,24.3131],[121.7598,24.314],[121.7556,24.3161],[121.7447,24.3229],[121.74,24.3236],[121.735,24.3231],[121.7279,24.326],[121.723,24.3255],[121.7133,24.3269],[121.7047,24.3298],[121.6973,24.3343],[121.6936,24.3349],[121.6897,24.3336],[121.6873,24.3346],[121.6867,24.3394],[121.684,24.3408],[121.6768,24.3375],[121.6735,24.3398],[121.6733,24.3438],[121.6701,24.3428],[121.6675,24.3462],[121.6638,24.3494],[121.6634,24.3524],[121.6596,24.3511],[121.6566,24.3533],[121.6533,24.3529],[121.6536,24.3563],[121.6511,24.3596],[121.648,24.3582],[121.6501,24.3546],[121.6507,24.3509],[121.6487,24.3495],[121.6436,24.3538],[121.6401,24.3577],[121.6384,24.3622],[121.6348,24.364],[121.6343,24.3666],[121.6309,24.3661],[121.6309,24.3706],[121.6267,24.3694],[121.6217,24.3666],[121.6204,24.3628],[121.6236,24.3619],[121.6212,24.358],[121.6271,24.3536],[121.6268,24.3495],[121.63,24.3484],[121.6351,24.3484],[121.6358,24.3453],[121.6318,24.3445],[121.6332,24.3357],[121.6289,24.3335],[121.6266,24.3363],[121.6281,24.3386],[121.6275,24.3411],[121.6229,24.3394],[121.6205,24.3451],[121.6186,24.3453],[121.6165,24.3406],[121.6161,24.3374],[121.6186,24.3346],[121.6152,24.3333],[121.6126,24.3358],[121.6075,24.3351],[121.6066,24.3303],[121.6039,24.329],[121.6005,24.3311],[121.5994,24.3334],[121.5957,24.3316],[121.5966,24.3281],[121.6014,24.3231],[121.6012,24.3204],[121.6045,24.3184],[121.6051,24.3154],[121.607,24.313],[121.6051,24.3107],[121.6012,24.3147],[121.5972,24.3163],[121.5936,24.3164],[121.5894,24.3138],[121.5873,24.3162],[121.5819,24.3179],[121.5785,24.3181],[121.5758,24.3197],[121.5696,24.3179],[121.5666,24.3191],[121.5635,24.3221],[121.5601,24.3226],[121.5583,24.3249],[121.5561,24.3312],[121.5507,24.3342],[121.5465,24.3373],[121.5442,24.3378],[121.5405,24.3359],[121.5366,24.3371],[121.533,24.3371],[121.5281,24.3389],[121.5253,24.3424],[121.5204,24.3426],[121.518,24.341],[121.5099,24.3411],[121.5073,24.3433],[121.5037,24.3427],[121.4998,24.3395],[121.4981,24.3392],[121.4922,24.3421],[121.4854,24.3485],[121.4814,24.3489],[121.4783,24.352],[121.4758,24.3513],[121.4654,24.3553],[121.461,24.358],[121.4543,24.3636],[121.452,24.3647],[121.4487,24.3628],[121.4473,24.3595],[121.4416,24.3586],[121.4399,24.3545],[121.4378,24.3521],[121.4358,24.3463],[121.4378,24.3423],[121.4345,24.3387],[121.4325,24.3296],[121.4345,24.3256],[121.4348,24.322],[121.4316,24.3205],[121.4261,24.314],[121.4232,24.3082],[121.4202,24.3076],[121.4167,24.3092],[121.412,24.3073],[121.4054,24.3083],[121.4046,24.3023],[121.403,24.2962],[121.397,24.2902],[121.3935,24.2882],[121.3909,24.2897],[121.3866,24.2841],[121.3805,24.2798],[121.3822,24.2762],[121.3831,24.2684],[121.3855,24.2644],[121.3858,24.2586],[121.3851,24.2551],[121.3802,24.2533],[121.3766,24.253],[121.3731,24.2541],[121.367,24.2522],[121.3643,24.2471],[121.3607,24.2439],[121.3562,24.2446],[121.3525,24.2432],[121.3532,24.2401],[121.3522,24.2343],[121.343,24.2236],[121.3433,24.2221],[121.3494,24.2104],[121.3483,24.2073],[121.3497,24.2002],[121.3451,24.2],[121.3403,24.1985],[121.3358,24.1991],[121.3258,24.1962],[121.3231,24.1921],[121.32,24.1914],[121.3154,24.1849],[121.3106,24.183],[121.3071,24.1803],[121.2986,24.18],[121.2968,24.1785],[121.2922,24.1771],[121.2881,24.1777],[121.2862,24.176],[121.2877,24.1733],[121.2883,24.1667],[121.2883,24.1576],[121.2854,24.1571],[121.2803,24.1579],[121.2809,24.1546],[121.2847,24.1523],[121.2842,24.1458],[121.2814,24.1359],[121.2959,24.1324],[121.3012,24.1278],[121.3044,24.1239],[121.308,24.1224],[121.3135,24.1189],[121.3159,24.1164],[121.325,24.1161],[121.3285,24.1144],[121.3269,24.1103],[121.3258,24.1027],[121.3223,24.0995],[121.3191,24.0954],[121.3192,24.0928],[121.3231,24.0849],[121.3177,24.0795],[121.3141,24.0776],[121.3081,24.0732],[121.3061,24.0695],[121.3023,24.0663],[121.2989,24.0616],[121.2955,24.0638],[121.2891,24.0587],[121.2865,24.058],[121.2833,24.0545],[121.2826,24.0513],[121.285,24.0486],[121.2857,24.0395],[121.2824,24.0347],[121.2787,24.0268],[121.2768,24.0249],[121.2764,24.0204],[121.2736,24.0149],[121.2719,24.0133],[121.2694,24.0063],[121.2657,24.0014],[121.2639,23.9977],[121.26,23.9921],[121.2616,23.9812],[121.2651,23.9753],[121.2737,23.9752],[121.2756,23.9684],[121.2778,23.9652],[121.2751,23.9597],[121.2758,23.9565],[121.2747,23.9514],[121.2718,23.9482],[121.2743,23.9457],[121.274,23.942],[121.2721,23.9382],[121.2737,23.9366],[121.2747,23.9301],[121.2735,23.9281],[121.2765,23.9229],[121.2751,23.9189],[121.2761,23.9101],[121.2749,23.9075],[121.27,23.9065],[121.2663,23.9073],[121.2611,23.9023],[121.264,23.8986],[121.266,23.8944],[121.2655,23.8911],[121.2672,23.8894],[121.2683,23.8834],[121.2659,23.8832],[121.2629,23.8795],[121.2653,23.8729],[121.2581,23.8725],[121.2571,23.8697],[121.253,23.8679],[121.253,23.8634],[121.2499,23.8596],[121.2502,23.8566],[121.2488,23.8521],[121.2453,23.8497],[121.2435,23.845],[121.2393,23.8401],[121.2393,23.8371],[121.2377,23.8325],[121.2381,23.8296],[121.2369,23.8238],[121.2379,23.8214],[121.2347,23.8177],[121.2346,23.8122],[121.2274,23.8083],[121.2255,23.7981],[121.2266,23.7961],[121.2271,23.7913],[121.2306,23.7899],[121.2305,23.7881],[121.2279,23.7848],[121.2237,23.7824],[121.2195,23.7818],[121.2183,23.7797],[121.213,23.7769],[121.2089,23.776],[121.2047,23.7724],[121.2066,23.7674],[121.2087,23.7658],[121.2064,23.7628],[121.211,23.7611],[121.2132,23.7576],[121.2175,23.757],[121.2215,23.7527],[121.225,23.7518],[121.2293,23.7523],[121.2323,23.7508],[121.2332,23.748],[121.2299,23.7469],[121.2288,23.7445],[121.2284,23.7365],[121.2298,23.73],[121.232,23.7295],[121.2359,23.7245],[121.2393,23.7244],[121.2378,23.7199],[121.2396,23.7154],[121.2388,23.7129],[121.2412,23.709],[121.2412,23.7064],[121.2394,23.6998],[121.2412,23.6984],[121.2393,23.6943],[121.2395,23.6872],[121.2343,23.681],[121.2324,23.6775],[121.236,23.6708],[121.2358,23.6622],[121.2319,23.6579],[121.2307,23.6535],[121.2312,23.6514],[121.2299,23.6474],[121.2278,23.6454],[121.2241,23.6389],[121.224,23.6329],[121.2249,23.6274],[121.2233,23.6226],[121.22,23.6169],[121.2173,23.6147],[121.2158,23.607],[121.2136,23.6006],[121.2081,23.5982],[121.2065,23.5958],[121.2001,23.5964],[121.1943,23.6006],[121.1912,23.5982],[121.1894,23.5948],[121.1832,23.593],[121.1801,23.5882],[121.1785,23.5828],[121.1714,23.5841],[121.1694,23.5866],[121.1608,23.5871],[121.1582,23.5857],[121.1533,23.5867],[121.152,23.5817],[121.1519,23.5739],[121.1536,23.5715],[121.1604,23.5698],[121.1603,23.5678],[121.1579,23.5637],[121.1573,23.5597],[121.1512,23.5599],[121.15,23.5573],[121.1462,23.5542],[121.1481,23.5524],[121.1511,23.5452],[121.1484,23.5395],[121.1482,23.5359],[121.1469,23.534],[121.1507,23.529],[121.1511,23.527],[121.147,23.5272],[121.1391,23.5214],[121.1355,23.5151],[121.1324,23.515],[121.1309,23.5177],[121.1283,23.5185],[121.1264,23.517],[121.1212,23.5206],[121.1181,23.5216],[121.1155,23.5202],[121.1103,23.519],[121.1037,23.5189],[121.1014,23.521],[121.0976,23.5217],[121.0931,23.5176],[121.0919,23.5145],[121.0881,23.514],[121.0831,23.5146],[121.0787,23.5164],[121.0685,23.5185],[121.0688,23.5148],[121.066,23.5076],[121.066,23.5061],[121.0629,23.5036],[121.0621,23.4994],[121.0549,23.4961],[121.0528,23.4938],[121.0541,23.4903],[121.0536,23.4878],[121.05,23.4864],[121.0483,23.4823],[121.0453,23.4808],[121.0394,23.4749],[121.0392,23.4734],[121.0444,23.4701],[121.0497,23.4678],[121.0513,23.4643],[121.059,23.4615],[121.0559,23.4593],[121.0533,23.4556],[121.0518,23.4508],[121.0465,23.4509],[121.0442,23.4491],[121.0335,23.4453],[121.0318,23.4424],[121.0285,23.4415],[121.0264,23.4391],[121.022,23.439],[121.0196,23.4364],[121.0153,23.4354],[121.0129,23.4332],[121.0142,23.4309],[121.0166,23.431],[121.0211,23.4294],[121.0227,23.4248],[121.0292,23.4228],[121.0294,23.4202],[121.0269,23.4131],[121.0274,23.4102],[121.0258,23.4029],[121.0223,23.4001],[121.0192,23.4015],[121.0155,23.3971],[121.0105,23.3951],[121.0064,23.3966],[121.0032,23.3948],[121.0011,23.3917],[121.0037,23.3889],[121.0077,23.3867],[121.0061,23.3836],[121.0001,23.3824],[120.9943,23.3764],[120.9912,23.3714],[120.9881,23.3707],[120.9869,23.3663],[120.9871,23.3587],[120.9941,23.3565],[121.0001,23.3565],[121.0076,23.352],[121.0075,23.3492],[121.0101,23.3459],[121.0152,23.3463],[121.02,23.3504],[121.0223,23.3466],[121.0247,23.3399],[121.027,23.3376],[121.0307,23.3372],[121.0328,23.3339],[121.0365,23.3335],[121.0394,23.3291],[121.045,23.3278],[121.0488,23.3253],[121.0472,23.32],[121.0481,23.3146],[121.0462,23.3085],[121.042,23.3072],[121.0369,23.304],[121.0319,23.3037],[121.0314,23.3004],[121.0283,23.2971],[121.0346,23.2998],[121.0389,23.3007],[121.0433,23.2962],[121.0459,23.2958],[121.0527,23.2914],[121.0561,23.2905],[121.0573,23.2876],[121.0595,23.286],[121.0598,23.2836],[121.0621,23.2792],[121.0607,23.2769],[121.0624,23.2658],[121.0642,23.2631],[121.0662,23.2573],[121.0692,23.2552],[121.0698,23.2495],[121.071,23.2468],[121.0738,23.2447],[121.0785,23.2376],[121.078,23.2339],[121.0843,23.233],[121.0865,23.2339],[121.0939,23.2332],[121.0964,23.2296],[121.1045,23.2262],[121.1056,23.2242],[121.1083,23.2235],[121.1147,23.225],[121.1196,23.2246],[121.125,23.225],[121.1294,23.2233],[121.1314,23.2198],[121.1323,23.2157],[121.1344,23.2114],[121.1377,23.2088],[121.1394,23.2019],[121.1493,23.1986],[121.1547,23.1991],[121.1606,23.2058],[121.1654,23.2072],[121.17,23.2071],[121.1756,23.2102],[121.1795,23.2086],[121.1844,23.2049],[121.1893,23.2039],[121.1907,23.2026],[121.1944,23.1925],[121.1983,23.1884],[121.1979,23.186],[121.1998,23.1783],[121.1991,23.1758],[121.2028,23.1698],[121.2057,23.1669],[121.2067,23.1625],[121.2103,23.1599],[121.2125,23.1547],[121.2106,23.148],[121.212,23.1442],[121.2146,23.1439],[121.2248,23.1399],[121.231,23.1392],[121.2346,23.1334],[121.2385,23.1287],[121.2425,23.128],[121.2483,23.1296],[121.2491,23.1315],[121.2578,23.126],[121.2595,23.1211],[121.2673,23.1141],[121.2674,23.1093],[121.2643,23.104],[121.271,23.1009],[121.2723,23.0979],[121.2782,23.1007],[121.2809,23.104],[121.283,23.1038],[121.2844,23.1066],[121.2873,23.1067],[121.2914,23.1094],[121.2978,23.1099],[121.3,23.1093],[121.3028,23.111],[121.3087,23.1112],[121.316,23.1105],[121.3196,23.1136],[121.3219,23.117],[121.3229,23.1234],[121.3218,23.1276],[121.3222,23.1315],[121.3204,23.1381],[121.3221,23.1396],[121.3244,23.1463],[121.3244,23.149],[121.3272,23.1521],[121.3238,23.1551],[121.3174,23.1645],[121.3187,23.1683],[121.3219,23.1694],[121.3222,23.1732],[121.324,23.175],[121.324,23.1787],[121.3284,23.1793],[121.3349,23.1779],[121.3353,23.1813],[121.338,23.1858],[121.3376,23.1886],[121.3398,23.1939],[121.3422,23.1959],[121.3432,23.1985],[121.3438,23.2044],[121.3453,23.2083],[121.3469,23.2092],[121.3457,23.2134],[121.3466,23.2172],[121.3501,23.218],[121.3533,23.22],[121.3559,23.2239],[121.3545,23.2278],[121.3526,23.2302],[121.3534,23.2333],[121.3579,23.2386],[121.3616,23.2467],[121.3589,23.2497],[121.3594,23.2527],[121.3619,23.2542],[121.3631,23.2571],[121.3712,23.2633],[121.3716,23.2668],[121.3738,23.269],[121.3779,23.2696],[121.3783,23.2775],[121.3769,23.2815],[121.3772,23.2914],[121.3763,23.2958],[121.3782,23.2992],[121.3778,23.3008],[121.3831,23.3074],[121.3877,23.3105],[121.3901,23.3157],[121.3902,23.3206],[121.392,23.3217],[121.3979,23.3217],[121.3997,23.324],[121.3996,23.3267],[121.4011,23.3316],[121.4038,23.3372],[121.4061,23.3391],[121.4102,23.3463],[121.414,23.3474],[121.4168,23.3494],[121.4183,23.3522],[121.4226,23.3558],[121.423,23.3599],[121.4178,23.3607],[121.4139,23.3634],[121.4101,23.3649],[121.4076,23.3646],[121.4044,23.3673],[121.4037,23.3756],[121.4015,23.3808],[121.4,23.3866],[121.4071,23.394],[121.4095,23.3973],[121.4131,23.4051],[121.4151,23.4074],[121.42,23.4169],[121.4196,23.4196],[121.4289,23.4294],[121.4328,23.4314],[121.4334,23.4329],[121.4411,23.4341],[121.4421,23.4369],[121.4443,23.4388],[121.4461,23.4436],[121.451,23.4432],[121.4551,23.4411],[121.4567,23.4422],[121.4617,23.4415],[121.462,23.4395],[121.4668,23.4397],[121.4706,23.4408],[121.4734,23.4404],[121.4803,23.4308],[121.4841,23.4305],[121.4869,23.4335],[121.4911,23.4353],[121.4961,23.4348],[121.4981,23.448],[121.4999,23.4564],[121.5017,23.4598],[121.5041,23.4685],[121.5081,23.4717],[121.5097,23.4794],[121.5126,23.4824],[121.514,23.4871],[121.5125,23.4918],[121.5081,23.4912],[121.5063,23.4997],[121.5061,23.505],[121.5044,23.5084],[121.5049,23.5138],[121.5037,23.5174],[121.5054,23.5294],[121.508,23.5315],[121.507,23.5342],[121.5081,23.5371],[121.5113,23.5515],[121.5169,23.5601],[121.5186,23.5635],[121.522,23.5671],[121.5238,23.573],[121.5263,23.5764],[121.5261,23.5824],[121.5301,23.5972],[121.5305,23.6018],[121.5298,23.6091],[121.531,23.6184],[121.5312,23.6265],[121.5335,23.6344],[121.5359,23.6456],[121.5399,23.6516],[121.5428,23.6526],[121.5438,23.656],[121.541,23.6605],[121.5454,23.6646],[121.546,23.6743],[121.5472,23.6796],[121.5488,23.6832],[121.5507,23.6924],[121.5534,23.6983],[121.5506,23.7005],[121.5499,23.7028],[121.5493,23.7106],[121.5499,23.7166],[121.5522,23.7227],[121.5567,23.725],[121.5611,23.7333],[121.5632,23.7358],[121.5638,23.739],[121.5657,23.7404],[121.5698,23.7495],[121.5725,23.7566],[121.5731,23.7623],[121.5713,23.7657],[121.5708,23.7824],[121.5721,23.7912],[121.5724,23.7979],[121.5746,23.8063],[121.5765,23.8109],[121.5813,23.816],[121.5834,23.8198],[121.5854,23.8285],[121.5874,23.8311],[121.5896,23.8374],[121.5939,23.8446],[121.5982,23.857],[121.5996,23.8637],[121.5998,23.8676],[121.6016,23.8735],[121.6041,23.8874],[121.6057,23.8994],[121.6049,23.9039],[121.605,23.9094],[121.6066,23.9183],[121.6092,23.9237],[121.61,23.9304],[121.6119,23.9333],[121.6105,23.942],[121.6069,23.9526],[121.6079,23.9602],[121.6124,23.9668],[121.6158,23.9732],[121.6222,23.9779],[121.6266,23.9737],[121.6283,23.9695],[121.635,23.9798],[121.6348,23.9846],[121.6414,23.999],[121.6431,23.9996],[121.6445,24.0031],[121.6475,24.007],[121.6479,24.0089],[121.6437,24.0194],[121.6362,24.0241],[121.6302,24.0306],[121.6264,24.0368],[121.6197,24.0508],[121.6165,24.0612],[121.6157,24.0692],[121.6159,24.0772],[121.6191,24.0896],[121.6257,24.0994],[121.6291,24.1035],[121.6341,24.1079],[121.6449,24.1136],[121.6521,24.1185],[121.6551,24.1215],[121.6583,24.1271],[121.6638,24.1345],[121.6651,24.1404],[121.6642,24.1554],[121.6607,24.1617],[121.6585,24.1706],[121.6587,24.1791],[121.6598,24.1844],[121.6633,24.1941],[121.6664,24.1982],[121.6696,24.2009],[121.6739,24.2076],[121.6849,24.2122],[121.6905,24.2169],[121.6989,24.222],[121.7061,24.2256],[121.7112,24.236],[121.716,24.2421],[121.7192,24.2438],[121.724,24.244],[121.7283,24.2457],[121.7356,24.2528],[121.7392,24.2569],[121.7439,24.2607],[121.7462,24.2711],[121.747,24.2765],[121.7485,24.2808],[121.7512,24.2854],[121.7614,24.2959],[121.7695,24.3027],[121.773,24.3088],[121.7741,24.3153]]]},"properties":{"COUNTYID":"U","COUNTYCODE":"10015","COUNTYNAME":"花蓮縣","COUNTYENG":"Hualien County"},"id":"10015"},{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[119.4383,23.2015],[119.443,23.2006],[119.4438,23.2145],[119.4466,23.2171],[119.4476,23.2204],[119.4398,23.2214],[119.4237,23.219],[119.4197,23.2174],[119.4147,23.2173],[119.4097,23.2153],[119.4125,23.2115],[119.4207,23.2031],[119.4218,23.192],[119.4277,23.1896],[119.4304,23.1867],[119.4318,23.1899],[119.4291,23.1935],[119.4299,23.1968],[119.433,23.1979],[119.4358,23.2018],[119.4382,23.2015],[119.4383,23.2015],[119.4382,23.2015],[119.4383,23.2015]]],[[[119.6179,23.2445],[119.6214,23.247],[119.6196,23.2488],[119.621,23.2532],[119.6138,23.2536],[119.6088,23.2515],[119.6087,23.2489],[119.612,23.2456],[119.6152,23.2441],[119.6179,23.2445]]],[[[119.6774,23.2642],[119.6753,23.2629],[119.6713,23.2633],[119.6668,23.2615],[119.6655,23.2579],[119.6679,23.2555],[119.6653,23.2513],[119.6708,23.2458],[119.6732,23.2477],[119.6724,23.2506],[119.6746,23.2538],[119.6782,23.2565],[119.6781,23.2597],[119.6795,23.2629],[119.6774,23.2642]]],[[[119.6609,23.2644],[119.6575,23.2633],[119.6573,23.2606],[119.6601,23.2602],[119.6609,23.2644]]],[[[119.5198,23.2646],[119.5184,23.2652],[119.514,23.2622],[119.5142,23.2597],[119.5116,23.2555],[119.5147,23.2557],[119.5176,23.2576],[119.519,23.2602],[119.5213,23.2612],[119.5198,23.2646]]],[[[119.5067,23.2726],[119.5034,23.2725],[119.505,23.2682],[119.5109,23.2671],[119.511,23.2707],[119.5098,23.2724],[119.5067,23.2726]]],[[[119.5018,23.2763],[119.5018,23.2764],[119.5017,23.2764],[119.5018,23.2763],[119.5018,23.2764],[119.5018,23.2763]]],[[[119.3228,23.3246],[119.3227,23.3246],[119.3228,23.3246],[119.3227,23.3246],[119.3227,23.3241],[119.3228,23.3246]]],[[[119.3227,23.3241],[119.3202,23.3266],[119.3187,23.325],[119.3186,23.3249],[119.3187,23.325],[119.3185,23.3251],[119.3186,23.3249],[119.3227,23.3241]]],[[[119.5424,23.367],[119.5402,23.3732],[119.5363,23.374],[119.5268,23.371],[119.5276,23.3687],[119.5228,23.3659],[119.5195,23.3667],[119.5186,23.364],[119.5263,23.3587],[119.5257,23.3624],[119.528,23.3646],[119.5323,23.3669],[119.5377,23.3655],[119.5424,23.367]]],[[[119.5141,23.3713],[119.5084,23.3714],[119.5103,23.3745],[119.5083,23.3769],[119.509,23.3787],[119.5072,23.3882],[119.508,23.3909],[119.5042,23.3917],[119.5016,23.3891],[119.4975,23.3906],[119.4973,23.3941],[119.495,23.397],[119.491,23.397],[119.4905,23.3936],[119.493,23.392],[119.4931,23.3893],[119.4956,23.388],[119.4951,23.3846],[119.4922,23.3823],[119.4917,23.3792],[119.4937,23.3782],[119.4935,23.3751],[119.4949,23.3727],[119.4933,23.3707],[119.4946,23.3654],[119.49,23.3614],[119.4892,23.359],[119.4867,23.3567],[119.4906,23.3531],[119.4969,23.3547],[119.4993,23.3542],[119.5024,23.3557],[119.5074,23.3539],[119.5138,23.3535],[119.5095,23.3564],[119.5081,23.359],[119.5076,23.3647],[119.5097,23.3663],[119.5163,23.3678],[119.5141,23.3713]]],[[[119.3221,23.3992],[119.3277,23.4009],[119.3276,23.403],[119.3307,23.4049],[119.3286,23.4072],[119.3251,23.4083],[119.3217,23.4109],[119.3188,23.4113],[119.3187,23.4077],[119.3171,23.4042],[119.3145,23.403],[119.3147,23.3999],[119.3198,23.398],[119.3221,23.3992]]],[[[119.5411,23.496],[119.5374,23.4981],[119.535,23.4959],[119.5299,23.496],[119.5254,23.4927],[119.5208,23.4923],[119.5209,23.4905],[119.5171,23.4865],[119.5141,23.487],[119.5123,23.4913],[119.5095,23.4907],[119.5089,23.4864],[119.511,23.4831],[119.515,23.4847],[119.5247,23.4866],[119.5286,23.4866],[119.535,23.4908],[119.5397,23.4931],[119.5411,23.496]]],[[[119.5205,23.515],[119.5172,23.5147],[119.5143,23.5098],[119.5197,23.5088],[119.522,23.51],[119.5218,23.5145],[119.5205,23.515]]],[[[119.7001,23.62],[119.699,23.6174],[119.6988,23.6172],[119.699,23.6174],[119.7001,23.6198],[119.7001,23.6199],[119.7001,23.62],[119.7001,23.6199],[119.7001,23.6198],[119.7001,23.62]]],[[[119.5708,23.6177],[119.5698,23.6215],[119.5652,23.6191],[119.5669,23.6178],[119.5708,23.6177]]],[[[119.6344,23.6515],[119.6316,23.6502],[119.6317,23.6456],[119.6361,23.6477],[119.6369,23.6505],[119.6344,23.6515]]],[[[119.6661,23.6616],[119.6658,23.6667],[119.6636,23.6664],[119.6606,23.6628],[119.6581,23.6628],[119.6593,23.6589],[119.6643,23.6588],[119.6661,23.6616]]],[[[119.6302,23.6044],[119.6303,23.606],[119.6242,23.6078],[119.6203,23.6066],[119.6217,23.6031],[119.6168,23.601],[119.6156,23.6036],[119.6132,23.602],[119.6126,23.6066],[119.6099,23.6105],[119.6137,23.614],[119.6132,23.6203],[119.6059,23.621],[119.6046,23.6254],[119.6023,23.6285],[119.6046,23.6316],[119.6095,23.6326],[119.6072,23.6367],[119.6025,23.6336],[119.5992,23.6363],[119.5976,23.6412],[119.6017,23.6425],[119.6011,23.6479],[119.6036,23.6495],[119.6102,23.6481],[119.6124,23.6526],[119.61,23.6542],[119.6065,23.6588],[119.6083,23.6629],[119.6029,23.6645],[119.6036,23.6689],[119.5996,23.6717],[119.5999,23.6738],[119.5966,23.6744],[119.5949,23.6719],[119.5918,23.6716],[119.5876,23.6728],[119.5855,23.676],[119.5825,23.6775],[119.5787,23.6762],[119.577,23.674],[119.57,23.6711],[119.5606,23.6707],[119.5552,23.6686],[119.5508,23.6627],[119.554,23.6575],[119.5416,23.6429],[119.5401,23.6402],[119.5357,23.6387],[119.5319,23.6389],[119.5253,23.6422],[119.5226,23.6423],[119.5198,23.644],[119.5197,23.6479],[119.5241,23.651],[119.5238,23.6558],[119.5179,23.6546],[119.5143,23.6556],[119.5153,23.6498],[119.512,23.6484],[119.5097,23.6415],[119.5068,23.6356],[119.5034,23.6345],[119.5022,23.631],[119.5041,23.6238],[119.5011,23.6222],[119.4995,23.6198],[119.5018,23.6169],[119.5038,23.6165],[119.5087,23.6132],[119.5082,23.6107],[119.5045,23.6098],[119.5022,23.6011],[119.5035,23.6001],[119.5042,23.597],[119.5001,23.5955],[119.4975,23.5968],[119.4978,23.6008],[119.493,23.6005],[119.4903,23.5954],[119.5002,23.5921],[119.5035,23.589],[119.5046,23.586],[119.5033,23.5834],[119.5029,23.5784],[119.5006,23.575],[119.4988,23.5747],[119.4929,23.5701],[119.4889,23.57],[119.4834,23.5754],[119.4817,23.575],[119.4773,23.5685],[119.4696,23.5654],[119.4673,23.5614],[119.4719,23.5593],[119.4765,23.5598],[119.479,23.5618],[119.4796,23.5641],[119.4831,23.5643],[119.4896,23.5626],[119.494,23.5675],[119.4979,23.5682],[119.5017,23.5667],[119.5051,23.5665],[119.511,23.5642],[119.5151,23.5641],[119.518,23.567],[119.5147,23.5685],[119.5132,23.5705],[119.5147,23.5748],[119.512,23.5795],[119.512,23.5819],[119.5158,23.5829],[119.5163,23.5855],[119.5125,23.5921],[119.515,23.5947],[119.5193,23.5943],[119.5231,23.6015],[119.5216,23.6079],[119.5203,23.6094],[119.5218,23.6146],[119.5195,23.6187],[119.5211,23.6209],[119.5177,23.6268],[119.5182,23.6287],[119.5217,23.6313],[119.5245,23.6301],[119.5303,23.6302],[119.5319,23.6323],[119.5404,23.6344],[119.5427,23.6378],[119.5407,23.6406],[119.5465,23.6484],[119.5532,23.6562],[119.5586,23.6556],[119.5623,23.6526],[119.5665,23.6567],[119.5676,23.6601],[119.5723,23.6626],[119.5778,23.6625],[119.5816,23.6609],[119.5807,23.6576],[119.5833,23.6554],[119.5824,23.6526],[119.5861,23.6499],[119.5887,23.6469],[119.5891,23.6443],[119.5938,23.6416],[119.5958,23.6355],[119.5943,23.6319],[119.5907,23.6296],[119.5913,23.628],[119.5891,23.6252],[119.5894,23.6223],[119.593,23.6246],[119.5955,23.6247],[119.6009,23.6227],[119.6046,23.625],[119.6054,23.6201],[119.6027,23.6174],[119.5975,23.6156],[119.6013,23.6126],[119.6043,23.6091],[119.6096,23.6104],[119.6124,23.6056],[119.6058,23.6056],[119.6057,23.6025],[119.6034,23.6013],[119.6048,23.5959],[119.607,23.5924],[119.6066,23.5852],[119.6006,23.5847],[119.5984,23.5827],[119.5997,23.581],[119.599,23.578],[119.5971,23.572],[119.5939,23.5707],[119.5943,23.5745],[119.5909,23.5743],[119.5873,23.5718],[119.5872,23.5716],[119.5873,23.5718],[119.5857,23.5732],[119.5853,23.5784],[119.5827,23.5798],[119.5826,23.5833],[119.5847,23.585],[119.5857,23.589],[119.5833,23.5907],[119.5801,23.5896],[119.577,23.5861],[119.5711,23.5859],[119.5717,23.5849],[119.5699,23.5853],[119.5701,23.5856],[119.5706,23.5855],[119.5701,23.5856],[119.5699,23.5853],[119.5645,23.5858],[119.5619,23.5838],[119.5667,23.5776],[119.5673,23.5758],[119.5663,23.5734],[119.5599,23.5704],[119.5601,23.5645],[119.5571,23.5636],[119.5579,23.5613],[119.5621,23.5625],[119.567,23.5627],[119.5703,23.5666],[119.572,23.5657],[119.5743,23.568],[119.5795,23.5634],[119.5768,23.5605],[119.5771,23.5587],[119.5751,23.5554],[119.5714,23.5529],[119.5667,23.5555],[119.5627,23.5563],[119.5619,23.5548],[119.5627,23.55],[119.5686,23.5484],[119.5723,23.5491],[119.573,23.5462],[119.5815,23.5497],[119.5839,23.5484],[119.589,23.5514],[119.5924,23.5525],[119.5931,23.5504],[119.5997,23.55],[119.6024,23.5478],[119.6001,23.5454],[119.6006,23.5402],[119.5994,23.5384],[119.5961,23.5392],[119.5949,23.5369],[119.5972,23.5328],[119.5995,23.5309],[119.5935,23.5272],[119.5908,23.5307],[119.5864,23.5291],[119.5844,23.5319],[119.5807,23.5319],[119.5803,23.5237],[119.5786,23.522],[119.574,23.52],[119.5717,23.5243],[119.5723,23.5283],[119.5705,23.5318],[119.5661,23.5316],[119.5646,23.5298],[119.5608,23.5308],[119.5574,23.5267],[119.5547,23.5293],[119.5545,23.5313],[119.557,23.5333],[119.5568,23.538],[119.5498,23.5407],[119.5509,23.5478],[119.5471,23.5524],[119.5445,23.546],[119.5414,23.5431],[119.5413,23.5387],[119.5433,23.5378],[119.5477,23.5395],[119.5544,23.5299],[119.5535,23.5283],[119.5571,23.5234],[119.5603,23.5239],[119.5635,23.5263],[119.5679,23.5256],[119.5725,23.5221],[119.574,23.5179],[119.5707,23.5129],[119.572,23.5085],[119.5754,23.5073],[119.5782,23.5093],[119.5859,23.5098],[119.5918,23.5129],[119.5987,23.5118],[119.6025,23.5091],[119.6063,23.5078],[119.608,23.509],[119.6079,23.5128],[119.6056,23.5166],[119.6116,23.519],[119.6118,23.5217],[119.6063,23.5224],[119.6045,23.5251],[119.605,23.5277],[119.6117,23.5341],[119.6133,23.5373],[119.616,23.5389],[119.621,23.5377],[119.6215,23.542],[119.6245,23.5449],[119.6288,23.5475],[119.6317,23.5461],[119.6353,23.5471],[119.6353,23.5513],[119.6386,23.553],[119.6394,23.5557],[119.6418,23.5583],[119.6463,23.5605],[119.6557,23.5608],[119.6638,23.5603],[119.6675,23.562],[119.672,23.5614],[119.6761,23.5597],[119.677,23.5569],[119.6744,23.5543],[119.678,23.5513],[119.6823,23.5535],[119.6851,23.5527],[119.6883,23.5547],[119.6917,23.5544],[119.6937,23.5564],[119.692,23.5606],[119.687,23.562],[119.6834,23.5651],[119.6821,23.5718],[119.6806,23.573],[119.6812,23.5821],[119.6805,23.5852],[119.6754,23.5943],[119.6716,23.5988],[119.6699,23.5966],[119.6685,23.5917],[119.6657,23.5907],[119.6602,23.5916],[119.6608,23.5961],[119.6548,23.5993],[119.6551,23.6016],[119.6574,23.6039],[119.6572,23.6065],[119.6552,23.6085],[119.6511,23.6099],[119.6499,23.6036],[119.6467,23.601],[119.6465,23.597],[119.6444,23.5963],[119.6413,23.5889],[119.6377,23.5914],[119.6414,23.5964],[119.6397,23.5992],[119.6375,23.5988],[119.6329,23.5953],[119.6343,23.5897],[119.6289,23.5803],[119.6248,23.5811],[119.6266,23.584],[119.624,23.5868],[119.6246,23.5927],[119.6278,23.5953],[119.6251,23.6004],[119.6278,23.6038],[119.6302,23.6044]]],[[[119.6723,23.6899],[119.6708,23.6875],[119.6723,23.6898],[119.6723,23.6899]]],[[[119.5521,23.7208],[119.5541,23.7182],[119.5556,23.7138],[119.5533,23.7112],[119.5564,23.7096],[119.5586,23.711],[119.557,23.7135],[119.5577,23.7161],[119.557,23.7207],[119.5521,23.7208]]],[[[119.6248,23.749],[119.6246,23.7492],[119.6247,23.749],[119.6248,23.749]]],[[[119.6246,23.7515],[119.6249,23.7518],[119.6248,23.7518],[119.6246,23.7515]]],[[[119.6191,23.7406],[119.6204,23.743],[119.6238,23.7436],[119.6226,23.7478],[119.6204,23.7498],[119.6152,23.7515],[119.6116,23.7539],[119.6117,23.7577],[119.6057,23.7526],[119.6074,23.7524],[119.6076,23.7536],[119.6074,23.7524],[119.6052,23.7496],[119.6041,23.7456],[119.6023,23.7438],[119.5973,23.7418],[119.5958,23.7377],[119.6006,23.734],[119.602,23.7302],[119.6048,23.7327],[119.6064,23.7368],[119.6105,23.7396],[119.6163,23.7419],[119.6191,23.7406]]],[[[119.6025,23.7673],[119.6074,23.7706],[119.6079,23.7732],[119.606,23.7757],[119.6059,23.7757],[119.606,23.7757],[119.606,23.7746],[119.6059,23.7744],[119.606,23.7746],[119.6059,23.7744],[119.603,23.7709],[119.5999,23.7696],[119.5989,23.7658],[119.5965,23.762],[119.5994,23.76],[119.6024,23.7671],[119.6025,23.7673]]],[[[119.6113,23.7791],[119.6112,23.7801],[119.6112,23.78],[119.6112,23.7799],[119.6112,23.78],[119.6112,23.7799],[119.6108,23.7778],[119.6113,23.7791],[119.6112,23.7788],[119.6113,23.7791]]],[[[119.6072,23.7818],[119.6071,23.7819],[119.6071,23.7818],[119.6072,23.7818],[119.6071,23.7818],[119.607,23.7818],[119.6077,23.7797],[119.6079,23.7801],[119.6077,23.7818],[119.6075,23.7819],[119.6073,23.7819],[119.6072,23.7818]]],[[[119.6071,23.7819],[119.6069,23.7823],[119.6068,23.7823],[119.6066,23.782],[119.607,23.7818],[119.6071,23.7819]]],[[[119.608,23.7824],[119.6067,23.7826],[119.6068,23.7823],[119.6069,23.7823],[119.6073,23.7819],[119.6075,23.7819],[119.6077,23.7818],[119.608,23.7824]]],[[[119.5974,23.7959],[119.5967,23.796],[119.5976,23.7954],[119.5974,23.7959],[119.5976,23.796],[119.5974,23.7959]]]]},"properties":{"COUNTYID":"X","COUNTYCODE":"10016","COUNTYNAME":"澎湖縣","COUNTYENG":"Penghu County"},"id":"10016"},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[120.9354,24.7126],[120.9386,24.7166],[120.9391,24.7227],[120.9389,24.7298],[120.9432,24.7389],[120.9442,24.7444],[120.9513,24.7445],[120.9542,24.7434],[120.9578,24.7463],[120.9572,24.7482],[120.9615,24.7512],[120.9635,24.7555],[120.9665,24.7558],[120.9675,24.7606],[120.9698,24.7652],[120.9774,24.7631],[120.9795,24.7633],[120.9821,24.7675],[120.9872,24.7698],[120.9858,24.7769],[120.9907,24.7773],[120.993,24.7806],[120.9955,24.7802],[121.0066,24.7743],[121.0081,24.7745],[121.0137,24.7708],[121.0169,24.7649],[121.0185,24.7635],[121.0205,24.7566],[121.0238,24.7568],[121.0287,24.7588],[121.0323,24.7616],[121.0335,24.7641],[121.0299,24.7664],[121.0282,24.7736],[121.0297,24.7764],[121.0249,24.78],[121.0275,24.7825],[121.0248,24.786],[121.0246,24.7892],[121.0219,24.791],[121.0206,24.794],[121.0229,24.7956],[121.0207,24.7985],[121.0257,24.799],[121.0213,24.8016],[121.0177,24.8077],[121.0152,24.8085],[121.0082,24.8163],[121.0004,24.8221],[120.992,24.8236],[120.9871,24.8262],[120.9854,24.8294],[120.9812,24.8312],[120.9783,24.8297],[120.9737,24.8302],[120.9672,24.8327],[120.9628,24.8325],[120.9548,24.8346],[120.9473,24.8399],[120.9448,24.841],[120.9426,24.8474],[120.9403,24.8501],[120.9336,24.8528],[120.9313,24.8526],[120.9252,24.8548],[120.9212,24.8535],[120.9133,24.852],[120.9167,24.8487],[120.9155,24.8458],[120.9157,24.8411],[120.914,24.8377],[120.9093,24.8342],[120.9074,24.8302],[120.9028,24.8241],[120.8969,24.8092],[120.8961,24.8008],[120.8926,24.7944],[120.8921,24.7919],[120.8928,24.7862],[120.8929,24.7788],[120.8914,24.7761],[120.8927,24.7732],[120.8926,24.7696],[120.8967,24.7681],[120.8977,24.7645],[120.8932,24.7614],[120.8884,24.7542],[120.8851,24.7506],[120.8826,24.7465],[120.8778,24.7426],[120.8745,24.7383],[120.881,24.7333],[120.8847,24.7328],[120.8873,24.7339],[120.8908,24.7318],[120.8971,24.7333],[120.9014,24.7363],[120.9061,24.7408],[120.9086,24.7405],[120.9084,24.7367],[120.9125,24.7315],[120.9138,24.7276],[120.9138,24.7241],[120.9162,24.7218],[120.9136,24.7174],[120.9178,24.7162],[120.9196,24.717],[120.9231,24.7146],[120.9287,24.7153],[120.9354,24.7126]]]},"properties":{"COUNTYID":"O","COUNTYCODE":"10018","COUNTYNAME":"新竹市","COUNTYENG":"Hsinchu City"},"id":"10018"},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[121.403,24.5917],[121.3957,24.5889],[121.3917,24.5865],[121.3876,24.5865],[121.3812,24.5904],[121.3734,24.5934],[121.3715,24.5973],[121.3673,24.5988],[121.3633,24.6031],[121.3635,24.608],[121.3612,24.6101],[121.3588,24.6165],[121.3633,24.6232],[121.3654,24.6283],[121.3651,24.6319],[121.3612,24.6338],[121.3581,24.6335],[121.3574,24.6376],[121.3556,24.6414],[121.3524,24.6434],[121.353,24.6488],[121.3522,24.6525],[121.3532,24.6548],[121.3537,24.6647],[121.3485,24.6679],[121.3455,24.6664],[121.3439,24.6694],[121.3404,24.6664],[121.339,24.6791],[121.3359,24.6836],[121.3298,24.691],[121.3231,24.6954],[121.321,24.6955],[121.3179,24.6981],[121.3132,24.6977],[121.3039,24.6929],[121.3006,24.6941],[121.2995,24.6966],[121.3023,24.7019],[121.3032,24.7082],[121.3064,24.7131],[121.3076,24.7202],[121.3056,24.7241],[121.3007,24.7297],[121.2987,24.7307],[121.2982,24.7338],[121.3001,24.7374],[121.3008,24.7414],[121.3052,24.7461],[121.3051,24.7502],[121.3077,24.7552],[121.3041,24.7574],[121.3003,24.7636],[121.2986,24.7629],[121.2936,24.7643],[121.2925,24.7677],[121.2875,24.7687],[121.2843,24.7704],[121.2788,24.7707],[121.2731,24.7748],[121.2713,24.7748],[121.2706,24.7784],[121.2598,24.7822],[121.2588,24.7845],[121.2612,24.79],[121.2605,24.793],[121.2575,24.7928],[121.2522,24.7939],[121.2479,24.7965],[121.2468,24.7985],[121.2477,24.8025],[121.2454,24.807],[121.2434,24.8087],[121.2405,24.8057],[121.228,24.8028],[121.2215,24.7995],[121.2196,24.804],[121.2187,24.8086],[121.2197,24.8117],[121.217,24.8124],[121.2096,24.8095],[121.2083,24.8074],[121.2046,24.8074],[121.2028,24.8099],[121.2059,24.8124],[121.2031,24.8146],[121.2033,24.8173],[121.201,24.8179],[121.1989,24.8149],[121.1966,24.8177],[121.1835,24.8249],[121.1762,24.8275],[121.1759,24.8311],[121.1738,24.8335],[121.1602,24.8373],[121.1548,24.8422],[121.1518,24.8438],[121.1535,24.8486],[121.1557,24.8503],[121.1564,24.8558],[121.1613,24.8593],[121.1594,24.869],[121.1569,24.8737],[121.1579,24.8773],[121.1557,24.8807],[121.1522,24.8802],[121.1493,24.8812],[121.1444,24.8805],[121.1395,24.8824],[121.1342,24.8784],[121.1329,24.8798],[121.1281,24.881],[121.124,24.8799],[121.1149,24.8826],[121.1136,24.8825],[121.1078,24.8864],[121.111,24.891],[121.1091,24.8977],[121.1007,24.895],[121.0928,24.8934],[121.0865,24.8965],[121.0834,24.8989],[121.077,24.8987],[121.0709,24.9012],[121.0684,24.9031],[121.0612,24.9037],[121.0576,24.9058],[121.0592,24.9081],[121.0582,24.9139],[121.0608,24.9204],[121.0609,24.9241],[121.0593,24.9266],[121.0577,24.9333],[121.0584,24.9367],[121.0554,24.9363],[121.0518,24.9386],[121.0484,24.9396],[121.0463,24.9436],[121.0405,24.9433],[121.0382,24.9464],[121.0306,24.9439],[121.0294,24.9452],[121.0259,24.9405],[121.0223,24.9414],[121.0193,24.9404],[121.0096,24.9442],[121.0072,24.9462],[121.0044,24.9434],[121.0025,24.9399],[120.9982,24.9408],[120.9939,24.939],[120.9918,24.935],[120.9875,24.939],[120.982,24.94],[120.9697,24.9285],[120.9663,24.9218],[120.9645,24.9158],[120.9589,24.9029],[120.9526,24.8954],[120.9517,24.8907],[120.9473,24.8838],[120.9465,24.8787],[120.943,24.8722],[120.9398,24.8678],[120.933,24.8613],[120.9274,24.859],[120.9269,24.8554],[120.9252,24.8548],[120.9313,24.8526],[120.9336,24.8528],[120.9403,24.8501],[120.9426,24.8474],[120.9448,24.841],[120.9473,24.8399],[120.9548,24.8346],[120.9628,24.8325],[120.9672,24.8327],[120.9737,24.8302],[120.9783,24.8297],[120.9812,24.8312],[120.9854,24.8294],[120.9871,24.8262],[120.992,24.8236],[121.0004,24.8221],[121.0082,24.8163],[121.0152,24.8085],[121.0177,24.8077],[121.0213,24.8016],[121.0257,24.799],[121.0207,24.7985],[121.0229,24.7956],[121.0206,24.794],[121.0219,24.791],[121.0246,24.7892],[121.0248,24.786],[121.0275,24.7825],[121.0249,24.78],[121.0297,24.7764],[121.0282,24.7736],[121.0299,24.7664],[121.0335,24.7641],[121.0323,24.7616],[121.0287,24.7588],[121.0238,24.7568],[121.0205,24.7566],[121.0185,24.7635],[121.0169,24.7649],[121.0137,24.7708],[121.0081,24.7745],[121.0066,24.7743],[120.9955,24.7802],[120.993,24.7806],[120.9907,24.7773],[120.9858,24.7769],[120.9872,24.7698],[120.9821,24.7675],[120.9795,24.7633],[120.9774,24.7631],[120.9698,24.7652],[120.9675,24.7606],[120.9665,24.7558],[120.9635,24.7555],[120.9615,24.7512],[120.9572,24.7482],[120.9578,24.7463],[120.9542,24.7434],[120.9513,24.7445],[120.9442,24.7444],[120.9432,24.7389],[120.9389,24.7298],[120.9391,24.7227],[120.9386,24.7166],[120.9354,24.7126],[120.9365,24.7108],[120.9421,24.7073],[120.9454,24.7083],[120.9481,24.7112],[120.9498,24.7112],[120.9509,24.7077],[120.9549,24.7044],[120.9568,24.7066],[120.9596,24.7069],[120.9606,24.709],[120.9639,24.7116],[120.9661,24.7096],[120.9707,24.712],[120.9738,24.7119],[120.9767,24.7065],[120.9758,24.7049],[120.9724,24.7042],[120.9741,24.6994],[120.97,24.6939],[120.9663,24.6911],[120.9652,24.688],[120.97,24.6845],[120.9727,24.6859],[120.9754,24.6847],[120.9775,24.6782],[120.9765,24.6754],[120.9798,24.6735],[120.9832,24.6698],[120.9871,24.6635],[120.9891,24.663],[120.9917,24.6595],[120.9949,24.6595],[120.997,24.6547],[121.0002,24.6547],[121.0035,24.6563],[121.0058,24.6553],[121.0103,24.6562],[121.0107,24.6523],[121.0082,24.65],[121.0101,24.644],[121.0141,24.6409],[121.0189,24.6408],[121.0237,24.6418],[121.026,24.6399],[121.0262,24.6356],[121.0293,24.6329],[121.0335,24.6321],[121.0405,24.627],[121.0434,24.6271],[121.0495,24.6185],[121.0532,24.6154],[121.0586,24.6201],[121.0615,24.6218],[121.0661,24.618],[121.068,24.6149],[121.0743,24.6129],[121.0761,24.6085],[121.0757,24.6036],[121.0813,24.6006],[121.0831,24.5899],[121.0796,24.5882],[121.079,24.5842],[121.0755,24.581],[121.0745,24.5759],[121.0727,24.5728],[121.0715,24.5661],[121.0703,24.5631],[121.0682,24.5623],[121.0628,24.5575],[121.0617,24.5597],[121.0584,24.5606],[121.0582,24.5579],[121.0623,24.5561],[121.0702,24.5504],[121.0735,24.5494],[121.076,24.544],[121.0806,24.5409],[121.0801,24.5378],[121.0778,24.5342],[121.0784,24.529],[121.072,24.5263],[121.067,24.523],[121.0667,24.5206],[121.0685,24.5166],[121.0685,24.5124],[121.0703,24.5061],[121.0721,24.5034],[121.0719,24.4984],[121.0754,24.4995],[121.0791,24.4991],[121.0844,24.5013],[121.0908,24.4977],[121.0981,24.4964],[121.1025,24.4983],[121.1056,24.5007],[121.1089,24.5009],[121.1133,24.5065],[121.1173,24.5085],[121.121,24.5084],[121.1237,24.5101],[121.1297,24.5067],[121.1368,24.5066],[121.1434,24.5109],[121.1458,24.51],[121.1503,24.5062],[121.155,24.5068],[121.1618,24.5035],[121.1693,24.5026],[121.1705,24.5041],[121.1747,24.5048],[121.1779,24.5077],[121.183,24.508],[121.1868,24.5054],[121.1916,24.5075],[121.1953,24.507],[121.2005,24.5115],[121.2067,24.513],[121.2097,24.5115],[121.2138,24.5147],[121.2176,24.514],[121.2174,24.5097],[121.2224,24.5074],[121.2219,24.5048],[121.2186,24.4984],[121.2229,24.4948],[121.2289,24.4923],[121.2297,24.4891],[121.2336,24.4874],[121.2346,24.4838],[121.2427,24.4782],[121.244,24.4756],[121.2444,24.4699],[121.2491,24.466],[121.2581,24.4632],[121.258,24.4575],[121.2626,24.4553],[121.2606,24.4517],[121.2621,24.4476],[121.2617,24.4442],[121.2589,24.4407],[121.2589,24.438],[121.26,24.4362],[121.2591,24.4309],[121.2608,24.4286],[121.2654,24.4286],[121.2693,24.4274],[121.2716,24.4298],[121.2785,24.4293],[121.2843,24.4306],[121.2932,24.4311],[121.2976,24.4331],[121.3057,24.4326],[121.3103,24.4364],[121.313,24.4368],[121.3177,24.4415],[121.3233,24.4558],[121.3299,24.4643],[121.3362,24.4678],[121.3356,24.4715],[121.3401,24.4749],[121.3428,24.4823],[121.3463,24.4847],[121.3507,24.4843],[121.3575,24.4864],[121.3617,24.4905],[121.365,24.4959],[121.3709,24.498],[121.3719,24.4996],[121.3733,24.5099],[121.3793,24.5095],[121.3836,24.5102],[121.3853,24.5134],[121.3853,24.5171],[121.3885,24.5178],[121.3907,24.5232],[121.3933,24.5246],[121.3975,24.5247],[121.4016,24.5291],[121.3989,24.5324],[121.3985,24.5363],[121.3967,24.5398],[121.3987,24.547],[121.3983,24.5494],[121.3954,24.553],[121.3947,24.5556],[121.3976,24.5597],[121.4014,24.5622],[121.4012,24.5645],[121.4039,24.569],[121.4071,24.5698],[121.4122,24.5731],[121.4121,24.5749],[121.4093,24.5811],[121.4035,24.5897],[121.403,24.5917]]]},"properties":{"COUNTYID":"J","COUNTYCODE":"10004","COUNTYNAME":"新竹縣","COUNTYENG":"Hsinchu County"},"id":"10004"},{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[120.3796,22.356],[120.377,22.3557],[120.3721,22.3532],[120.3674,22.3521],[120.3609,22.346],[120.3626,22.3434],[120.3632,22.34],[120.3617,22.3388],[120.3603,22.3347],[120.3536,22.3294],[120.3531,22.3258],[120.3541,22.3237],[120.3599,22.3222],[120.3674,22.3263],[120.3715,22.3311],[120.3755,22.3336],[120.3768,22.3357],[120.388,22.3427],[120.389,22.3495],[120.3796,22.356]]],[[[120.8646,22.8431],[120.862,22.8474],[120.8594,22.8492],[120.86,22.8512],[120.857,22.853],[120.8562,22.8551],[120.853,22.8576],[120.8478,22.8518],[120.8438,22.8534],[120.8413,22.8568],[120.8417,22.8585],[120.8373,22.8642],[120.833,22.8663],[120.829,22.8657],[120.8261,22.8664],[120.823,22.8657],[120.8191,22.8623],[120.8163,22.8622],[120.8142,22.8605],[120.8138,22.8577],[120.8071,22.8549],[120.8011,22.851],[120.7937,22.8522],[120.7917,22.8484],[120.793,22.8423],[120.7902,22.8401],[120.7858,22.8399],[120.7815,22.8361],[120.7774,22.8357],[120.7741,22.838],[120.7729,22.8411],[120.7685,22.8452],[120.7661,22.8486],[120.7642,22.849],[120.7622,22.8568],[120.7591,22.8606],[120.7539,22.8652],[120.75,22.8653],[120.7466,22.8678],[120.7427,22.8736],[120.7332,22.8753],[120.7286,22.8778],[120.7248,22.8809],[120.7205,22.882],[120.7159,22.8808],[120.7083,22.8816],[120.7045,22.8807],[120.6979,22.8731],[120.692,22.8685],[120.6904,22.8648],[120.6789,22.8627],[120.677,22.8575],[120.6726,22.8564],[120.6686,22.8587],[120.6609,22.8597],[120.6596,22.8615],[120.6587,22.8659],[120.6597,22.87],[120.6584,22.8743],[120.6581,22.8797],[120.6557,22.8817],[120.6532,22.8804],[120.651,22.8772],[120.6484,22.8771],[120.6465,22.8838],[120.645,22.8852],[120.6349,22.8809],[120.6273,22.8789],[120.6212,22.8757],[120.6174,22.8767],[120.6141,22.8765],[120.6054,22.873],[120.5983,22.8671],[120.5952,22.8636],[120.5748,22.8482],[120.5696,22.8432],[120.5667,22.8383],[120.5615,22.8338],[120.5576,22.8321],[120.5533,22.8284],[120.548,22.8284],[120.5441,22.8298],[120.5382,22.8292],[120.5235,22.8329],[120.5199,22.8314],[120.5157,22.8316],[120.51,22.8285],[120.5053,22.8315],[120.4993,22.8313],[120.4965,22.8324],[120.494,22.8368],[120.4908,22.8353],[120.4823,22.8359],[120.4762,22.8382],[120.4687,22.8306],[120.4692,22.825],[120.4675,22.8224],[120.4674,22.8155],[120.4655,22.8128],[120.4641,22.8006],[120.46,22.7906],[120.4574,22.7854],[120.4559,22.7798],[120.4557,22.7745],[120.4543,22.7718],[120.4538,22.7675],[120.4544,22.7644],[120.4537,22.7567],[120.4546,22.7477],[120.4548,22.7403],[120.456,22.731],[120.4558,22.7186],[120.4528,22.7041],[120.451,22.6974],[120.4477,22.6885],[120.4426,22.6846],[120.4396,22.6783],[120.4402,22.6741],[120.4361,22.6618],[120.4362,22.6482],[120.4353,22.6403],[120.4359,22.6308],[120.4335,22.6235],[120.4336,22.6182],[120.4346,22.6134],[120.4374,22.6075],[120.4427,22.6034],[120.4455,22.5996],[120.4468,22.5934],[120.4471,22.587],[120.4442,22.569],[120.4426,22.5618],[120.4383,22.5535],[120.4366,22.5476],[120.4311,22.5445],[120.4294,22.5391],[120.4251,22.5285],[120.4245,22.5238],[120.4229,22.5188],[120.423,22.511],[120.4243,22.5034],[120.4257,22.4986],[120.424,22.4775],[120.4244,22.4687],[120.4331,22.4684],[120.435,22.4646],[120.436,22.4595],[120.4385,22.4594],[120.4397,22.4568],[120.4471,22.4493],[120.4585,22.4394],[120.4764,22.4289],[120.4921,22.4216],[120.5055,22.4144],[120.5085,22.4122],[120.5158,22.4111],[120.5175,22.409],[120.5242,22.4053],[120.5496,22.3924],[120.5604,22.3861],[120.5708,22.3794],[120.5712,22.378],[120.5764,22.3752],[120.5801,22.3723],[120.5856,22.3694],[120.5894,22.3664],[120.5943,22.3598],[120.5989,22.3557],[120.6051,22.3427],[120.6056,22.3402],[120.6104,22.3361],[120.6208,22.3281],[120.6305,22.3192],[120.6362,22.3128],[120.6376,22.309],[120.6404,22.3058],[120.6427,22.3016],[120.6431,22.2926],[120.6427,22.2911],[120.648,22.2801],[120.6489,22.2755],[120.6521,22.2682],[120.6493,22.2559],[120.6504,22.2518],[120.6528,22.251],[120.6579,22.2471],[120.6579,22.2429],[120.6705,22.2351],[120.6734,22.2299],[120.6722,22.227],[120.674,22.2232],[120.6768,22.2227],[120.6784,22.2185],[120.6804,22.2168],[120.6849,22.2103],[120.6858,22.2032],[120.6839,22.1974],[120.6855,22.1925],[120.689,22.188],[120.6911,22.1814],[120.6911,22.1751],[120.6938,22.1725],[120.694,22.1674],[120.6955,22.1665],[120.696,22.1597],[120.6946,22.1574],[120.6961,22.1542],[120.6995,22.1501],[120.6998,22.1469],[120.698,22.1439],[120.6976,22.1405],[120.6985,22.1368],[120.7015,22.1342],[120.7023,22.1298],[120.7066,22.126],[120.7091,22.1228],[120.7104,22.118],[120.7131,22.1115],[120.7125,22.1083],[120.7152,22.1065],[120.7161,22.1005],[120.7156,22.0969],[120.7169,22.0933],[120.7056,22.0871],[120.7007,22.0855],[120.6993,22.0825],[120.7006,22.0801],[120.7033,22.0783],[120.7057,22.0707],[120.7048,22.0679],[120.706,22.0609],[120.7045,22.056],[120.7,22.0561],[120.6976,22.055],[120.6944,22.0483],[120.6964,22.0431],[120.6895,22.036],[120.6863,22.0305],[120.6852,22.0239],[120.6889,22.0156],[120.6909,22.013],[120.6932,22.0076],[120.6938,22.0026],[120.7007,21.996],[120.7056,21.9935],[120.7069,21.9875],[120.7101,21.9856],[120.7136,21.9806],[120.7152,21.9729],[120.715,21.9711],[120.7115,21.9639],[120.7117,21.9555],[120.7099,21.9415],[120.7106,21.9341],[120.7127,21.9333],[120.716,21.9349],[120.7193,21.9329],[120.719,21.9273],[120.7229,21.922],[120.7284,21.9183],[120.7396,21.9197],[120.7399,21.9264],[120.742,21.9275],[120.7469,21.9342],[120.7454,21.9383],[120.7454,21.9425],[120.7485,21.9418],[120.749,21.945],[120.7484,21.9495],[120.7539,21.9524],[120.7532,21.9552],[120.7574,21.9573],[120.7606,21.9572],[120.7614,21.9589],[120.766,21.9582],[120.7711,21.9515],[120.7776,21.9493],[120.783,21.9435],[120.7943,21.9432],[120.798,21.9405],[120.7985,21.9378],[120.8018,21.9372],[120.8029,21.9398],[120.8126,21.9335],[120.8222,21.9344],[120.8235,21.9315],[120.8302,21.9253],[120.8316,21.9247],[120.8355,21.9172],[120.8373,21.916],[120.8461,21.9137],[120.846,21.906],[120.8479,21.8999],[120.8511,21.8964],[120.8586,21.8956],[120.8657,21.8987],[120.8671,21.9027],[120.8633,21.9056],[120.8619,21.9097],[120.8629,21.9138],[120.8626,21.9176],[120.8585,21.9226],[120.8578,21.9247],[120.8534,21.9303],[120.8489,21.9338],[120.8476,21.9386],[120.8455,21.9413],[120.8433,21.9462],[120.8423,21.9513],[120.843,21.9542],[120.8414,21.9565],[120.8416,21.9599],[120.8445,21.9683],[120.8445,21.9738],[120.8454,21.9754],[120.8443,21.9809],[120.8461,21.9862],[120.8485,21.9882],[120.8558,21.989],[120.8616,21.9908],[120.8673,21.995],[120.8758,21.9988],[120.8793,22.0057],[120.8782,22.0107],[120.8837,22.0132],[120.8871,22.0165],[120.8871,22.0204],[120.8892,22.0258],[120.8966,22.0309],[120.9011,22.0332],[120.8951,22.0467],[120.8939,22.0484],[120.8942,22.056],[120.893,22.0693],[120.894,22.0809],[120.8941,22.0886],[120.8985,22.0946],[120.8989,22.1014],[120.9019,22.1056],[120.8981,22.1068],[120.8926,22.1098],[120.8886,22.1191],[120.8875,22.1227],[120.8867,22.1297],[120.8879,22.1333],[120.8911,22.1346],[120.8966,22.1408],[120.8971,22.144],[120.8926,22.1503],[120.894,22.1557],[120.8934,22.1604],[120.8921,22.1624],[120.8938,22.1684],[120.8942,22.1726],[120.8919,22.1841],[120.8907,22.1953],[120.8935,22.1979],[120.8964,22.2034],[120.8958,22.2089],[120.8942,22.2166],[120.8947,22.2237],[120.8969,22.2288],[120.8989,22.2298],[120.8989,22.2338],[120.8963,22.2464],[120.884,22.2406],[120.8805,22.2346],[120.8795,22.2352],[120.8715,22.233],[120.8664,22.2298],[120.8623,22.2313],[120.8643,22.2338],[120.8616,22.2375],[120.859,22.2386],[120.8585,22.2409],[120.8508,22.2437],[120.8449,22.2428],[120.8414,22.2446],[120.8396,22.2436],[120.8325,22.2473],[120.8315,22.2501],[120.826,22.2565],[120.8229,22.2577],[120.8156,22.263],[120.7991,22.2572],[120.7986,22.2638],[120.7994,22.2654],[120.7962,22.2678],[120.7981,22.2744],[120.8006,22.2774],[120.8068,22.2772],[120.8055,22.2841],[120.8007,22.2842],[120.7992,22.2854],[120.7934,22.2857],[120.7911,22.2882],[120.7911,22.2907],[120.7887,22.294],[120.7813,22.2947],[120.7777,22.298],[120.7768,22.3026],[120.7782,22.3085],[120.7832,22.3095],[120.7871,22.3092],[120.793,22.3124],[120.7964,22.3168],[120.7964,22.3199],[120.7934,22.3236],[120.7925,22.3284],[120.7925,22.3356],[120.7897,22.3376],[120.7885,22.3416],[120.7866,22.3421],[120.7851,22.3455],[120.7811,22.3464],[120.7758,22.3487],[120.767,22.3478],[120.7636,22.3522],[120.7632,22.359],[120.7614,22.3603],[120.7581,22.3594],[120.7524,22.3605],[120.7435,22.3676],[120.7448,22.3702],[120.7488,22.3732],[120.7487,22.3801],[120.7505,22.3841],[120.7565,22.3884],[120.7521,22.3927],[120.7538,22.3964],[120.7576,22.3981],[120.7554,22.4033],[120.7627,22.4069],[120.7649,22.4089],[120.7734,22.4069],[120.7753,22.4096],[120.78,22.4093],[120.7846,22.4128],[120.7877,22.4168],[120.7882,22.4194],[120.7869,22.4252],[120.7849,22.4279],[120.7828,22.4333],[120.7803,22.4371],[120.7768,22.44],[120.7751,22.4433],[120.7765,22.4489],[120.7759,22.4504],[120.7687,22.4526],[120.7655,22.4529],[120.7591,22.4573],[120.7542,22.4573],[120.7513,22.4586],[120.7516,22.4642],[120.7542,22.4694],[120.7542,22.4731],[120.7515,22.4797],[120.7575,22.4818],[120.7586,22.4884],[120.7613,22.4889],[120.7637,22.4909],[120.7643,22.4944],[120.7627,22.5011],[120.7571,22.5089],[120.7536,22.511],[120.7528,22.519],[120.7513,22.5224],[120.7517,22.5253],[120.7501,22.5286],[120.75,22.534],[120.748,22.5385],[120.7457,22.5407],[120.7394,22.5517],[120.74,22.5583],[120.7396,22.5625],[120.7415,22.5687],[120.748,22.5711],[120.7493,22.5773],[120.7465,22.5846],[120.7458,22.5896],[120.7484,22.5933],[120.7523,22.5971],[120.7547,22.6008],[120.7541,22.6086],[120.7529,22.6121],[120.758,22.6231],[120.761,22.6258],[120.7613,22.63],[120.7642,22.6337],[120.7677,22.6362],[120.772,22.6422],[120.7738,22.6462],[120.7798,22.6525],[120.7864,22.663],[120.7862,22.672],[120.7916,22.6792],[120.7895,22.6832],[120.7894,22.6869],[120.7867,22.6927],[120.7891,22.6933],[120.7977,22.6891],[120.808,22.6892],[120.8108,22.6916],[120.8133,22.6921],[120.8191,22.691],[120.8199,22.6956],[120.8261,22.6959],[120.8276,22.6974],[120.835,22.6966],[120.8383,22.6989],[120.838,22.7018],[120.8402,22.7067],[120.8431,22.7075],[120.8442,22.7106],[120.8487,22.717],[120.8551,22.7175],[120.8586,22.7136],[120.8614,22.7167],[120.8672,22.7169],[120.8691,22.7159],[120.8755,22.7172],[120.8792,22.7161],[120.8835,22.7171],[120.8874,22.7227],[120.8883,22.7267],[120.891,22.7287],[120.8924,22.7356],[120.8947,22.7376],[120.8955,22.7421],[120.8942,22.7442],[120.8954,22.7482],[120.8941,22.7516],[120.8956,22.7557],[120.8945,22.7591],[120.8949,22.7623],[120.8931,22.7663],[120.9005,22.7698],[120.9039,22.7758],[120.9032,22.7805],[120.9042,22.7832],[120.9017,22.7875],[120.9033,22.7934],[120.9037,22.7982],[120.9017,22.8033],[120.8965,22.808],[120.8944,22.8085],[120.891,22.8117],[120.889,22.8118],[120.8816,22.8145],[120.8773,22.8131],[120.8747,22.8153],[120.8717,22.8148],[120.8684,22.8171],[120.8647,22.8253],[120.8616,22.8267],[120.8646,22.8322],[120.8653,22.8361],[120.864,22.8398],[120.8646,22.8431]]]]},"properties":{"COUNTYID":"T","COUNTYCODE":"10013","COUNTYNAME":"屏東縣","COUNTYENG":"Pingtung County"},"id":"10013"}]} \ No newline at end of file diff --git a/public/map/tw_town.json b/src/assets/map/tw_town.json similarity index 100% rename from public/map/tw_town.json rename to src/assets/map/tw_town.json diff --git a/src/assets/poi/sprite.json b/src/assets/poi/sprite.json new file mode 100644 index 0000000..3b8d3a0 --- /dev/null +++ b/src/assets/poi/sprite.json @@ -0,0 +1,198 @@ +{ + "cross-1": { + "x": 0, + "y": 0, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "cross-2": { + "x": 96, + "y": 0, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "cross-3": { + "x": 0, + "y": 96, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "cross-4": { + "x": 96, + "y": 96, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "cross-5": { + "x": 192, + "y": 0, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "cross-6": { + "x": 192, + "y": 96, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "cross-7": { + "x": 0, + "y": 192, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "cross-8": { + "x": 96, + "y": 192, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "cross-9": { + "x": 192, + "y": 192, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "intensity-1-dark": { + "x": 288, + "y": 72, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-1": { + "x": 288, + "y": 136, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-2-dark": { + "x": 288, + "y": 200, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-2": { + "x": 0, + "y": 288, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-3-dark": { + "x": 64, + "y": 288, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-3": { + "x": 128, + "y": 288, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-4-dark": { + "x": 192, + "y": 288, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-4": { + "x": 256, + "y": 288, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-5-dark": { + "x": 360, + "y": 0, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-5": { + "x": 360, + "y": 64, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-6-dark": { + "x": 360, + "y": 128, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-6": { + "x": 360, + "y": 192, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-7-dark": { + "x": 360, + "y": 256, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-7": { + "x": 0, + "y": 352, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-8-dark": { + "x": 64, + "y": 352, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-8": { + "x": 128, + "y": 352, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-9-dark": { + "x": 192, + "y": 352, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-9": { + "x": 256, + "y": 352, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "location": { + "x": 288, + "y": 0, + "width": 72, + "height": 72, + "pixelRatio": 1 + } +} diff --git a/src/assets/poi/sprite.png b/src/assets/poi/sprite.png new file mode 100644 index 0000000..3af6277 Binary files /dev/null and b/src/assets/poi/sprite.png differ diff --git a/src/assets/poi/sprite@2x.json b/src/assets/poi/sprite@2x.json new file mode 100644 index 0000000..3b8d3a0 --- /dev/null +++ b/src/assets/poi/sprite@2x.json @@ -0,0 +1,198 @@ +{ + "cross-1": { + "x": 0, + "y": 0, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "cross-2": { + "x": 96, + "y": 0, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "cross-3": { + "x": 0, + "y": 96, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "cross-4": { + "x": 96, + "y": 96, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "cross-5": { + "x": 192, + "y": 0, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "cross-6": { + "x": 192, + "y": 96, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "cross-7": { + "x": 0, + "y": 192, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "cross-8": { + "x": 96, + "y": 192, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "cross-9": { + "x": 192, + "y": 192, + "width": 96, + "height": 96, + "pixelRatio": 1 + }, + "intensity-1-dark": { + "x": 288, + "y": 72, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-1": { + "x": 288, + "y": 136, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-2-dark": { + "x": 288, + "y": 200, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-2": { + "x": 0, + "y": 288, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-3-dark": { + "x": 64, + "y": 288, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-3": { + "x": 128, + "y": 288, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-4-dark": { + "x": 192, + "y": 288, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-4": { + "x": 256, + "y": 288, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-5-dark": { + "x": 360, + "y": 0, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-5": { + "x": 360, + "y": 64, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-6-dark": { + "x": 360, + "y": 128, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-6": { + "x": 360, + "y": 192, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-7-dark": { + "x": 360, + "y": 256, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-7": { + "x": 0, + "y": 352, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-8-dark": { + "x": 64, + "y": 352, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-8": { + "x": 128, + "y": 352, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-9-dark": { + "x": 192, + "y": 352, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "intensity-9": { + "x": 256, + "y": 352, + "width": 64, + "height": 64, + "pixelRatio": 1 + }, + "location": { + "x": 288, + "y": 0, + "width": 72, + "height": 72, + "pixelRatio": 1 + } +} diff --git a/src/assets/poi/sprite@2x.png b/src/assets/poi/sprite@2x.png new file mode 100644 index 0000000..3af6277 Binary files /dev/null and b/src/assets/poi/sprite@2x.png differ diff --git a/src/class/api.ts b/src/class/api.ts new file mode 100644 index 0000000..de6221c --- /dev/null +++ b/src/class/api.ts @@ -0,0 +1,145 @@ +import type { + AuthenticationDetail, + EewType, + PartialReport, + Report, + Rts, + Station, +} from "@kamiya4047/exptech-api-wrapper"; +import { fetch, type ClientOptions } from "@tauri-apps/plugin-http"; +import { Route } from "@/class/route"; + +export class ExpTechApi { + token: string; + route: Route; + + constructor(token?: string) { + this.token = token || ""; + this.route = new Route(); + } + + setToken(token: string) { + this.token = token; + } + + /** + * Inner get request wrapper + * @param {string} url + * @returns {Promise} + */ + async #get(url: string, options?: RequestInit & ClientOptions): Promise { + const res = await fetch(url, { + keepalive: true, + connectTimeout: 2000, + ...options, + }); + + if (res.ok) { + return res.json(); + } else { + throw new Error(`Server returned a status of ${res.status}`); + } + } + + /** + * Inner post request wrapper + * @param {string} url + * @param {BodyInit} body + * @returns {Promise} + */ + async #post( + url: string, + body: BodyInit, + options?: RequestInit & ClientOptions + ): Promise { + const request = new Request(url, { + method: "POST", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + }, + ...options, + body, + }); + + const res = await fetch(request); + + if (!res.ok) throw new Error(`Server returned ${res.status}`); + + return res; + } + + async getStations( + requestOptions?: RequestInit + ): Promise> { + return await this.#get(this.route.station, requestOptions); + } + + async getReportList( + limit?: number, + requestOptions?: RequestInit + ): Promise { + const data = (await this.#get( + this.route.reportList(limit), + requestOptions + )) as PartialReport[]; + + for (const report of data) { + report.no = +report.id.split("-")[0]; + } + + return data; + } + + async getReport(id: string, requestOptions?: RequestInit): Promise { + const data = await this.#get(this.route.report(id), requestOptions); + + data.no = +data.id.split("-")[0]; + data.int = Object.keys(data.list).reduce( + (acc, key) => (data.list[key].int > acc ? data.list[key].int : acc), + 0 + ); + + data.list = Object.keys(data.list) + .map((key) => ({ + area: key, + int: data.list[key].int, + stations: Object.keys(data.list[key].town) + .map((k) => ({ + ...data.list[key].town[k], + station: k, + })) + .sort((a, b) => b.int - a.int), + })) + .sort((a, b) => b.int - a.int); + + return data; + } + + async getRts(time?: number, requestOptions?: RequestInit): Promise { + return await this.#get(this.route.rts(time), requestOptions); + } + + async getEew( + time?: number, + requestOptions?: RequestInit + ): Promise { + return await this.#get(this.route.eew(time), requestOptions); + } + + async getAuthToken( + options: AuthenticationDetail, + route: 1 | 2 = 1, + requestOptions?: RequestInit + ): Promise { + const url = this.route.login(route); + const body = JSON.stringify({ + email: options.email, + pass: options.password, + name: options.name, + }); + console.log(body); + + return (await this.#post(url, body, requestOptions)).text(); + } +} diff --git a/src/class/route.ts b/src/class/route.ts new file mode 100644 index 0000000..1d6c5b5 --- /dev/null +++ b/src/class/route.ts @@ -0,0 +1,59 @@ +interface RouteConfig { + api: number; + lb: number; +} + +export class Route { + api: number; + lb: number; + + constructor(route: Partial = {}) { + this.api = route.api ?? Math.ceil(Math.random() * 2); + this.lb = route.lb ?? Math.ceil(Math.random() * 4); + }; + + random() { + this.api = Math.ceil(Math.random() * 2); + this.lb = Math.ceil(Math.random() * 4); + } + + get lbUrl() { + return `https://lb-${this.lb}.exptech.dev` as const; + } + + get apiUrl() { + return `https://api-${this.api}.exptech.dev` as const; + } + + get station() { + return `${this.apiUrl}/api/v1/trem/station` as const; + } + + reportList(limit = 50) { + return `${this.apiUrl}/api/v2/eq/report?limit=${limit}` as const; + } + + report(id: string) { + return `${this.apiUrl}/api/v2/eq/report/${id}` as const; + } + + rts(time?: number) { + if (time) { + return `${this.lbUrl}/api/v1/trem/rts/${time}` as const; + } + + return `${this.lbUrl}/api/v1/trem/rts` as const; + } + + eew(time?: number) { + if (time) { + return `${this.lbUrl}/api/v1/eq/eew/${time}` as const; + } + + return `${this.lbUrl}/api/v1/eq/eew` as const; + } + + login(server: number = 1) { + return `https://api-${server}.exptech.com.tw/api/v3/et/login` as const; + } +} \ No newline at end of file diff --git a/src/components/component/ChipButton.vue b/src/components/component/ChipButton.vue deleted file mode 100644 index 09588f3..0000000 --- a/src/components/component/ChipButton.vue +++ /dev/null @@ -1,70 +0,0 @@ - - - - - diff --git a/src/components/component/CircleMarker.vue b/src/components/component/CircleMarker.vue deleted file mode 100644 index 621b840..0000000 --- a/src/components/component/CircleMarker.vue +++ /dev/null @@ -1,121 +0,0 @@ - - - - - diff --git a/src/components/component/CrossMarker.vue b/src/components/component/CrossMarker.vue deleted file mode 100644 index 41204db..0000000 --- a/src/components/component/CrossMarker.vue +++ /dev/null @@ -1,33 +0,0 @@ - - - - - diff --git a/src/components/component/DetailedReportItem.vue b/src/components/component/DetailedReportItem.vue deleted file mode 100644 index 9d29528..0000000 --- a/src/components/component/DetailedReportItem.vue +++ /dev/null @@ -1,146 +0,0 @@ - - - - - diff --git a/src/components/component/DotMarker.vue b/src/components/component/DotMarker.vue deleted file mode 100644 index 808558a..0000000 --- a/src/components/component/DotMarker.vue +++ /dev/null @@ -1,33 +0,0 @@ - - - - - diff --git a/src/components/component/EEW.vue b/src/components/component/EEW.vue deleted file mode 100644 index 646f1c4..0000000 --- a/src/components/component/EEW.vue +++ /dev/null @@ -1,89 +0,0 @@ - - - - - diff --git a/src/components/component/EewIntensity.vue b/src/components/component/EewIntensity.vue deleted file mode 100644 index 7ed1652..0000000 --- a/src/components/component/EewIntensity.vue +++ /dev/null @@ -1,38 +0,0 @@ - - - diff --git a/src/components/component/FieldValueUnitPair.vue b/src/components/component/FieldValueUnitPair.vue deleted file mode 100644 index 868f4d3..0000000 --- a/src/components/component/FieldValueUnitPair.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - diff --git a/src/components/component/FilledButton.vue b/src/components/component/FilledButton.vue deleted file mode 100644 index ba92937..0000000 --- a/src/components/component/FilledButton.vue +++ /dev/null @@ -1,65 +0,0 @@ - - - - diff --git a/src/components/component/IntensityBox.vue b/src/components/component/IntensityBox.vue deleted file mode 100644 index 07970e0..0000000 --- a/src/components/component/IntensityBox.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/src/components/component/IntensityCapsule.vue b/src/components/component/IntensityCapsule.vue deleted file mode 100644 index c2a41a1..0000000 --- a/src/components/component/IntensityCapsule.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - - diff --git a/src/components/component/LocalRtsBox.vue b/src/components/component/LocalRtsBox.vue deleted file mode 100644 index e335f69..0000000 --- a/src/components/component/LocalRtsBox.vue +++ /dev/null @@ -1,115 +0,0 @@ - - - - - diff --git a/src/components/component/MapEew.vue b/src/components/component/MapEew.vue deleted file mode 100644 index c793a34..0000000 --- a/src/components/component/MapEew.vue +++ /dev/null @@ -1,71 +0,0 @@ - - - diff --git a/src/components/component/MapEewIntensity.vue b/src/components/component/MapEewIntensity.vue deleted file mode 100644 index 0dd8be9..0000000 --- a/src/components/component/MapEewIntensity.vue +++ /dev/null @@ -1,43 +0,0 @@ - - - diff --git a/src/components/component/MapHomeViewControl.vue b/src/components/component/MapHomeViewControl.vue deleted file mode 100644 index 550624d..0000000 --- a/src/components/component/MapHomeViewControl.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - diff --git a/src/components/component/MapLocalMarker.vue b/src/components/component/MapLocalMarker.vue deleted file mode 100644 index 166bd3f..0000000 --- a/src/components/component/MapLocalMarker.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - - - diff --git a/src/components/component/MapReportListMarker.vue b/src/components/component/MapReportListMarker.vue deleted file mode 100644 index f697561..0000000 --- a/src/components/component/MapReportListMarker.vue +++ /dev/null @@ -1,65 +0,0 @@ - - - - - diff --git a/src/components/component/MapReportMarker.vue b/src/components/component/MapReportMarker.vue deleted file mode 100644 index b2e1df5..0000000 --- a/src/components/component/MapReportMarker.vue +++ /dev/null @@ -1,82 +0,0 @@ - - - - - diff --git a/src/components/component/MapRtsBox.vue b/src/components/component/MapRtsBox.vue deleted file mode 100644 index 9a49da1..0000000 --- a/src/components/component/MapRtsBox.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - diff --git a/src/components/component/MapRtsMarker.vue b/src/components/component/MapRtsMarker.vue deleted file mode 100644 index 59f3d3a..0000000 --- a/src/components/component/MapRtsMarker.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/src/components/component/NavigationBar.vue b/src/components/component/NavigationBar.vue deleted file mode 100644 index 4c955cc..0000000 --- a/src/components/component/NavigationBar.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - - - diff --git a/src/components/component/NavigationButton.vue b/src/components/component/NavigationButton.vue deleted file mode 100644 index 934d332..0000000 --- a/src/components/component/NavigationButton.vue +++ /dev/null @@ -1,76 +0,0 @@ - - - - - diff --git a/src/components/component/ReportDetailField.vue b/src/components/component/ReportDetailField.vue deleted file mode 100644 index e2e7192..0000000 --- a/src/components/component/ReportDetailField.vue +++ /dev/null @@ -1,61 +0,0 @@ - - - - - diff --git a/src/components/component/ReportIntensityGroup.vue b/src/components/component/ReportIntensityGroup.vue deleted file mode 100644 index 35c1b64..0000000 --- a/src/components/component/ReportIntensityGroup.vue +++ /dev/null @@ -1,60 +0,0 @@ - - - - - diff --git a/src/components/component/ReportIntensityItem.vue b/src/components/component/ReportIntensityItem.vue deleted file mode 100644 index 32cd3c6..0000000 --- a/src/components/component/ReportIntensityItem.vue +++ /dev/null @@ -1,57 +0,0 @@ - - - - - diff --git a/src/components/component/ReportItem.vue b/src/components/component/ReportItem.vue deleted file mode 100644 index 70a1cfe..0000000 --- a/src/components/component/ReportItem.vue +++ /dev/null @@ -1,97 +0,0 @@ - - - - - diff --git a/src/components/component/RtsBox.vue b/src/components/component/RtsBox.vue deleted file mode 100644 index 27f7bbc..0000000 --- a/src/components/component/RtsBox.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - diff --git a/src/components/component/RtsMarker.vue b/src/components/component/RtsMarker.vue deleted file mode 100644 index 64c44f5..0000000 --- a/src/components/component/RtsMarker.vue +++ /dev/null @@ -1,189 +0,0 @@ - - - - - diff --git a/src/components/component/TimeDisplay.vue b/src/components/component/TimeDisplay.vue deleted file mode 100644 index f1a3e33..0000000 --- a/src/components/component/TimeDisplay.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/src/components/component/WaveTimer.vue b/src/components/component/WaveTimer.vue deleted file mode 100644 index e7ecd18..0000000 --- a/src/components/component/WaveTimer.vue +++ /dev/null @@ -1,106 +0,0 @@ - - - - - diff --git a/src/components/config/ConfigTile.vue b/src/components/config/ConfigTile.vue new file mode 100644 index 0000000..99474a4 --- /dev/null +++ b/src/components/config/ConfigTile.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/src/components/map/BoxIntensity.vue b/src/components/map/BoxIntensity.vue new file mode 100644 index 0000000..3d443b2 --- /dev/null +++ b/src/components/map/BoxIntensity.vue @@ -0,0 +1,46 @@ + + + diff --git a/src/components/map/CircleMarker.vue b/src/components/map/CircleMarker.vue new file mode 100644 index 0000000..de6a90a --- /dev/null +++ b/src/components/map/CircleMarker.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/src/components/map/CountyIntensity.vue b/src/components/map/CountyIntensity.vue new file mode 100644 index 0000000..64cbe4f --- /dev/null +++ b/src/components/map/CountyIntensity.vue @@ -0,0 +1,51 @@ + + + diff --git a/src/components/map/CrossMarker.vue b/src/components/map/CrossMarker.vue new file mode 100644 index 0000000..b380e7c --- /dev/null +++ b/src/components/map/CrossMarker.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/src/components/map/DotMarker.vue b/src/components/map/DotMarker.vue new file mode 100644 index 0000000..b985b76 --- /dev/null +++ b/src/components/map/DotMarker.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/src/components/map/EewMarker.vue b/src/components/map/EewMarker.vue new file mode 100644 index 0000000..52b0df9 --- /dev/null +++ b/src/components/map/EewMarker.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/src/components/map/IntensityMarker.vue b/src/components/map/IntensityMarker.vue new file mode 100644 index 0000000..c318ce3 --- /dev/null +++ b/src/components/map/IntensityMarker.vue @@ -0,0 +1,49 @@ + + + diff --git a/src/components/map/MapView.d.ts b/src/components/map/MapView.d.ts new file mode 100644 index 0000000..2b906d8 --- /dev/null +++ b/src/components/map/MapView.d.ts @@ -0,0 +1,6 @@ +export type MapColorScheme = { + PrimaryBackgroundColor: string; + PrimaryStrokeColor: string; + SecondaryBackgroundColor: string; + SecondaryStrokeColor: string; +}; \ No newline at end of file diff --git a/src/components/map/MapView.vue b/src/components/map/MapView.vue new file mode 100644 index 0000000..fc82dd4 --- /dev/null +++ b/src/components/map/MapView.vue @@ -0,0 +1,304 @@ + + + + + diff --git a/src/components/map/RtsColorLegend.vue b/src/components/map/RtsColorLegend.vue new file mode 100644 index 0000000..eacb391 --- /dev/null +++ b/src/components/map/RtsColorLegend.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/src/components/map/RtsMarker.vue b/src/components/map/RtsMarker.vue new file mode 100644 index 0000000..c5f9703 --- /dev/null +++ b/src/components/map/RtsMarker.vue @@ -0,0 +1,264 @@ + + + + + diff --git a/src/components/map/TownIntensity.vue b/src/components/map/TownIntensity.vue new file mode 100644 index 0000000..2104ff0 --- /dev/null +++ b/src/components/map/TownIntensity.vue @@ -0,0 +1,49 @@ + diff --git a/src/components/map/WaveMarker.vue b/src/components/map/WaveMarker.vue new file mode 100644 index 0000000..52dffcc --- /dev/null +++ b/src/components/map/WaveMarker.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/misc/FilterItem.vue b/src/components/misc/FilterItem.vue new file mode 100644 index 0000000..e399912 --- /dev/null +++ b/src/components/misc/FilterItem.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/components/misc/Intensity.vue b/src/components/misc/Intensity.vue new file mode 100644 index 0000000..5909f11 --- /dev/null +++ b/src/components/misc/Intensity.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/components/misc/IntensityBall.vue b/src/components/misc/IntensityBall.vue new file mode 100644 index 0000000..2f4631f --- /dev/null +++ b/src/components/misc/IntensityBall.vue @@ -0,0 +1,31 @@ + + diff --git a/src/components/misc/IntensityBlock.vue b/src/components/misc/IntensityBlock.vue new file mode 100644 index 0000000..fc4454b --- /dev/null +++ b/src/components/misc/IntensityBlock.vue @@ -0,0 +1,30 @@ + + diff --git a/src/components/misc/MaterialSymbols.vue b/src/components/misc/MaterialSymbols.vue new file mode 100644 index 0000000..d89c438 --- /dev/null +++ b/src/components/misc/MaterialSymbols.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/misc/Panel.vue b/src/components/misc/Panel.vue new file mode 100644 index 0000000..51120a2 --- /dev/null +++ b/src/components/misc/Panel.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/src/components/misc/TimeDisplay.vue b/src/components/misc/TimeDisplay.vue new file mode 100644 index 0000000..9d8c789 --- /dev/null +++ b/src/components/misc/TimeDisplay.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/src/components/misc/ViewPanel.vue b/src/components/misc/ViewPanel.vue new file mode 100644 index 0000000..8c4d74d --- /dev/null +++ b/src/components/misc/ViewPanel.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/navigation/NavigationEntry.vue b/src/components/navigation/NavigationEntry.vue new file mode 100644 index 0000000..9a74f85 --- /dev/null +++ b/src/components/navigation/NavigationEntry.vue @@ -0,0 +1,77 @@ + + + + + diff --git a/src/components/navigation/NavigationRail.vue b/src/components/navigation/NavigationRail.vue new file mode 100644 index 0000000..5b5e92b --- /dev/null +++ b/src/components/navigation/NavigationRail.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/src/components/replay/ReplayController.vue b/src/components/replay/ReplayController.vue new file mode 100644 index 0000000..7264fcf --- /dev/null +++ b/src/components/replay/ReplayController.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/src/components/report/AreaIntensityItem.vue b/src/components/report/AreaIntensityItem.vue new file mode 100644 index 0000000..9342141 --- /dev/null +++ b/src/components/report/AreaIntensityItem.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/src/components/report/AreaIntensityPanel.vue b/src/components/report/AreaIntensityPanel.vue new file mode 100644 index 0000000..4bd665c --- /dev/null +++ b/src/components/report/AreaIntensityPanel.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/src/components/report/ReportItem.vue b/src/components/report/ReportItem.vue new file mode 100644 index 0000000..2f5b4b7 --- /dev/null +++ b/src/components/report/ReportItem.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/src/components/report/StationIntensityItem.vue b/src/components/report/StationIntensityItem.vue new file mode 100644 index 0000000..de73606 --- /dev/null +++ b/src/components/report/StationIntensityItem.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/src/components/view/HomeView.vue b/src/components/view/HomeView.vue deleted file mode 100644 index 28a8940..0000000 --- a/src/components/view/HomeView.vue +++ /dev/null @@ -1,558 +0,0 @@ - - - - - - - - - diff --git a/src/components/view/MapView.vue b/src/components/view/MapView.vue deleted file mode 100644 index 77ecfd3..0000000 --- a/src/components/view/MapView.vue +++ /dev/null @@ -1,305 +0,0 @@ - - - - - diff --git a/src/components/view/ReportBox.vue b/src/components/view/ReportBox.vue deleted file mode 100644 index 71fefd7..0000000 --- a/src/components/view/ReportBox.vue +++ /dev/null @@ -1,545 +0,0 @@ - - - - - diff --git a/src/components/view/ReportListBox.vue b/src/components/view/ReportListBox.vue deleted file mode 100644 index 40b1926..0000000 --- a/src/components/view/ReportListBox.vue +++ /dev/null @@ -1,100 +0,0 @@ - - - - - diff --git a/src/components/window/Titlebar.vue b/src/components/window/Titlebar.vue new file mode 100644 index 0000000..cc02301 --- /dev/null +++ b/src/components/window/Titlebar.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/src/components/window/WindowControlButton.vue b/src/components/window/WindowControlButton.vue new file mode 100644 index 0000000..05731de --- /dev/null +++ b/src/components/window/WindowControlButton.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/src/config.json b/src/config.json new file mode 100644 index 0000000..e34a6de --- /dev/null +++ b/src/config.json @@ -0,0 +1,3 @@ +{ + "$version": 1 +} diff --git a/src/global.ts b/src/global.ts new file mode 100644 index 0000000..ff17700 --- /dev/null +++ b/src/global.ts @@ -0,0 +1,50 @@ +import type { EewType } from "@exptechtw/api-wrapper"; +import { useEewStore } from "./stores/eew_store"; +import { useRtsStore } from "./stores/rts_store"; +import { appDataDir } from "@tauri-apps/api/path"; +import { Stronghold, type Client } from "@tauri-apps/plugin-stronghold"; +import { ExpTechApi } from "./class/api"; + +const api = new ExpTechApi(); + +const vaultPassword = import.meta.env.VITE_STRONGHOLD_PASS; + +const stronghold = await Stronghold.load( + `${await appDataDir()}/vault.hold`, + vaultPassword +); + +let client: Client; + +try { + client = await stronghold.loadClient("account"); +} catch { + client = await stronghold.createClient("account"); +} + +export default { + api, + client, + stronghold, + init() { + const eewStore = useEewStore(); + const rtsStore = useRtsStore(); + + window.setInterval(() => { + api.getRts().then((v) => { + if (v.time < rtsStore.time) { + return; + } + rtsStore.$patch(v); + }); + api.getEew().then((v) => { + eewStore.$patch({ + eew: v.reduce( + (acc, e) => ((acc[e.id] = e), acc), + {} as Record + ), + }); + }); + }, 1000); + }, +}; diff --git a/src/helpers/command.ts b/src/helpers/command.ts new file mode 100644 index 0000000..b4b6ec6 --- /dev/null +++ b/src/helpers/command.ts @@ -0,0 +1,46 @@ +import { invoke } from "@tauri-apps/api/core"; + +/** + * Specifies the state of the machine for the current user in relation to the propriety of sending a notification. + * @link https://learn.microsoft.com/en-us/windows/win32/api/shellapi/ne-shellapi-query_user_notification_state + */ +export enum UserNotificationState { + /** + * A screen saver is displayed, the machine is locked, or a nonactive Fast User Switching session is in progress. + */ + NotPresent = 1, + + /** + * A full-screen application is running or Presentation Settings are applied. Presentation Settings allow a user to put their machine into a state fit for an uninterrupted presentation, such as a set of PowerPoint slides, with a single click. + */ + Busy = 2, + + /** + * A full-screen (exclusive mode) Direct3D application is running. + */ + RunningD3DFullScreen = 3, + + /** + * The user has activated Windows presentation settings to block notifications and pop-up messages. + */ + PresentationMode = 4, + + /** + * None of the other states are found, notifications can be freely sent. + */ + AcceptsNotifications = 5, + + /** + * **Introduced in Windows 7.** The current user is in "quiet time", which is the first hour after a new user logs into his or her account for the first time. During this time, most notifications should not be sent or shown. This lets a user become accustomed to a new computer system without those distractions. Quiet time also occurs for each user after an operating system upgrade or clean installation. + */ + QuietTime = 6, + + /** + * **Introduced in Windows 8.** A Windows Store app is running. + */ + App = 7, +} + +export async function checkNotificationState(): Promise { + return await invoke("check_notification_state"); +} \ No newline at end of file diff --git a/src/helpers/constant.ts b/src/helpers/constant.ts new file mode 100644 index 0000000..01746a2 --- /dev/null +++ b/src/helpers/constant.ts @@ -0,0 +1,62 @@ +export const TaiwanBounds = [119.24, 25.33, 122.18, 21.88] as [ + number, + number, + number, + number, +]; + +export const EarthCircumference = 40075017 as const; + +export const BaseMarkerSize = 28 as const; + +export const BaseMapZoom = 8 as const; + +export const IntensityColors = [ + "#0500A3", // 0 + "#00ceff", // 1 + "#33ff34", // 2 + "#fdff32", // 3 + "#ff8532", // 4 + "#fc5235", // 5- + "#c03e3c", // 5+ + "#9b4544", // 6- + "#9a4c86", // 6+ + "#b720e9", // 7 +]; + +export const InstrumentalIntensityColors = [ + "#0005d0", // -3 + "#004bf8", // -2 + "#009EF8", // -1 + "#79E5FD", // 0 + "#49E9AD", // 1 + "#44fa34", // 2 + "#beff0c", // 3 + "#fff000", // 4 + "#ff9300", // 5 + "#fc5235", // 6 + "#b720e9", // 7 +]; + +export const IntensityDomain = [-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7]; + +export const PgaDomain = [ + 0, 3, 5, 8, 25, 80, 140, 250, 440, 800, +]; + +export const PgvDomain = [ + 0, 0.5, 1.2, 1.9, 5.7, 15, 30, 50, 80, 140, +]; + +export const IntensityBgClass = [ + "bg-intensity-0", + "bg-intensity-1", + "bg-intensity-2", + "bg-intensity-3", + "bg-intensity-4", + "bg-intensity-5", + "bg-intensity-6", + "bg-intensity-7", + "bg-intensity-8", + "bg-intensity-9", +] as const; \ No newline at end of file diff --git a/src/helpers/sound.ts b/src/helpers/sound.ts new file mode 100644 index 0000000..b5af9e1 --- /dev/null +++ b/src/helpers/sound.ts @@ -0,0 +1,40 @@ +export const playSound = (name: string) => { + console.log(`playsound: ${name}`); + + switch (name) { + case "intensity1": + new Audio("/audio/intensity1.wav").play(); + break; + + case "intensity2": + new Audio("/audio/intensity2.wav").play(); + break; + + case "intensity3": + new Audio("/audio/intensity3.wav").play(); + break; + + case "intensity4": + new Audio("/audio/intensity4.wav").play(); + break; + + case "cwa": + new Audio("/audio/cwa.wav").play(); + break; + + case "eew": + new Audio("/audio/eew.wav").play(); + break; + + case "trem": + new Audio("/audio/trem.wav").play(); + break; + + case "update": + new Audio("/audio/update.wav").play(); + break; + + default: + break; + } +}; \ No newline at end of file diff --git a/src/scripts/helper/utils.ts b/src/helpers/utils.ts similarity index 90% rename from src/scripts/helper/utils.ts rename to src/helpers/utils.ts index baca8b0..7702eac 100644 --- a/src/scripts/helper/utils.ts +++ b/src/helpers/utils.ts @@ -2,11 +2,11 @@ import type { DistanceToEpicenter, LngLatObject, SurfaceDistanceToEpicenter, -} from "../../types"; +} from "@/types"; import { BaseMapZoom, BaseMarkerSize, EarthCircumference } from "./constant"; -import region from "../../assets/json/region.json"; -import times from "../../assets/json/time.json"; +import region from "@/assets/json/region.json"; +import times from "@/assets/json/time.json"; const depthIndexList = Object.keys(times); @@ -76,10 +76,10 @@ export const degreeToRadian = (degree: number) => (degree * Math.PI) / 180; export const calculateDistance = (p1: LngLatObject) => (p2: LngLatObject) => Math.acos( Math.sin(Math.atan(Math.tan(degreeToRadian(p1.lat)))) * - Math.sin(Math.atan(Math.tan(degreeToRadian(p2.lat)))) + - Math.cos(Math.atan(Math.tan(degreeToRadian(p1.lat)))) * - Math.cos(Math.atan(Math.tan(degreeToRadian(p2.lat)))) * - Math.cos(degreeToRadian(p1.lng) - degreeToRadian(p2.lng)) + Math.sin(Math.atan(Math.tan(degreeToRadian(p2.lat)))) + + Math.cos(Math.atan(Math.tan(degreeToRadian(p1.lat)))) * + Math.cos(Math.atan(Math.tan(degreeToRadian(p2.lat)))) * + Math.cos(degreeToRadian(p1.lng) - degreeToRadian(p2.lng)) ) * 6371.008; export const sideDistance = (a: number, b: number) => @@ -183,19 +183,19 @@ export const calculateWaveRadius = ( export const calculateEpicenterDistance = (event: LngLatObject) => - (local: LngLatObject) => - ( - depth: number - ): { - surfaceDistance: SurfaceDistanceToEpicenter; - distance: DistanceToEpicenter; - } => { - const surfaceDistance = calculateDistance(event)(local); - return { - surfaceDistance: surfaceDistance, - distance: (surfaceDistance ** 2 + depth ** 2) ** (1 / 2), - }; - }; + (local: LngLatObject) => + ( + depth: number + ): { + surfaceDistance: SurfaceDistanceToEpicenter; + distance: DistanceToEpicenter; + } => { + const surfaceDistance = calculateDistance(event)(local); + return { + surfaceDistance: surfaceDistance, + distance: (surfaceDistance ** 2 + depth ** 2) ** (1 / 2), + }; + }; export const calculateIntensity = ( surfaceDistance: SurfaceDistanceToEpicenter, @@ -295,4 +295,4 @@ export const kmToPixels = ( ) => (kilometers * 1000) / ((EarthCircumference * Math.cos((latitude * Math.PI) / 180)) / - Math.pow(2, zoomLevel + 8.983)); + Math.pow(2, zoomLevel + 8.983)); \ No newline at end of file diff --git a/src/layouts/default.vue b/src/layouts/default.vue new file mode 100644 index 0000000..682adcc --- /dev/null +++ b/src/layouts/default.vue @@ -0,0 +1,14 @@ + diff --git a/src/main.ts b/src/main.ts deleted file mode 100644 index f39a140..0000000 --- a/src/main.ts +++ /dev/null @@ -1,41 +0,0 @@ -import App from "./App.vue"; - -import { - enable as enableAutoStart, - disable as disableAutoStart, - isEnabled as isAutoStartEnabled, -} from "@tauri-apps/plugin-autostart"; -import { createApp } from "vue"; -import { getCurrent } from "@tauri-apps/api/window"; -import { getMatches } from "@tauri-apps/plugin-cli"; - -import { Config } from "./scripts/class/config"; -import { version } from "../package.json"; - -import "maplibre-gl/dist/maplibre-gl.css"; -import "./styles.css"; - -const webviewWindow = getCurrent(); - -const args = await getMatches(); - -if (!args.args["quiet"].value) { - webviewWindow.show(); - webviewWindow.setTitle(`TREM Tauri | 臺灣即時地震監測 v${version}`); -} - -const config = new Config(); - -const app = createApp(App); -app.provide("config", config); -app.mount("#app"); - -window.onbeforeunload = () => app.unmount(); - -await webviewWindow.setAlwaysOnTop(config.cache.behavior.alwaysOnTop); - -if (config.cache.system.startWithSystem) { - await enableAutoStart(); -} else if (await isAutoStartEnabled()) { - await disableAutoStart(); -} diff --git a/src/pages/index.vue b/src/pages/index.vue new file mode 100644 index 0000000..d8cc137 --- /dev/null +++ b/src/pages/index.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/src/pages/login.vue b/src/pages/login.vue new file mode 100644 index 0000000..6bc2e05 --- /dev/null +++ b/src/pages/login.vue @@ -0,0 +1,11 @@ + + + diff --git a/src/pages/reports/[id].vue b/src/pages/reports/[id].vue new file mode 100644 index 0000000..e519b41 --- /dev/null +++ b/src/pages/reports/[id].vue @@ -0,0 +1,3 @@ + + + diff --git a/src/pages/reports/index.vue b/src/pages/reports/index.vue new file mode 100644 index 0000000..b0d8e7c --- /dev/null +++ b/src/pages/reports/index.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/presets/aura/accordion/index.js b/src/presets/aura/accordion/index.js new file mode 100644 index 0000000..53e1d7c --- /dev/null +++ b/src/presets/aura/accordion/index.js @@ -0,0 +1,74 @@ +export default { + // For PrimeVue version 3 + accordiontab: { + root: { + class: ['mb-0', 'border-b border-surface-200 dark:border-surface-700'] + }, + header: ({ props }) => ({ + class: [ + // State + { 'select-none pointer-events-none cursor-default opacity-60': props?.disabled } + ] + }), + headerAction: { + class: [ + //Font + 'font-semibold', + 'leading-none', + + // Alignments + 'flex justify-between items-center', + 'flex-row-reverse', + 'relative', + + // Sizing + 'p-[1.125rem]', + + // Shape + 'rounded-md', + 'border-0', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-600 dark:text-surface-0/80', + + // Transition + 'transition duration-200 ease-in-out', + 'transition-shadow duration-200', + + // States + 'focus:outline-none focus:outline-offset-0 focus-visible:ring-1 focus-visible:ring-primary-400 dark:focus-visible:ring-primary-300', // Focus + + // Misc + 'cursor-pointer no-underline select-none' + ] + }, + headerIcon: ({ context }) => ({ + class: ['inline-block ml-2', { 'text-surface-900 dark:text-surface-0': context.active }] + }), + headerTitle: { + class: 'leading-none' + }, + content: { + class: [ + // Spacing + 'p-[1.125rem] pt-0', + + //Shape + 'border-0 rounded-none', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-600 dark:text-surface-0/70' + ] + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } + } +}; diff --git a/src/presets/aura/accordioncontent/index.js b/src/presets/aura/accordioncontent/index.js new file mode 100644 index 0000000..e4f0637 --- /dev/null +++ b/src/presets/aura/accordioncontent/index.js @@ -0,0 +1,3 @@ +export default { + content: 'p-5 pt-0 bg-surface-0 dark:bg-surface-900 text-surface-600 dark:text-surface-0/70' +}; diff --git a/src/presets/aura/accordionheader/index.js b/src/presets/aura/accordionheader/index.js new file mode 100644 index 0000000..12c3520 --- /dev/null +++ b/src/presets/aura/accordionheader/index.js @@ -0,0 +1,11 @@ +export default { + root: ({ context }) => ({ + class: [ + 'flex items-center justify-between bg-surface-0 dark:bg-surface-900 text-surface-600 dark:text-surface-0/70 p-[1.125rem] font-semibold outline-transparent', + { + 'focus-visible:outline-offset-2 focus-visible:ring-1 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400': !context.disabled + } + ] + }), + toggleIcon: 'inline-block text-surface-900 dark:text-surface-0 w-4 h-4' +}; diff --git a/src/presets/aura/accordionpanel/index.js b/src/presets/aura/accordionpanel/index.js new file mode 100644 index 0000000..e65f6fc --- /dev/null +++ b/src/presets/aura/accordionpanel/index.js @@ -0,0 +1,18 @@ +export default { + root: ({ props, context }) => ({ + class: [ + 'flex flex-col border-b border-surface-200 dark:border-surface-700', + { + '[&>[data-pc-name=accordionheader]]:select-none [&>[data-pc-name=accordionheader]]:pointer-events-none [&>[data-pc-name=accordionheader]]:cursor-default [&>[data-pc-name=accordionheader]]:opacity-60': props?.disabled, + '[&>[data-pc-name=accordionheader]]:text-surface-700 dark:[&>[data-pc-name=accordionheader]]:text-surface-100 hover:[&>[data-pc-name=accordionheader]]:text-surface-800 dark:hover:[&>[data-pc-name=accordionheader]]:text-surface-0': + !props.disabled && context.active, + '[&>[data-pc-section=toggleicon]]:text-surface-700 dark:[&>[data-pc-section=toggleicon]]:text-surface-100 hover:[&>[data-pc-section=toggleicon]]:text-surface-800 dark:hover:[&>[data-pc-section=toggleicon]]:text-surface-0': + !props.disabled && context.active, + '[&:last-child>[data-pc-name=accordioncontent]>[data-pc-section=content]]:rounded-b-md': !props.disabled && context.active, + '[&:last-child>[data-pc-name=accordionheader]]:rounded-b-md': !props.disabled && !context.active + }, + '[&:nth-child(n+2)>[data-pc-name=accordionheader]]:border-t-0', + '[&:first-child>[data-pc-name=accordionheader]]:rounded-t-md' + ] + }) +}; diff --git a/src/presets/aura/autocomplete/index.js b/src/presets/aura/autocomplete/index.js new file mode 100644 index 0000000..f578207 --- /dev/null +++ b/src/presets/aura/autocomplete/index.js @@ -0,0 +1,188 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flex + { + flex: props.fluid, + 'inline-flex': !props.fluid + }, + + // Size + { 'w-full': props.multiple }, + + // Color + 'text-surface-900 dark:text-surface-0', + + //States + { + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled + } + ] + }), + inputMultiple: ({ props, state }) => ({ + class: [ + // Font + 'leading-none', + + // Flex + 'flex items-center flex-wrap', + 'gap-2', + + // Spacing + 'm-0 list-none', + 'py-1 px-1', + + // Size + 'w-full', + + // Shape + 'appearance-none rounded-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + { 'bg-surface-0 dark:bg-surface-950': !props.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-700': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { 'hover:border-surface-400 dark:hover:border-surface-700': !props.invalid }, + { 'outline-none outline-offset-0 z-10 ring-1 ring-primary-500 dark:ring-primary-400': state.focused }, + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-text overflow-hidden' + ] + }), + inputToken: { + class: ['py-1 px-0 ml-2', 'inline-flex flex-auto'] + }, + inputChip: { + class: 'flex-auto inline-flex pt-1 pb-1' + }, + input: { + class: 'border-none outline-none bg-transparent m-0 p-0 shadow-none rounded-none w-full' + }, + dropdown: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex justify-center text-center align-bottom', + + // Shape + 'rounded-r-md', + + // Size + 'py-2 leading-none', + 'w-10', + + // Colors + 'text-primary-contrast', + 'bg-primary', + 'border border-primary', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 ', + 'hover:bg-primary-emphasis hover:border-primary-emphasis', + 'focus:ring-primary-500 dark:focus:ring-primary-400' + ] + }, + loader: { + class: ['text-surface-500 dark:text-surface-0/70', 'absolute top-[50%] right-[0.5rem] -mt-2 animate-spin'] + }, + overlay: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + + // Shape + 'border border-surface-300 dark:border-surface-700', + 'rounded-md', + 'shadow-md', + + // Size + 'overflow-auto' + ] + }, + list: { + class: 'p-1 list-none m-0' + }, + option: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'leading-none', + + // Spacing + 'm-0 px-3 py-2', + 'first:mt-0 mt-[2px]', + + // Shape + 'border-0 rounded', + + // Colors + { + 'text-surface-700 dark:text-white/80': !context.focused && !context.selected, + 'bg-surface-200 dark:bg-surface-600/60': context.focused && !context.selected, + 'text-surface-700 dark:text-white/80': context.focused && !context.selected, + 'bg-highlight': context.selected + }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.focused && !context.selected }, + { 'hover:bg-highlight-emphasis': context.selected }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-[rgba(255,255,255,0.03)]': context.focused && !context.selected }, + + // Transition + 'transition-shadow duration-200', + + // Misc + 'cursor-pointer overflow-hidden whitespace-nowrap' + ] + }), + optionGroup: { + class: [ + 'font-semibold', + + // Spacing + 'm-0 py-2 px-3', + + // Colors + 'text-surface-400 dark:text-surface-500', + + // Misc + 'cursor-auto' + ] + }, + emptyMessage: { + class: [ + // Font + 'leading-none', + + // Spacing + 'py-2 px-3', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/src/presets/aura/avatar/index.js b/src/presets/aura/avatar/index.js new file mode 100644 index 0000000..9c77beb --- /dev/null +++ b/src/presets/aura/avatar/index.js @@ -0,0 +1,43 @@ +export default { + root: ({ props, parent }) => ({ + class: [ + // Font + { + 'text-xl': props.size == 'large', + 'text-2xl': props.size == 'xlarge' + }, + + // Alignments + 'inline-flex items-center justify-center', + 'relative', + + // Sizes + { + 'h-8 w-8': props.size == null || props.size == 'normal', + 'w-12 h-12': props.size == 'large', + 'w-16 h-16': props.size == 'xlarge' + }, + { '-ml-4': parent.instance.$style?.name == 'avatargroup' }, + + // Shapes + { + 'rounded-lg': props.shape == 'square', + 'rounded-full': props.shape == 'circle' + }, + { 'border-2': parent.instance.$style?.name == 'avatargroup' }, + + // Colors + 'bg-surface-300 dark:bg-surface-700', + { 'border-white dark:border-surface-800': parent.instance.$style?.name == 'avatargroup' } + ] + }), + image: ({ props }) => ({ + class: [ + 'h-full w-full', + { + 'rounded-lg': props.shape == 'square', + 'rounded-full': props.shape == 'circle' + } + ] + }) +}; diff --git a/src/presets/aura/avatargroup/index.js b/src/presets/aura/avatargroup/index.js new file mode 100644 index 0000000..d267e06 --- /dev/null +++ b/src/presets/aura/avatargroup/index.js @@ -0,0 +1,5 @@ +export default { + root: { + class: 'flex items-center' + } +}; diff --git a/src/presets/aura/badge/index.js b/src/presets/aura/badge/index.js new file mode 100644 index 0000000..da21a51 --- /dev/null +++ b/src/presets/aura/badge/index.js @@ -0,0 +1,47 @@ +export default { + root: ({ props }) => ({ + class: [ + // Font + 'font-bold', + + { + 'text-xs leading-[1.5rem]': props.size === null, + 'text-[0.625rem] leading-[1.25rem]': props.size === 'small', + 'text-lg leading-[2.25rem]': props.size === 'large', + 'text-2xl leading-[3rem]': props.size === 'xlarge' + }, + + // Alignment + 'text-center inline-block', + + // Size + 'p-0 px-1', + { + 'w-2 h-2': props.value === null, + 'min-w-[1.5rem] h-[1.5rem]': props.value !== null && props.size === null, + 'min-w-[1.25rem] h-[1.25rem]': props.size === 'small', + 'min-w-[2.25rem] h-[2.25rem]': props.size === 'large', + 'min-w-[3rem] h-[3rem]': props.size === 'xlarge' + }, + + // Shape + { + 'rounded-full': props.value?.length === 1, + 'rounded-[0.71rem]': props.value?.length !== 1 + }, + + // Color + 'text-primary-contrast', + { + 'bg-primary': props.severity == null || props.severity === 'primary', + 'bg-surface-500 dark:bg-surface-400': props.severity === 'secondary', + 'bg-green-500 dark:bg-green-400': props.severity === 'success', + 'bg-blue-500 dark:bg-blue-400': props.severity === 'info', + 'bg-orange-500 dark:bg-orange-400': props.severity === 'warn', + 'bg-purple-500 dark:bg-purple-400': props.severity === 'help', + 'bg-red-500 dark:bg-red-400': props.severity === 'danger', + 'text-surface-0 dark:text-surface-900 bg-surface-900 dark:bg-surface-0': props.severity === 'contrast' + } + ] + }) +}; diff --git a/src/presets/aura/badgedirective/index.js b/src/presets/aura/badgedirective/index.js new file mode 100644 index 0000000..ad01eb3 --- /dev/null +++ b/src/presets/aura/badgedirective/index.js @@ -0,0 +1,43 @@ +export default { + root: ({ context }) => ({ + class: [ + // Font + 'font-bold', + 'text-xs leading-5', + + // Alignment + 'flex items-center justify-center', + 'text-center', + + // Position + 'absolute top-0 right-0 transform translate-x-1/2 -translate-y-1/2 origin-top-right', + + // Size + 'm-0', + { + 'p-0': context.nogutter || context.dot, + 'px-2': !context.nogutter && !context.dot, + 'min-w-[0.5rem] w-2 h-2': context.dot, + 'min-w-[1.5rem] h-6': !context.dot + }, + + // Shape + { + 'rounded-full': context.nogutter || context.dot, + 'rounded-[10px]': !context.nogutter && !context.dot + }, + + // Color + 'text-primary-contrast', + { + 'bg-primary': !context.info && !context.success && !context.warning && !context.danger && !context.help && !context.secondary, + 'bg-surface-500 dark:bg-surface-400': context.secondary, + 'bg-green-500 dark:bg-green-400': context.success, + 'bg-blue-500 dark:bg-blue-400': context.info, + 'bg-orange-500 dark:bg-orange-400': context.warning, + 'bg-purple-500 dark:bg-purple-400': context.help, + 'bg-red-500 dark:bg-red-400': context.danger + } + ] + }) +}; diff --git a/src/presets/aura/blockui/index.js b/src/presets/aura/blockui/index.js new file mode 100644 index 0000000..928257a --- /dev/null +++ b/src/presets/aura/blockui/index.js @@ -0,0 +1,4 @@ +export default { + root: 'relative', + mask: 'bg-black/40 rounded-md' +}; diff --git a/src/presets/aura/breadcrumb/index.js b/src/presets/aura/breadcrumb/index.js new file mode 100644 index 0000000..558b5d4 --- /dev/null +++ b/src/presets/aura/breadcrumb/index.js @@ -0,0 +1,63 @@ +export default { + root: { + class: [ + // Shape + 'rounded-md', + + // Spacing + 'p-4', + + // Color + 'bg-surface-0 dark:bg-surface-900', + + // Misc + 'overflow-x-auto' + ] + }, + list: { + class: [ + // Flex & Alignment + 'flex items-center flex-nowrap', + + // Spacing + 'm-0 p-0 list-none leading-none' + ] + }, + itemLink: { + class: [ + // Flex & Alignment + 'flex items-center gap-2', + + // Shape + 'rounded-md', + + // Color + 'text-surface-600 dark:text-white/70', + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring-1 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transitions + 'transition-shadow duration-200', + + // Misc + 'text-decoration-none' + ] + }, + itemIcon: { + class: 'text-surface-600 dark:text-white/70' + }, + separator: { + class: [ + // Flex & Alignment + 'flex items-center', + + // Spacing + 'mx-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + } +}; diff --git a/src/presets/aura/button/index.js b/src/presets/aura/button/index.js new file mode 100644 index 0000000..874fe13 --- /dev/null +++ b/src/presets/aura/button/index.js @@ -0,0 +1,246 @@ +export default { + root: ({ props, context, parent, instance }) => ({ + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + { 'flex-col': (props.iconPos === 'top' || props.iconPos === 'bottom') && props.label }, + + // Sizes & Spacing + 'leading-[normal]', + { + 'px-3 py-2': props.size === null, + 'text-sm py-1.5 px-3': props.size === 'small', + 'text-xl py-3 px-4': props.size === 'large' + }, + { 'gap-2': props.label !== null }, + { + 'w-10 px-0 py-2': props.label == null && props.icon !== null + }, + { + 'w-10 px-0 gap-0': instance.hasIcon && !props.label && !props.badge, + 'rounded-[50%] h-10 [&>[data-pc-section=label]]:w-0 [&>[data-pc-section=label]]:invisible': instance.hasIcon && !props.label && !props.badge && props.rounded + }, + + // Shapes + { 'shadow-lg': props.raised }, + { 'rounded-md': !props.rounded, 'rounded-full': props.rounded }, + { 'rounded-none first:rounded-l-md last:rounded-r-md': parent.instance.$name == 'InputGroup' }, + + // Link Button + { 'text-primary-600 bg-transparent border-transparent': props.link }, + + // Plain Button + { 'text-white bg-gray-500 border border-gray-500': props.plain && !props.outlined && !props.text }, + // Plain Text Button + { 'text-surface-500': props.plain && props.text }, + // Plain Outlined Button + { 'text-surface-500 border border-gray-500': props.plain && props.outlined }, + + // Text Button + { 'bg-transparent border-transparent': props.text && !props.plain }, + + // Outlined Button + { 'bg-transparent border': props.outlined && !props.plain }, + + // --- Severity Buttons --- + + // Primary Button + { + 'text-primary-contrast': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain, + 'bg-primary': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain, + 'border border-primary': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain + }, + // Primary Text Button + { 'text-primary': props.text && props.severity === null && !props.plain }, + // Primary Outlined Button + { 'text-primary border border-primary': props.outlined && props.severity === null && !props.plain }, + + // Secondary Button + { + 'text-surface-900 dark:text-white': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain, + 'bg-surface-100 dark:bg-surface-700': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain, + 'border border-surface-100 dark:border-surface-700': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain + }, + // Secondary Text Button + { 'text-surface-500 dark:text-surface-300': props.text && props.severity === 'secondary' && !props.plain }, + // Secondary Outlined Button + { 'text-surface-500 dark:text-surface-300 border border-surface-500 hover:bg-surface-300/10': props.outlined && props.severity === 'secondary' && !props.plain }, + + // Success Button + { + 'text-white dark:text-green-900': props.severity === 'success' && !props.text && !props.outlined && !props.plain, + 'bg-green-500 dark:bg-green-400': props.severity === 'success' && !props.text && !props.outlined && !props.plain, + 'border border-green-500 dark:border-green-400': props.severity === 'success' && !props.text && !props.outlined && !props.plain + }, + // Success Text Button + { 'text-green-500 dark:text-green-400': props.text && props.severity === 'success' && !props.plain }, + // Success Outlined Button + { 'text-green-500 border border-green-500 hover:bg-green-300/10': props.outlined && props.severity === 'success' && !props.plain }, + + // Info Button + { + 'text-white dark:text-surface-900': props.severity === 'info' && !props.text && !props.outlined && !props.plain, + 'bg-blue-500 dark:bg-blue-400': props.severity === 'info' && !props.text && !props.outlined && !props.plain, + 'border border-blue-500 dark:border-blue-400': props.severity === 'info' && !props.text && !props.outlined && !props.plain + }, + // Info Text Button + { 'text-blue-500 dark:text-blue-400': props.text && props.severity === 'info' && !props.plain }, + // Info Outlined Button + { 'text-blue-500 border border-blue-500 hover:bg-blue-300/10 ': props.outlined && props.severity === 'info' && !props.plain }, + + // Warning Button + { + 'text-white dark:text-surface-900': props.severity === 'warn' && !props.text && !props.outlined && !props.plain, + 'bg-orange-500 dark:bg-orange-400': props.severity === 'warn' && !props.text && !props.outlined && !props.plain, + 'border border-orange-500 dark:border-orange-400': props.severity === 'warn' && !props.text && !props.outlined && !props.plain + }, + // Warning Text Button + { 'text-orange-500 dark:text-orange-400': props.text && props.severity === 'warn' && !props.plain }, + // Warning Outlined Button + { 'text-orange-500 border border-orange-500 hover:bg-orange-300/10': props.outlined && props.severity === 'warn' && !props.plain }, + + // Help Button + { + 'text-white dark:text-surface-900': props.severity === 'help' && !props.text && !props.outlined && !props.plain, + 'bg-purple-500 dark:bg-purple-400': props.severity === 'help' && !props.text && !props.outlined && !props.plain, + 'border border-purple-500 dark:border-purple-400': props.severity === 'help' && !props.text && !props.outlined && !props.plain + }, + // Help Text Button + { 'text-purple-500 dark:text-purple-400': props.text && props.severity === 'help' && !props.plain }, + // Help Outlined Button + { 'text-purple-500 border border-purple-500 hover:bg-purple-300/10': props.outlined && props.severity === 'help' && !props.plain }, + + // Danger Button + { + 'text-white dark:text-surface-900': props.severity === 'danger' && !props.text && !props.outlined && !props.plain, + 'bg-red-500 dark:bg-red-400': props.severity === 'danger' && !props.text && !props.outlined && !props.plain, + 'border border-red-500 dark:border-red-400': props.severity === 'danger' && !props.text && !props.outlined && !props.plain + }, + // Danger Text Button + { 'text-red-500 dark:text-red-400': props.text && props.severity === 'danger' && !props.plain }, + // Danger Outlined Button + { 'text-red-500 border border-red-500 hover:bg-red-300/10': props.outlined && props.severity === 'danger' && !props.plain }, + + // Contrast Button + { + 'text-white dark:text-surface-900': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain, + 'bg-surface-900 dark:bg-surface-0': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain, + 'border border-surface-900 dark:border-surface-0': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain + }, + // Contrast Text Button + { 'text-surface-900 dark:text-surface-0': props.text && props.severity === 'contrast' && !props.plain }, + // Contrast Outlined Button + { 'text-surface-900 dark:text-surface-0 border border-surface-900 dark:border-surface-0': props.outlined && props.severity === 'contrast' && !props.plain }, + + // --- Severity Button States --- + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + + // Link + { 'focus:ring-primary': props.link }, + + // Plain + { 'hover:bg-gray-600 hover:border-gray-600': props.plain && !props.outlined && !props.text }, + // Text & Outlined Button + { 'hover:bg-surface-300/10': props.plain && (props.text || props.outlined) }, + + // Primary + { 'hover:bg-primary-emphasis hover:border-primary-emphasis': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-primary': props.severity === null }, + // Text & Outlined Button + { 'hover:bg-primary-300/10': (props.text || props.outlined) && props.severity === null && !props.plain }, + + // Secondary + { 'hover:bg-surface-200 dark:hover:bg-surface-600 hover:border-surface-200 dark:hover:border-surface-600': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-surface-500 dark:focus:ring-surface-400': props.severity === 'secondary' }, + // Text & Outlined Button + { 'hover:bg-surface-300/10': (props.text || props.outlined) && props.severity === 'secondary' && !props.plain }, + + // Success + { 'hover:bg-green-600 dark:hover:bg-green-300 hover:border-green-600 dark:hover:border-green-300': props.severity === 'success' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-green-500 dark:focus:ring-green-400': props.severity === 'success' }, + // Text & Outlined Button + { 'hover:bg-green-300/10': (props.text || props.outlined) && props.severity === 'success' && !props.plain }, + + // Info + { 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:border-blue-600 dark:hover:border-blue-300': props.severity === 'info' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-blue-500 dark:focus:ring-blue-400': props.severity === 'info' }, + // Text & Outlined Button + { 'hover:bg-blue-300/10': (props.text || props.outlined) && props.severity === 'info' && !props.plain }, + + // Warning + { 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:border-orange-600 dark:hover:border-orange-300': props.severity === 'warn' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-orange-500 dark:focus:ring-orange-400': props.severity === 'warn' }, + // Text & Outlined Button + { 'hover:bg-orange-300/10': (props.text || props.outlined) && props.severity === 'warn' && !props.plain }, + + // Help + { 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:border-purple-600 dark:hover:border-purple-300': props.severity === 'help' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-purple-500 dark:focus:ring-purple-400': props.severity === 'help' }, + // Text & Outlined Button + { 'hover:bg-purple-300/10': (props.text || props.outlined) && props.severity === 'help' && !props.plain }, + + // Danger + { 'hover:bg-red-600 dark:hover:bg-red-300 hover:border-red-600 dark:hover:border-red-300': props.severity === 'danger' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-red-500 dark:focus:ring-red-400': props.severity === 'danger' }, + // Text & Outlined Button + { 'hover:bg-red-300/10': (props.text || props.outlined) && props.severity === 'danger' && !props.plain }, + + // Contrast + { 'hover:bg-surface-800 dark:hover:bg-surface-100 hover:border-surface-800 dark:hover:border-surface-100': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-surface-500 dark:focus:ring-surface-400': props.severity === 'contrast' }, + // Text & Outlined Button + { 'hover:bg-surface-900/10 dark:hover:bg-[rgba(255,255,255,0.03)]': (props.text || props.outlined) && props.severity === 'contrast' && !props.plain }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled }, + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none', + + // Badge + '[&>[data-pc-name=badge]]:min-w-4 [&>[data-pc-name=badge]]:h-4 [&>[data-pc-name=badge]]:leading-4' + ] + }), + label: ({ props }) => ({ + class: [ + 'duration-200', + 'font-medium', + { + 'hover:underline': props.link + }, + { 'flex-1': props.label !== null, 'invisible w-0': props.label == null } + ] + }), + icon: ({ props }) => ({ + class: [ + 'text-base leading-4', + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'order-2': props.iconPos == 'bottom' && props.label != null + } + ] + }), + loadingIcon: ({ props }) => ({ + class: [ + 'h-4 w-4', + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'mb-2': props.iconPos == 'top' && props.label != null, + 'mt-2': props.iconPos == 'bottom' && props.label != null + }, + 'animate-spin' + ] + }), + badge: ({ props }) => ({ + class: [{ 'ml-2 w-4 h-4 leading-none flex items-center justify-center': props.badge }] + }) +}; diff --git a/src/presets/aura/buttongroup/index.js b/src/presets/aura/buttongroup/index.js new file mode 100644 index 0000000..c6ae4d3 --- /dev/null +++ b/src/presets/aura/buttongroup/index.js @@ -0,0 +1,12 @@ +export default { + root: { + class: [ + '[&>[data-pc-name=button]]:m-0', + '[&>[data-pc-name=button]]:border-r-none', + '[&>[data-pc-name=button]:nth-last-child(n+2)]:rounded-tr-none', + '[&>[data-pc-name=button]:nth-last-child(n+2)]:rounded-br-none', + '[&>[data-pc-name=button]:nth-child(n+2)]:rounded-tl-none', + '[&>[data-pc-name=button]:nth-child(n+2)]:rounded-bl-none' + ] + } +}; diff --git a/src/presets/aura/card/index.js b/src/presets/aura/card/index.js new file mode 100644 index 0000000..eef7c57 --- /dev/null +++ b/src/presets/aura/card/index.js @@ -0,0 +1,53 @@ +export default { + root: { + class: [ + //Flex + 'flex flex-col', + + //Shape + 'rounded-[12px]', + 'shadow-md', + + //Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0' + ] + }, + body: { + class: [ + //Flex + 'flex flex-col', + 'gap-4', + + 'p-6' + ] + }, + caption: { + class: [ + //Flex + 'flex flex-col', + 'gap-2' + ] + }, + title: { + class: 'text-xl font-semibold mb-0' + }, + subtitle: { + class: [ + //Font + 'font-normal', + + //Spacing + 'mb-0', + + //Color + 'text-surface-600 dark:text-surface-0/60' + ] + }, + content: { + class: 'p-0' + }, + footer: { + class: 'p-0' + } +}; diff --git a/src/presets/aura/carousel/index.js b/src/presets/aura/carousel/index.js new file mode 100644 index 0000000..6b58b78 --- /dev/null +++ b/src/presets/aura/carousel/index.js @@ -0,0 +1,102 @@ +export default { + root: { + class: [ + // Flexbox + 'flex flex-col' + ] + }, + contentContainer: { + class: [ + // Flexbox & Overflow + 'flex flex-col overflow-auto' + ] + }, + content: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + + // Orientation + { + 'flex-row': props.orientation !== 'vertical', + 'flex-col': props.orientation == 'vertical' + }, + '[&>[data-pc-extend=button]]:self-center' + ] + }), + viewport: { + class: [ + // Overflow & Width + 'overflow-hidden w-full' + ] + }, + itemList: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + + // Orientation & Sizing + { + 'flex-row': props.orientation !== 'vertical', + 'flex-col h-full': props.orientation == 'vertical' + } + ] + }), + item: ({ props }) => ({ + class: [ + // Flexbox + 'flex shrink-0 grow ', + + // Size + { + 'w-full sm:w-[50%] md:w-[33.333333333333336%]': props.orientation !== 'vertical', + + 'w-full h-full': props.orientation == 'vertical' + } + ] + }), + itemClone: ({ props }) => ({ + class: [ + // Flexbox + 'flex shrink-0 grow', + 'unvisible', + + // Size + { + 'w-full sm:w-[50%] md:w-[33.333333333333336%]': props.orientation !== 'vertical', + + 'w-full h-full': props.orientation == 'vertical' + } + ] + }), + indicatorList: { + class: [ + // Flexbox & Alignment + 'flex flex-row justify-center flex-wrap' + ] + }, + indicator: { + class: [ + // Spacing + 'mr-2 mb-2' + ] + }, + indicatorButton: ({ context }) => ({ + class: [ + // Sizing & Shape + 'w-8 h-2 rounded-md', + + // Transitions + 'transition duration-200', + + // Focus Styles + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Color & Background + { + 'bg-surface-200 hover:bg-surface-300 dark:bg-surface-700 dark:hover:bg-surface-600': !context.highlighted, + 'bg-primary hover:bg-primary-emphasis': context.highlighted + } + ] + }) +}; diff --git a/src/presets/aura/cascadeselect/index.js b/src/presets/aura/cascadeselect/index.js new file mode 100644 index 0000000..0e4b905 --- /dev/null +++ b/src/presets/aura/cascadeselect/index.js @@ -0,0 +1,190 @@ +export default { + root: ({ props, state }) => ({ + class: [ + 'relative', + + // Flex + { + flex: props.fluid, + 'inline-flex': !props.fluid + }, + + // Shape + 'rounded-md', + + // Color and Background + { 'bg-surface-0 dark:bg-surface-950': !props.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { 'hover:border-surface-400 dark:hover:border-surface-600': !props.invalid }, + { 'outline-none outline-offset-0 ring-1 ring-primary-500 dark:ring-primary-400': state.focused }, + + // Misc + 'cursor-pointer', + 'select-none', + { 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + label: ({ props }) => ({ + class: [ + // Font + 'leading-none', + + // Flex & Alignment + 'flex flex-auto', + + // Sizing and Spacing + 'w-[1%]', + 'py-2 px-3', + + //Shape + 'rounded-none', + + // Color and Background + 'bg-transparent', + 'border-0', + { 'text-surface-800 dark:text-white/80': props.modelValue, 'text-surface-400 dark:text-surface-500': !props.modelValue }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }), + dropdown: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-r-md' + ] + }, + overlay: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + + // Shape + 'border border-surface-300 dark:border-surface-700', + 'rounded-md', + 'shadow-md' + ] + }, + list: { + class: 'flex flex-col list-none p-0 m-0 gap-[2px] min-w-full' + }, + option: ({ context }) => ({ + class: [ + //Shape + 'rounded-[4px]', + + // Spacing + 'first:mt-0 mt-[2px]', + + // Colors + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-surface-600/90': context.focused && !context.active, + 'bg-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // States + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.active, + 'hover:bg-highlight-emphasis': context.active + }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled } + ] + }), + optionContent: { + class: [ + 'relative', + 'leading-[normal]', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + groupIcon: { + class: [ + // Alignment + 'ml-auto' + ] + }, + optionList: { + class: [ + 'min-w-full', + + // Spacing + 'p-1', + 'm-0', + 'list-none', + + // Shape + 'shadow-none sm:shadow-md', + 'rounded-md', + 'border border-surface-200 dark:border-surface-700', + + // Position + 'static sm:absolute', + 'z-10', + + // Color + 'bg-surface-0 dark:bg-surface-900' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/src/presets/aura/checkbox/index.js b/src/presets/aura/checkbox/index.js new file mode 100644 index 0000000..0169fdd --- /dev/null +++ b/src/presets/aura/checkbox/index.js @@ -0,0 +1,104 @@ +export default { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-5', + 'h-5', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-5', + 'h-5', + + // Shape + 'rounded', + 'border', + + // Colors + { + 'border-surface-300 dark:border-surface-700': !context.checked && !props.invalid, + 'bg-surface-0 dark:bg-surface-950': !context.checked && !props.invalid && !props.disabled, + 'border-primary bg-primary': context.checked + }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:border-surface-400 dark:peer-hover:border-surface-600': !props.disabled && !context.checked && !props.invalid, + 'peer-hover:bg-primary-emphasis peer-hover:border-primary-emphasis': !props.disabled && context.checked, + 'peer-focus-visible:z-10 peer-focus-visible:outline-none peer-focus-visible:outline-offset-0 peer-focus-visible:ring-1 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': !props.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded', + 'outline-none', + 'border border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: ({ context, state }) => ({ + class: [ + // Size + 'w-[0.875rem]', + 'h-[0.875rem]', + + // Colors + { + 'text-white dark:text-surface-950': context.checked, + 'text-primary': state.d_indeterminate + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + }) +}; diff --git a/src/presets/aura/chip/index.js b/src/presets/aura/chip/index.js new file mode 100644 index 0000000..70ea685 --- /dev/null +++ b/src/presets/aura/chip/index.js @@ -0,0 +1,43 @@ +export default { + root: { + class: [ + // Flexbox + 'inline-flex items-center', + + // Spacing + 'px-3 py-1 gap-2', + + // Shape + 'rounded-[16px]', + + // Colors + 'text-surface-700 dark:text-white', + 'bg-surface-100 dark:bg-surface-700' + ] + }, + label: { + class: 'leading-6 m-0' + }, + icon: { + class: 'leading-6 mr-2' + }, + image: { + class: ['w-8 h-8 -ml-2 mr-2', 'rounded-full'] + }, + removeIcon: { + class: [ + 'inline-block', + // Shape + 'rounded-md leading-6', + + // Size + 'w-4 h-4', + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer' + ] + } +}; diff --git a/src/presets/aura/colorpicker/index.js b/src/presets/aura/colorpicker/index.js new file mode 100644 index 0000000..e517a47 --- /dev/null +++ b/src/presets/aura/colorpicker/index.js @@ -0,0 +1,126 @@ +export default { + root: ({ props }) => ({ + class: [ + // Display + 'inline-block', + + // Misc + { 'opacity-60 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + preview: { + class: [ + // Font + 'text-base leading-none', + + // Spacing + 'm-0', + 'p-0', + + //Size + 'w-6 h-6', + + // Shape + 'rounded-md', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-700', + + // States + 'hover:border-surface-400 dark:hover:border-surface-600', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + + // Transition + 'transition-colors duration-200', + + // Misc + 'cursor-pointer' + ] + }, + panel: ({ props }) => ({ + class: [ + // Position & Size + { + 'relative h-[166px] w-[193px]': props.inline, + 'absolute h-[166px] w-[193px]': !props.inline + }, + + // Shape + 'shadow-md border', + + // Colors + 'bg-surface-800 dark:bg-surface-900 border-surface-600 dark:border-surface-700' + ] + }), + colorSelector: { + class: [ + // Position + 'absolute top-[8px] left-[8px]', + + // Size + 'h-[150px] w-[150px]' + ] + }, + color: { + class: [ + // Size + 'h-[150px] w-[150px]' + ], + style: 'background: linear-gradient(to top, #000 0%, rgb(0 0 0 / 0) 100%), linear-gradient(to right, #fff 0%, rgb(255 255 255 / 0) 100%)' + }, + colorHandle: { + class: [ + 'absolute', + + // Shape + 'rounded-full border border-solid', + + // Size + 'h-[10px] w-[10px]', + + // Spacing + '-ml-[5px] -mt-[5px]', + + // Colors + 'border-white', + + // Misc + 'cursor-pointer opacity-85' + ] + }, + hue: { + class: [ + // Position + 'absolute top-[8px] left-[167px]', + + // Size + 'h-[150px] w-[17px]', + + // Opacity + 'opacity-85' + ], + style: 'background: linear-gradient(0deg, red 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red)' + }, + hueHandle: { + class: [ + // Position + 'absolute left-0 -ml-[2px] -mt-[5px]', + + // Size + 'h-[10px] w-[21px]', + + // Shape + 'border-solid border-2', + + // Misc + 'cursor-pointer opacity-85' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/src/presets/aura/confirmdialog/index.js b/src/presets/aura/confirmdialog/index.js new file mode 100644 index 0000000..52abb64 --- /dev/null +++ b/src/presets/aura/confirmdialog/index.js @@ -0,0 +1,3 @@ +export default { + icon: 'w-8 h-8 text-[2rem] mr-2' +}; diff --git a/src/presets/aura/confirmpopup/index.js b/src/presets/aura/confirmpopup/index.js new file mode 100644 index 0000000..f5490ce --- /dev/null +++ b/src/presets/aura/confirmpopup/index.js @@ -0,0 +1,56 @@ +export default { + root: { + class: [ + // Shape + 'rounded-lg', + 'shadow-lg', + 'border-0', + + // Positioning + 'z-40 transform origin-center', + 'mt-3 absolute left-0 top-0', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80', + + // Before: Arrow + 'before:absolute before:w-0 before:-top-3 before:h-0 before:border-transparent before:border-solid before:ml-[calc(var(--overlayArrowLeft,0)+1.25rem)] before:border-x-[10px] before:border-b-[10px] before:border-t-0 before:border-b-surface-200 dark:before:border-b-surface-700', + 'after:absolute after:w-0 after:-top-[0.54rem] after:h-0 after:border-transparent after:border-solid after:ml-[calc(var(--overlayArrowLeft,0)+1.3rem)] after:border-x-[9px] after:border-b-[8px] after:border-t-0 after:border-b-surface-0 dark:after:border-b-surface-900' + ] + }, + content: { + class: ['p-4 items-center flex', 'rounded-t-lg', 'border-x border-t last:border-b border-surface-200 dark:border-surface-700'] + }, + icon: { + class: 'text-2xl mr-4' + }, + footer: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-end', + 'shrink-0', + 'text-right', + 'gap-2', + + // Spacing + 'px-4', + 'pb-4', + + // Shape + 'border-t-0', + 'rounded-b-lg', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80', + 'border-x border-b border-surface-200 dark:border-surface-700' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/src/presets/aura/contextmenu/index.js b/src/presets/aura/contextmenu/index.js new file mode 100644 index 0000000..5b035c7 --- /dev/null +++ b/src/presets/aura/contextmenu/index.js @@ -0,0 +1,127 @@ +export default { + root: { + class: [ + // Sizing and Shape + 'min-w-[12.5rem]', + 'rounded-md', + 'shadow-md', + + // Spacing + 'p-1', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + 'border border-surface-200 dark:border-surface-700' + ] + }, + rootList: { + class: [ + // Spacings and Shape + 'flex flex-col', + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + item: { + class: 'relative my-[2px] [&:first-child]:mt-0' + }, + itemContent: ({ context }) => ({ + class: [ + //Shape + 'rounded-[4px]', + + // Colors + 'text-surface-700 dark:text-white/80', + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200': context.focused && !context.active, + 'bg-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // States + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.active, + 'hover:bg-highlight-emphasis': context.active + }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled } + ] + }), + itemLink: { + class: [ + 'relative', + // Flexbox + + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + + // Color + 'text-surface-700 dark:text-white/80', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + itemIcon: { + class: [ + // Spacing + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + itemLabel: { + class: ['leading-none'] + }, + submenu: ({ props }) => ({ + class: [ + 'flex flex-col', + // Size + 'w-full sm:w-48', + + // Spacing + 'p-1', + 'm-0', + 'list-none', + + // Shape + 'shadow-md', + 'rounded-md', + 'dark:border dark:border-surface-700', + + // Position + 'static sm:absolute', + 'z-10', + { 'sm:absolute sm:left-full sm:top-0': props.level > 1 }, + + // Color + 'bg-surface-0 dark:bg-surface-900' + ] + }), + submenuIcon: { + class: ['ml-auto'] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + }, + transition: { + enterFromClass: 'opacity-0', + enterActiveClass: 'transition-opacity duration-250' + } +}; diff --git a/src/presets/aura/datatable/index.js b/src/presets/aura/datatable/index.js new file mode 100644 index 0000000..10828b9 --- /dev/null +++ b/src/presets/aura/datatable/index.js @@ -0,0 +1,406 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flex & Alignment + { 'flex flex-col': props.scrollable && props.scrollHeight === 'flex' }, + + // Size + { 'h-full': props.scrollable && props.scrollHeight === 'flex' } + ] + }), + mask: { + class: [ + // Position + 'absolute', + 'top-0 left-0', + 'z-20', + + // Flex & Alignment + 'flex items-center justify-center', + + // Size + 'w-full h-full', + + // Color + 'bg-surface-100/40 dark:bg-surface-900/40', + + // Transition + 'transition duration-200' + ] + }, + loadingIcon: { + class: 'w-8 h-8 animate-spin' + }, + tableContainer: ({ props }) => ({ + class: [ + { relative: props.scrollable, 'flex flex-col grow': props.scrollable && props.scrollHeight === 'flex' }, + + // Size + { 'h-full': props.scrollable && props.scrollHeight === 'flex' } + ] + }), + header: ({ props }) => ({ + class: [ + 'font-bold', + + // Shape + props.showGridlines ? 'border-x border-t border-b-0' : 'border-y border-x-0', + + // Spacing + 'p-4', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80' + ] + }), + table: { + class: 'w-full border-spacing-0 border-separate' + }, + thead: ({ context }) => ({ + class: [ + { + 'bg-surface-0 dark:bg-surface-900 top-0 z-40 sticky': context.scrollable + } + ] + }), + tbody: ({ instance, context }) => ({ + class: [ + { + 'sticky z-20': instance.frozenRow && context.scrollable + }, + 'bg-surface-0 dark:bg-surface-900' + ] + }), + tfoot: ({ context }) => ({ + class: [ + { + 'bg-surface-0 bottom-0 z-0': context.scrollable + } + ] + }), + footer: { + class: [ + 'font-bold', + + // Shape + 'border-t-0 border-b border-x-0', + + // Spacing + 'p-4', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80' + ] + }, + column: { + headerCell: ({ context, props }) => ({ + class: [ + 'font-semibold', + 'leading-[normal]', + + // Position + { 'sticky z-20 border-b': props.frozen || props.frozen === '' }, + + { relative: context.resizable }, + + // Alignment + 'text-left', + + // Shape + { 'first:border-l border-y border-r': context?.showGridlines }, + 'border-0 border-b border-solid', + + // Spacing + context?.size === 'small' ? 'py-[0.375rem] px-2' : context?.size === 'large' ? 'py-[0.9375rem] px-5' : 'py-3 px-4', + + // Color + (props.sortable === '' || props.sortable) && context.sorted ? 'bg-highlight' : 'bg-surface-50 text-surface-700 dark:text-white/80 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700 ', + + // States + { 'hover:bg-surface-100 dark:hover:bg-surface-800/50': (props.sortable === '' || props.sortable) && !context?.sorted }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transition + { 'transition duration-200': props.sortable === '' || props.sortable }, + + // Misc + { 'cursor-pointer': props.sortable === '' || props.sortable }, + { + 'overflow-hidden whitespace-nowrap border-y bg-clip-padding': context?.resizable // Resizable + } + ] + }), + columnHeaderContent: { + class: 'flex items-center gap-2' + }, + sort: ({ context }) => ({ + class: [context.sorted ? 'text-primary-500' : 'text-surface-700', context.sorted ? 'dark:text-primary-400' : 'dark:text-white/80'] + }), + bodyCell: ({ props, context, state, parent }) => ({ + class: [ + // Font + 'leading-[normal]', + + //Position + { 'sticky box-border border-b': parent.instance.frozenRow }, + { 'sticky box-border border-b z-20': props.frozen || props.frozen === '' }, + + // Alignment + 'text-left', + + // Shape + 'border-0 border-b border-solid', + { 'first:border-l border-r border-b': context?.showGridlines }, + { 'bg-surface-0 dark:bg-surface-900': parent.instance.frozenRow || props.frozen || props.frozen === '' }, + + // Spacing + { 'py-[0.375rem] px-2': context?.size === 'small' && !state['d_editing'] }, + { 'py-[0.9375rem] px-5': context?.size === 'large' && !state['d_editing'] }, + { 'py-3 px-4': context?.size !== 'large' && context?.size !== 'small' && !state['d_editing'] }, + { 'py-[0.6rem] px-2': state['d_editing'] }, + + // Color + 'border-surface-200 dark:border-surface-700', + + { + 'overflow-hidden whitespace-nowrap border-y bg-clip-padding': parent.instance?.$parentInstance?.$parentInstance?.resizableColumns // Resizable + } + ] + }), + footerCell: ({ context }) => ({ + class: [ + // Font + 'font-bold', + + // Alignment + 'text-left', + + // Shape + 'border-0 border-b border-solid', + { 'border-x border-y': context?.showGridlines }, + + // Spacing + context?.size === 'small' ? 'p-2' : context?.size === 'large' ? 'p-5' : 'p-4', + + // Color + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900' + ] + }), + sortIcon: ({ context }) => ({ + class: ['ml-2', context.sorted ? 'text-inherit' : 'text-surface-700 dark:text-white/70'] + }), + columnFilter: { + class: 'inline-flex items-center ml-auto font-normal' + }, + filterOverlay: { + class: [ + 'flex flex-col gap-2', + + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Size + 'min-w-[12.5rem]', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + filterConstraintList: { + class: 'm-0 p-0 py-3 list-none' + }, + filterConstraint: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + { 'text-surface-700 dark:text-white/80': !context?.highlighted }, + { 'bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-white/80': !context?.highlighted }, + { 'bg-highlight': context?.highlighted }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context?.highlighted }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-[rgba(255,255,255,0.03)]': !context?.highlighted }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + filterOperator: { + class: [ + // Shape + 'rounded-t-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-700', + '[&>[data-pc-name=pcfilteroperatordropdown]]:w-full' + ] + }, + filter: ({ instance }) => ({ + class: [{ 'flex items-center w-full gap-2': instance.display === 'row', 'inline-flex ml-auto': instance.display === 'menu' }] + }), + filterRule: 'flex flex-col gap-2', + filterButtonbar: 'flex items-center justify-between p-0', + filterAddButtonContainer: '[&>[data-pc-name=pcfilteraddrulebutton]]:w-full', + rowToggleButton: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Spacing + 'm-0 p-0', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-500 dark:text-white/70', + 'bg-transparent', + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring-1 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + columnResizer: { + class: [ + 'block', + + // Position + 'absolute top-0 right-0', + + // Sizing + 'w-2 h-full', + + // Spacing + 'm-0 p-0', + + // Color + 'border border-transparent', + + // Misc + 'cursor-col-resize' + ] + }, + transition: { + class: 'p-4 flex flex-col gap-2', + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } + }, + bodyRow: ({ context, props }) => ({ + class: [ + // Color + 'dark:text-white/80', + { 'bg-highlight': context.selected && props.highlightOnSelect }, + { 'bg-surface-0 text-surface-600 dark:bg-surface-900': !context.selected }, + { 'font-bold bg-surface-0 dark:bg-surface-900 z-20': props.frozenRow }, + { 'odd:bg-surface-0 odd:text-surface-600 dark:odd:bg-surface-900 even:bg-surface-50 even:text-surface-600 dark:even:bg-surface-800/50': context.stripedRows }, + + // State + { 'hover:bg-surface-300/20 dark:hover:bg-surface-800/50 hover:text-surface-600': props.selectionMode && !context.selected }, + + // Transition + { 'transition duration-200': (props.selectionMode && !context.selected) || props.rowHover }, + + // Misc + { 'cursor-pointer': props.selectionMode } + ] + }), + rowExpansion: { + class: 'bg-surface-0 dark:bg-surface-900 text-surface-600 dark:text-white/80' + }, + rowGroupHeader: { + class: ['sticky z-20', 'bg-surface-0 text-surface-600 dark:text-white/70', 'dark:bg-surface-900'] + }, + rowGroupFooter: { + class: ['sticky z-20', 'bg-surface-0 text-surface-600 dark:text-white/70', 'dark:bg-surface-900'] + }, + rowToggleButton: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Spacing + 'm-0 p-0', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-500 dark:text-white/70', + 'bg-transparent', + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring-1 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + rowToggleIcon: { + class: 'inline-block w-4 h-4' + }, + columnResizeIndicator: { + class: 'absolute hidden w-[2px] z-20 bg-primary' + } +}; diff --git a/src/presets/aura/dataview/index.js b/src/presets/aura/dataview/index.js new file mode 100644 index 0000000..2fa6414 --- /dev/null +++ b/src/presets/aura/dataview/index.js @@ -0,0 +1,28 @@ +export default { + content: { + class: [ + // Spacing + 'p-0', + + // Shape + 'border-0', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900' + ] + }, + header: { + class: [ + 'font-semibold', + + // Spacing + 'py-3 px-4', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-00 dark:bg-surface-900', + 'border-b border-surface-200 dark:border-surface-700' + ] + } +}; diff --git a/src/presets/aura/datepicker/index.js b/src/presets/aura/datepicker/index.js new file mode 100644 index 0000000..c55812f --- /dev/null +++ b/src/presets/aura/datepicker/index.js @@ -0,0 +1,446 @@ +export default { + root: ({ props }) => ({ + class: [ + // Display and Position + { + flex: props.fluid, + 'inline-flex': !props.fluid + }, + 'max-w-full', + 'relative' + ] + }), + pcInput: ({ props, parent }) => ({ + root: { + class: [ + // Display + 'flex-auto w-[1%]', + + // Font + 'leading-none', + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + { 'bg-surface-0 dark:bg-surface-950': !props.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Spacing + 'm-0 py-2 px-3', + + // Shape + 'appearance-none', + { 'rounded-md': !props.showIcon || props.iconDisplay == 'input' }, + { 'rounded-l-md flex-1 pr-9': props.showIcon && props.iconDisplay !== 'input' }, + { 'rounded-md flex-1 pr-9': props.showIcon && props.iconDisplay === 'input' }, + + // Transitions + 'transition-colors', + 'duration-200', + + // States + { + 'hover:border-surface-400 dark:hover:border-surface-600': !props.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10': !props.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && props.modelValue !== null } + ] + } + }), + dropdownIcon: { + class: ['absolute top-1/2 -mt-2', 'text-surface-600 dark:text-surface-200', 'right-3'] + }, + dropdown: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Shape + 'rounded-r-md', + + // Size + 'py-2 px-0', + 'w-10', + 'leading-[normal]', + + // Colors + 'border border-l-0 border-surface-300 dark:border-surface-600', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:ring-primary-500 dark:focus:ring-primary-400' + ] + }, + inputIconContainer: 'absolute cursor-pointer top-1/2 right-3 -mt-3', + inputIcon: 'inline-block text-base', + panel: ({ props }) => ({ + class: [ + // Display & Position + { + absolute: !props.inline, + 'inline-block': props.inline + }, + + // Size + { 'w-auto p-3 ': !props.inline }, + { 'min-w-[80vw] w-auto p-3 ': props.touchUI }, + { 'p-3 min-w-full': props.inline }, + + // Shape + 'border rounded-lg', + { + 'shadow-md': !props.inline + }, + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + + //misc + { 'overflow-x-auto': props.inline } + ] + }), + header: { + class: [ + //Font + 'font-medium', + + // Flexbox and Alignment + 'flex items-center justify-between', + + // Spacing + 'p-0 pb-2', + 'm-0', + + // Shape + 'border-b', + 'rounded-t-md', + + // Colors + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700' + ] + }, + title: { + class: [ + // Text + 'leading-7', + 'mx-auto my-0' + ] + }, + selectMonth: { + class: [ + // Font + 'text-base leading-[normal]', + 'font-medium', + + //shape + 'rounded-md', + + // Colors + 'text-surface-700 dark:text-white/80', + + // Transitions + 'transition duration-200', + + // Spacing + 'p-1', + 'm-0 mr-2', + + // States + 'hover:text-primary-500 dark:hover:text-primary-400', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + + // Misc + 'cursor-pointer' + ] + }, + selectYear: { + class: [ + // Font + 'text-base leading-[normal]', + 'font-medium', + + //shape + 'rounded-md', + + // Colors + 'text-surface-700 dark:text-white/80', + + // Transitions + 'transition duration-200', + + // Spacing + 'p-1', + 'm-0 mr-2', + + // States + 'hover:text-primary-500 dark:hover:text-primary-400', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + + // Misc + 'cursor-pointer' + ] + }, + table: { + class: [ + // Font + 'text-base leading-[normal]', + // Size & Shape + 'border-collapse', + 'w-full', + + // Spacing + 'm-0 mt-2' + ] + }, + tableHeaderCell: { + class: [ + // Spacing + 'p-1', + 'font-medium' + ] + }, + weekHeader: { + class: ['leading-5', 'text-surface-600 dark:text-white/70', 'opacity-60 cursor-default'] + }, + weekNumber: { + class: ['text-surface-600 dark:text-white/70', 'opacity-60 cursor-default'] + }, + weekday: { + class: [ + // Colors + 'text-surface-500 dark:text-white/60', + 'p-1' + ] + }, + dayCell: { + class: [ + // Spacing + 'p-1' + ] + }, + weekLabelContainer: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + 'mx-auto', + + // Shape & Size + 'w-8 h-8', + 'rounded-full', + 'border-transparent border', + 'leading-[normal]', + + // Colors + 'opacity-60 cursor-default' + ] + }, + dayView: 'w-full', + day: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + 'mx-auto', + + // Shape & Size + 'w-8 h-8', + 'rounded-full', + 'border-transparent border', + 'leading-[normal]', + + // Colors + { + 'bg-surface-100 dark:bg-surface-800 text-surface-600 dark:text-white/70': context.date.today && !context.selected && !context.disabled, + 'bg-transparent text-surface-600 dark:text-white/70': !context.selected && !context.disabled && !context.date.today, + 'bg-highlight': context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + { + 'hover:bg-surface-50 dark:hover:bg-surface-500/10': !context.selected && !context.disabled + }, + { + 'opacity-60 cursor-default': context.disabled, + 'cursor-pointer': !context.disabled + } + ] + }), + monthView: { + class: [ + // Spacing + 'mt-2' + ] + }, + month: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-1/3', + 'p-1', + + // Shape + 'rounded-md', + + // Colors + { + 'text-surface-600 dark:text-white/70 bg-transparent': !context.selected && !context.disabled, + 'bg-highlight': context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.selected && !context.disabled + }, + + // Misc + 'cursor-pointer' + ] + }), + yearView: { + class: [ + // Spacing + 'mt-2' + ] + }, + year: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-1/2', + 'p-1', + + // Shape + 'rounded-md', + + // Colors + { + 'text-surface-600 dark:text-white/70 bg-transparent': !context.selected && !context.disabled, + 'bg-highlight': context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.selected && !context.disabled + }, + + // Misc + 'cursor-pointer' + ] + }), + timePicker: { + class: [ + // Flexbox + 'flex', + 'justify-center items-center', + + // Borders + 'border-t-1', + 'border-solid border-surface-200', + + // Spacing + 'pt-2 mt-2' + ] + }, + separatorContainer: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + separator: { + class: [ + // Text + 'text-xl' + ] + }, + hourPicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + minutePicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + secondPicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + ampmPicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + calendarContainer: 'flex', + calendar: 'flex-auto border-l first:border-l-0 border-surface-200', + buttonbar: { + class: [ + // Flexbox + 'flex justify-between items-center', + + // Spacing + 'pt-2', + + // Shape + 'border-t border-surface-200 dark:border-surface-700' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/src/presets/aura/deferred/index.js b/src/presets/aura/deferred/index.js new file mode 100644 index 0000000..2064371 --- /dev/null +++ b/src/presets/aura/deferred/index.js @@ -0,0 +1,3 @@ +export default { + root: {} +}; diff --git a/src/presets/aura/dialog/index.js b/src/presets/aura/dialog/index.js new file mode 100644 index 0000000..93f6ee8 --- /dev/null +++ b/src/presets/aura/dialog/index.js @@ -0,0 +1,152 @@ +export default { + root: ({ state }) => ({ + class: [ + // Shape + 'rounded-lg', + 'shadow-lg', + 'border-0', + + // Size + 'max-h-[90vh]', + 'm-0', + + // Color + 'bg-surface-0 dark:bg-surface-900', + '[&:last-child]:border-b', + 'border-surface-200 dark:border-surface-700', + + // Transitions + 'transform', + 'scale-100', + + // Maximized State + { + 'transition-none': state.maximized, + 'transform-none': state.maximized, + '!w-screen': state.maximized, + '!h-screen': state.maximized, + '!max-h-full': state.maximized, + '!top-0': state.maximized, + '!left-0': state.maximized + } + ] + }), + header: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-between', + 'shrink-0', + + // Spacing + 'p-6', + + // Shape + 'rounded-tl-lg', + 'rounded-tr-lg', + + // Colors + 'text-surface-700 dark:text-surface-0/80', + 'border border-b-0', + 'border-surface-200 dark:border-surface-700' + ] + }, + title: { + class: ['font-semibold text-xl leading-[normal]'] + }, + headerActions: { + class: ['flex items-center'] + }, + content: ({ state, instance }) => ({ + class: [ + // Spacing + 'px-6', + 'pb-6', + 'pt-0', + + // Shape + { + grow: state.maximized, + 'rounded-bl-lg': !instance.$slots.footer, + 'rounded-br-lg': !instance.$slots.footer + }, + + // Colors + 'text-surface-700 dark:text-surface-0/80', + 'border border-t-0 border-b-0', + 'border-surface-200 dark:border-surface-700', + + // Misc + 'overflow-y-auto' + ] + }), + footer: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-end', + 'shrink-0', + 'text-right', + 'gap-2', + + // Spacing + 'px-6', + 'pb-6', + + // Shape + 'border-t-0', + 'rounded-b-lg', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80', + 'border border-t-0 border-b-0', + 'border-surface-200 dark:border-surface-700' + ] + }, + mask: ({ props }) => ({ + class: [ + // Transitions + 'transition-all', + 'duration-300', + { 'p-5': !props.position == 'full' }, + + // Background and Effects + { 'has-[.mask-active]:bg-transparent bg-black/40': props.modal } + ] + }), + transition: ({ props }) => { + return props.position === 'top' + ? { + enterFromClass: 'opacity-0 scale-75 translate-x-0 -translate-y-full translate-z-0 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: 'opacity-0 scale-75 translate-x-0 -translate-y-full translate-z-0 mask-active' + } + : props.position === 'bottom' + ? { + enterFromClass: 'opacity-0 scale-75 translate-y-full mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: 'opacity-0 scale-75 translate-x-0 translate-y-full translate-z-0 mask-active' + } + : props.position === 'left' || props.position === 'topleft' || props.position === 'bottomleft' + ? { + enterFromClass: 'opacity-0 scale-75 -translate-x-full translate-y-0 translate-z-0 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: 'opacity-0 scale-75 -translate-x-full translate-y-0 translate-z-0 mask-active' + } + : props.position === 'right' || props.position === 'topright' || props.position === 'bottomright' + ? { + enterFromClass: 'opacity-0 scale-75 translate-x-full translate-y-0 translate-z-0 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: 'opacity-0 scale-75 translate-x-full translate-y-0 translate-z-0 mask-active' + } + : { + enterFromClass: 'opacity-0 scale-75 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: 'opacity-0 scale-75 mask-active' + }; + } +}; diff --git a/src/presets/aura/divider/index.js b/src/presets/aura/divider/index.js new file mode 100644 index 0000000..b440697 --- /dev/null +++ b/src/presets/aura/divider/index.js @@ -0,0 +1,67 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flex and Position + 'flex relative', + { 'justify-center': props.layout == 'vertical' }, + { 'items-center': props.layout == 'vertical' }, + { + 'justify-start': props?.align == 'left' && props.layout == 'horizontal', + 'justify-center': props?.align == 'center' && props.layout == 'horizontal', + 'justify-end': props?.align == 'right' && props.layout == 'horizontal', + 'items-center': props?.align == 'top' && props.layout == 'vertical', + 'items-start': props?.align == 'center' && props.layout == 'vertical', + 'items-end': props?.align == 'bottom' && props.layout == 'vertical' + }, + + // Spacing + { + 'my-5 mx-0 py-0 px-5': props.layout == 'horizontal', + 'mx-4 md:mx-5 py-5': props.layout == 'vertical' + }, + + // Size + { + 'w-full': props.layout == 'horizontal', + 'min-h-full': props.layout == 'vertical' + }, + + // Before: Line + 'before:block', + + // Position + { + 'before:absolute before:left-0 before:top-1/2': props.layout == 'horizontal', + 'before:absolute before:left-1/2 before:top-0 before:transform before:-translate-x-1/2': props.layout == 'vertical' + }, + + // Size + { + 'before:w-full': props.layout == 'horizontal', + 'before:min-h-full': props.layout == 'vertical' + }, + + // Shape + { + 'before:border-solid': props.type == 'solid', + 'before:border-dotted': props.type == 'dotted', + 'before:border-dashed': props.type == 'dashed' + }, + + // Color + { + 'before:border-t before:border-surface-200 before:dark:border-surface-600': props.layout == 'horizontal', + 'before:border-l before:border-surface-200 before:dark:border-surface-600': props.layout == 'vertical' + } + ] + }), + content: { + class: [ + // Space and Position + 'px-1 z-10', + + // Color + 'bg-surface-0 dark:bg-surface-800' + ] + } +}; diff --git a/src/presets/aura/dock/index.js b/src/presets/aura/dock/index.js new file mode 100644 index 0000000..b9332a8 --- /dev/null +++ b/src/presets/aura/dock/index.js @@ -0,0 +1,86 @@ +export default { + root: ({ props }) => ({ + class: [ + // Positioning + 'absolute z-1', + { + 'left-0 bottom-0 w-full': props.position == 'bottom', + 'left-0 top-0 w-full': props.position == 'top', + 'left-0 top-0 h-full': props.position == 'left', + 'right-0 top-0 h-full': props.position == 'right' + }, + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Interactivity + 'pointer-events-none' + ] + }), + listContainer: { + class: [ + // Flexbox + 'flex', + + // Shape & Border + 'rounded-md', + + // Color + 'bg-surface-0/10 dark:bg-surface-900/20 border border-surface-0/20', + 'backdrop-blur-sm', + + // Spacing + 'p-2', + + // Misc + 'pointer-events-auto' + ] + }, + list: ({ props }) => ({ + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + { + 'flex-col': props.position == 'left' || props.position == 'right' + }, + + // List Style + 'm-0 p-0 list-none', + + // Shape + 'outline-none' + ] + }), + item: ({ props, context, instance }) => ({ + class: [ + // Spacing & Shape + 'p-2 rounded-md', + + // Positioning & Hover States + { + 'origin-bottom': props.position == 'bottom', + 'origin-top': props.position == 'top', + 'origin-left': props.position == 'left', + 'origin-right': props.position == 'right' + }, + + // Transitions & Transform + 'transition-all duration-200 ease-cubic-bezier-will-change-transform transform' + ] + }), + itemLink: { + class: [ + // Flexbox & Alignment + 'flex flex-col items-center justify-center', + + // Position + 'relative', + + // Size + 'w-16 h-16', + + // Misc + 'cursor-default overflow-hidden' + ] + } +}; diff --git a/src/presets/aura/drawer/index.js b/src/presets/aura/drawer/index.js new file mode 100644 index 0000000..de985f1 --- /dev/null +++ b/src/presets/aura/drawer/index.js @@ -0,0 +1,149 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flexbox + 'flex flex-col', + + // Position + 'relative', + { '!transition-none !transform-none !w-screen !h-screen !max-h-full !top-0 !left-0': props.position == 'full' }, + + // Size + { + 'h-full w-80': props.position == 'left' || props.position == 'right', + 'h-auto w-full': props.position == 'top' || props.position == 'bottom' + }, + + // Shape + 'border-0 dark:border', + 'shadow-lg', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + 'dark:border-surface-700', + + // Transitions + 'transition-transform', + 'duration-300', + + // Misc + 'pointer-events-auto' + ] + }), + header: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-between', + 'shrink-0', + + // Spacing + 'p-[1.125rem]', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + title: { + class: ['font-semibold text-xl'] + }, + icons: { + class: ['flex items-center'] + }, + closeButton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'flex items-center justify-center', + + // Size and Spacing + 'mr-2', + 'last:mr-0', + 'w-7 h-7', + + // Shape + 'border-0', + 'rounded-full', + + // Colors + 'text-surface-500', + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Misc + 'overflow-hidden' + ] + }, + closeButtonIcon: { + class: [ + // Display + 'inline-block', + + // Size + 'w-4', + 'h-4' + ] + }, + content: { + class: [ + // Spacing and Size + 'p-[1.125rem]', + 'pt-0', + 'h-full', + 'w-full', + + // Growth and Overflow + 'grow', + 'overflow-y-auto' + ] + }, + mask: ({ props }) => ({ + class: [ + // Transitions + 'transition-all', + 'duration-300', + { 'p-5': !props.position == 'full' }, + + // Background and Effects + { 'has-[.mask-active]:bg-transparent bg-black/40': props.modal } + ] + }), + transition: ({ props }) => { + return props.position === 'top' + ? { + enterFromClass: 'translate-x-0 -translate-y-full translate-z-0 mask-active', + leaveToClass: 'translate-x-0 -translate-y-full translate-z-0 mask-active' + } + : props.position === 'bottom' + ? { + enterFromClass: 'translate-x-0 translate-y-full translate-z-0 mask-active', + leaveToClass: 'translate-x-0 translate-y-full translate-z-0 mask-active' + } + : props.position === 'left' + ? { + enterFromClass: '-translate-x-full translate-y-0 translate-z-0 mask-active', + leaveToClass: '-translate-x-full translate-y-0 translate-z-0 mask-active' + } + : props.position === 'right' + ? { + enterFromClass: 'translate-x-full translate-y-0 translate-z-0 mask-active', + leaveToClass: 'translate-x-full translate-y-0 translate-z-0 mask-active' + } + : { + enterFromClass: 'opacity-0 mask-active', + enterActiveClass: 'transition-opacity duration-400 ease-in', + leaveActiveClass: 'transition-opacity duration-400 ease-in', + leaveToClass: 'opacity-0 mask-active' + }; + } +}; diff --git a/src/presets/aura/fieldset/index.js b/src/presets/aura/fieldset/index.js new file mode 100644 index 0000000..bfc980c --- /dev/null +++ b/src/presets/aura/fieldset/index.js @@ -0,0 +1,81 @@ +export default { + root: { + class: [ + // Spacing + 'p-[1.125rem] pt-0', + + // Shape + 'rounded-md', + + // Color + 'border border-surface-200 dark:border-surface-700', + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + legend: ({ props }) => ({ + class: [ + // Font + 'font-semibold', + 'leading-none', + + //Spacing + 'p-0 mb-[0.375rem]', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0/80', + 'bg-surface-0 dark:bg-surface-900', + + // Transition + 'transition-none', + + // States + { 'hover:bg-surface-100 dark:hover:bg-surface-800': props.toggleable } + ] + }), + toggleButton: ({ props }) => ({ + class: [ + // Alignments + 'flex items-center justify-center', + 'relative', + + //Spacing + { 'py-2 px-3': props.toggleable }, + + // Shape + { 'rounded-md': props.toggleable }, + + // Color + { 'text-surface-700 dark:text-surface-200 hover:text-surface-900': props.toggleable }, + + // States + { 'hover:text-surface-900 dark:hover:text-surface-100': props.toggleable }, + { 'focus:outline-none focus:outline-offset-0 focus-visible:ring-1 focus-visible:ring-primary-400 dark:focus-visible:ring-primary-300': props.toggleable }, + + // Misc + { + 'transition-none cursor-pointer overflow-hidden select-none': props.toggleable + } + ] + }), + toggleIcon: { + class: 'mr-2 inline-block' + }, + legendLabel: ({ props }) => ({ + class: ['flex items-center justify-center leading-none', { 'py-2 px-3': !props.toggleable }] + }), + content: { + class: 'p-0' + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } +}; diff --git a/src/presets/aura/fileupload/index.js b/src/presets/aura/fileupload/index.js new file mode 100644 index 0000000..4eff7a9 --- /dev/null +++ b/src/presets/aura/fileupload/index.js @@ -0,0 +1,95 @@ +export default { + root: ({ props }) => ({ + class: [ + { + 'flex flex-wrap items-center justify-center gap-2': props.mode === 'basic' + } + ] + }), + input: { + class: 'hidden' + }, + header: { + class: [ + // Flexbox + 'flex', + 'flex-wrap', + + // Colors + 'bg-surface-0', + 'dark:bg-surface-900', + 'text-surface-700', + 'dark:text-white/80', + + // Spacing + 'p-[1.125rem]', + 'gap-2', + + // Borders + 'border', + 'border-solid', + 'border-surface-200', + 'dark:border-surface-700', + 'border-b-0', + + // Shape + 'rounded-tr-lg', + 'rounded-tl-lg' + ] + }, + content: { + class: [ + // Position + 'relative', + + // Colors + 'bg-surface-0', + 'dark:bg-surface-900', + 'text-surface-700', + 'dark:text-white/80', + + // Spacing + 'p-[1.125rem]', + + // Borders + 'border border-t-0', + 'border-surface-200', + 'dark:border-surface-700', + + // Shape + 'rounded-b-lg', + + //ProgressBar + '[&>[data-pc-name=pcprogressbar]]:absolute', + '[&>[data-pc-name=pcprogressbar]]:w-full', + '[&>[data-pc-name=pcprogressbar]]:top-0', + '[&>[data-pc-name=pcprogressbar]]:left-0', + '[&>[data-pc-name=pcprogressbar]]:h-1' + ] + }, + file: { + class: [ + // Flexbox + 'flex', + 'items-center', + 'flex-wrap', + + // Spacing + 'p-4', + 'mb-2', + 'last:mb-0', + + // Borders + 'border', + 'border-surface-200', + 'dark:border-surface-700', + 'gap-2', + + // Shape + 'rounded' + ] + }, + fileThumbnail: 'shrink-0', + fileName: 'mb-2 break-all', + fileSize: 'mr-2' +}; diff --git a/src/presets/aura/floatlabel/index.js b/src/presets/aura/floatlabel/index.js new file mode 100644 index 0000000..557808f --- /dev/null +++ b/src/presets/aura/floatlabel/index.js @@ -0,0 +1,26 @@ +export default { + root: { + class: [ + 'block relative', + + // Base Label Appearance + '[&>*:last-child]:text-surface-900/60 dark:[&>*:last-child]:text-white/60', + '[&>*:last-child]:absolute', + '[&>*:last-child]:top-1/2', + '[&>*:last-child]:-translate-y-1/2', + '[&>*:last-child]:left-3', + '[&>*:last-child]:pointer-events-none', + '[&>*:last-child]:transition-all', + '[&>*:last-child]:duration-200', + '[&>*:last-child]:ease', + + // Focus Label Appearance + '[&>*:last-child]:has-[:focus]:-top-3', + '[&>*:last-child]:has-[:focus]:text-sm', + + // Filled Input Label Appearance + '[&>*:last-child]:has-[.filled]:-top-3', + '[&>*:last-child]:has-[.filled]:text-sm' + ] + } +}; diff --git a/src/presets/aura/galleria/index.js b/src/presets/aura/galleria/index.js new file mode 100644 index 0000000..41dc126 --- /dev/null +++ b/src/presets/aura/galleria/index.js @@ -0,0 +1,307 @@ +export default { + content: ({ parent, props }) => ({ + class: [ + 'flex', + { + 'flex-col': props.fullScreen + }, + { + 'flex-col': parent.props.thumbnailsPosition === 'top' || parent.props.thumbnailsPosition === 'bottom', + 'flex-row': parent.props.thumbnailsPosition === 'right' || parent.props.thumbnailsPosition === 'left' + } + ] + }), + itemsContainer: ({ parent, props }) => ({ + class: [ + 'group', + 'flex relative', + { + 'grow shrink w-0 justify-center': props.fullScreen + }, + { + 'flex-col': parent.props.indicatorsPosition === 'bottom' || parent.props.indicatorsPosition === 'top', + 'flex-row items-center': parent.props.indicatorsPosition === 'left' || parent.props.indicatorsPosition === 'right' + }, + { + 'order-2': parent.props.thumbnailsPosition === 'top' || parent.props.thumbnailsPosition === 'left', + 'flex-row': parent.props.thumbnailsPosition === 'right' + } + ] + }), + items: ({ parent }) => ({ + class: [ + 'flex h-full relative', + { + 'order-1': parent.props.indicatorsPosition === 'bottom' || parent.props.indicatorsPosition === 'right', + 'order-2': parent.props.indicatorsPosition === 'top' || parent.props.indicatorsPosition === 'left' + } + ] + }), + item: { + class: [ + // Flex + 'flex justify-center items-center h-full w-full', + + // Sizing + 'h-full w-full' + ] + }, + thumbnails: ({ parent }) => ({ + class: [ + // Flex + 'flex flex-col shrink-0', + + { + 'order-1': parent.props.thumbnailsPosition === 'top' || parent.props.thumbnailsPosition === 'left' + }, + + // Misc + 'overflow-auto' + ] + }), + thumbnailContent: ({ parent }) => ({ + class: [ + // Flex + 'flex', + + // Spacing + 'py-4 px-1', + + // Colors + 'bg-black/90', + + { + 'flex-row': parent.props.thumbnailsPosition === 'top' || parent.props.thumbnailsPosition === 'bottom', + 'flex-col grow': parent.props.thumbnailsPosition === 'right' || parent.props.thumbnailsPosition === 'left' + } + ] + }), + thumbnailPrevButton: { + class: [ + // Positioning + 'self-center relative', + + // Display & Flexbox + 'flex shrink-0 justify-center items-center overflow-hidden', + + // Spacing + 'm-2', + + // Appearance + 'bg-transparent text-white w-8 h-8 rounded-full transition duration-200 ease-in-out', + + // Hover Effects + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400' + ] + }, + thumbnailsViewport: { + class: 'overflow-hidden w-full' + }, + thumbnailItems: ({ parent }) => ({ + class: [ + 'flex', + { + 'flex-col h-full': parent.props.thumbnailsPosition === 'right' || parent.props.thumbnailsPosition === 'left' + } + ] + }), + thumbnailItem: ({ parent }) => ({ + class: [ + // Flexbox + 'flex items-center justify-center', + 'grow shrink-0', + + // Sizing + { + 'w-full md:w-[25%] lg:w-[20%]': parent.props.thumbnailsPosition === 'top' || parent.props.thumbnailsPosition === 'bottom' + }, + + // Misc + 'overflow-auto', + 'cursor-pointer', + 'opacity-50', + + // States + '[&[data-p-active="true"]]:opacity-100', + 'hover:opacity-100', + + // Transitions + 'transition-opacity duration-300' + ] + }), + thumbnailNextButton: { + class: [ + // Positioning + 'self-center relative', + + // Display & Flexbox + 'flex shrink-0 justify-center items-center overflow-hidden', + + // Spacing + 'm-2', + + // Appearance + 'bg-transparent text-white w-8 h-8 rounded-full transition duration-200 ease-in-out', + + // Hover Effects + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400' + ] + }, + indicatorList: ({ parent }) => ({ + class: [ + // flex + 'flex items-center justify-center', + + // Spacing + 'p-4', + + // Indicators Position + { + 'order-2': parent.props.indicatorsPosition == 'bottom', + 'order-1': parent.props.indicatorsPosition == 'top', + 'order-1 flex-col': parent.props.indicatorsPosition == 'left', + 'flex-col order-2': parent.props.indicatorsPosition == 'right' + }, + { + 'absolute z-10 bg-black/50': parent.props.showIndicatorsOnItem + }, + + { + 'bottom-0 left-0 w-full items-start': parent.props.indicatorsPosition == 'bottom' && parent.props.showIndicatorsOnItem, + 'top-0 left-0 w-full items-start': parent.props.indicatorsPosition == 'top' && parent.props.showIndicatorsOnItem, + 'left-0 top-0 h-full items-start': parent.props.indicatorsPosition == 'left' && parent.props.showIndicatorsOnItem, + 'right-0 top-0 h-full items-start': parent.props.indicatorsPosition == 'right' && parent.props.showIndicatorsOnItem + } + ] + }), + indicator: ({ parent }) => ({ + class: [ + { + 'mr-2': parent.props.indicatorsPosition == 'bottom' || parent.props.indicatorsPosition == 'top', + 'mb-2': parent.props.indicatorsPosition == 'left' || parent.props.indicatorsPosition == 'right' + } + ] + }), + indicatorButton: ({ context }) => ({ + class: [ + // Size + 'w-4 h-4', + + // Appearance + 'rounded-full transition duration-200', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Conditional Appearance: Not Highlighted + { 'bg-surface-200 hover:bg-surface-300 dark:bg-surface-700 dark:hover:bg-surface-600': !context.highlighted }, + + // Conditional Appearance: Highlighted + { 'bg-primary hover:bg-primary-emphasis': context.highlighted } + ] + }), + mask: { + class: ['fixed top-0 left-0 w-full h-full', 'flex items-center justify-center', 'bg-black/90'] + }, + closeButton: { + class: [ + // Positioning + '!absolute top-0 right-0', + + // Display & Flexbox + 'flex justify-center items-center overflow-hidden', + + // Spacing + 'm-2', + + // Appearance + 'text-white bg-transparent w-12 h-12 rounded-full transition duration-200 ease-in-out', + + // Hover Effect + 'hover:text-white hover:bg-surface-0/10', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400' + ] + }, + closeIcon: { + class: 'w-6 h-6' + }, + prevButton: ({ parent }) => ({ + class: [ + // Display & Flexbox + 'inline-flex justify-center items-center overflow-hidden', + + // Appearance + 'bg-transparent text-white w-16 h-16 transition duration-200 ease-in-out rounded-md', + { + 'opacity-0 group-hover:opacity-100': parent.props.showItemNavigatorsOnHover + }, + + // Spacing + 'mx-2', + + // Positioning + 'top-1/2 mt-[-0.5rem] left-0', + { + '!absolute': !parent.state.containerVisible && parent.props.showItemNavigators, + '!fixed': parent.state.containerVisible + }, + + // Hover Effect + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400' + ] + }), + nextButton: ({ parent }) => ({ + class: [ + // Display & Flexbox + 'inline-flex justify-center items-center overflow-hidden', + + // Appearance + 'bg-transparent text-white w-16 h-16 transition duration-200 ease-in-out rounded-md', + { + 'opacity-0 group-hover:opacity-100': parent.props.showItemNavigatorsOnHover + }, + + // Spacing + 'mx-2', + + // Positioning + 'top-1/2 mt-[-0.5rem] right-0', + { + '!absolute': !parent.state.containerVisible && parent.props.showItemNavigators, + '!fixed': parent.state.containerVisible + }, + + // Hover Effect + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400' + ] + }), + caption: { + class: [ + // Positioning + 'absolute bottom-0 left-0 w-full', + + // Appearance + 'bg-black/50 text-white p-4' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-75', + enterActiveClass: 'transition-all duration-150 ease-in-out', + leaveActiveClass: 'transition-all duration-150 ease-in', + leaveToClass: 'opacity-0 scale-75' + } +}; diff --git a/src/presets/aura/global.js b/src/presets/aura/global.js new file mode 100644 index 0000000..42552db --- /dev/null +++ b/src/presets/aura/global.js @@ -0,0 +1,90 @@ +export default { + css: ` + *[data-pd-ripple="true"]{ + overflow: hidden; + position: relative; + } + span[data-p-ink-active="true"]{ + animation: ripple 0.4s linear; + } + @keyframes ripple { + 100% { + opacity: 0; + transform: scale(2.5); + } + } + + .progress-spinner-circle { + stroke-dasharray: 89, 200; + stroke-dashoffset: 0; + animation: p-progress-spinner-dash 1.5s ease-in-out infinite, p-progress-spinner-color 6s ease-in-out infinite; + stroke-linecap: round; + } + + @keyframes p-progress-spinner-dash{ + 0% { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0; + } + + 50% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -35px; + } + 100% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -124px; + } + } + @keyframes p-progress-spinner-color { + 100%, 0% { + stroke: #ff5757; + } + 40% { + stroke: #696cff; + } + 66% { + stroke: #1ea97c; + } + 80%, 90% { + stroke: #cc8925; + } + } + + .progressbar-value-animate::after { + will-change: left, right; + animation: p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + } + .progressbar-value-animate::before { + will-change: left, right; + animation: p-progressbar-indeterminate-anim 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + } + @keyframes p-progressbar-indeterminate-anim { + 0% { + left: -35%; + right: 100%; + } + 60% { + left: 100%; + right: -90%; + } + 100% { + left: 100%; + right: -90%; + } + } + + .p-fadein { + animation: p-fadein 250ms linear; + } + + @keyframes p-fadein { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } +` +}; diff --git a/src/presets/aura/iconfield/index.js b/src/presets/aura/iconfield/index.js new file mode 100644 index 0000000..28e6ae5 --- /dev/null +++ b/src/presets/aura/iconfield/index.js @@ -0,0 +1,27 @@ +export default { + root: { + class: [ + 'relative', + + '[&>[data-pc-name=inputicon]]:absolute', + '[&>[data-pc-name=inputicon]]:top-1/2', + '[&>[data-pc-name=inputicon]]:-mt-2', + '[&>[data-pc-name=inputicon]]:text-surface-900/60 dark:[&>[data-pc-name=inputicon]]:text-white/60', + + '[&>[data-pc-name=inputicon]:first-child]:left-3', + '[&>[data-pc-name=inputicon]:last-child]:right-3', + + '[&>[data-pc-name=inputtext]:first-child]:pr-10', + '[&>[data-pc-name=inputtext]:last-child]:pl-10', + + // filter + '[&>[data-pc-extend=inputicon]]:absolute', + '[&>[data-pc-extend=inputicon]]:top-1/2', + '[&>[data-pc-extend=inputicon]]:-mt-2', + '[&>[data-pc-extend=inputicon]]:text-surface-900/60 dark:[&>[data-pc-extend=inputicon]]:text-white/60', + + '[&>[data-pc-extend=inputicon]:first-child]:left-3', + '[&>[data-pc-extend=inputicon]:last-child]:right-3' + ] + } +}; diff --git a/src/presets/aura/image/index.js b/src/presets/aura/image/index.js new file mode 100644 index 0000000..9355b8e --- /dev/null +++ b/src/presets/aura/image/index.js @@ -0,0 +1,206 @@ +export default { + root: { + class: 'relative inline-block' + }, + previewMask: { + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + + // Positioning + 'absolute', + + // Shape + 'inset-0 opacity-0 transition-opacity duration-300', + + // Color + 'bg-transparent text-surface-100', + + // States + 'hover:opacity-100 hover:cursor-pointer hover:bg-black/50 hover:bg-opacity-50' + ] + }, + mask: { + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + + // Positioning + 'fixed top-0 left-0', + + // Sizing + 'w-full h-full', + + // Color + 'bg-black/90' + ] + }, + toolbar: { + class: [ + // Flexbox + 'flex', + + // Positioning + 'absolute top-0 right-0', + + // Spacing + 'p-4' + ] + }, + rotateRightButton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + rotateRightIcon: { + class: 'w-6 h-6' + }, + rotateLeftButton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + rotateLeftIcon: { + class: 'w-6 h-6' + }, + zoomOutButton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + zoomOutIcon: { + class: 'w-6 h-6' + }, + zoomInButton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + zoomInIcon: { + class: 'w-6 h-6' + }, + closeButton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + closeIcon: { + class: 'w-6 h-6' + }, + transition: { + enterFromClass: 'opacity-0 scale-75', + enterActiveClass: 'transition-all duration-150 ease-in-out', + leaveActiveClass: 'transition-all duration-150 ease-in', + leaveToClass: 'opacity-0 scale-75' + } +}; diff --git a/src/presets/aura/index.js b/src/presets/aura/index.js new file mode 100644 index 0000000..b7e2ac0 --- /dev/null +++ b/src/presets/aura/index.js @@ -0,0 +1,234 @@ +import accordion from './accordion'; +import accordioncontent from './accordioncontent'; +import accordionheader from './accordionheader'; +import accordionpanel from './accordionpanel'; +import autocomplete from './autocomplete'; +import avatar from './avatar'; +import avatargroup from './avatargroup'; +import badge from './badge'; +import badgedirective from './badgedirective'; +import blockui from './blockui'; +import breadcrumb from './breadcrumb'; +import button from './button'; +import buttongroup from './buttongroup'; +import card from './card'; +import carousel from './carousel'; +import cascadeselect from './cascadeselect'; +import checkbox from './checkbox'; +import chip from './chip'; +import colorpicker from './colorpicker'; +import confirmdialog from './confirmdialog'; +import confirmpopup from './confirmpopup'; +import contextmenu from './contextmenu'; +import datatable from './datatable'; +import dataview from './dataview'; +import datepicker from './datepicker'; +import deferred from './deferred'; +import dialog from './dialog'; +import divider from './divider'; +import dock from './dock'; +import drawer from './drawer'; +import fieldset from './fieldset'; +import fileupload from './fileupload'; +import floatlabel from './floatlabel'; +import galleria from './galleria'; +import global from './global'; +import iconfield from './iconfield'; +import image from './image'; +import inplace from './inplace'; +import inputgroup from './inputgroup'; +import inputgroupaddon from './inputgroupaddon'; +import inputmask from './inputmask'; +import inputnumber from './inputnumber'; +import inputotp from './inputotp'; +import inputtext from './inputtext'; +import knob from './knob'; +import listbox from './listbox'; +import megamenu from './megamenu'; +import menu from './menu'; +import menubar from './menubar'; +import message from './message'; +import metergroup from './metergroup'; +import multiselect from './multiselect'; +import orderlist from './orderlist'; +import organizationchart from './organizationchart'; +import overlaybadge from './overlaybadge'; +import paginator from './paginator'; +import panel from './panel'; +import panelmenu from './panelmenu'; +import password from './password'; +import picklist from './picklist'; +import popover from './popover'; +import progressbar from './progressbar'; +import progressspinner from './progressspinner'; +import radiobutton from './radiobutton'; +import rating from './rating'; +import ripple from './ripple'; +import scrollpanel from './scrollpanel'; +import scrolltop from './scrolltop'; +import select from './select'; +import selectbutton from './selectbutton'; +import skeleton from './skeleton'; +import slider from './slider'; +import speeddial from './speeddial'; +import splitbutton from './splitbutton'; +import splitter from './splitter'; +import splitterpanel from './splitterpanel'; +import step from './step'; +import stepitem from './stepitem'; +import steplist from './steplist'; +import steppanels from './steppanels'; +import stepper from './stepper'; +import steps from './steps'; +import tab from './tab'; +import tablist from './tablist'; +import tabmenu from './tabmenu'; +import tabpanel from './tabpanel'; +import tabpanels from './tabpanels'; +import tabs from './tabs'; +import tabview from './tabview'; +import tag from './tag'; +import terminal from './terminal'; +import textarea from './textarea'; +import tieredmenu from './tieredmenu'; +import timeline from './timeline'; +import toast from './toast'; +import togglebutton from './togglebutton'; +import toggleswitch from './toggleswitch'; +import toolbar from './toolbar'; +import tooltip from './tooltip'; +import tree from './tree'; +import treeselect from './treeselect'; +import treetable from './treetable'; + +export default { + global, + directives: { + badge: badgedirective, + ripple, + tooltip + }, + + //forms + autocomplete, + select, + dropdown: select, + inputnumber, + inputtext, + datepicker, + calendar: datepicker, + checkbox, + radiobutton, + toggleswitch, + inputswitch: toggleswitch, + selectbutton, + slider, + rating, + multiselect, + togglebutton, + cascadeselect, + listbox, + colorpicker, + inputgroup, + inputgroupaddon, + inputmask, + knob, + treeselect, + textarea, + password, + iconfield, + floatlabel, + inputotp, + + //buttons + button, + buttongroup, + splitbutton, + speeddial, + + //data + paginator, + datatable, + tree, + dataview, + organizationchart, + orderlist, + picklist, + treetable, + timeline, + + //panels + accordion, + accordionpanel, + accordionheader, + accordioncontent, + panel, + fieldset, + card, + tabview, + divider, + toolbar, + scrollpanel, + splitter, + splitterpanel, + stepper, + steplist, + step, + stepitem, + steppanels, + deferred, + tab, + tabs, + tablist, + tabpanels, + tabpanel, + + //file + fileupload, + + //menu + contextmenu, + menu, + menubar, + steps, + tieredmenu, + breadcrumb, + panelmenu, + megamenu, + dock, + tabmenu, + + //overlays + dialog, + popover, + sidebar: popover, + drawer, + overlaypanel: drawer, + confirmpopup, + confirmdialog, + + //messages + message, + toast, + + //media + carousel, + galleria, + image, + + //misc + badge, + overlaybadge, + avatar, + avatargroup, + tag, + chip, + progressbar, + skeleton, + scrolltop, + terminal, + blockui, + metergroup, + inplace, + progressspinner +}; diff --git a/src/presets/aura/inplace/index.js b/src/presets/aura/inplace/index.js new file mode 100644 index 0000000..691230b --- /dev/null +++ b/src/presets/aura/inplace/index.js @@ -0,0 +1,27 @@ +export default { + display: { + class: [ + // Display + 'inline', + + // Spacing + 'px-3 py-2', + + // Shape + 'rounded-md', + + // Colors + 'text-surface-700 dark:text-white/80', + + // States + 'hover:bg-surface-100 hover:text-surface-700 dark:hover:bg-surface-800 dark:hover:text-white/80', + + // Transitions + 'transition', + 'duration-200', + + // Misc + 'cursor-pointer' + ] + } +}; diff --git a/src/presets/aura/inputgroup/index.js b/src/presets/aura/inputgroup/index.js new file mode 100644 index 0000000..cce7111 --- /dev/null +++ b/src/presets/aura/inputgroup/index.js @@ -0,0 +1,5 @@ +export default { + root: { + class: ['flex items-stretch', 'w-full'] + } +}; diff --git a/src/presets/aura/inputgroupaddon/index.js b/src/presets/aura/inputgroupaddon/index.js new file mode 100644 index 0000000..888b311 --- /dev/null +++ b/src/presets/aura/inputgroupaddon/index.js @@ -0,0 +1,28 @@ +export default { + root: { + class: [ + // Flex + 'flex items-center justify-center', + + // Shape + 'first:rounded-l-md', + 'last:rounded-r-md', + 'border-y', + + 'last:border-r', + 'border-l', + 'border-r-0', + + // Space + 'p-2', + + // Size + 'min-w-[2.5rem]', + + // Color + 'bg-transparent dark:bg-surface-900', + 'text-surface-800 dark:text-white/80', + 'border-surface-300 dark:border-surface-700' + ] + } +}; diff --git a/src/presets/aura/inputmask/index.js b/src/presets/aura/inputmask/index.js new file mode 100644 index 0000000..2e43d34 --- /dev/null +++ b/src/presets/aura/inputmask/index.js @@ -0,0 +1,39 @@ +export default { + root: ({ context, props, parent }) => ({ + class: [ + // Font + 'leading-none', + + // Spacing + 'm-0 py-2 px-3', + + // Colors + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + { 'bg-surface-0 dark:bg-surface-950': !context.disabled }, + + 'border', + { 'border-surface-300 dark:border-surface-700': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-surface-400 dark:hover:border-surface-600': !context.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10': !context.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': context.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && props.modelValue !== null && props.modelValue?.length !== 0 }, + + // Misc + 'rounded-md', + 'appearance-none', + 'transition-colors duration-200' + ] + }) +}; diff --git a/src/presets/aura/inputnumber/index.js b/src/presets/aura/inputnumber/index.js new file mode 100644 index 0000000..447f88a --- /dev/null +++ b/src/presets/aura/inputnumber/index.js @@ -0,0 +1,172 @@ +export default { + root: ({ props, parent }) => ({ + class: [ + // Flex + 'inline-flex', + 'relative', + { 'flex-col': props.showButtons && props.buttonLayout === 'vertical' }, + { 'flex-1 w-[1%]': parent.instance.$name === 'InputGroup' }, + { 'w-full': props.fluid }, + + // Shape + { 'first:rounded-l-md rounded-none last:rounded-r-md': parent.instance.$name === 'InputGroup' && !props.showButtons }, + { 'border-0 border-y border-l last:border-r border-surface-300 dark:border-surface-700': parent.instance.$name === 'InputGroup' && !props.showButtons }, + { 'first:ml-0 -ml-px': parent.instance.$name === 'InputGroup' && !props.showButtons }, + + //Sizing + { '!w-16': props.showButtons && props.buttonLayout == 'vertical' } + ] + }), + pcInput: { + root: ({ parent, context }) => ({ + class: [ + // Font + 'leading-none', + + // Display + 'flex-auto', + { 'w-[1%]': parent.props.fluid }, + + //Text + { 'text-center': parent.props.showButtons && parent.props.buttonLayout == 'vertical' }, + + // Spacing + 'py-2 px-3', + 'm-0', + + // Shape + 'rounded-md', + { 'rounded-l-none rounded-r-none': parent.props.showButtons && parent.props.buttonLayout === 'horizontal' }, + { 'rounded-none': parent.props.showButtons && parent.props.buttonLayout === 'vertical' }, + + { 'border-0': parent.instance.$parentInstance?.$name === 'InputGroup' && !parent.props.showButtons }, + + // Colors + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + { 'bg-surface-0 dark:bg-surface-950': !context.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-700': !parent.props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': parent.props.invalid }, + + // States + { 'hover:border-primary': !parent.props.invalid }, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + { 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': context.disabled }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$parentInstance?.$name === 'FloatLabel' && parent.state.d_modelValue !== null }, + + //Position + { 'order-2': parent.props.buttonLayout == 'horizontal' || parent.props.buttonLayout === 'vertical' } + ] + }) + }, + buttonGroup: ({ props }) => ({ + class: [ + 'absolute', + + // Flex + 'flex', + 'flex-col', + + 'top-px right-px', + + { 'h-[calc(100%-2px)]': props.showButtons && props.buttonLayout === 'stacked' } + ] + }), + incrementButton: ({ props }) => ({ + class: [ + // Display + { 'flex flex-initial shrink-0': props.showButtons && props.buttonLayout === 'horizontal' }, + { 'flex flex-auto': props.showButtons && props.buttonLayout === 'stacked' }, + + // Alignment + 'items-center', + 'justify-center', + 'text-center align-bottom', + + //Position + 'relative', + { 'order-3': props.showButtons && props.buttonLayout === 'horizontal' }, + { 'order-1': props.showButtons && props.buttonLayout === 'vertical' }, + + //Color + 'text-surface-800 dark:text-surface-0', + 'bg-transparent', + { 'dark:bg-surface-900': props.showButtons && props.buttonLayout !== 'stacked' }, + 'border border-surface-300 dark:border-surface-700', + { 'border-0': props.showButtons && props.buttonLayout === 'stacked' }, + { 'border-l-0': props.showButtons && props.buttonLayout !== 'stacked' && props.buttonLayout === 'horizontal' }, + { 'border-b-0': props.showButtons && props.buttonLayout !== 'stacked' && props.buttonLayout === 'vertical' }, + + // Sizing + 'w-[3rem]', + { 'px-3 py-2': props.showButtons && props.buttonLayout !== 'stacked' }, + { 'p-0': props.showButtons && props.buttonLayout === 'stacked' }, + { 'w-full': props.showButtons && props.buttonLayout === 'vertical' }, + + // Shape + 'rounded-md', + { 'rounded-md': props.showButtons && props.buttonLayout == 'stacked' }, + { 'rounded-bl-none rounded-tl-none': props.showButtons && props.buttonLayout === 'horizontal' }, + { 'rounded-bl-none rounded-br-none': props.showButtons && props.buttonLayout === 'vertical' }, + + //States + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]', + + //Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + incrementIcon: 'inline-block w-4 h-4', + decrementButton: ({ props }) => ({ + class: [ + // Display + { 'flex flex-initial shrink-0': props.showButtons && props.buttonLayout === 'horizontal' }, + { 'flex flex-auto': props.showButtons && props.buttonLayout === 'stacked' }, + + // Alignment + 'items-center', + 'justify-center', + 'text-center align-bottom', + + //Position + 'relative', + { 'order-1': props.showButtons && props.buttonLayout === 'horizontal' }, + { 'order-3': props.showButtons && props.buttonLayout === 'vertical' }, + + //Color + 'text-surface-800 dark:text-surface-0', + 'bg-transparent', + { 'dark:bg-surface-900': props.showButtons && props.buttonLayout !== 'stacked' }, + 'border border-surface-300 dark:border-surface-700', + { 'border-0': props.showButtons && props.buttonLayout === 'stacked' }, + { 'border-r-0': props.showButtons && props.buttonLayout !== 'stacked' && props.buttonLayout === 'horizontal' }, + { 'border-t-0': props.showButtons && props.buttonLayout !== 'stacked' && props.buttonLayout === 'vertical' }, + + // Sizing + 'w-[3rem]', + { 'px-3 py-2': props.showButtons && props.buttonLayout !== 'stacked' }, + { 'p-0': props.showButtons && props.buttonLayout === 'stacked' }, + { 'w-full': props.showButtons && props.buttonLayout === 'vertical' }, + + // Shape + 'rounded-md', + { 'rounded-tr-none rounded-tl-none rounded-bl-none': props.showButtons && props.buttonLayout === 'stacked' }, + { 'rounded-tr-none rounded-br-none ': props.showButtons && props.buttonLayout === 'horizontal' }, + { 'rounded-tr-none rounded-tl-none ': props.showButtons && props.buttonLayout === 'vertical' }, + + //States + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]', + + //Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + decrementIcon: 'inline-block w-4 h-4' +}; diff --git a/src/presets/aura/inputotp/index.js b/src/presets/aura/inputotp/index.js new file mode 100644 index 0000000..b14ce4b --- /dev/null +++ b/src/presets/aura/inputotp/index.js @@ -0,0 +1,10 @@ +export default { + root: { + class: [ + // Alignment + 'flex items-center', + 'gap-2', + '[&_[data-pc-name=pcinput]]:w-10' + ] + } +}; diff --git a/src/presets/aura/inputswitch/index.js b/src/presets/aura/inputswitch/index.js new file mode 100644 index 0000000..69255e8 --- /dev/null +++ b/src/presets/aura/inputswitch/index.js @@ -0,0 +1,79 @@ +export default { + root: ({ props }) => ({ + class: [ + 'inline-block relative', + 'w-10 h-6', + 'rounded-2xl', + { + 'opacity-60 select-none pointer-events-none cursor-default': props.disabled + } + ] + }), + slider: ({ props }) => ({ + class: [ + // Position + 'absolute top-0 left-0 right-0 bottom-0', + { 'before:transform before:translate-x-4': props.modelValue == props.trueValue }, + + // Shape + 'rounded-2xl', + + // Before: + 'before:absolute before:top-1/2 before:left-1', + 'before:-mt-2', + 'before:h-4 before:w-4', + 'before:rounded-full', + 'before:duration-200', + 'before:bg-surface-0 before:dark:bg-surface-500', + + // Colors + { + 'bg-surface-300 dark:bg-surface-800': !(props.modelValue == props.trueValue) && !props.invalid, + 'bg-primary': props.modelValue == props.trueValue && !props.invalid, + 'before:dark:bg-surface-950': props.modelValue == props.trueValue + }, + + // Invalid State + { 'bg-red-400 dark:bg-red-300': props.invalid }, + { 'peer-hover:bg-red-500 dark:peer-hover:bg-red-200': props.invalid }, + + // States + { 'peer-hover:bg-surface-400 dark:peer-hover:bg-surface-700': !(props.modelValue == props.trueValue) && !props.disabled && !props.invalid }, + { 'peer-hover:bg-primary-emphasis': props.modelValue == props.trueValue && !props.disabled && !props.invalid }, + 'peer-focus-visible:ring-1 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400', + + // Transition + 'transition-colors duration-200', + + // Misc + 'cursor-pointer' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-2xl', + 'outline-none', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + } +}; diff --git a/src/presets/aura/inputtext/index.js b/src/presets/aura/inputtext/index.js new file mode 100644 index 0000000..1069a15 --- /dev/null +++ b/src/presets/aura/inputtext/index.js @@ -0,0 +1,54 @@ +export default { + root: ({ props, context, parent }) => ({ + class: [ + // Font + 'leading-none', + + // Flex + { 'flex-1 w-[1%]': parent.instance.$name == 'InputGroup' }, + + // Spacing + 'm-0', + { 'w-full': props.fluid }, + + // Size + { + 'py-3 px-3.5': props.size == 'large', + 'py-1.5 px-2': props.size == 'small', + 'py-2 px-3': props.size == null + }, + + // Shape + { 'rounded-md': parent.instance.$name !== 'InputGroup' }, + { 'first:rounded-l-md rounded-none last:rounded-r-md': parent.instance.$name == 'InputGroup' }, + { 'border-0 border-y border-l last:border-r': parent.instance.$name == 'InputGroup' }, + { 'first:ml-0 -ml-px': parent.instance.$name == 'InputGroup' && !props.showButtons }, + + // Colors + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + { 'bg-surface-0 dark:bg-surface-950': !context.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-700': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-surface-400 dark:hover:border-surface-600': !context.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10': !context.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': context.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && context.filled }, + + // Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }) +}; diff --git a/src/presets/aura/knob/index.js b/src/presets/aura/knob/index.js new file mode 100644 index 0000000..be6d8e5 --- /dev/null +++ b/src/presets/aura/knob/index.js @@ -0,0 +1,44 @@ +export default { + root: ({ props }) => ({ + class: [ + // Misc + { 'opacity-60 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + range: { + class: [ + // Stroke + 'stroke-current', + + // Color + 'stroke-surface-200 dark:stroke-surface-700', + + // Fill + 'fill-none', + + // Transition + 'transition duration-100 ease-in' + ] + }, + value: { + class: [ + // Animation + 'animate-dash-frame', + + // Color + 'stroke-primary', + + // Fill + 'fill-none' + ] + }, + text: { + class: [ + // Text Style + 'text-center text-xl', + + // Color + 'fill-surface-600 dark:fill-surface-200' + ] + } +}; diff --git a/src/presets/aura/listbox/index.js b/src/presets/aura/listbox/index.js new file mode 100644 index 0000000..063a29b --- /dev/null +++ b/src/presets/aura/listbox/index.js @@ -0,0 +1,107 @@ +export default { + root: ({ props }) => ({ + class: [ + 'rounded-md', + + // Colors + { 'bg-surface-0 dark:bg-surface-900': !props.disabled }, + 'text-surface-700 dark:text-white/80', + 'border', + { 'border-surface-300 dark:border-surface-700': !props.invalid }, + + // Disabled State + { 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid } + ] + }), + listContainer: 'overflow-auto', + list: { + class: 'p-1 list-none m-0 outline-none' + }, + option: ({ context }) => ({ + class: [ + 'relative', + + // Flex + 'flex items-center', + + // Font + 'leading-none', + + // Spacing + 'm-0 px-3 py-2', + 'first:mt-0 mt-[2px]', + + // Shape + 'border-0 rounded', + + // Colors + { + 'text-surface-700 dark:text-white/80': !context.focused && !context.selected, + 'bg-surface-200 dark:bg-surface-600/60': context.focused && !context.selected, + 'text-surface-700 dark:text-white/80': context.focused && !context.selected, + 'bg-highlight': context.selected + }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.focused && !context.selected }, + { 'hover:bg-highlight-emphasis': context.selected }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-[rgba(255,255,255,0.03)]': context.focused && !context.selected }, + + // Transition + 'transition-shadow duration-200', + + // Misc + 'cursor-pointer overflow-hidden whitespace-nowrap' + ] + }), + optionGroup: { + class: [ + 'font-semibold', + + // Spacing + 'm-0 py-2 px-3', + + // Colors + 'text-surface-400 dark:text-surface-500', + + // Misc + 'cursor-auto' + ] + }, + optionCheckIcon: 'relative -ms-1.5 me-1.5 text-surface-700 dark:text-white/80 w-4 h-4', + emptyMessage: { + class: [ + // Font + 'leading-none', + + // Spacing + 'py-2 px-3', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + }, + header: { + class: [ + // Spacing + 'pt-2 px-2 pb-0', + 'm-0', + + //Shape + 'border-b-0', + 'rounded-tl-md', + 'rounded-tr-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-300 dark:border-surface-700', + + '[&_[data-pc-name=pcfilter]]:w-full' + ] + } +}; diff --git a/src/presets/aura/megamenu/index.js b/src/presets/aura/megamenu/index.js new file mode 100644 index 0000000..70a87a3 --- /dev/null +++ b/src/presets/aura/megamenu/index.js @@ -0,0 +1,196 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flexbox + 'flex', + + // Shape & Size + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-200 dark:border-surface-700', + { 'p-2 items-center': props.orientation == 'horizontal', 'flex-col sm:w-48 p-1': props.orientation !== 'horizontal' } + ] + }), + rootList: ({ props }) => ({ + class: [ + // Flexbox + 'sm:flex', + 'items-center', + 'flex-wrap', + 'flex-col sm:flex-row', + { hidden: !props?.mobileActive, flex: props?.mobileActive }, + + // Position + 'absolute sm:relative', + 'top-full left-0', + 'sm:top-auto sm:left-auto', + + // Size + 'w-full sm:w-auto', + + // Spacing + 'm-0', + 'p-1 sm:py-0 sm:p-0', + 'list-none', + + // Shape + 'shadow-md sm:shadow-none', + 'border-0', + + // Color + 'bg-surface-0 dark:bg-surface-900 sm:bg-transparent dark:sm:bg-transparent', + + // Misc + 'outline-none' + ] + }), + item: ({ props }) => ({ + class: [ + 'sm:relative static my-[2px] [&:first-child]:mt-0', + { + 'sm:w-auto w-full': props.horizontal, + 'w-full': !props.horizontal + } + ] + }), + itemContent: ({ context }) => ({ + class: [ + 'rounded-[4px]', + + // Colors + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200': context.focused && !context.active, + 'bg-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // Hover States + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.active, + 'hover:bg-highlight-emphasis': context.active + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + }), + itemLink: { + class: [ + 'relative', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + + // Size + 'leading-none', + + // Misc + 'select-none', + 'cursor-pointer', + 'no-underline ', + 'overflow-hidden' + ] + }, + itemIcon: { + class: 'mr-2' + }, + submenuIcon: ({ props }) => ({ + class: [ + { + 'ml-auto sm:ml-2': props.horizontal, + 'ml-auto': !props.horizontal + } + ] + }), + overlay: ({ props }) => ({ + class: [ + // Size + 'w-auto', + + // Spacing + 'm-0', + + // Shape + 'shadow-none sm:shadow-md', + + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + + // Position + 'static sm:absolute', + 'z-10', + { + 'sm:left-full top-0': !props.horizontal + } + ] + }), + grid: { + class: 'flex flex-wrap sm:flex-nowrap' + }, + column: { + class: 'w-full sm:w-1/2' + }, + submenu: { + class: ['m-0 list-none', 'p-1 px-2 w-full sm:min-w-[14rem]'] + }, + submenuLabel: { + class: [ + 'font-semibold', + + // Spacing + 'py-2 px-3', + 'm-0', + + // Color + 'text-surface-400 dark:text-surface-500', + 'bg-surface-0 dark:bg-surface-900' + ] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + }, + button: { + class: [ + // Flexbox + 'flex sm:hidden', + 'items-center justify-center', + + // Size + 'w-7', + 'h-7', + + // Shape + 'rounded-full', + // Color + 'text-surface-500 dark:text-white/80', + + // States + 'hover:text-surface-600 dark:hover:text-white/60', + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]', + 'focus:outline-none focus:outline-offset-0', + 'focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer', + 'no-underline' + ] + }, + end: { + class: 'ml-auto self-center' + } +}; diff --git a/src/presets/aura/menu/index.js b/src/presets/aura/menu/index.js new file mode 100644 index 0000000..dee00b4 --- /dev/null +++ b/src/presets/aura/menu/index.js @@ -0,0 +1,114 @@ +export default { + root: { + class: [ + // Sizing and Shape + 'min-w-[12.5rem]', + 'rounded-md', + + // Spacing + 'p-1', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + 'border border-surface-200 dark:border-surface-700' + ] + }, + list: { + class: [ + // Spacings and Shape + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + item: { + class: 'relative my-[2px] [&:first-child]:mt-0' + }, + itemContent: ({ context }) => ({ + class: [ + //Shape + 'rounded-[4px]', + + // Colors + 'text-surface-700 dark:text-white/80', + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200': context.focused && !context.active, + 'bg-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // States + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.active, + 'hover:bg-highlight-emphasis': context.active + }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled } + ] + }), + itemLink: { + class: [ + 'relative', + // Flexbox + + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + + // Color + 'text-surface-700 dark:text-white/80', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + itemIcon: { + class: [ + // Spacing + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + itemLabel: { + class: ['leading-[normal]'] + }, + submenuLabel: { + class: [ + // Font + 'font-bold', + + // Spacing + 'm-0', + 'py-2 px-3', + + // Shape + 'rounded-tl-none', + 'rounded-tr-none', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-400 dark:text-surface-600' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/src/presets/aura/menubar/index.js b/src/presets/aura/menubar/index.js new file mode 100644 index 0000000..0860003 --- /dev/null +++ b/src/presets/aura/menubar/index.js @@ -0,0 +1,178 @@ +export default { + root: { + class: [ + 'relative', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'p-2', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-200 dark:border-surface-700' + ] + }, + rootList: ({ props }) => ({ + class: [ + // Flexbox + 'sm:flex', + 'items-center', + 'flex-wrap', + 'flex-col sm:flex-row', + { hidden: !props?.mobileActive, flex: props?.mobileActive }, + + // Position + 'absolute sm:relative', + 'top-full left-0', + 'sm:top-auto sm:left-auto', + + // Size + 'w-full sm:w-auto', + + // Spacing + 'm-0', + 'p-1 sm:py-0 sm:p-0', + 'list-none', + + // Shape + 'shadow-md sm:shadow-none', + 'border-0', + + // Color + 'bg-surface-0 dark:bg-surface-900 sm:bg-transparent', + + // Misc + 'outline-none' + ] + }), + item: { + class: 'sm:relative sm:w-auto w-full static my-[2px] [&:first-child]:mt-0' + }, + itemContent: ({ context }) => ({ + class: [ + // Shape + 'rounded-[4px]', + + // Colors + 'text-surface-700 dark:text-white/80', + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200': context.focused && !context.active, + 'bg-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // States + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.active, + 'hover:bg-highlight-emphasis': context.active + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + }), + itemLink: ({ context }) => ({ + class: [ + 'relative', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + + // Size + { + 'pl-9 sm:pl-5': context.level === 1, + 'pl-14 sm:pl-5': context.level === 2 + }, + 'leading-none', + + // Misc + 'select-none', + 'cursor-pointer', + 'no-underline ', + 'overflow-hidden' + ] + }), + itemIcon: { + class: 'mr-2' + }, + submenuIcon: ({ props }) => ({ + class: [ + { + 'ml-auto sm:ml-2': props.root, + 'ml-auto': !props.root + } + ] + }), + submenu: ({ props }) => ({ + class: [ + 'flex flex-col', + // Size + 'rounded-md', + 'min-w-[12.5rem]', + + // Spacing + 'p-1', + 'm-0', + 'list-none', + + // Shape + 'shadow-none sm:shadow-md', + 'border border-surface-200 dark:border-surface-700', + + // Position + 'static sm:absolute', + 'z-10', + { 'sm:absolute sm:left-full sm:top-0': props.level > 1 }, + + // Color + 'bg-surface-0 dark:bg-surface-900' + ] + }), + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-[2px]' + }, + button: { + class: [ + // Flexbox + 'flex sm:hidden', + 'items-center justify-center', + + // Size + 'w-7', + 'h-7', + + // Shape + 'rounded-full', + // Color + 'text-surface-500 dark:text-white/80', + + // States + 'hover:text-surface-600 dark:hover:text-white/60', + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]', + 'focus:outline-none focus:outline-offset-0', + 'focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer', + 'no-underline' + ] + }, + end: { + class: 'ml-auto self-center' + } +}; diff --git a/src/presets/aura/message/index.js b/src/presets/aura/message/index.js new file mode 100644 index 0000000..a898870 --- /dev/null +++ b/src/presets/aura/message/index.js @@ -0,0 +1,100 @@ +export default { + root: ({ props }) => ({ + class: [ + // Spacing and Shape + 'rounded-md', + 'outline', + + // Colors + { + 'bg-blue-100/70 dark:bg-blue-500/20': props.severity == 'info', + 'bg-green-100/70 dark:bg-green-500/20': props.severity == 'success', + 'bg-surface-100/70 dark:bg-surface-500/20': props.severity == 'secondary', + 'bg-orange-100/70 dark:bg-orange-500/20': props.severity == 'warn', + 'bg-red-100/70 dark:bg-red-500/20': props.severity == 'error', + 'bg-surface-950 dark:bg-surface-0': props.severity == 'contrast' + }, + { + 'outline-blue-200 dark:outline-blue-500/20': props.severity == 'info', + 'outline-green-200 dark:outline-green-500/20': props.severity == 'success', + 'outline-surface-200 dark:outline-surface-500/20': props.severity == 'secondary', + 'outline-orange-200 dark:outline-orange-500/20': props.severity == 'warn', + 'outline-red-200 dark:outline-red-500/20': props.severity == 'error', + 'outline-surface-950 dark:outline-surface-0': props.severity == 'contrast' + }, + { + 'text-blue-700 dark:text-blue-300': props.severity == 'info', + 'text-green-700 dark:text-green-300': props.severity == 'success', + 'text-surface-700 dark:text-surface-300': props.severity == 'secondary', + 'text-orange-700 dark:text-orange-300': props.severity == 'warn', + 'text-red-700 dark:text-red-300': props.severity == 'error', + 'text-surface-0 dark:text-surface-950': props.severity == 'contrast' + } + ] + }), + content: { + class: [ + // Flexbox + 'flex items-center h-full', + + // Spacing + 'py-2 px-3 gap-2' + ] + }, + icon: { + class: [ + // Sizing and Spacing + 'shrink-0 w-[1.125rem] h-[1.125rem]' + ] + }, + text: { + class: [ + // Font and Text + 'text-base leading-[normal]', + 'font-medium' + ] + }, + closeButton: ({ props }) => ({ + class: [ + // Flexbox + 'flex items-center justify-center', + + // Size + 'w-7 h-7', + + // Spacing and Misc + 'ml-auto relative', + + // Shape + 'rounded-full', + + // Colors + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:bg-surface-0/30 dark:hover:bg-[rgba(255,255,255,0.03)]', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + { + 'focus:ring-blue-500 dark:focus:ring-blue-400': props.severity == 'info', + 'focus:ring-green-500 dark:focus:ring-green-400': props.severity == 'success', + 'focus:ring-surface-500 dark:focus:ring-surface-400': props.severity == 'secondary', + 'focus:ring-orange-500 dark:focus:ring-orange-400': props.severity == 'warn', + 'focus:ring-red-500 dark:focus:ring-red-4000': props.severity == 'error', + 'focus:ring-surface-0 dark:focus:ring-surface-950': props.severity == 'contrast' + }, + + // Misc + 'overflow-hidden' + ] + }), + transition: { + enterFromClass: 'opacity-0', + enterActiveClass: 'transition-opacity duration-300', + leaveFromClass: 'max-h-40', + leaveActiveClass: 'overflow-hidden transition-all duration-300 ease-in', + leaveToClass: 'max-h-0 opacity-0 !m-0' + } +}; diff --git a/src/presets/aura/metergroup/index.js b/src/presets/aura/metergroup/index.js new file mode 100644 index 0000000..1defe09 --- /dev/null +++ b/src/presets/aura/metergroup/index.js @@ -0,0 +1,96 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flexbox + 'flex gap-4', + + { 'flex-col': props.orientation == 'horizontal', 'flex-row': props.orientation == 'vertical' } + ] + }), + meters: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + + { 'flex-col': props.orientation === 'vertical' }, + + // Sizing + { 'w-2 h-full': props.orientation === 'vertical' }, + { 'h-2': props.orientation === 'horizontal' }, + + // Colors + 'bg-gray-200 dark:bg-gray-700', + + // Border Radius + 'rounded-lg' + ] + }), + meter: ({ props }) => ({ + class: [ + // Shape + 'border-0', + + // Rounded Corners - Horizontal + { + 'first:rounded-l-lg last:rounded-r-lg': props.orientation === 'horizontal' + }, + + // Rounded Corners - Vertical + { + 'first:rounded-t-lg last:rounded-b-lg': props.orientation === 'vertical' + }, + + // Colors + 'bg-primary' + ] + }), + labelList: ({ props }) => ({ + class: [ + // Display & Flexbox + 'flex flex-wrap', + + { 'gap-4': props.labelOrientation === 'horizontal' }, + + { 'gap-2': props.labelOrientation === 'vertical' }, + + { 'flex-col': props.labelOrientation === 'vertical' }, + + // Conditional Alignment - Horizontal + { + 'align-end': props.labelOrientation === 'horizontal' && props.labelPosition === 'end', + 'align-start': props.labelOrientation === 'horizontal' && props.labelPosition === 'start' + }, + + // Conditional Alignment - Vertical + { + 'justify-start': props.labelOrientation === 'vertical' && props.labelPosition === 'start' + }, + + // List Styling + 'm-0 p-0 list-none' + ] + }), + label: { + class: [ + // Flexbox + 'inline-flex', + 'items-center', + 'gap-2' + ] + }, + labelMarker: { + class: [ + // Display + 'inline-flex', + + // Background Color + 'bg-primary', + + // Size + 'w-2 h-2', + + // Rounded Shape + 'rounded-full' + ] + } +}; diff --git a/src/presets/aura/multiselect/index.js b/src/presets/aura/multiselect/index.js new file mode 100644 index 0000000..ddf3518 --- /dev/null +++ b/src/presets/aura/multiselect/index.js @@ -0,0 +1,196 @@ +export default { + root: ({ props, state }) => ({ + class: [ + // Font + 'leading-none', + + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + + // Color and Background + { 'bg-surface-0 dark:bg-surface-950': !props.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { 'hover:border-surface-400 dark:hover:border-surface-700': !props.invalid }, + { 'outline-none outline-offset-0 z-10 ring-1 ring-primary-500 dark:ring-primary-400': state.focused }, + + // Misc + 'cursor-pointer', + 'select-none', + { 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + labelContainer: 'overflow-hidden flex flex-auto cursor-pointer', + label: ({ props }) => ({ + class: [ + 'text-base leading-2', + + // Spacing + { + 'py-2 px-3': props.display === 'comma' || (props.display === 'chip' && !props?.modelValue?.length), + 'py-1 px-1': props.display === 'chip' && props?.modelValue?.length > 0 + }, + + // Color + { 'text-surface-800 dark:text-white/80': props.modelValue?.length, 'text-surface-400 dark:text-surface-500': !props.modelValue?.length }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Transitions + 'transition duration-200', + + // Misc + 'overflow-hidden whitespace-nowrap cursor-pointer overflow-ellipsis' + ] + }), + dropdown: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-r-md' + ] + }, + overlay: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + + // Shape + 'border border-surface-300 dark:border-surface-700', + 'rounded-md', + 'shadow-md', + 'mt-[2px]' + ] + }, + header: { + class: [ + //Flex + 'flex items-center justify-between', + + // Spacing + 'pt-2 px-4 pb-0 gap-2', + 'm-0', + + //Shape + 'border-b-0', + 'rounded-tl-md', + 'rounded-tr-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-300 dark:border-surface-700', + + '[&_[data-pc-name=pcfiltercontainer]]:!flex-auto', + '[&_[data-pc-name=pcfilter]]:w-full' + ] + }, + listContainer: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'p-1 list-none m-0' + }, + option: ({ context }) => ({ + class: [ + 'relative', + 'flex items-center', + + // Font + 'leading-none', + + // Spacing + 'm-0 px-3 py-2 gap-2', + 'first:mt-0 mt-[2px]', + + // Shape + 'border-0 rounded', + + // Colors + { + 'text-surface-700 dark:text-white/80': !context.focused && !context.selected, + 'bg-surface-200 dark:bg-surface-600/60': context.focused && !context.selected, + 'text-surface-700 dark:text-white/80': context.focused && !context.selected, + 'bg-highlight': context.selected + }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.focused && !context.selected }, + { 'hover:bg-highlight-emphasis': context.selected }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-[rgba(255,255,255,0.03)]': context.focused && !context.selected }, + + // Transition + 'transition-shadow duration-200', + + // Misc + 'cursor-pointer overflow-hidden whitespace-nowrap' + ] + }), + optionGroup: { + class: [ + 'font-semibold', + + // Spacing + 'm-0 py-2 px-3', + + // Colors + 'text-surface-400 dark:text-surface-500', + + // Misc + 'cursor-auto' + ] + }, + emptyMessage: { + class: [ + // Font + 'leading-none', + + // Spacing + 'py-2 px-3', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + }, + loadingIcon: { + class: 'text-surface-400 dark:text-surface-500 animate-spin' + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/src/presets/aura/orderlist/index.js b/src/presets/aura/orderlist/index.js new file mode 100644 index 0000000..a64fcd4 --- /dev/null +++ b/src/presets/aura/orderlist/index.js @@ -0,0 +1,25 @@ +export default { + root: 'flex', + controls: { + class: [ + // Flexbox & Alignment + 'flex xl:flex-col justify-center gap-2', + + // Spacing + 'p-[1.125rem]' + ] + }, + container: { + class: [ + 'flex-auto', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-200 dark:border-surface-700', + 'outline-none' + ] + } +}; diff --git a/src/presets/aura/organizationchart/index.js b/src/presets/aura/organizationchart/index.js new file mode 100644 index 0000000..d08f025 --- /dev/null +++ b/src/presets/aura/organizationchart/index.js @@ -0,0 +1,137 @@ +export default { + table: { + class: [ + // Spacing & Position + 'mx-auto my-0', + + // Table Style + 'border-spacing-0 border-separate' + ] + }, + cell: { + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3' + ] + }, + node: ({ context }) => ({ + class: [ + 'relative inline-block', + + // Spacing + 'py-3 px-4', + + // Shape + 'border', + 'rounded-md', + 'border-surface-200 dark:border-surface-700', + // Color + { + 'text-surface-600 dark:text-white/80': !context?.selected, + 'bg-surface-0 dark:bg-surface-900': !context?.selected, + 'bg-highlight': context?.selected + }, + + // States + { + 'hover:bg-surface-100 dark:hover:bg-surface-800': context?.selectable && !context?.selected, + 'hover:bg-highlight-emphasis': context?.selectable && context?.selected + }, + + { 'cursor-pointer': context?.selectable } + ] + }), + lineCell: { + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3' + ] + }, + connectorDown: { + class: [ + // Spacing + 'mx-auto my-0', + + // Size + 'w-px h-[20px]', + + // Color + 'bg-surface-200 dark:bg-surface-700' + ] + }, + connectorLeft: ({ context }) => ({ + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3', + + // Shape + 'rounded-none border-r', + { 'border-t': context.lineTop }, + + // Color + 'border-surface-200 dark:border-surface-700' + ] + }), + connectorRight: ({ context }) => ({ + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3', + + // Shape + 'rounded-none', + + // Color + { 'border-t border-surface-200 dark:border-surface-700': context.lineTop } + ] + }), + nodeCell: { + class: 'text-center align-top py-0 px-3' + }, + nodeToggleButton: { + class: [ + // Position + 'absolute bottom-[-0.75rem] left-2/4 -ml-3', + 'z-20', + + // Flexbox + 'flex items-center justify-center', + + // Size + 'w-6 h-6', + + // Shape + 'rounded-full', + 'border border-surface-200 dark:border-surface-700', + + // Color + 'bg-inherit text-inherit', + + // Focus + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Misc + 'cursor-pointer no-underline select-none' + ] + }, + nodeToggleButtonIcon: { + class: [ + // Position + 'static inline-block', + + // Size + 'w-4 h-4' + ] + } +}; diff --git a/src/presets/aura/overlaybadge/index.js b/src/presets/aura/overlaybadge/index.js new file mode 100644 index 0000000..7728885 --- /dev/null +++ b/src/presets/aura/overlaybadge/index.js @@ -0,0 +1,18 @@ +export default { + root: { + class: [ + 'relative', + '[&>[data-pc-name=pcbadge]]:absolute', + '[&>[data-pc-name=pcbadge]]:top-0', + '[&>[data-pc-name=pcbadge]]:right-0', + '[&>[data-pc-name=pcbadge]]:translate-x-1/2', + '[&>[data-pc-name=pcbadge]]:-translate-y-1/2', + '[&>[data-pc-name=pcbadge]]:m-0', + '[&>[data-pc-name=pcbadge]]:origin-[100%_0]', + '[&>[data-pc-name=pcbadge]]:outline', + '[&>[data-pc-name=pcbadge]]:outline-[2px]', + '[&>[data-pc-name=pcbadge]]:outline-surface-0', + 'dark:[&>[data-pc-name=pcbadge]]:outline-surface-900' + ] + } +}; diff --git a/src/presets/aura/paginator/index.js b/src/presets/aura/paginator/index.js new file mode 100644 index 0000000..040fc14 --- /dev/null +++ b/src/presets/aura/paginator/index.js @@ -0,0 +1,175 @@ +export default { + root: { + class: [ + // Flex & Alignment + 'flex items-center justify-center flex-wrap', + + // Spacing + 'px-4 py-2', + + // Shape + 'border-0 rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-500 dark:text-white/60' + ] + }, + first: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size + 'min-w-[2.5rem] h-10 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400': !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + prev: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size + 'min-w-[2.5rem] h-10 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400': !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + next: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size + 'min-w-[2.5rem] h-10 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400': !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + last: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size + 'min-w-[2.5rem] h-10 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400': !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + page: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size + 'min-w-[2.5rem] h-10 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400': !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + contentStart: 'mr-auto', + contentEnd: 'ml-auto' +}; diff --git a/src/presets/aura/panel/index.js b/src/presets/aura/panel/index.js new file mode 100644 index 0000000..9bd92d2 --- /dev/null +++ b/src/presets/aura/panel/index.js @@ -0,0 +1,97 @@ +export default { + root: { + class: [ + //Shape + 'rounded-md', + + //Colors + 'border border-surface-200 dark:border-surface-700', + 'bg-surface-0 dark:bg-surface-900' + ] + }, + header: ({ props }) => ({ + class: [ + // Flex + 'flex items-center justify-between', + + // Colors + 'text-surface-700 dark:text-surface-0/80', + 'bg-transparent', + + //Shape + 'rounded-tl-md rounded-tr-md', + 'border-0', + + // Conditional Spacing + { 'p-[1.125rem]': !props.toggleable, 'py-3 px-[1.125rem]': props.toggleable } + ] + }), + title: { + class: 'leading-none font-semibold' + }, + toggler: { + class: [ + // Alignments + 'inline-flex items-center justify-center', + 'relative', + + // Sized + 'w-7 h-7', + 'm-0 p-0', + + //Shape + 'border-0 rounded-full', + + //Color + 'bg-transparent', + 'text-surface-600 dark:text-surface-0/80', + + // States + 'hover:text-surface-800 dark:hover:text-surface-0', + 'hover:bg-surface-50 dark:hover:bg-[rgba(255,255,255,0.03)]', + 'focus:outline-none focus:outline-offset-0 focus-visible:ring-1 focus-visible:ring-primary-400 dark:focus-visible:ring-primary-300', + + // Transitions + 'transition-all duration-200 ease-in-out', + + // Misc + 'overflow-hidden no-underline', + 'cursor-pointer' + ] + }, + togglerIcon: { + class: 'inline-block w-4 h-4' + }, + content: { + class: [ + // Spacing + 'p-[1.125rem] pt-0', + + // Shape + 'border-0 border-t-0 last:rounded-br-md last:rounded-bl-md', + + //Color + 'text-surface-700 dark:text-surface-0/80' + ] + }, + footer: { + class: [ + // Spacing + 'p-[1.125rem] pt-0', + + // Shape + 'border-0 border-t-0 rounded-br-lg rounded-bl-lg', + + //Color + 'text-surface-700 dark:text-surface-0/80' + ] + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } +}; diff --git a/src/presets/aura/panelmenu/index.js b/src/presets/aura/panelmenu/index.js new file mode 100644 index 0000000..ad1293a --- /dev/null +++ b/src/presets/aura/panelmenu/index.js @@ -0,0 +1,126 @@ +export default { + panel: { + class: 'p-1 overflow-hidden mb-3 border border-surface-200 dark:border-surface-700 rounded-md' + }, + header: { + class: ['rounded-[4px]', 'outline-none'] + }, + headerContent: ({ context }) => ({ + class: [ + // Shape + 'rounded-[4px]', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-600 dark:text-surface-0/80', + { 'text-surface-900': context.active }, + + // States + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]', + 'hover:text-surface-900', + + // Transition + 'transition duration-200 ease-in-out', + 'transition-shadow duration-200' + ] + }), + headerLink: { + class: [ + 'relative', + + // Font + 'font-semibold', + 'leading-none', + + // Flex & Alignments + 'flex items-center', + + // Spacing + 'py-2 px-3', + + // Misc + 'select-none cursor-pointer no-underline' + ] + }, + headerLabel: { + class: 'leading-none' + }, + headerIcon: { + class: 'mr-2' + }, + submenuIcon: { + class: 'mr-2' + }, + content: { + class: [ + // Spacing + 'pl-4', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900' + ] + }, + rootList: { + class: ['outline-none', 'm-0 p-0 list-none'] + }, + menuitem: { + class: 'relative my-[2px]' + }, + itemContent: { + class: [ + // Shape + 'border-none rounded-[4px]', + + // Color + 'text-surface-700 dark:text-white/80', + + // Transition + 'transition-shadow duration-200' + ] + }, + itemLink: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'leading-none', + + // Flex & Alignments + 'flex items-center', + + // Spacing + 'py-2 px-3', + + // Shape + 'rounded-[4px]', + + // Color + 'text-surface-700 dark:text-white/80', + + // States + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)] hover:text-surface-700 dark:hover:text-white/80', + { + 'bg-surface-200 text-surface-700 dark:text-white/80 dark:bg-surface-0/10': context.focused + }, + + // Misc + 'cursor-pointer no-underline', + 'select-none overflow-hidden' + ] + }), + itemIcon: { + class: 'mr-2' + }, + submenu: { + class: 'p-0 pl-4 m-0 list-none' + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } +}; diff --git a/src/presets/aura/password/index.js b/src/presets/aura/password/index.js new file mode 100644 index 0000000..0250f6d --- /dev/null +++ b/src/presets/aura/password/index.js @@ -0,0 +1,66 @@ +export default { + root: ({ props }) => ({ + class: ['relative', { '[&>input]:pr-10': props.toggleMask }, { 'flex [&>input]:w-full': props.fluid, 'inline-flex': !props.fluid }] + }), + overlay: { + class: [ + // Spacing + 'p-3', + + // Shape + 'border', + 'shadow-md rounded-md', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + 'border-surface-200 dark:border-surface-700' + ] + }, + meter: { + class: [ + // Position and Overflow + 'overflow-hidden', + 'relative', + + // Shape and Size + 'border-0', + 'h-[10px]', + 'rounded-md', + + // Spacing + 'mb-3', + + // Colors + 'bg-surface-100 dark:bg-surface-700' + ] + }, + meterLabel: ({ instance }) => ({ + class: [ + // Size + 'h-full', + + // Colors + { + 'bg-red-500 dark:bg-red-400/50': instance?.meter?.strength == 'weak', + 'bg-orange-500 dark:bg-orange-400/50': instance?.meter?.strength == 'medium', + 'bg-green-500 dark:bg-green-400/50': instance?.meter?.strength == 'strong' + }, + + // Transitions + 'transition-all duration-1000 ease-in-out' + ] + }), + maskIcon: { + class: ['absolute top-1/2 right-3 -mt-2 z-10', 'text-surface-600 dark:text-white/70'] + }, + unmaskIcon: { + class: ['absolute top-1/2 right-3 -mt-2 z-10', 'text-surface-600 dark:text-white/70'] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/src/presets/aura/picklist/index.js b/src/presets/aura/picklist/index.js new file mode 100644 index 0000000..98f8c93 --- /dev/null +++ b/src/presets/aura/picklist/index.js @@ -0,0 +1,64 @@ +export default { + root: 'flex [&_[data-pc-name=pclist]]:h-full', + sourceControls: { + class: [ + // Flexbox & Alignment + 'flex xl:flex-col justify-center gap-2', + + // Spacing + 'p-[1.125rem]' + ] + }, + sourceListContainer: { + class: [ + // Flexbox + 'grow shrink basis-2/4', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-200 dark:border-surface-700', + 'outline-none' + ] + }, + transferControls: { + class: [ + // Flexbox & Alignment + 'flex xl:flex-col justify-center gap-2', + + // Spacing + 'p-[1.125rem]' + ] + }, + targetListContainer: { + class: [ + // Flexbox + 'grow shrink basis-2/4', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-200 dark:border-surface-700', + 'outline-none' + ] + }, + targetControls: { + class: [ + // Flexbox & Alignment + 'flex xl:flex-col justify-center gap-2', + + // Spacing + 'p-[1.125rem]' + ] + }, + transition: { + enterFromClass: '!transition-none', + enterActiveClass: '!transition-none', + leaveActiveClass: '!transition-none', + leaveToClass: '!transition-none' + } +}; diff --git a/src/presets/aura/popover/index.js b/src/presets/aura/popover/index.js new file mode 100644 index 0000000..243aa7c --- /dev/null +++ b/src/presets/aura/popover/index.js @@ -0,0 +1,29 @@ +export default { + root: { + class: [ + // Shape + 'rounded-md shadow-lg', + + // Position + 'absolute left-0 top-0 mt-2', + 'z-40 transform origin-center', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80', + + // Before: Arrow + 'before:absolute before:w-0 before:-top-3 before:h-0 before:border-transparent before:border-solid before:ml-[10px] before:border-x-[10px] before:border-b-[10px] before:border-t-0 before:border-b-surface-200 dark:before:border-b-surface-700', + 'after:absolute after:w-0 after:-top-[0.54rem] after:left-[4px] after:h-0 after:border-transparent after:border-solid after:ml-[8px] after:border-x-[8px] after:border-b-[8px] after:border-t-0 after:border-b-surface-0 dark:after:border-b-surface-900' + ] + }, + content: { + class: ['p-5 items-center flex', 'rounded-lg', 'border border-surface-200 dark:border-surface-700'] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/src/presets/aura/progressbar/index.js b/src/presets/aura/progressbar/index.js new file mode 100644 index 0000000..7cc565a --- /dev/null +++ b/src/presets/aura/progressbar/index.js @@ -0,0 +1,58 @@ +export default { + root: { + class: [ + // Position and Overflow + 'overflow-hidden', + 'relative', + + // Shape and Size + 'border-0', + 'h-5', + 'rounded-md', + + // Colors + 'bg-surface-100 dark:bg-surface-800' + ] + }, + value: ({ props }) => ({ + class: [ + // Flexbox & Overflow & Position + { 'absolute flex items-center justify-center overflow-hidden': props.mode !== 'indeterminate' }, + + // Colors + 'bg-primary', + + // Spacing & Sizing + 'm-0', + { 'h-full w-0': props.mode !== 'indeterminate' }, + + // Shape + 'border-0', + + // Transitions + { + 'transition-width duration-1000 ease-in-out': props.mode !== 'indeterminate', + 'progressbar-value-animate': props.mode == 'indeterminate' + }, + + // Before & After (indeterminate) + { + 'before:absolute before:top-0 before:left-0 before:bottom-0 before:bg-inherit ': props.mode == 'indeterminate', + 'after:absolute after:top-0 after:left-0 after:bottom-0 after:bg-inherit after:delay-1000': props.mode == 'indeterminate' + } + ] + }), + label: { + class: [ + //Font + 'text-xs font-semibold', + + // Flexbox + 'inline-flex', + + // Font and Text + 'text-white dark:text-surface-900', + 'leading-5' + ] + } +}; diff --git a/src/presets/aura/progressspinner/index.js b/src/presets/aura/progressspinner/index.js new file mode 100644 index 0000000..4e1faec --- /dev/null +++ b/src/presets/aura/progressspinner/index.js @@ -0,0 +1,51 @@ +export default { + root: { + class: [ + // Position + 'relative', + 'mx-auto', + + // Sizing + 'w-28', + 'h-28', + + // Flexbox + 'inline-block', + + // Pseudo-Elements + 'before:block', + 'before:pt-full' + ] + }, + spinner: { + class: [ + // Position + 'absolute', + 'top-0', + 'bottom-0', + 'left-0', + 'right-0', + 'm-auto', + + // Sizing + 'w-full', + 'h-full', + + // Transformations + 'transform', + 'origin-center', + + // Animations + 'animate-spin' + ] + }, + circle: { + class: [ + // Colors + 'text-red-500', + + // Misc + 'progress-spinner-circle' + ] + } +}; diff --git a/src/presets/aura/radiobutton/index.js b/src/presets/aura/radiobutton/index.js new file mode 100644 index 0000000..3649e91 --- /dev/null +++ b/src/presets/aura/radiobutton/index.js @@ -0,0 +1,102 @@ +export default { + root: { + class: [ + 'relative', + + // Flexbox & Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-5 h-5', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Flexbox + 'flex justify-center items-center', + + // Size + 'w-5 h-5', + + // Shape + 'border outline-transparent', + 'rounded-full', + + // Transition + 'transition duration-200 ease-in-out', + + // Colors + { + 'text-surface-700 dark:text-white/80': context.checked, + 'border-surface-300 dark:border-surface-700': !context.checked && !props.invalid, + 'border-primary bg-primary': context.checked && !props.disabled + }, + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:border-surface-400 dark:peer-hover:border-surface-400': !props.disabled && !props.invalid && !context.checked, + 'peer-hover:border-primary-emphasis': !props.disabled && !context.checked, + 'peer-hover:[&>*:first-child]:bg-primary-600 dark:peer-hover:[&>*:first-child]:bg-primary-300': !props.disabled && !context.checked, + 'peer-focus-visible:ring-1 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': !props.disabled, + 'bg-surface-200 [&>*:first-child]:bg-surface-600 dark:bg-surface-700 dark:[&>*:first-child]:bg-surface-400 border-surface-300 dark:border-surface-700 select-none pointer-events-none cursor-default': props.disabled + } + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-1 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: ({ context }) => ({ + class: [ + 'block', + + // Shape + 'rounded-full', + + // Size + 'w-3 h-3', + + // Conditions + { + 'bg-surface-0 dark:bg-surface-900': context.checked, + 'bg-primary': !context.checked, + 'backface-hidden invisible scale-[0.1]': !context.checked, + 'transform visible translate-z-0 scale-[1,1]': context.checked + }, + + // Transition + 'transition duration-200' + ] + }) +}; diff --git a/src/presets/aura/rating/index.js b/src/presets/aura/rating/index.js new file mode 100644 index 0000000..b497fd3 --- /dev/null +++ b/src/presets/aura/rating/index.js @@ -0,0 +1,63 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'flex items-center', + 'gap-1', + + // Misc + { + 'opacity-60 select-none pointer-events-none cursor-default': props.disabled + } + ] + }), + option: ({ props, context }) => ({ + class: [ + // Flex & Alignment + 'inline-flex items-center', + + // State + { + 'outline-none ring-1 ring-primary-500/50 dark:ring-primary-500': context.focused + }, + + // Misc + { + 'cursor-pointer': !props.readonly, + 'cursor-default': props.readonly + } + ] + }), + offIcon: ({ props }) => ({ + class: [ + // Size + 'w-4 h-4', + + // Color + 'text-surface-700 dark:text-surface-0/80', + + // State + { 'hover:text-primary-500 dark:hover:text-primary-400': !props.readonly }, + + // Transition + 'transition duration-200 ease-in' + ] + }), + onIcon: ({ props }) => ({ + class: [ + // Size + 'w-4 h-4', + + // Color + 'text-primary', + + // State + { 'hover:text-primary-600 dark:hover:text-primary-300': !props.readonly }, + + // Transition + 'transition duration-200 ease-in' + ] + }) +}; diff --git a/src/presets/aura/ripple/index.js b/src/presets/aura/ripple/index.js new file mode 100644 index 0000000..429c249 --- /dev/null +++ b/src/presets/aura/ripple/index.js @@ -0,0 +1,6 @@ +export default { + root: { + class: ['block absolute bg-surface-0/50 rounded-full pointer-events-none'], + style: 'transform: scale(0)' + } +}; diff --git a/src/presets/aura/scrollpanel/index.js b/src/presets/aura/scrollpanel/index.js new file mode 100644 index 0000000..896fb14 --- /dev/null +++ b/src/presets/aura/scrollpanel/index.js @@ -0,0 +1,77 @@ +export default { + contentContainer: { + class: [ + // Size & Position + 'h-full w-full', + + // Layering + 'z-[1]', + + // Spacing + 'overflow-hidden', + + // Misc + 'relative float-left' + ] + }, + content: { + class: [ + // Size & Spacing + 'h-[calc(100%+18px)] w-[calc(100%+18px)] pr-[18px] pb-[18px] pl-0 pt-0', + + // Overflow & Scrollbar + 'overflow-scroll scrollbar-none', + + // Box Model + 'box-border', + + // Position + 'relative', + + // Webkit Specific + '[&::-webkit-scrollbar]:hidden' + ] + }, + barX: { + class: [ + // Size & Position + 'h-[9px] bottom-0', + + // Appearance + 'bg-surface-50 dark:bg-surface-700 rounded', + + // Interactivity + 'cursor-pointer', + + // Visibility & Layering + 'invisible z-20', + + // Transition + 'transition duration-[250ms] ease-linear', + + // Misc + 'relative' + ] + }, + barY: { + class: [ + // Size & Position + 'w-[9px] top-0', + + // Appearance + 'bg-surface-50 dark:bg-surface-700 rounded', + + // Interactivity + 'cursor-pointer', + + // Visibility & Layering + 'z-20', + + // Transition + 'transition duration-[250ms] ease-linear', + + // Misc + 'relative' + ] + } +}; diff --git a/src/presets/aura/scrolltop/index.js b/src/presets/aura/scrolltop/index.js new file mode 100644 index 0000000..420093c --- /dev/null +++ b/src/presets/aura/scrolltop/index.js @@ -0,0 +1,26 @@ +export default { + button: ({ props }) => ({ + root: { + class: [ + // Flex & Alignment + 'flex items-center justify-center', + + // Positioning + { + '!sticky flex ml-auto': props.target === 'parent', + '!fixed': props.target === 'window' + }, + 'bottom-[20px] right-[20px]', + 'h-10 w-10 rounded-full shadow-md', + 'text-white dark:text-surface-900 bg-surface-600 dark:bg-surface-700', + 'hover:bg-surface-600 dark:hover:bg-surface-300' + ] + } + }), + transition: { + enterFromClass: 'opacity-0', + enterActiveClass: 'transition-opacity duration-150', + leaveActiveClass: 'transition-opacity duration-150', + leaveToClass: 'opacity-0' + } +}; diff --git a/src/presets/aura/select/index.js b/src/presets/aura/select/index.js new file mode 100644 index 0000000..879fbe9 --- /dev/null +++ b/src/presets/aura/select/index.js @@ -0,0 +1,226 @@ +export default { + root: ({ props, state, parent }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + // Shape + { 'rounded-md': parent.instance.$name !== 'InputGroup' }, + { 'first:rounded-l-md rounded-none last:rounded-r-md': parent.instance.$name == 'InputGroup' }, + { 'border-0 border-y border-l last:border-r': parent.instance.$name == 'InputGroup' }, + { 'first:ml-0 ml-[-1px]': parent.instance.$name == 'InputGroup' && !props.showButtons }, + + // Color and Background + { 'bg-surface-0 dark:bg-surface-950': !props.disabled }, + + 'border', + { 'dark:border-surface-700': parent.instance.$name != 'InputGroup' }, + { 'dark:border-surface-600': parent.instance.$name == 'InputGroup' }, + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { 'hover:border-surface-400 dark:hover:border-surface-600': !props.invalid }, + { 'outline-none outline-offset-0 ring-1 ring-primary-500 dark:ring-primary-400 z-10': state.focused }, + + // Misc + 'cursor-pointer', + 'select-none', + { 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + label: ({ props, parent }) => ({ + class: [ + //Font + 'leading-[normal]', + + // Display + 'block', + 'flex-auto', + + // Color and Background + 'bg-transparent', + 'border-0', + { 'text-surface-800 dark:text-white/80': props.modelValue != undefined, 'text-surface-400 dark:text-surface-500': props.modelValue == undefined }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Sizing and Spacing + 'w-[1%]', + 'py-2 px-3', + { 'pr-7': props.showClear }, + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && props.modelValue !== null }, + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }), + dropdown: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-r-md' + ] + }, + overlay: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + + // Shape + 'border border-surface-300 dark:border-surface-700', + 'rounded-md', + 'shadow-md' + ] + }, + listContainer: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'p-1 list-none m-0' + }, + option: ({ context }) => ({ + class: [ + 'relative', + 'flex items-center', + + // Font + 'leading-none', + + // Spacing + 'm-0 px-3 py-2', + 'first:mt-0 mt-[2px]', + + // Shape + 'border-0 rounded', + + // Colors + { + 'text-surface-700 dark:text-white/80': !context.focused && !context.selected, + 'bg-surface-200 dark:bg-surface-600/60': context.focused && !context.selected, + 'text-surface-700 dark:text-white/80': context.focused && !context.selected, + 'bg-highlight': context.selected + }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.focused && !context.selected }, + { 'hover:bg-highlight-emphasis': context.selected }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-[rgba(255,255,255,0.03)]': context.focused && !context.selected }, + + // Transition + 'transition-shadow duration-200', + + // Misc + 'cursor-pointer overflow-hidden whitespace-nowrap' + ] + }), + optionGroup: { + class: [ + 'font-semibold', + + // Spacing + 'm-0 py-2 px-3', + + // Colors + 'text-surface-400 dark:text-surface-500', + + // Misc + 'cursor-auto' + ] + }, + optionCheckIcon: 'relative -ms-1.5 me-1.5 text-surface-700 dark:text-white/80 w-4 h-4', + optionBlankIcon: 'w-4 h-4', + emptyMessage: { + class: [ + // Font + 'leading-none', + + // Spacing + 'py-2 px-3', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + }, + header: { + class: [ + // Spacing + 'pt-2 px-2 pb-0', + 'm-0', + + //Shape + 'border-b-0', + 'rounded-tl-md', + 'rounded-tr-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-300 dark:border-surface-700' + ] + }, + clearIcon: { + class: [ + // Color + 'text-surface-400 dark:text-surface-500', + + // Position + 'absolute', + 'top-1/2', + 'right-12', + + // Spacing + '-mt-2' + ] + }, + loadingIcon: { + class: 'text-surface-400 dark:text-surface-500 animate-spin' + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/src/presets/aura/selectbutton/index.js b/src/presets/aura/selectbutton/index.js new file mode 100644 index 0000000..be4d716 --- /dev/null +++ b/src/presets/aura/selectbutton/index.js @@ -0,0 +1,16 @@ +export default { + root: ({ props }) => ({ + class: [ + 'inline-flex select-none align-bottom outline-transparent', + 'border rounded-md [&>button]:rounded-none [&>button]:border-none', + '[&>button:first-child]:border-r-none [&>button:first-child]:rounded-r-none [&>button:first-child]:rounded-tl-md [&>button:first-child]:rounded-bl-md', + '[&>button:last-child]:border-l-none [&>button:first-child]:rounded-l-none [&>button:last-child]:rounded-tr-md [&>button:last-child]:rounded-br-md', + + // Invalid State + { + 'border-red-500 dark:border-red-400': props.invalid, + 'border-transparent': !props.invalid + } + ] + }) +}; diff --git a/src/presets/aura/skeleton/index.js b/src/presets/aura/skeleton/index.js new file mode 100644 index 0000000..d459aaa --- /dev/null +++ b/src/presets/aura/skeleton/index.js @@ -0,0 +1,16 @@ +export default { + root: ({ props }) => ({ + class: [ + 'overflow-hidden', + { + 'animate-pulse': props.animation !== 'none' + }, + + // Round + { 'rounded-full': props.shape === 'circle', 'rounded-md': props.shape !== 'circle' }, + + // Colors + 'bg-surface-200 dark:bg-surface-700' + ] + }) +}; diff --git a/src/presets/aura/slider/index.js b/src/presets/aura/slider/index.js new file mode 100644 index 0000000..c35cfaf --- /dev/null +++ b/src/presets/aura/slider/index.js @@ -0,0 +1,138 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Size + { 'h-[3px]': props.orientation == 'horizontal', 'w-[3px]': props.orientation == 'vertical' }, + + // Shape + 'border-0', + 'rounded-md', + + // Colors + 'bg-surface-200 dark:bg-surface-800', + + // States + { 'opacity-60 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + range: ({ props }) => ({ + class: [ + // Position + 'block absolute', + { + 'top-0 left-0': props.orientation == 'horizontal', + 'bottom-0 left-0': props.orientation == 'vertical' + }, + + //Size + { + 'h-full': props.orientation == 'horizontal', + 'w-full': props.orientation == 'vertical' + }, + + // Shape + 'rounded-md', + + // Colors + 'bg-primary' + ] + }), + handle: ({ props }) => ({ + class: [ + 'flex items-center justify-center', + + // Size + 'h-[20px]', + 'w-[20px]', + { + 'top-[50%] -mt-[10px] -ml-[10px]': props.orientation == 'horizontal', + 'left-[50%] -mb-[10px] -ml-[10px]': props.orientation == 'vertical' + }, + + // Shape + 'rounded-full', + + 'before:block before:w-[16px] before:h-[16px] before:rounded-full before:bg-surface-0 dark:before:bg-surface-950 before:shadow-md', + + // Colors + 'bg-surface-200 dark:bg-surface-800', + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-1', + 'ring-primary-500 dark:ring-primary-400', + + // Transitions + 'transition duration-200', + + // Misc + 'cursor-grab', + 'touch-action-none' + ] + }), + startHandler: ({ props }) => ({ + class: [ + 'flex items-center justify-center', + + // Size + 'h-[20px]', + 'w-[20px]', + { + 'top-[50%] -mt-[10px] -ml-[10px]': props.orientation == 'horizontal', + 'left-[50%] -mb-[10px] -ml-[10px]': props.orientation == 'vertical' + }, + + // Shape + 'rounded-full', + + 'before:block before:w-[16px] before:h-[16px] before:rounded-full before:bg-surface-0 dark:before:bg-surface-950 before:shadow-md', + + // Colors + 'bg-surface-200 dark:bg-surface-800', + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-1', + 'ring-primary-500 dark:ring-primary-400', + + // Transitions + 'transition duration-200', + + // Misc + 'cursor-grab', + 'touch-action-none' + ] + }), + endHandler: ({ props }) => ({ + class: [ + 'flex items-center justify-center', + + // Size + 'h-[20px]', + 'w-[20px]', + { + 'top-[50%] -mt-[10px] -ml-[10px]': props.orientation == 'horizontal', + 'left-[50%] -mb-[10px] -ml-[10px]': props.orientation == 'vertical' + }, + + // Shape + 'rounded-full', + + 'before:block before:w-[16px] before:h-[16px] before:rounded-full before:bg-surface-0 dark:before:bg-surface-950 before:shadow-md', + + // Colors + 'bg-surface-200 dark:bg-surface-800', + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-1', + 'ring-primary-500 dark:ring-primary-400', + + // Transitions + 'transition duration-200', + + // Misc + 'cursor-grab', + 'touch-action-none' + ] + }) +}; diff --git a/src/presets/aura/speeddial/index.js b/src/presets/aura/speeddial/index.js new file mode 100644 index 0000000..db9ea04 --- /dev/null +++ b/src/presets/aura/speeddial/index.js @@ -0,0 +1,57 @@ +export default { + root: ({ state }) => ({ + class: [ + 'static flex gap-2', + { + '[&_[data-pc-name=pcbutton]]:rotate-45': state.d_visible, + '[&_[data-pc-name=pcbutton]]:rotate-0': !state.d_visible + } + ] + }), + list: { + class: [ + // Spacing + 'm-0 p-0', + + // Layout & Flexbox + 'list-none flex items-center justify-center', + + // Transitions + 'transition delay-200', + + // Z-Index (Positioning) + 'z-20' + ] + }, + item: ({ props, context }) => ({ + class: [ + 'transform transition-transform duration-200 ease-out transition-opacity duration-800', + + // Conditional Appearance + context.hidden ? 'opacity-0 scale-0' : 'opacity-100 scale-100', + + // Conditional Spacing + { + 'my-1 first:mb-2': props.direction == 'up' && props.type == 'linear', + 'my-1 first:mt-2': props.direction == 'down' && props.type == 'linear', + 'mx-1 first:mr-2': props.direction == 'left' && props.type == 'linear', + 'mx-1 first:ml-2': props.direction == 'right' && props.type == 'linear' + }, + + // Conditional Positioning + { absolute: props.type !== 'linear' } + ] + }), + mask: ({ state }) => ({ + class: [ + // Base Styles + 'absolute left-0 top-0 w-full h-full transition-opacity duration-250 ease-in-out bg-black/40 z-0', + + // Conditional Appearance + { + 'opacity-0 pointer-events-none': !state.d_visible, + 'opacity-100 transition-opacity duration-400 ease-in-out': state.d_visible + } + ] + }) +}; diff --git a/src/presets/aura/splitbutton/index.js b/src/presets/aura/splitbutton/index.js new file mode 100644 index 0000000..cdb13d0 --- /dev/null +++ b/src/presets/aura/splitbutton/index.js @@ -0,0 +1,19 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flexbox and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + { 'shadow-lg': props.raised }, + + '[&>[data-pc-name=pcbutton]]:rounded-tr-none', + '[&>[data-pc-name=pcbutton]]:rounded-br-none', + '[&>[data-pc-name=pcdropdown]]:rounded-tl-none', + '[&>[data-pc-name=pcdropdown]]:rounded-bl-none', + '[&>[data-pc-name=pcmenu]]:min-w-full' + ] + }) +}; diff --git a/src/presets/aura/splitter/index.js b/src/presets/aura/splitter/index.js new file mode 100644 index 0000000..412d03f --- /dev/null +++ b/src/presets/aura/splitter/index.js @@ -0,0 +1,68 @@ +export default { + root: ({ context }) => ({ + class: [ + // Colors + 'bg-surface-0', + 'dark:bg-surface-900', + 'text-surface-700', + 'dark:text-surface-0/80', + + // Shape + 'rounded-md', + + // Borders (Conditional) + { 'border border-solid border-surface-200 dark:border-surface-700': !context.nested }, + + // Nested + { 'flex grow border-0': context.nested } + ] + }), + + gutter: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + 'items-center', + 'justify-center', + 'shrink-0', + + // Colors + 'bg-surface-100', + 'dark:bg-surface-700', + + // Transitions + 'transition-all', + 'duration-200', + + // Misc + { + 'cursor-col-resize': props.layout == 'horizontal', + 'cursor-row-resize': props.layout !== 'horizontal' + } + ] + }), + gutterhandler: ({ props }) => ({ + class: [ + 'z-20', + // Colors + 'bg-surface-100', + 'dark:bg-surface-700', + + // Shape + 'rounded-md', + + //States + 'focus:outline-none focus:outline-offset-0 focus-visible:ring-1 focus-visible:ring-primary-400 dark:focus-visible:ring-primary-300', + + // Transitions + 'transition-all', + 'duration-200', + + // Sizing (Conditional) + { + 'h-[1.70rem]': props.layout == 'horizontal', + 'w-[1.70rem] h-2': props.layout !== 'horizontal' + } + ] + }) +}; diff --git a/src/presets/aura/splitterpanel/index.js b/src/presets/aura/splitterpanel/index.js new file mode 100644 index 0000000..6a21cd3 --- /dev/null +++ b/src/presets/aura/splitterpanel/index.js @@ -0,0 +1,5 @@ +export default { + root: ({ context }) => ({ + class: ['grow', { flex: context.nested }] + }) +}; diff --git a/src/presets/aura/step/index.js b/src/presets/aura/step/index.js new file mode 100644 index 0000000..bcfe7c0 --- /dev/null +++ b/src/presets/aura/step/index.js @@ -0,0 +1,62 @@ +export default { + root: ({ context }) => ({ + class: ['relative flex flex-auto items-center gap-2 p-2 last-of-type:flex-[initial]', { 'cursor-default pointer-events-none select-none opacity-60': context.disabled }, '[&_[data-pc-section=separator]]:has-[~[data-p-active=true]]:bg-primary'] + }), + header: ({ props, context }) => ({ + class: [ + 'inline-flex items-center border-0 cursor-pointer rounded-md outline-transparent bg-transparent p-0 gap-2', + 'focus:outline-none focus:outline-offset-0 focus-visible:ring-1 ring-inset focus-visible:ring-primary-400 dark:focus-visible:ring-primary-300', + { '!cursor-default': context.active }, + { 'cursor-auto': props.linear } + ] + }), + number: ({ context }) => ({ + class: [ + // Flexbox + 'flex', + 'items-center', + 'justify-center', + + //Colors + 'border-solid border-2 border-surface-200 dark:border-surface-700', + + // Colors (Conditional) + context.active ? 'text-primary' : 'text-surface-900 dark:text-surface-0', // Adjust colors as needed + + // Size and Shape + 'min-w-[2rem]', + 'h-[2rem]', + 'line-height-[2rem]', + 'rounded-full', + + // Text + 'text-lg', + + // Transitions + 'transition', + 'transition-colors', + 'transition-shadow', + 'duration-200' + ] + }), + title: ({ context }) => ({ + class: [ + // Layout + 'block', + 'whitespace-nowrap', + 'overflow-hidden', + 'text-ellipsis', + 'max-w-full', + + // Text + context.active ? 'text-primary' : 'text-surface-700 dark:text-surface-0/80', + 'font-medium', + + // Transitions + 'transition', + 'transition-colors', + 'transition-shadow', + 'duration-200' + ] + }) +}; diff --git a/src/presets/aura/stepitem/index.js b/src/presets/aura/stepitem/index.js new file mode 100644 index 0000000..31235fb --- /dev/null +++ b/src/presets/aura/stepitem/index.js @@ -0,0 +1,11 @@ +export default { + root: ({ state }) => ({ + class: [ + 'flex flex-col flex-[initial] has-[[data-pc-name=steppanels]]:px-2 has-[[data-pc-name=steppanels]]:pt-3.5 has-[[data-pc-name=steppanels]]:pb-[1.125rem]', + { 'flex-auto': state.isActive }, + '[&>[data-pc-name=step]]:flex-[initial]', + '[&>[data-pc-name=steppanel]]:flex [&>[data-pc-name=steppanel]]:flex-auto [&>[data-pc-name=steppanel]>[data-pc-section=content]]:w-full [&>[data-pc-name=steppanel]>[data-pc-section=content]]:pl-4 [&:last-child>[data-pc-name=steppanel]>[data-pc-section=content]]:ps-8', + '[&>[data-pc-name=steppanel]>[data-pc-section=separator]]:relative [&>[data-pc-name=steppanel]>[data-pc-section=separator]]:!flex-initial [&>[data-pc-name=steppanel]>[data-pc-section=separator]]:shrink-0 [&>[data-pc-name=steppanel]>[data-pc-section=separator]]:w-[2px] [&>[data-pc-name=steppanel]>[data-pc-section=separator]]:h-auto [&>[data-pc-name=steppanel]>[data-pc-section=separator]]:m-2 [&>[data-pc-name=steppanel]>[data-pc-section=separator]]:left-[-2px] [&>[data-pc-name=steppanel]>[data-pc-section=separator]]:ml-[1.625rem]' + ] + }) +}; diff --git a/src/presets/aura/steplist/index.js b/src/presets/aura/steplist/index.js new file mode 100644 index 0000000..6135229 --- /dev/null +++ b/src/presets/aura/steplist/index.js @@ -0,0 +1,3 @@ +export default { + root: 'relative flex justify-between items-center m-0 p-0 list-none overflow-x-auto' +}; diff --git a/src/presets/aura/steppanels/index.js b/src/presets/aura/steppanels/index.js new file mode 100644 index 0000000..75b5bc7 --- /dev/null +++ b/src/presets/aura/steppanels/index.js @@ -0,0 +1,3 @@ +export default { + root: 'px-2 pt-3.5 pb-[1.125rem]' +}; diff --git a/src/presets/aura/stepper/index.js b/src/presets/aura/stepper/index.js new file mode 100644 index 0000000..8071926 --- /dev/null +++ b/src/presets/aura/stepper/index.js @@ -0,0 +1,13 @@ +export default { + root: 'has-[[data-pc-name=stepitem]]:flex has-[[data-pc-name=stepitem]]:flex-col', + separator: 'flex-1 w-full h-[2px] bg-surface-200 dark:bg-surface-700 transition-shadow duration-200', + transition: { + class: ['flex flex-1', 'bg-surface-0 dark:bg-surface-900', 'text-surface-900 dark:text-surface-0'], + enterFromClass: 'max-h-0', + enterActiveClass: 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } +}; diff --git a/src/presets/aura/steps/index.js b/src/presets/aura/steps/index.js new file mode 100644 index 0000000..f4cb711 --- /dev/null +++ b/src/presets/aura/steps/index.js @@ -0,0 +1,113 @@ +export default { + root: { + class: 'relative' + }, + menu: { + class: 'p-0 m-0 list-none flex' + }, + menuitem: { + class: [ + // Flexbox and Position + 'relative', + 'flex', + 'justify-center', + 'flex-1', + 'overflow-hidden', + + // Before + 'before:border-t-2', + 'before:border-surface-200', + 'before:dark:border-surface-700', + 'before:w-full', + '[&:first-child]:before:w-[calc(50%+1rem)]', + '[&:last-child]:before:w-1/2', + 'before:absolute', + 'before:top-1/2', + 'before:left-0', + 'before:transform', + 'before:mt-[calc(-1rem+1px)]', + '[&:first-child]:before:translate-x-[100%]' + ] + }, + action: ({ props }) => ({ + class: [ + // Flexbox + 'inline-flex items-center', + 'flex-col', + + // Transitions and Shape + 'transition-shadow', + 'rounded-md', + + // Colors + 'bg-surface-0', + 'dark:bg-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Misc + 'overflow-hidden', + { 'cursor-pointer': !props.readonly } + ] + }), + step: ({ context, props }) => ({ + class: [ + // Flexbox + 'flex items-center justify-center', + + // Position + 'z-20', + + // Shape + 'rounded-full', + 'border-2', + + // Size + 'w-8', + 'h-8', + 'text-sm', + 'leading-[2rem]', + 'font-medium', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'border-surface-100 dark:border-surface-700', + { + 'text-surface-400 dark:text-white/60': !context.active, + 'text-primary': context.active + }, + + // States + { + 'hover:border-surface-300 dark:hover:border-surface-500': !context.active && !props.readonly + }, + + // Transition + 'transition-colors duration-200 ease-in-out' + ] + }), + label: ({ context }) => ({ + class: [ + // Font + 'leading-[normal]', + 'font-medium', + + // Display + 'block', + + // Spacing + 'mt-2', + + // Colors + { 'text-surface-700 dark:text-white/70': !context.active, 'text-primary': context.active }, + + // Text and Overflow + 'whitespace-nowrap', + 'overflow-hidden', + 'overflow-ellipsis', + 'max-w-full' + ] + }) +}; diff --git a/src/presets/aura/tab/index.js b/src/presets/aura/tab/index.js new file mode 100644 index 0000000..a5117e7 --- /dev/null +++ b/src/presets/aura/tab/index.js @@ -0,0 +1,38 @@ +export default { + root: ({ props, context }) => ({ + class: [ + 'relative shrink-0', + + // Shape + 'border-b', + 'rounded-t-md', + + // Spacing + 'py-4 px-[1.125rem]', + '-mb-px', + + // Colors and Conditions + 'outline-transparent', + { + 'border-surface-200 dark:border-surface-700': !context.active, + 'bg-surface-0 dark:bg-surface-900': !context.active, + 'text-surface-700 dark:text-surface-0/80': !context.active, + + 'bg-surface-0 dark:bg-surface-900': context.active, + 'text-primary': context.active, + + 'opacity-60 cursor-default user-select-none select-none pointer-events-none': props?.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus-visible:ring-1 ring-inset focus-visible:ring-primary-400 dark:focus-visible:ring-primary-300', + + // Transitions + 'transition-all duration-200', + + // Misc + 'cursor-pointer select-none whitespace-nowrap', + 'user-select-none' + ] + }) +}; diff --git a/src/presets/aura/tablist/index.js b/src/presets/aura/tablist/index.js new file mode 100644 index 0000000..80801c6 --- /dev/null +++ b/src/presets/aura/tablist/index.js @@ -0,0 +1,8 @@ +export default { + root: 'relative flex', + content: 'overflow-x-auto overflow-y-hidden scroll-smooth overscroll-x-contain overscroll-y-auto [&::-webkit-scrollbar]:hidden grow', + tabList: 'relative flex border-solid border-b border-surface-200 dark:border-surface-700', + nextButton: '!absolute top-0 right-0 z-20 h-full w-10 flex items-center justify-center text-surface-700 dark:text-surface-0/80 bg-surface-0 dark:bg-surface-900 outline-transparent cursor-pointer shrink-0', + prevButton: '!absolute top-0 left-0 z-20 h-full w-10 flex items-center justify-center text-surface-700 dark:text-surface-0/80 bg-surface-0 dark:bg-surface-900 outline-transparent cursor-pointer shrink-0', + activeBar: 'z-10 block absolute h-[1px] bottom-[-1px] bg-primary' +}; diff --git a/src/presets/aura/tabmenu/index.js b/src/presets/aura/tabmenu/index.js new file mode 100644 index 0000000..e0cd44e --- /dev/null +++ b/src/presets/aura/tabmenu/index.js @@ -0,0 +1,70 @@ +export default { + root: { + class: 'overflow-x-auto' + }, + menu: { + class: [ + // Flexbox + 'flex flex-1', + + // Spacing + 'list-none', + 'p-0 m-0', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'border-b-2 border-surface-200 dark:border-surface-700', + 'text-surface-900 dark:text-surface-0/80' + ] + }, + menuitem: { + class: 'mr-0' + }, + action: ({ context, state }) => ({ + class: [ + 'relative', + + // Font + 'font-semibold leading-none', + + // Flexbox and Alignment + 'flex items-center', + + // Spacing + 'py-4 px-[1.125rem]', + '-mb-px', + + // Shape + 'border-b', + 'rounded-t-md', + + // Colors and Conditions + { + 'border-surface-200 dark:border-surface-700': state.d_activeIndex !== context.index, + 'bg-surface-0 dark:bg-surface-900': state.d_activeIndex !== context.index, + 'text-surface-700 dark:text-surface-0/80': state.d_activeIndex !== context.index, + + 'bg-surface-0 dark:bg-surface-900': state.d_activeIndex === context.index, + 'border-primary': state.d_activeIndex === context.index, + 'text-primary': state.d_activeIndex === context.index + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus-visible:ring-1 ring-inset focus-visible:ring-primary-400 dark:focus-visible:ring-primary-300', + { + 'hover:text-surface-900 dark:hover:text-surface-0': state.d_activeIndex !== context.index + }, + + // Transitions + 'transition-all duration-200', + + // Misc + 'cursor-pointer select-none text-decoration-none', + 'overflow-hidden', + 'user-select-none' + ] + }), + icon: { + class: 'mr-2' + } +}; diff --git a/src/presets/aura/tabpanel/index.js b/src/presets/aura/tabpanel/index.js new file mode 100644 index 0000000..854f508 --- /dev/null +++ b/src/presets/aura/tabpanel/index.js @@ -0,0 +1,3 @@ +export default { + root: 'focus:outline-none focus:outline-offset-0 focus-visible:ring-1 ring-inset focus-visible:ring-primary-400 dark:focus-visible:ring-primary-300' +}; diff --git a/src/presets/aura/tabpanels/index.js b/src/presets/aura/tabpanels/index.js new file mode 100644 index 0000000..662573d --- /dev/null +++ b/src/presets/aura/tabpanels/index.js @@ -0,0 +1,3 @@ +export default { + root: 'bg-surface-0 dark:bg-surface-900 text-surface-900 dark:text-surface-0/80 outline-0 p-[1.125rem] pt-[0.875rem]' +}; diff --git a/src/presets/aura/tabs/index.js b/src/presets/aura/tabs/index.js new file mode 100644 index 0000000..0e69458 --- /dev/null +++ b/src/presets/aura/tabs/index.js @@ -0,0 +1,5 @@ +export default { + root: ({ props }) => ({ + class: ['flex flex-col', { '[&>[data-pc-name=tablist]]:overflow-hidden': props.scrollable }] + }) +}; diff --git a/src/presets/aura/tabview/index.js b/src/presets/aura/tabview/index.js new file mode 100644 index 0000000..3a3005c --- /dev/null +++ b/src/presets/aura/tabview/index.js @@ -0,0 +1,156 @@ +export default { + // For PrimeVue version 3 + navContainer: ({ props }) => ({ + class: [ + // Position + 'relative', + + // Misc + { 'overflow-hidden': props.scrollable } + ] + }), + navContent: ({ instance }) => ({ + class: [ + // Overflow and Scrolling + 'overflow-y-hidden overscroll-contain', + 'overscroll-auto', + 'scroll-smooth', + '[&::-webkit-scrollbar]:hidden' + ] + }), + previousButton: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + + // Position + '!absolute', + 'top-0 left-0', + 'z-20', + + // Size and Shape + 'h-full w-10', + 'rounded-none', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80', + 'shadow-sm' + ] + }, + nextButton: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + + // Position + '!absolute', + 'top-0 right-0', + 'z-20', + + // Size and Shape + 'h-full w-10', + 'rounded-none', + + // Colors + 'text-surface-700 dark:text-surface-0/80', + 'bg-surface-0 dark:bg-surface-900', + 'shadow-sm' + ] + }, + nav: { + class: [ + // Flexbox + 'flex flex-1', + + // Spacing + 'list-none', + 'p-0 m-0', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'border-b border-surface-200 dark:border-surface-700', + 'text-surface-900 dark:text-surface-0/80' + ] + }, + tabpanel: { + header: ({ props }) => ({ + class: [ + // Spacing + 'mr-0', + + // Misc + 'outline-none', + { + 'opacity-60 cursor-default user-select-none select-none pointer-events-none': props?.disabled + } + ] + }), + headerAction: ({ parent, context }) => ({ + class: [ + 'relative', + + // Font + 'font-semibold', + + // Flexbox and Alignment + 'flex items-center', + + // Spacing + 'py-4 px-[1.125rem]', + '-mb-px', + + // Shape + 'border-b-2', + 'rounded-t-md', + + // Colors and Conditions + { + 'border-surface-200 dark:border-surface-700': parent.state.d_activeIndex !== context.index, + 'bg-surface-0 dark:bg-surface-900': parent.state.d_activeIndex !== context.index, + 'text-surface-700 dark:text-surface-0/80': parent.state.d_activeIndex !== context.index, + + 'bg-surface-0 dark:bg-surface-900': parent.state.d_activeIndex === context.index, + 'border-primary': parent.state.d_activeIndex === context.index, + 'text-primary': parent.state.d_activeIndex === context.index + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus-visible:ring-1 ring-inset focus-visible:ring-primary-400 dark:focus-visible:ring-primary-300', + { + 'hover:bg-surface-0 dark:hover:bg-surface-800/80': parent.state.d_activeIndex !== context.index, + 'hover:text-surface-900 dark:hover:text-surface-0': parent.state.d_activeIndex !== context.index + }, + + // Transitions + 'transition-all duration-200', + + // Misc + 'cursor-pointer select-none text-decoration-none', + 'overflow-hidden', + 'user-select-none' + ] + }), + headerTitle: { + class: [ + // Text + 'leading-none', + 'whitespace-nowrap' + ] + } + }, + panelcontainer: { + class: [ + // Spacing + 'p-[1.125rem] pt-[0.875rem]', + + // Shape + 'border-0 rounded-none', + 'border-br-md border-bl-md', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-900 dark:text-surface-0/80' + ] + } +}; diff --git a/src/presets/aura/tag/index.js b/src/presets/aura/tag/index.js new file mode 100644 index 0000000..6cebd68 --- /dev/null +++ b/src/presets/aura/tag/index.js @@ -0,0 +1,37 @@ +export default { + root: ({ props }) => ({ + class: [ + //Font + 'text-xs font-bold', + + //Alignments + 'inline-flex items-center justify-center', + + //Spacing + 'px-[0.4rem] py-1', + + //Shape + { + 'rounded-md': !props.rounded, + 'rounded-full': props.rounded + }, + + //Colors + { + 'bg-highlight': props.severity === null || props.severity === 'primary', + 'text-green-700 dark:text-green-300 bg-green-100 dark:bg-green-500/20': props.severity === 'success', + 'text-surface-700 dark:text-surface-300 bg-surface-100 dark:bg-surface-500/20': props.severity === 'secondary', + 'text-blue-700 dark:text-blue-300 bg-blue-100 dark:bg-blue-500/20': props.severity === 'info', + 'text-orange-700 dark:text-orange-300 bg-orange-100 dark:bg-orange-500/20': props.severity === 'warn', + 'text-red-700 dark:text-red-300 bg-red-100 dark:bg-red-500/20': props.severity === 'danger', + 'text-surface-0 dark:text-surface-900 bg-surface-900 dark:bg-surface-0': props.severity === 'contrast' + } + ] + }), + value: { + class: 'leading-normal' + }, + icon: { + class: 'mr-1 text-sm' + } +}; diff --git a/src/presets/aura/terminal/index.js b/src/presets/aura/terminal/index.js new file mode 100644 index 0000000..d714566 --- /dev/null +++ b/src/presets/aura/terminal/index.js @@ -0,0 +1,60 @@ +export default { + root: { + class: [ + // Spacing + 'py-2 px-3', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-950 text-surface-700 dark:text-surface-0', + 'border border-surface-200 dark:border-surface-700', + + // Sizing & Overflow + 'h-72 overflow-auto' + ] + }, + container: { + class: [ + // Flexbox + 'flex items-center' + ] + }, + prompt: { + class: [ + // Color + 'text-surface-700 dark:text-surface-0' + ] + }, + response: { + class: [ + // Color + 'text-surface-700 dark:text-surface-0' + ] + }, + command: { + class: [ + // Color + 'text-surface-700 dark:text-surface-0' + ] + }, + commandtext: { + class: [ + // Flexbox + 'flex-1 shrink grow-0', + + // Shape + 'border-0', + + // Spacing + 'p-0', + + // Color + 'bg-transparent text-inherit', + + // Outline + 'outline-none' + ] + } +}; diff --git a/src/presets/aura/textarea/index.js b/src/presets/aura/textarea/index.js new file mode 100644 index 0000000..4f72b9e --- /dev/null +++ b/src/presets/aura/textarea/index.js @@ -0,0 +1,41 @@ +export default { + root: ({ context, props, parent }) => ({ + class: [ + // Font + 'leading-none', + + // Spacing + 'm-0', + 'py-2 px-3', + + // Shape + 'rounded-md', + + // Colors + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + { 'bg-surface-0 dark:bg-surface-950': !context.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-surface-400 dark:hover:border-surface-600': !context.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10': !context.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': context.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && props.modelValue !== null && props.modelValue?.length !== 0 }, + + // Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }) +}; diff --git a/src/presets/aura/tieredmenu/index.js b/src/presets/aura/tieredmenu/index.js new file mode 100644 index 0000000..2911d28 --- /dev/null +++ b/src/presets/aura/tieredmenu/index.js @@ -0,0 +1,123 @@ +export default { + root: { + class: [ + // Shape + 'rounded-md', + + // Size + 'min-w-[12rem]', + 'p-1', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-200 dark:border-surface-700' + ] + }, + rootList: { + class: [ + // Spacings and Shape + 'list-none', + 'flex flex-col', + 'm-0 p-0', + 'outline-none' + ] + }, + item: { + class: 'relative my-[2px] [&:first-child]:mt-0' + }, + itemContent: ({ context }) => ({ + class: [ + //Shape + 'rounded-[4px]', + + // Colors + 'text-surface-700 dark:text-white/80', + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200': context.focused && !context.active, + 'bg-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // States + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.active, + 'hover:bg-highlight-emphasis': context.active + }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled } + ] + }), + itemLink: { + class: [ + 'relative', + // Flexbox + + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + + // Color + 'text-surface-700 dark:text-white/80', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + itemIcon: { + class: [ + // Spacing + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + itemLabel: { + class: ['leading-none'] + }, + submenuIcon: { + class: [ + // Position + 'ml-auto' + ] + }, + submenu: { + class: [ + // Spacing + 'flex flex-col', + 'm-0', + 'p-1', + 'list-none', + 'min-w-[12.5rem]', + + // Shape + 'shadow-none sm:shadow-md', + 'border border-surface-200 dark:border-surface-700', + + // Position + 'static sm:absolute', + 'z-10', + + // Color + 'bg-surface-0 dark:bg-surface-900' + ] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-[2px]' + }, + transition: { + enterFromClass: 'opacity-0', + enterActiveClass: 'transition-opacity duration-250' + } +}; diff --git a/src/presets/aura/timeline/index.js b/src/presets/aura/timeline/index.js new file mode 100644 index 0000000..330a45f --- /dev/null +++ b/src/presets/aura/timeline/index.js @@ -0,0 +1,88 @@ +export default { + root: ({ props }) => ({ + class: [ + 'flex grow', + { + 'flex-col': props.layout === 'vertical', + 'flex-row': props.layout === 'horizontal' + } + ] + }), + event: ({ props, context }) => ({ + class: [ + 'flex relative min-h-[70px]', + { + 'flex-row-reverse': props.align === 'right' || (props.layout === 'vertical' && props.align === 'alternate' && context.index % 2 === 1), + 'flex-col [&:not(:last-child)]:flex-1': props.layout === 'horizontal', + 'flex-col-reverse ': props.align === 'bottom' || (props.layout === 'horizontal' && props.align === 'alternate' && context.index % 2 === 1) + } + ] + }), + eventOpposite: ({ props, context }) => ({ + class: [ + 'flex-1', + { + 'px-4': props.layout === 'vertical', + 'py-4': props.layout === 'horizontal' + }, + { + 'text-right': props.align === 'left' || (props.layout === 'vertical' && props.align === 'alternate' && context.index % 2 === 0), + 'text-left': props.align === 'right' || (props.layout === 'vertical' && props.align === 'alternate' && context.index % 2 === 1) + } + ] + }), + eventSeparator: ({ props }) => ({ + class: [ + 'flex items-center flex-initial', + { + 'flex-col': props.layout === 'vertical', + 'flex-row': props.layout === 'horizontal' + } + ] + }), + eventMarker: { + class: [ + 'relative', + + // Display & Flexbox + 'inline-flex items-center justify-center', + + // Size + 'w-[1.125rem] h-[1.125rem]', + + // Appearance + 'rounded-full border-2 border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-950', + + // Before + 'before:rounded-full before:w-[0.375rem] before:h-[0.375rem] before:bg-primary', + // After + 'after:absolute after:rounded-full after:w-full after:h-full after:shadow-sm' + ] + }, + eventConnector: ({ props }) => ({ + class: [ + 'grow bg-surface-300 dark:bg-surface-700', + { + 'w-[2px]': props.layout === 'vertical', + 'w-full h-[2px]': props.layout === 'horizontal' + } + ] + }), + eventContent: ({ props, context }) => ({ + class: [ + 'flex-1', + { + 'px-4': props.layout === 'vertical', + 'py-4': props.layout === 'horizontal' + }, + { + 'text-left': props.align === 'left' || (props.layout === 'vertical' && props.align === 'alternate' && context.index % 2 === 0), + 'text-right': props.align === 'right' || (props.layout === 'vertical' && props.align === 'alternate' && context.index % 2 === 1) + }, + { + 'min-h-0': props.layout === 'vertical' && context.index === context.count - 1, + 'grow-0': props.layout === 'horizontal' && context.index === context.count - 1 + } + ] + }) +}; diff --git a/src/presets/aura/toast/index.js b/src/presets/aura/toast/index.js new file mode 100644 index 0000000..7664159 --- /dev/null +++ b/src/presets/aura/toast/index.js @@ -0,0 +1,117 @@ +export default { + root: ({ props }) => ({ + class: [ + //Size and Shape + 'w-96 rounded-md', + + // Positioning + { '-translate-x-2/4': props.position == 'top-center' || props.position == 'bottom-center' } + ] + }), + message: ({ props }) => ({ + class: [ + 'mb-4 rounded-md w-full', + 'border border-transparent', + 'backdrop-blur-[10px] shadow-md', + + // Colors + { + 'bg-blue-50/90 dark:bg-blue-500/20': props.message.severity == 'info', + 'bg-green-50/90 dark:bg-green-500/20': props.message.severity == 'success', + 'bg-surface-50 dark:bg-surface-800': props.message.severity == 'secondary', + 'bg-orange-50/90 dark:bg-orange-500/20': props.message.severity == 'warn', + 'bg-red-50/90 dark:bg-red-500/20': props.message.severity == 'error', + 'bg-surface-950 dark:bg-surface-0': props.message.severity == 'contrast' + }, + { + 'border-blue-200 dark:border-blue-500/20': props.message.severity == 'info', + 'border-green-200 dark:border-green-500/20': props.message.severity == 'success', + 'border-surface-300 dark:border-surface-500/20': props.message.severity == 'secondary', + 'border-orange-200 dark:border-orange-500/20': props.message.severity == 'warn', + 'border-red-200 dark:border-red-500/20': props.message.severity == 'error', + 'border-surface-950 dark:border-surface-0': props.message.severity == 'contrast' + }, + { + 'text-blue-700 dark:text-blue-300': props.message.severity == 'info', + 'text-green-700 dark:text-green-300': props.message.severity == 'success', + 'text-surface-700 dark:text-surface-300': props.message.severity == 'secondary', + 'text-orange-700 dark:text-orange-300': props.message.severity == 'warn', + 'text-red-700 dark:text-red-300': props.message.severity == 'error', + 'text-surface-0 dark:text-surface-950': props.message.severity == 'contrast' + } + ] + }), + messageContent: ({ props }) => ({ + class: [ + 'flex p-3', + { + 'items-start': props.message.summary, + 'items-center': !props.message.summary + } + ] + }), + messageIcon: ({ props }) => ({ + class: [ + // Sizing and Spacing + props.message.severity === 'contrast' || props.message.severity === 'secondary' ? 'w-0' : 'w-[1.125rem] h-[1.125rem] mr-2', + 'text-lg leading-[normal]' + ] + }), + messageText: { + class: [ + // Font and Text + 'text-base leading-[normal]', + 'ml-2', + 'flex-1' + ] + }, + summary: { + class: 'font-medium block' + }, + detail: ({ props }) => ({ + class: ['block', 'text-sm', props.message.severity === 'contrast' ? 'text-surface-0 dark:text-surface-950' : 'text-surface-700 dark:text-surface-0', { 'mt-2': props.message.summary }] + }), + closeButton: ({ props }) => ({ + class: [ + // Flexbox + 'flex items-center justify-center', + + // Size + 'w-7 h-7', + + // Spacing and Misc + 'ml-auto relative', + + // Shape + 'rounded-full', + + // Colors + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:bg-surface-0/30 dark:hover:bg-[rgba(255,255,255,0.03)]', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + { + 'focus:ring-blue-500 dark:focus:ring-blue-400': props.severity == 'info', + 'focus:ring-green-500 dark:focus:ring-green-400': props.severity == 'success', + 'focus:ring-surface-500 dark:focus:ring-surface-400': props.severity == 'secondary', + 'focus:ring-orange-500 dark:focus:ring-orange-400': props.severity == 'warn', + 'focus:ring-red-500 dark:focus:ring-red-4000': props.severity == 'error', + 'focus:ring-surface-0 dark:focus:ring-surface-950': props.severity == 'contrast' + }, + + // Misc + 'overflow-hidden' + ] + }), + transition: { + enterFromClass: 'opacity-0 translate-y-2/4', + enterActiveClass: 'transition-[transform,opacity] duration-300', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: '!transition-[max-height_.45s_cubic-bezier(0,1,0,1),opacity_.3s,margin-bottom_.3s] overflow-hidden', + leaveToClass: 'max-h-0 opacity-0 mb-0' + } +}; diff --git a/src/presets/aura/togglebutton/index.js b/src/presets/aura/togglebutton/index.js new file mode 100644 index 0000000..4a29de0 --- /dev/null +++ b/src/presets/aura/togglebutton/index.js @@ -0,0 +1,43 @@ +export default { + root: ({ props, context }) => ({ + class: [ + 'relative', + + // Alignment + 'flex items-center justify-center', + 'py-2 px-4', + 'rounded-md border', + + // Color + 'bg-surface-100 dark:bg-surface-950', + { + 'text-surface-600 dark:text-white/60 before:bg-transparent': !context.active, + 'text-surface-800 dark:text-white/80 before:bg-surface-0 dark:before:bg-surface-800': context.active + }, + + // States + { + 'hover:text-surface-800 dark:hover:text-white/80': !props.disabled && !props.modelValue, + 'focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400': !props.disabled + }, + + // Invalid State + { + 'border-red-500 dark:border-red-400': props.invalid, + 'border-surface-100 dark:border-surface-950': !props.invalid + }, + + // Before + 'before:absolute before:left-1 before:top-1 before:w-[calc(100%-0.5rem)] before:h-[calc(100%-0.5rem)] before:rounded-[4px] before:z-0', + + // Transitions + 'transition-all duration-200', + + // Misc + { 'cursor-pointer': !props.disabled, 'opacity-60 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + content: 'relative items-center inline-flex justify-center gap-2', + label: 'font-medium leading-[normal] text-center w-full z-10 relative', + icon: 'relative z-10 mr-2' +}; diff --git a/src/presets/aura/toggleswitch/index.js b/src/presets/aura/toggleswitch/index.js new file mode 100644 index 0000000..8d30dfe --- /dev/null +++ b/src/presets/aura/toggleswitch/index.js @@ -0,0 +1,80 @@ +export default { + root: ({ props }) => ({ + class: [ + 'inline-block relative', + 'w-10 h-6', + 'rounded-2xl', + { + 'opacity-60 select-none pointer-events-none cursor-default': props.disabled + } + ] + }), + slider: ({ props }) => ({ + class: [ + // Position + 'absolute top-0 left-0 right-0 bottom-0', + { 'before:transform before:translate-x-4': props.modelValue == props.trueValue }, + + // Shape + 'rounded-2xl', + + // Before: + 'before:absolute before:top-1/2 before:left-1', + 'before:-mt-2', + 'before:h-4 before:w-4', + 'before:rounded-full', + 'before:duration-200', + 'before:bg-surface-0 before:dark:bg-surface-500', + + // Colors + 'border', + { + 'bg-surface-300 dark:bg-surface-800': !(props.modelValue == props.trueValue), + 'bg-primary': props.modelValue == props.trueValue, + 'before:dark:bg-surface-950': props.modelValue == props.trueValue, + 'border-transparent': !props.invalid + }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { 'peer-hover:bg-surface-400 dark:peer-hover:bg-surface-700': !(props.modelValue == props.trueValue) && !props.disabled && !props.invalid }, + { 'peer-hover:bg-primary-hover': props.modelValue == props.trueValue && !props.disabled && !props.invalid }, + 'peer-focus-visible:ring-1 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400', + + // Transition + 'transition-colors duration-200', + + // Misc + 'cursor-pointer' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-2xl', + 'outline-none', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + } +}; diff --git a/src/presets/aura/toolbar/index.js b/src/presets/aura/toolbar/index.js new file mode 100644 index 0000000..6a825fe --- /dev/null +++ b/src/presets/aura/toolbar/index.js @@ -0,0 +1,28 @@ +export default { + root: { + class: [ + // Flex & Alignment + 'flex items-center justify-between flex-wrap', + 'gap-2', + + // Spacing + 'p-3', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-200 dark:border-surface-700' + ] + }, + start: { + class: 'flex items-center' + }, + center: { + class: 'flex items-center' + }, + end: { + class: 'flex items-center' + } +}; diff --git a/src/presets/aura/tooltip/index.js b/src/presets/aura/tooltip/index.js new file mode 100644 index 0000000..212f767 --- /dev/null +++ b/src/presets/aura/tooltip/index.js @@ -0,0 +1,45 @@ +export default { + root: ({ context }) => ({ + class: [ + // Position and Shadows + 'absolute', + 'shadow-md', + 'p-fadein', + // Spacing + { + 'py-0 px-1': context?.right || context?.left || (!context?.right && !context?.left && !context?.top && !context?.bottom), + 'py-1 px-0': context?.top || context?.bottom + } + ] + }), + arrow: ({ context }) => ({ + class: [ + // Position + + 'absolute', + + // Size + 'w-0', + 'h-0', + + // Shape + 'border-transparent', + 'border-solid', + { + 'border-y-[10px] border-r-[10px] border-l-0 border-r-surface-700': context?.right || (!context?.right && !context?.left && !context?.top && !context?.bottom), + 'border-y-[10px] border-l-[10px] border-r-0 border-l-surface-700': context?.left, + 'border-x-[10px] border-t-[10px] border-b-0 border-t-surface-700': context?.top, + 'border-x-[10px] border-b-[10px] border-t-0 border-b-surface-700': context?.bottom + }, + + // Spacing + { + '-mt-[10px] top-1/2': context?.right || context?.left || (!context?.right && !context?.left && !context?.top && !context?.bottom), + '-ml-[10px] left-1/2': context?.top || context?.bottom + } + ] + }), + text: { + class: ['p-3', 'bg-surface-700', 'text-white', 'leading-none', 'rounded-md', 'whitespace-pre-line', 'break-words'] + } +}; diff --git a/src/presets/aura/tree/index.js b/src/presets/aura/tree/index.js new file mode 100644 index 0000000..d67cf9f --- /dev/null +++ b/src/presets/aura/tree/index.js @@ -0,0 +1,116 @@ +export default { + root: { + class: [ + // Space + 'p-4', + + // Shape + 'rounded-md', + 'border-none', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + '[&_[data-pc-name=pcfilter]]:w-full' + ] + }, + wrapper: { + class: ['overflow-auto'] + }, + container: { + class: [ + // Spacing + 'm-0 p-0', + + // Misc + 'list-none overflow-auto' + ] + }, + node: { + class: ['p-0 my-[2px] mx-0 first:mt-0', 'rounded-md', 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-inset focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10'] + }, + nodeContent: ({ context, props }) => ({ + class: [ + // Flex and Alignment + 'flex items-center', + + // Shape + 'rounded-md', + + // Spacing + 'py-1 px-2 gap-2', + + // Colors + context.selected ? 'bg-highlight text-primary-600 dark:text-white' : 'bg-transparent text-surface-600 dark:text-white/70', + + // States + { 'hover:bg-surface-50 dark:hover:bg-[rgba(255,255,255,0.03)]': (props.selectionMode == 'single' || props.selectionMode == 'multiple') && !context.selected }, + + // Transition + 'transition-shadow duration-200', + + { 'cursor-pointer select-none': props.selectionMode == 'single' || props.selectionMode == 'multiple' } + ] + }), + nodeToggleButton: ({ context }) => ({ + class: [ + // Flex and Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size + 'w-7 h-7', + + // Colors + 'bg-transparent', + { + 'text-surface-600 dark:text-white/70': !context.selected, + 'text-primary-600 dark:text-white': context.selected, + invisible: context.leaf + }, + + // States + 'hover:bg-surface-200/20 dark:hover:bg-surface-500/20', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none' + ] + }), + nodeIcon: ({ context }) => ({ + class: [ + // Space + 'mr-2', + + // Color + { + 'text-surface-600 dark:text-white/70': !context.selected, + 'text-primary-600 dark:text-white': context.selected + } + ] + }), + nodeLabel: ({ context }) => ({ + class: [ + { + 'text-surface-600 dark:text-white/70': !context.selected, + 'text-primary-600 dark:text-white': context.selected + } + ] + }), + nodeChildren: { + class: ['m-0 list-none p-0 pl-4 [&:not(ul)]:pl-0 [&:not(ul)]:my-[2px]'] + }, + loadingIcon: { + class: ['text-surface-500 dark:text-surface-0/70', 'absolute top-[50%] right-[50%] -mt-2 -mr-2 animate-spin'] + } + // pcFilterContainer: { + // root: { + // class: '[&>[data-pc-name=inputtext]]:w-full' + // } + // } +}; diff --git a/src/presets/aura/treeselect/index.js b/src/presets/aura/treeselect/index.js new file mode 100644 index 0000000..00c74e6 --- /dev/null +++ b/src/presets/aura/treeselect/index.js @@ -0,0 +1,99 @@ +export default { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + + // Color and Background + { 'bg-surface-0 dark:bg-surface-950': !props.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-700': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { 'hover:border-surface-400 dark:hover:border-surface-600': !props.invalid }, + { 'outline-none outline-offset-0 ring-1 ring-primary-500 dark:ring-primary-400 z-10': state.focused }, + + // Misc + 'cursor-pointer', + 'select-none', + { 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + labelContainer: { + class: ['overflow-hidden flex flex-auto cursor-pointer'] + }, + label: { + class: [ + 'block leading-[normal]', + + // Space + 'py-2 px-3', + + // Color + 'text-surface-800 dark:text-white/80', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden whitespace-nowrap cursor-pointer overflow-ellipsis' + ] + }, + dropdown: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-r-md' + ] + }, + panel: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + + // Shape + 'border border-surface-300 dark:border-surface-700', + 'rounded-md', + 'shadow-md' + ] + }, + treeContainer: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/src/presets/aura/treetable/index.js b/src/presets/aura/treetable/index.js new file mode 100644 index 0000000..48d7c6a --- /dev/null +++ b/src/presets/aura/treetable/index.js @@ -0,0 +1,314 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + { + 'flex flex-col h-full': props.scrollHeight === 'flex' + } + ] + }), + mask: { + class: [ + // Position + 'absolute', + 'top-0 left-0', + 'z-20', + + // Flex & Alignment + 'flex items-center justify-center', + + // Size + 'w-full h-full', + + // Color + 'bg-surface-100/40 dark:bg-surface-800/40', + + // Transition + 'transition duration-200' + ] + }, + loadingIcon: { + class: 'w-8 h-8 animate-spin' + }, + tableContainer: ({ props }) => ({ + class: [ + // Overflow + { + 'relative overflow-auto': props.scrollable, + 'overflow-x-auto': props.resizableColumns + } + ] + }), + header: ({ props }) => ({ + class: [ + 'font-semibold', + + // Shape + props.showGridlines ? 'border-x border-t border-b-0' : 'border-y border-x-0', + + // Spacing + 'p-4', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80' + ] + }), + footer: { + class: [ + 'font-semibold', + + // Shape + 'border-t-0 border-b border-x-0', + + // Spacing + 'p-4', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80' + ] + }, + table: { + class: [ + // Table & Width + 'border-collapse table-fixed w-full ' + ] + }, + thead: ({ props }) => ({ + class: [ + // Position & Z-index + { + 'top-0 z-40 sticky': props.scrollable + } + ] + }), + tbody: ({ props }) => ({ + class: [ + // Block Display + { + block: props.scrollable + } + ] + }), + tfoot: ({ props }) => ({ + class: [ + // Block Display + { + block: props.scrollable + } + ] + }), + headerRow: ({ props }) => ({ + class: [ + // Flexbox & Width + { + 'flex flex-nowrap w-full': props.scrollable + } + ] + }), + row: ({ context, props }) => ({ + class: [ + // Flex + { 'flex flex-nowrap w-full': context.scrollable }, + + // Color + 'text-surface-700 dark:text-white/80', + { 'bg-highlight': context.selected }, + { 'bg-surface-0 text-surface-600 dark:bg-surface-900': !context.selected }, + + // Hover & Flexbox + { + 'hover:bg-surface-100 dark:bg-surface-800/50': context.selectable && !context.selected + }, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 ring-inset dark:focus:ring-primary-400', + + // Transition + { 'transition duration-200': (props.selectionMode && !context.selected) || props.rowHover } + ] + }), + headerCell: ({ context, props }) => ({ + class: [ + 'font-semibold', + 'leading-[normal]', + + // Position + { 'sticky z-40': context.scrollable && context.scrollDirection === 'both' && context.frozen }, + + // Flex & Alignment + { + 'flex flex-1 items-center': context.scrollable, + 'flex-initial shrink-0': context.scrollable && context.scrollDirection === 'both' && !context.frozen + }, + 'text-left', + + // Shape + { 'first:border-l border-y border-r': context?.showGridlines }, + 'border-0 border-b border-solid', + + // Spacing + context?.size === 'small' ? 'py-[0.375rem] px-2' : context?.size === 'large' ? 'py-[0.9375rem] px-5' : 'py-3 px-4', + + // Color + (props.sortable === '' || props.sortable) && context.sorted ? 'bg-highlight' : 'bg-surface-0 text-surface-700 dark:text-white/80 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + + // States + { 'hover:bg-surface-100 dark:hover:bg-surface-80/50': (props.sortable === '' || props.sortable) && !context?.sorted }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transition + { 'transition duration-200': props.sortable === '' || props.sortable }, + + // Misc + { + 'overflow-hidden relative bg-clip-padding': context.resizable && !context.frozen + } + ] + }), + column: { + headerCell: ({ context, props }) => ({ + class: [ + 'font-semibold', + 'leading-[normal]', + + // Position + { 'sticky z-40': context.scrollable && context.scrollDirection === 'both' && context.frozen }, + + // Flex & Alignment + { + 'flex flex-1 items-center': context.scrollable, + 'flex-initial shrink-0': context.scrollable && context.scrollDirection === 'both' && !context.frozen + }, + 'text-left', + + // Shape + { 'first:border-l border-y border-r': context?.showGridlines }, + 'border-0 border-b border-solid', + + // Spacing + context?.size === 'small' ? 'py-[0.375rem] px-2' : context?.size === 'large' ? 'py-[0.9375rem] px-5' : 'py-3 px-4', + + // Color + (props.sortable === '' || props.sortable) && context.sorted ? 'bg-highlight' : 'bg-surface-0 text-surface-700 dark:text-white/80 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + + // States + { 'hover:bg-surface-100 dark:hover:bg-surface-80/50': (props.sortable === '' || props.sortable) && !context?.sorted }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transition + { 'transition duration-200': props.sortable === '' || props.sortable }, + + // Misc + { + 'overflow-hidden relative bg-clip-padding': context.resizable && !context.frozen + } + ] + }), + bodyCell: ({ context }) => ({ + class: [ + // Font + 'leading-[normal]', + + // Position + { + sticky: context.scrollable && context.scrollDirection === 'both' && context.frozen + }, + + // Flex & Alignment + { + 'flex flex-1 items-center': context.scrollable, + 'flex-initial shrink-0': context.scrollable && context.scrollDirection === 'both' && !context.frozen + }, + 'text-left', + + // Shape + 'border-0 border-b border-solid', + 'border-surface-200 dark:border-surface-700', + { + 'border-x-0 border-l-0': !context.showGridlines + }, + { 'first:border-l border-r border-b': context?.showGridlines }, + + // Spacing + context?.size === 'small' ? 'py-[0.375rem] px-2' : context?.size === 'large' ? 'py-[0.9375rem] px-5' : 'py-3 px-4', + + // Misc + { + 'cursor-pointer': context.selectable, + sticky: context.scrollable && context.scrollDirection === 'both' && context.frozen, + 'border-x-0 border-l-0': !context.showGridlines + } + ] + }), + bodyCellContent: 'flex items-center gap-2', + rowToggleButton: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left align-middle', + + // Spacing + 'm-0 mr-2 p-0', + + // Size + 'w-7 h-7', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-700 dark:text-white/70', + 'border-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + 'hover:text-surface-700 hover:bg-surface-50 dark:hover:bg-surface-800/50', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + sortIcon: ({ context }) => ({ + class: ['ml-2 inline-block', context.sorted ? 'text-inherit' : 'fill-surface-700 dark:fill-white/70'] + }), + columnResizer: { + class: [ + 'block', + + // Position + 'absolute top-0 right-0', + + // Sizing + 'w-2 h-full', + + // Spacing + 'm-0 p-0', + + // Color + 'border border-transparent', + + // Misc + 'cursor-col-resize' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } + }, + columnResizeIndicator: { + class: 'absolute hidden w-[2px] z-20 bg-primary' + } +}; diff --git a/src/scripts/class/api.ts b/src/scripts/class/api.ts deleted file mode 100644 index c875fb9..0000000 --- a/src/scripts/class/api.ts +++ /dev/null @@ -1,757 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ -import { debug, error, info } from "@tauri-apps/plugin-log"; -import { fetch, type ClientOptions } from "@tauri-apps/plugin-http"; -import EventEmitter from "events"; - -import Route from "./route"; - -import Code from "../../assets/json/code.json"; - -/** - * 測站資訊 - */ -export interface StationInfo { - /** - * 測站郵遞區號 (地區編號) - */ - code: keyof typeof Code; - /** - * 測站經度 - */ - lon: number; - /** - * 測站緯度 - */ - lat: number; - /** - * 測站安裝時間 - */ - time: string; -} - -/** - * TREM 測站 - */ -export interface Station { - /** - * 測站種類 - */ - net: string; - /** - * 測站資訊 - */ - info: StationInfo[]; - city: string; - town: string; - /** - * 測站是否運作 - */ - work: boolean; -} - -export interface WebSocketConnectionConfig { - type?: string; - key?: string; - service?: ( - | "trem.rts" - | "websocket.eew" - | "websocket.report" - | "websocket.tsunami" - | "trem.intensity" - | "cwa.intensity" - )[]; -} - -/** - * 部分地震報告 - */ -export interface PartialReport { - /** - * 地震報告 ID - */ - id: string; - /** - * 地震震央經度 - */ - lon: number; - /** - * 地震震央緯度 - */ - lat: number; - /** - * 地震位置敘述 - */ - loc: string; - /** - * 地震深度 - */ - depth: number; - /** - * 地震芮氏規模 - */ - mag: number; - /** - * 地震觀測最大震度 - */ - int: number; - /** - * 地震發生時間 - */ - time: number; - /** - * TREM 觀測網 ID - */ - trem: number; - /** - * 地震報告編號 - */ - no: number; - /** - * 地震報告完整性 - */ - md5: string; -} - -/** - * 測站觀測資料 - */ -export interface StationIntensity { - /** - * 測站名稱 - */ - station: string; - /** - * 測站經度 - */ - lon: number; - /** - * 測站緯度 - */ - lat: number; - /** - * 測站最大觀測震度 - */ - int: number; -} - -/** - * 區域觀測資料 - */ -export interface AreaIntensity { - /** - * 區域名稱 - */ - area: string; - /** - * 區域最大觀測震度 - */ - int: number; - /** - * 區域內測站觀測資料 - */ - stations: StationIntensity[]; -} - -/** - * 地震報告 - */ -export interface Report extends Omit { - /** - * 各地觀測最大震度 - */ - list: AreaIntensity[]; -} - -/** - * 測站地動資料 - */ -export interface RtsStation { - /** - * 地動加速度 - */ - pga: number; - /** - * 地動速度 - */ - pgv: number; - /** - * 即時震度 - */ - i: number; - /** - * 衰減震度 - */ - I: number; - /** - * 測站是否觸發 - */ - alert: boolean; -} - -export type Box = Record; - -export interface IntensityListing { - code: keyof typeof Code; - area: string; - station: string; - i: number; -} - -/** - * 地動資料 - */ -export interface Rts { - /** - * 測站地動資料 - */ - station: Record; - /** - * 地動區塊 - */ - box: Box; - /** - * 資料時間 - */ - time: number; - /** - * 震度列表 - */ - int: IntensityListing[]; - replay?: boolean; -} - -/** - * 地震速報來源機關 - */ -export enum EewSource { - /** - * 交通部中央氣象署 - * @link https://www.cwa.gov.tw - */ - Cwa = "cwa", - /** - * 기상청 날씨누리 - * @link https://www.kma.go.kr - */ - Kma = "kma", - /** - * 気象庁 - * @link https://www.jma.go.jp - */ - Jma = "jma", - /** - * 防災科研 - * @link https://www.bosai.go.jp - */ - Nied = "nied", - /** - * 四川省地震局 - * @link https://www.scdzj.gov.cn - */ - Scdzj = "scdzj", - /** - * TREM 臺灣即時地震監測 - * @link https://www.exptech.com.tw - */ - Trem = "trem", -} - -/** - * 地震速報狀態 - */ -export enum EewStatus { - /** - * 注意報 - */ - Warn = 0, - /** - * 警報 - */ - Alert = 1, - /** - * 取消報 - */ - Cancel = 2, - /** - * 測試報 - */ - Test = 3, -} - -interface BaseEewDetail { - /** - * 地震速報時間 - */ - time: number; - /** - * 地震震央預估經度 - */ - lon: number; - /** - * 地震震央預估緯度 - */ - lat: number; - /** - * 地震預估深度 - */ - depth: number; - /** - * 地震預估芮氏規模 - */ - mag: number; - /** - * 地震預估位置 - */ - loc: string; - /** - * 地震預估最大震度 - */ - max: number; - /** - * 覆蓋預估震度 - */ - area?: Record; -} - -/** - * 基礎地震速報結構 - */ -export interface BaseEew { - type: "eew"; - /** - * 地震速報來源機關 - */ - author: EewSource; - /** - * 地震速報 ID - */ - id: string; - /** - * 地震速報報號 - */ - serial: number; - /** - * 地震速報狀態 - */ - status: EewStatus; - /** - * 地震速報是否為最終報 - */ - final: 1 | 0; - /** - * 地震速報參數 - */ - eq: BaseEewDetail; - timestamp: number; - data_unit: "websocket"; - delay: number; - replay?: boolean; -} - -/** - * 交通部中央氣象署地震速報 - */ -export interface CwaEew extends BaseEew { - author: EewSource.Cwa; -} - -/** - * TREM 地震速報 - */ -export interface TremEew extends BaseEew { - author: EewSource.Trem; - detail: 1; -} - -/** - * Nsspe 地震預警 - */ -export interface NsspeEew extends BaseEew { - author: EewSource.Trem; - detail: 0; - level: number; - reason: number; - trigger: number; - eq: BaseEewDetail & { - area: Record; - }; -} - -/** - * 地震速報 - */ -export type Eew = CwaEew | TremEew | NsspeEew; - -/** - * 校時 - */ -export interface Ntp { - type: "ntp"; - /** - * 伺服器時間 - */ - time: number; - /** - * 校時板本 - */ - version: number; -} - -export enum WebSocketCloseCode { - Normal = 1000, - AbnormalClosure = 1006, - InsufficientPermission = 4000, -} - -export const Intensity = [ - { value: 0, label: "0", text: "0級" }, - { value: 1, label: "1", text: "1級" }, - { value: 2, label: "2", text: "2級" }, - { value: 3, label: "3", text: "3級" }, - { value: 4, label: "4", text: "4級" }, - { value: 5, label: "5-", text: "5弱" }, - { value: 6, label: "5+", text: "5強" }, - { value: 7, label: "6-", text: "6弱" }, - { value: 8, label: "6+", text: "6強" }, - { value: 9, label: "7", text: "7級" }, -] as const; - -export enum WebSocketEvent { - Ready = "ready", - Eew = "eew", - Info = "info", - Ntp = "ntp", - Report = "report", - Rts = "rts", - Verify = "verify", - Close = "close", -} - -export class ExpTechApi extends EventEmitter { - key: string; - route: Route; - wsConfig: WebSocketConnectionConfig; - ws!: WebSocket; - _destroyed: boolean; - - constructor(key: string = "") { - super(); - this.key = key; - this.route = new Route({ key }); - this.wsConfig = { - type: "start", - key, - service: [ - "trem.rts", - "websocket.eew", - "websocket.report", - "websocket.tsunami", - "trem.intensity", - "cwa.intensity", - ], - }; - - if (key) { - this.#initWebSocket(); - } - - this._destroyed = false; - } - - setApiKey(apiKey: string) { - this.key = apiKey; - this.wsConfig.key = apiKey; - - if (this.ws && this.ws.readyState === WebSocket.OPEN) { - this.ws.send(JSON.stringify(this.wsConfig)); - } else { - this.#initWebSocket(); - } - - return this; - } - - destroy() { - this._destroyed = true; - this.ws.close(1000); - } - - #initWebSocket() { - if (this._destroyed) { - return; - } - - if (this.ws && this.ws.readyState === WebSocket.OPEN) { - this.ws.close(); - } - - const url = this.route.websocket(); - - info("[WebSocket] Initializing connection"); - info(`[WebSocket] Connecting to ${url}`); - - this.ws = new WebSocket(url); - - this.ws.addEventListener("open", () => { - info("[WebSocket] Socket opened"); - this.ws.send(JSON.stringify(this.wsConfig)); - }); - - this.ws.addEventListener("message", (raw) => { - try { - const data = JSON.parse(raw.data); - - if (data) { - switch (data.type) { - case WebSocketEvent.Verify: { - this.ws.send(JSON.stringify(this.wsConfig)); - break; - } - - case WebSocketEvent.Info: { - switch (data.data.code) { - case 200: - if (!data.data.list.length) { - this.ws.close(WebSocketCloseCode.InsufficientPermission); - break; - } else { - this.emit(WebSocketEvent.Ready); - } - - break; - case 503: - window.setTimeout( - () => this.ws.send(JSON.stringify(this.wsConfig)), - 5_000 - ); - break; - } - break; - } - - case "data": { - switch (data.data.type) { - case WebSocketEvent.Rts: { - this.emit(WebSocketEvent.Rts, data.data.data); - break; - } - case WebSocketEvent.Eew: { - this.emit(WebSocketEvent.Eew, data.data); - break; - } - case WebSocketEvent.Report: { - this.emit(WebSocketEvent.Report, data.data.data); - break; - } - } - break; - } - - case WebSocketEvent.Ntp: { - this.emit(WebSocketEvent.Ntp, data); - break; - } - } - } - } catch (err) { - if (err instanceof Error) { - error(`[WebSocket] ${err.message}`); - if (err.stack) { - error(err.stack); - } - } - } - }); - - this.ws.addEventListener("close", (ev) => { - info("[WebSocket] Socket closed"); - this.emit(WebSocketEvent.Close, ev); - - switch (ev.code) { - case WebSocketCloseCode.Normal: - case WebSocketCloseCode.InsufficientPermission: - break; - - default: - window.setTimeout(this.#initWebSocket.bind(this), 5_000); - break; - } - }); - - this.ws.addEventListener("error", () => { - error(`[WebSocket] Websocet failed to establish a connection to ${url}.`); - }); - } - - /** - * Inner get request wrapper - * @param {string} url - * @returns {Promise} - */ - async #get(url: string): Promise { - const request: RequestInit & ClientOptions = { - method: "GET", - connectTimeout: 2500, - headers: { - // TODO: Replace User-Agent with a variable - "User-Agent": "TREM-Lite/v2.0.0", - Accept: "application/json", - }, - }; - - debug(`[API] Fetching ${url.split(/[?#]/)[0]}`); - const res = await fetch(url, request); - - if (!res.ok) { - throw new Error(`Server returned ${res.status}`); - } - - return await res.json(); - } - - async getStations(): Promise> { - const url = this.route.station(); - - try { - const stations = (await this.#get(url)) as Record; - for (const id in stations) { - const station = stations[id]; - const location = Code[station.info[0].code]; - station.city = location?.city; - station.town = location?.town; - } - - return stations; - } catch (error) { - throw new Error(`Failed to get station data. ${error}`); - } - } - - /** - * 獲取地震報告列表 - * @param {number} [limit] - * @returns {Promise} - */ - async getReports(limit?: number): Promise { - const url = this.route.earthquakeReportList(limit); - - try { - const data = await this.#get(url); - - for (const report of data) { - report.no = +report.id.split("-")[0]; - } - - return data; - } catch (error) { - throw new Error(`Failed to get reports. ${error}`); - } - } - - /** - * 獲取指定地震報告 - * @param {string} id 地震報告 ID - * @returns {Promise} - */ - async getReport(id: string): Promise { - const url = this.route.earthquakeReport(`${id}`); - - try { - const data = await this.#get(url); - data.no = +data.id.split("-")[0]; - data.int = Object.keys(data.list).reduce( - (acc, key) => (data.list[key].int > acc ? data.list[key].int : acc), - 0 - ); - data.list = Object.keys(data.list) - .map((key) => ({ - area: key, - int: data.list[key].int, - stations: Object.keys(data.list[key].town) - .map((k) => ({ - ...data.list[key].town[k], - station: k, - })) - .sort((a, b) => b.int - a.int), - })) - .sort((a, b) => b.int - a.int); - - return data; - } catch (error) { - throw new Error(`Failed to get report ${id}. ${error}`); - } - } - - /** - * 獲取即時地動資料 - * @param {number} [time=Date.now()] 時間 - * @returns {Promise} - */ - async getRts(time?: number): Promise { - const url = new Route({ version: 1, key: this.key }).rts(time ? `${time}` : ""); - - try { - return await this.#get(url); - } catch (error) { - throw new Error(`Failed to fetch rts data. ${error}`); - } - } - - /** - * 獲取地震速報資料 - * @param {number} [time=Date.now()] 時間 - * @returns {Promise} - */ - async getEew(time?: number): Promise { - const url = new Route({ version: 1, key: this.key }).eew(time ? `${time}` : ""); - - try { - return await this.#get(url); - } catch (error) { - throw new Error(`Failed to fetch eew data. ${error}`); - } - } -} - -export declare interface ExpTechApi extends EventEmitter { - /** - * WebSocket 連線成功 - * @param {WebSocketEvent.Ready} event rts - * @param {() => void} listener - */ - on(event: WebSocketEvent.Ready, listener: () => void): this; - - /** - * 地動資料 - * @param {WebSocketEvent.Rts} event rts - * @param {(rts: Rts) => void} listener - */ - on(event: WebSocketEvent.Rts, listener: (rts: Rts) => void): this; - - /** - * 地震速報資料 - * @param {WebSocketEvent.Eew} event eew - * @param {(eew: Eew) => void} listener - */ - on(event: WebSocketEvent.Eew, listener: (eew: Eew) => void): this; - - /** - * 地震速報資料 - * @param {WebSocketEvent.Ntp} event ntp - * @param {(ntp: Ntp) => void} listener - */ - on(event: WebSocketEvent.Ntp, listener: (ntp: Ntp) => void): this; - - /** - * 地震報告資料 - * @param {WebSocketEvent.Report} event ntp - * @param {(report: Report) => void} listener - */ - on(event: WebSocketEvent.Report, listener: (report: Report) => void): this; - - /** - * @param {WebSocketEvent.Close} event close - * @param {(ev: CloseEvent) => void} listener - */ - on(event: WebSocketEvent.Close, listener: (ev: CloseEvent) => void): this; -} diff --git a/src/scripts/class/config.ts b/src/scripts/class/config.ts deleted file mode 100644 index 5135b03..0000000 --- a/src/scripts/class/config.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { - exists, - mkdir, - readTextFile, - writeTextFile, -} from "@tauri-apps/plugin-fs"; -import { debug, error, info } from "@tauri-apps/plugin-log"; -import { appConfigDir, join } from "@tauri-apps/api/path"; - -import type { DefaultConfigSchema } from "../../types"; - -import DefaultConfig from "../../assets/json/default_config.json"; - -const dir = await appConfigDir(); -const path = await join(dir, "config.json"); - -if (!(await exists(path))) { - info("[Config] Configuration file does not exist, creating..."); - await mkdir(dir, { recursive: true }).catch(error); - await writeTextFile(path, JSON.stringify(DefaultConfig, null, 2)).catch( - error - ); - info("[Config] Created configuration file with default values."); -} - -info("[Config] Loading user configuration..."); -const data = JSON.parse(await readTextFile(path)); -info("[Config] Configuration loaded."); - -export class Config { - dir: string; - path: string; - cache: DefaultConfigSchema; - - constructor() { - this.dir = dir; - this.path = path; - this.cache = { ...DefaultConfig, ...data }; - debug("[Config] Config is ready."); - } - - async load() { - try { - info("[Config] Loading user configuration..."); - const data = JSON.parse(await readTextFile(path)); - this.cache = { ...DefaultConfig, ...data }; - info("[Config] Configuration loaded."); - } catch (err) { - if (err instanceof Error) { - error( - `[Config] Error while reading configuration file: ${err.message}` - ); - if (err.stack) { - error(err.stack); - } - } - } - } - - async save() { - try { - info("[Config] Saving user configuration..."); - await writeTextFile(path, JSON.stringify(this.cache, null, 2)); - info("[Config] Configuration saved"); - } catch (err) { - if (err instanceof Error) { - error(`[Config] Error while saving configuration file: ${err.message}`); - if (err.stack) { - error(err.stack); - } - } - } - } -} diff --git a/src/scripts/class/route.ts b/src/scripts/class/route.ts deleted file mode 100644 index 3964684..0000000 --- a/src/scripts/class/route.ts +++ /dev/null @@ -1,58 +0,0 @@ -interface RouteOptions { - version?: 1 | 2; - key?: string; -} - -export default class Route { - version: number; - key: string; - - constructor(options: RouteOptions = {}) { - this.version = options.version ?? 2; - this.key = options.key ?? ""; - } - - randomHostUrl() { - return `https://lb-${Math.ceil(Math.random() * 4)}.exptech.com.tw` as const; - } - - randomBaseUrl() { - return `${this.randomHostUrl()}/api/v${this.version}` as const; - } - - websocket() { - return `wss://lb-${Math.ceil(Math.random() * 4)}.exptech.com.tw/websocket` as const; - } - - earthquakeReportList(limit?: number) { - if (limit) { - return `${this.randomBaseUrl()}/eq/report?limit=${limit}` as const; - } else { - return `${this.randomBaseUrl()}/eq/report?limit=50` as const; - } - } - - earthquakeReport(id: string) { - return `${this.randomBaseUrl()}/eq/report/${id}` as const; - } - - rts(timestamp?: string) { - if (timestamp) { - return `${this.randomBaseUrl()}/trem/rts/${timestamp}` as const; - } else { - return `${this.randomBaseUrl()}/trem/rts` as const; - } - } - - eew(timestamp?: string) { - if (timestamp) { - return `${this.randomBaseUrl()}/eq/eew/${timestamp}` as const; - } else { - return `${this.randomBaseUrl()}/eq/eew` as const; - } - } - - station() { - return `${this.randomHostUrl()}/file/resource/station.json` as const; - } -} diff --git a/src/scripts/class/timeout.ts b/src/scripts/class/timeout.ts deleted file mode 100644 index 9bd3abf..0000000 --- a/src/scripts/class/timeout.ts +++ /dev/null @@ -1,31 +0,0 @@ -export class RefreshableTimeout { - callback: (...args: any[]) => void; - delay: number; - args: any[]; - reference: number; - - constructor( - callback: (...args: any[]) => void, - delay: number, - ...args: any[] - ) { - this.callback = callback; - this.delay = delay; - this.args = args; - this.reference = window.setTimeout(callback, delay, ...args); - } - - refresh(newDelay?: number) { - window.clearTimeout(this.reference); - - if (newDelay) { - this.delay = newDelay; - } - - this.reference = window.setTimeout(this.callback, this.delay, ...this.args); - } - - clear() { - window.clearTimeout(this.reference); - } -} diff --git a/src/scripts/helper/audio.ts b/src/scripts/helper/audio.ts deleted file mode 100644 index 324de76..0000000 --- a/src/scripts/helper/audio.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { AudioType } from "../../types"; - -export const getAudio = (theme: string, type: AudioType) => { - const audio = new Audio(`./audio/${theme}/${type}.wav`); - if (type == AudioType.Update) { - audio.volume = 0.6; - } - return audio; -}; diff --git a/src/scripts/helper/color.ts b/src/scripts/helper/color.ts deleted file mode 100644 index 324f125..0000000 --- a/src/scripts/helper/color.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { scale } from "chroma-js"; - -export const i = scale([ - "#202020", - "#004080", - "#0070e0", - "#1e9632", - "#ffc800", - "#ff9600", - "#ff6400", - "#ff0000", - "#c00000", - "#9600c8", -]).domain([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); - -export const pga = scale([ - "#0000cd", - "#0048fa", - "#00d08b", - "#3ffa36", - "#bdff0c", - "#ffff00", - "#ffdd00", - "#ff9000", - "#ff4400", - "#f50000", - "#aa0000", - "#9600c8", -]).domain([-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8]); - -export const depth = scale([ - "#FF0000", - "#FF6400", - "#FFC800", - "#00C800", - "#00C8C8", - "#0000C8", -]).domain([0, 20, 50, 100, 200, 350]); - -export const magnitude = scale([ - "#0000C8", - "#00C8C8", - "#00C800", - "#FFC800", - "#FF0000", - "#9600FF", -]).domain([0, 1.5, 3, 4.5, 6, 7]); diff --git a/src/scripts/helper/constant.ts b/src/scripts/helper/constant.ts deleted file mode 100644 index db07354..0000000 --- a/src/scripts/helper/constant.ts +++ /dev/null @@ -1,12 +0,0 @@ -export const TaiwanBounds = [118.14, 25.33, 122.18, 21.88] as [ - number, - number, - number, - number, -]; - -export const EarthCircumference = 40075017 as const; - -export const BaseMarkerSize = 28 as const; - -export const BaseMapZoom = 8 as const; diff --git a/src/stores/account_store.ts b/src/stores/account_store.ts new file mode 100644 index 0000000..df75425 --- /dev/null +++ b/src/stores/account_store.ts @@ -0,0 +1,33 @@ +import { defineStore } from "pinia"; + +type Account = { + email: string; + pass: string; + name: string; +}; + +interface AccountState { + list: Record; + currentToken: string | null; +} + +export const useAccountStore = defineStore("account", { + state: () => { + return { + list: {}, + currentToken: null + } as AccountState; + }, + getters: { + current(state) { + if (state.currentToken && state.list[state.currentToken]) { + const account = state.list[state.currentToken]; + if (account) { + return account; + } + } + + return null; + } + } +}); \ No newline at end of file diff --git a/src/stores/config_store.ts b/src/stores/config_store.ts new file mode 100644 index 0000000..274aef8 --- /dev/null +++ b/src/stores/config_store.ts @@ -0,0 +1,44 @@ +import { BaseDirectory, exists, mkdir, readTextFile, writeTextFile } from "@tauri-apps/plugin-fs"; +import { defineStore } from "pinia"; + +const DefaultConfig = { + earthquake: { + display: 0 + } +}; + +let config: typeof DefaultConfig; + +if (!await exists("", { baseDir: BaseDirectory.AppConfig })) { + await mkdir("", { baseDir: BaseDirectory.AppConfig }); +} + +if (await exists("config.json", { baseDir: BaseDirectory.AppConfig })) { + try { + config = JSON.parse(await readTextFile("config.json", { baseDir: BaseDirectory.AppConfig })); + } catch (error) { + console.log(error); + config = DefaultConfig; + } +} else { + config = DefaultConfig; + await writeTextFile( + "config.json", + JSON.stringify(config, null, 2), { + baseDir: BaseDirectory.AppConfig, + }).catch(console.error); +} + +export const useConfigStore = defineStore("config", { + state: () => config, + actions: { + async save() { + + await writeTextFile( + "config.json", + JSON.stringify(this.$state, null, 2), { + baseDir: BaseDirectory.AppConfig, + }); + } + } +}); \ No newline at end of file diff --git a/src/stores/eew_store.ts b/src/stores/eew_store.ts new file mode 100644 index 0000000..5ffde53 --- /dev/null +++ b/src/stores/eew_store.ts @@ -0,0 +1,6 @@ +import { defineStore } from "pinia"; +import type { EewType } from "@exptechtw/api-wrapper"; + +export const useEewStore = defineStore("eew", { + state: () => ({ eew: {} } as { eew: Record; }), +}); \ No newline at end of file diff --git a/src/stores/map_store.ts b/src/stores/map_store.ts new file mode 100644 index 0000000..ea08e62 --- /dev/null +++ b/src/stores/map_store.ts @@ -0,0 +1,11 @@ +import { defineStore } from "pinia"; +import type { Map as MaplibreMap } from "maplibre-gl"; + +export const useMapStore = defineStore("map", { + state: () => ({ value: undefined } as { value?: MaplibreMap; }), + getters: { + map(state) { + return state.value as MaplibreMap | undefined; + } + } +}); \ No newline at end of file diff --git a/src/stores/report_store.ts b/src/stores/report_store.ts new file mode 100644 index 0000000..0fb97e7 --- /dev/null +++ b/src/stores/report_store.ts @@ -0,0 +1,33 @@ +import { defineStore } from "pinia"; +import type { PartialReport, Report } from "@exptechtw/api-wrapper"; + +type ReportStoreState = { + partial: PartialReport[]; + cache: Map; +}; + +export const useReportStore = defineStore("report", { + state: (): ReportStoreState => ({ + partial: [], + cache: new Map(), + }), + actions: { + update(list: PartialReport[]) { + const oldIdList = this.partial.map((v) => v.id); + + list.filter((r) => !oldIdList.includes(r.id)); + + list = [...this.partial, ...list]; + + list.sort((a, b) => b.time - a.time); + + this.partial = list; + }, + setReport(id: string, report: Report) { + this.cache.set(id, report); + }, + }, + getters: { + list: (state) => Array.from(state.partial.values()), + }, +}); diff --git a/src/stores/rts_store.ts b/src/stores/rts_store.ts new file mode 100644 index 0000000..5dd360b --- /dev/null +++ b/src/stores/rts_store.ts @@ -0,0 +1,6 @@ +import { defineStore } from "pinia"; +import type { Rts } from "@exptechtw/api-wrapper"; + +export const useRtsStore = defineStore("rts", { + state: () => ({ box: {}, int: [], station: {}, time: 0 } as Rts), +}); \ No newline at end of file diff --git a/src/stores/station_store.ts b/src/stores/station_store.ts new file mode 100644 index 0000000..93e2d4d --- /dev/null +++ b/src/stores/station_store.ts @@ -0,0 +1,11 @@ +import { defineStore } from "pinia"; +import type { Station } from "@exptechtw/api-wrapper"; + +export const useStationStore = defineStore("station", { + state: () => ({ value: {} } as { value: Record; }), + getters: { + station(state) { + return state.value; + } + } +}); \ No newline at end of file diff --git a/src/styles.css b/src/styles.css index 705adac..74ac163 100644 --- a/src/styles.css +++ b/src/styles.css @@ -1,68 +1,163 @@ -@import "material-symbols/rounded.css"; -@import "./styles/font.css"; -@import "./styles/skeleton.css"; -@import "./styles/intensity.css"; +@import url(./styles/colors.css); + +@tailwind base; +@tailwind components; +@tailwind utilities; :root { - font-family: "Lato", "Noto Sans TC", sans-serif; + font-family: Inter, "Noto Sans TC", sans-serif; + font-size: 16px; + font-weight: 400; + font-synthesis: none; + font-variant-numeric: tabular-nums; + line-height: 24px; text-rendering: optimizeLegibility; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; -webkit-text-size-adjust: 100%; - - --surface-hsl: 0deg 0% 30%; - --surface-variant-hsl: 0deg 0% 22%; - --background-hsl: 0deg 0% 14%; - --background-variant-hsl: 0deg 0% 18%; -} - -::-webkit-scrollbar { - width: 4px; -} - -::-webkit-scrollbar-thumb { - background: #555; - border-radius: 4px; } body { position: fixed; inset: 0; margin: 0; - background-color: hsl(var(--background-hsl)); - color: #fff; + color: var(--t-secondary-text-color); + background-color: var(--t-background-color); + background-blend-mode: multiply; + transition: background-color 0.1s ease-in-out; + white-space: nowrap; + user-select: none; + + /* primevue overrides */ + /* + .p-panel-toggleable .p-panel-header { + padding: 0.5rem 0.875rem; + } + .p-panel-content { + padding: 0 0.875rem 0.875rem 0.875rem; + } + .p-panel-header-icon { + overflow: hidden; + } + .p-progressbar-determinate .p-progressbar-value-animate { + transition: width 0.5s ease-in-out; + } + .p-tooltip-text { + padding: 8px; + line-height: 100%; + font-size: 14px; + } */ + + /* maplibre overrides*/ + + .maplibregl-canvas:focus-visible { + outline: none; + } + .maplibregl-popup { + box-shadow: 0 0 16px 0 hwb(0 0% 100% / 0.2); + z-index: 9999; + } + .maplibregl-popup-content { + font-family: Inter, "Noto Sans TC", sans-serif; + background-color: var(--t-surface-elevated-color); + outline: 1px solid var(--p-surface-400); + padding: 8px; + border-radius: 8px; + } + .maplibregl-popup-tip { + display: none; + } } -.container { - margin: 0; - padding-top: 10vh; - display: flex; - flex-direction: column; - justify-content: center; - text-align: center; +body.win11 { + background-color: transparent; } -.pga-intensity-0 { - background-color: lightgray; +#app { + position: relative; + display: grid; + grid-template-rows: 32px 1fr; + width: 100svw; + height: 100svh; +} - &:empty::after { - content: "1"; - } +/* Primary and Surface Palettes */ +:root { + --p-primary-50: var(--p-surface-50); + --p-primary-100: var(--p-surface-100); + --p-primary-200: var(--p-surface-200); + --p-primary-300: var(--p-surface-300); + --p-primary-400: var(--p-surface-400); + --p-primary-500: var(--p-surface-500); + --p-primary-600: var(--p-surface-600); + --p-primary-700: var(--p-surface-700); + --p-primary-800: var(--p-surface-800); + --p-primary-900: var(--p-surface-900); + --p-primary-950: var(--p-surface-950); + --p-surface-0: #ffffff; + --p-surface-50: #f8fafc; + --p-surface-100: #f1f5f9; + --p-surface-200: #e2e8f0; + --p-surface-300: #cbd5e1; + --p-surface-400: #94a3b8; + --p-surface-500: #64748b; + --p-surface-600: #475569; + --p-surface-700: #334155; + --p-surface-800: #1e293b; + --p-surface-900: #0f172a; + --p-surface-950: #020617; + --p-content-border-radius: 6px; } -#svg-defs { - position: fixed; - visibility: hidden; - pointer-events: none; +/* Light Mode */ +:root { + --p-primary-color: var(--p-primary-500); + --p-primary-contrast-color: var(--p-surface-0); + --p-primary-hover-color: var(--p-primary-600); + --p-primary-active-color: var(--p-primary-700); + --p-content-border-color: var(--p-surface-200); + --p-content-hover-background: var(--p-surface-100); + --p-content-hover-color: var(--p-surface-800); + --p-highlight-background: var(--p-primary-50); + --p-highlight-color: var(--p-primary-700); + --p-highlight-focus-background: var(--p-primary-100); + --p-highlight-focus-color: var(--p-primary-800); + --p-text-color: var(--p-surface-700); + --p-text-hover-color: var(--p-surface-800); + --p-text-muted-color: var(--p-surface-500); + --p-text-hover-muted-color: var(--p-surface-600); } -@media (prefers-color-scheme: dark) { - :root { - color: #f6f6f6; - background-color: #2f2f2f; - } +/* +* Dark Mode +* Change the .p-dark to match the darkMode in tailwind.config. +* For example; +* darkMode: ['selector', '[class*="app-dark"]'] +* should match; +* :root.app-dark +*/ +:root.p-dark { + --p-primary-color: var(--p-primary-400); + --p-primary-contrast-color: var(--p-surface-900); + --p-primary-hover-color: var(--p-primary-300); + --p-primary-active-color: var(--p-primary-200); + --p-content-border-color: var(--p-surface-700); + --p-content-hover-background: var(--p-surface-800); + --p-content-hover-color: var(--p-surface-0); + --p-highlight-background: color-mix( + in srgb, + var(--p-primary-400), + transparent 84% + ); + --p-highlight-color: rgba(255, 255, 255, 0.87); + --p-highlight-focus-background: color-mix( + in srgb, + var(--p-primary-400), + transparent 76% + ); + --p-highlight-focus-color: rgba(255, 255, 255, 0.87); + --p-text-color: var(--p-surface-0); + --p-text-hover-color: var(--p-surface-0); + --p-text-muted-color: var(--p-surface-400); + --p-text-hover-muted-color: var(--p-surface-300); } diff --git a/src/styles/colors.css b/src/styles/colors.css new file mode 100644 index 0000000..d5e21d4 --- /dev/null +++ b/src/styles/colors.css @@ -0,0 +1,26 @@ +:root { + --t-background-color: var(--p-surface-50); + --t-surface-color: var(--p-surface-100); + --t-surface-elevated-color: var(--p-surface-200); + --t-primary-text-color: var(--p-surface-900); + --t-secondary-text-color: var(--p-surface-700); + --t-tertiary-text-color: var(--p-surface-500); + --t-scrollbar-thumb-color: var(--p-surface-400); + --t-outline-color: var(--p-surface-400); + + --t-elevated-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), + 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12); +} + +@media (prefers-color-scheme: dark) { + :root { + --t-background-color: var(--p-surface-950); + --t-surface-color: var(--p-surface-900); + --t-surface-elevated-color: var(--p-surface-800); + --t-primary-text-color: var(--p-surface-100); + --t-secondary-text-color: var(--p-surface-200); + --t-tertiary-text-color: var(--p-surface-300); + --t-scrollbar-thumb-color: var(--p-surface-600); + --t-outline-color: var(--p-surface-600); + } +} diff --git a/src/styles/font.css b/src/styles/font.css deleted file mode 100644 index f90da97..0000000 --- a/src/styles/font.css +++ /dev/null @@ -1,8 +0,0 @@ -@import "@fontsource/noto-sans-tc/chinese-traditional-400.css"; -@import "@fontsource/noto-sans-tc/chinese-traditional-500"; -@import "@fontsource/noto-sans-tc/chinese-traditional-700"; -@import "@fontsource/noto-sans-tc/chinese-traditional-900"; -@import "@fontsource/lato/latin-400"; -@import "@fontsource/lato/latin-700"; -@import "@fontsource/lato/latin-900"; -@import "@fontsource/open-sans/latin-700"; diff --git a/src/styles/intensity.css b/src/styles/intensity.css index d4c5014..9ab1b40 100644 --- a/src/styles/intensity.css +++ b/src/styles/intensity.css @@ -1,25 +1,21 @@ :root { - --intensity-0: #202020; - --intensity-1: #004080; - --intensity-2: #0070e0; - --intensity-3: #1e9632; - --intensity-4: #ffc800; - --intensity-5: #ff9600; - --intensity-6: #ff6400; - --intensity-7: #ff0000; - --intensity-8: #c00000; - --intensity-9: #9600c8; - --intensity-unknow: #202020; + --intensity-0: 32 32 32; + --intensity-1: 0 64 128; + --intensity-2: 0 112 224; + --intensity-3: 30 150 50; + --intensity-4: 255 200 0; + --intensity-5: 255 150 0; + --intensity-6: 255 100 0; + --intensity-7: 255 0 0; + --intensity-8: 192 0 0; + --intensity-9: 150 0 200; + --intensity-unknow: 32 32 32; } .intensity-0 { color: #fff; - outline: 1px solid #808080; + outline: 1px solid #888; background-color: #202020; - - &::after { - content: "0"; - } } .intensity-1 { @@ -33,10 +29,6 @@ .outer { fill: #fff; } - - &::after { - content: "1"; - } } .intensity-2 { @@ -50,10 +42,6 @@ .outer { fill: #fff; } - - &::after { - content: "2"; - } } .intensity-3 { @@ -67,10 +55,6 @@ .outer { fill: #fff; } - - &::after { - content: "3"; - } } .intensity-4 { @@ -84,10 +68,6 @@ .outer { fill: #fff; } - - &::after { - content: "4"; - } } .intensity-5 { @@ -101,11 +81,6 @@ .outer { fill: #fff; } - - &::after { - content: "5⁻"; - letter-spacing: -1px; - } } .intensity-6 { @@ -119,11 +94,6 @@ .outer { fill: #fff; } - - &::after { - content: "5⁺"; - letter-spacing: -1px; - } } .intensity-7 { @@ -137,11 +107,6 @@ .outer { fill: #fff; } - - &::after { - content: "6⁻"; - letter-spacing: -1px; - } } .intensity-8 { @@ -155,11 +120,6 @@ .outer { fill: #fff; } - - &::after { - content: "6⁺"; - letter-spacing: -1px; - } } .intensity-9 { @@ -173,15 +133,13 @@ .outer { fill: #fff; } - - &::after { - content: "7"; - } } -.intensity-unknow { +.intensity-unknown { color: #fff; background-color: var(--intensity-unknow); + outline: 1px solid #888; + opacity: 0.6; .inner { fill: var(--intensity-unknow); @@ -190,8 +148,4 @@ .outer { fill: #fff; } - - &::after { - content: "?"; - } } diff --git a/src/styles/skeleton.css b/src/styles/skeleton.css deleted file mode 100644 index 144537c..0000000 --- a/src/styles/skeleton.css +++ /dev/null @@ -1,14 +0,0 @@ -.skeleton:empty { - animation: skeleton-loading 1s linear infinite alternate; - background-repeat: no-repeat; - border-radius: 24px; -} - -@keyframes skeleton-loading { - 0% { - background-color: hsl(200deg 20% 80% / 0.25); - } - 100% { - background-color: hsl(200deg 20% 90% / 0.3); - } -} diff --git a/src/types.ts b/src/types.ts index 6c59af5..38ca08f 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,5 +1,5 @@ -import type { Eew, EewSource, EewStatus } from "./scripts/class/api"; -import code from "./assets/json/code.json"; +import type { Eew, EewSource, EewStatus } from "@exptechtw/api-wrapper"; +import code from "./assets/json/town_code.json"; export interface LastNtp { server: number; @@ -137,18 +137,10 @@ interface BaseEewEvent { raw: Eew; } -/** - * Nsspe 地震預警事件 - */ -export interface NsspeEvent extends BaseEewEvent { - source: EewSource.Trem; - detail: 0; -} - /** * 地震速報事件 */ -export type EewEvent = BaseEewEvent | NsspeEvent; +export type EewEvent = BaseEewEvent; export enum AudioType { Eew = "eew", diff --git a/src/view/AccountView.vue b/src/view/AccountView.vue new file mode 100644 index 0000000..90ce26b --- /dev/null +++ b/src/view/AccountView.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/view/ConfigView.vue b/src/view/ConfigView.vue new file mode 100644 index 0000000..9a8f40e --- /dev/null +++ b/src/view/ConfigView.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/view/EarthquakeView.vue b/src/view/EarthquakeView.vue new file mode 100644 index 0000000..6352e8b --- /dev/null +++ b/src/view/EarthquakeView.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/src/view/FileDropOverlayView.vue b/src/view/FileDropOverlayView.vue new file mode 100644 index 0000000..e58060d --- /dev/null +++ b/src/view/FileDropOverlayView.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/src/view/LoginView.vue b/src/view/LoginView.vue new file mode 100644 index 0000000..6482abe --- /dev/null +++ b/src/view/LoginView.vue @@ -0,0 +1,212 @@ + + + + + diff --git a/src/view/ReplayView.d.ts b/src/view/ReplayView.d.ts new file mode 100644 index 0000000..6d3b4d2 --- /dev/null +++ b/src/view/ReplayView.d.ts @@ -0,0 +1,29 @@ +import type { EewSource, EewType, Rts } from "@exptechtw/api-wrapper"; + +export type Events = { + frame: number; + type: EewSource | "rts" | "nsspe"; + label: string; +}; + +export type RtsEewData = { + rts: Rts; + eew: EewType[]; + time: number; +}; + +export type RtsFrame = { + type: "rts"; + data: Rts; + time: number; + sound: string[]; +}; + +export type EewFrame = { + type: "eew"; + data: EewType; + time: number; + sound: string[]; +}; + +export type Frame = RtsFrame | EewFrame; \ No newline at end of file diff --git a/src/view/ReplayView.vue b/src/view/ReplayView.vue new file mode 100644 index 0000000..477e643 --- /dev/null +++ b/src/view/ReplayView.vue @@ -0,0 +1,396 @@ + + + + + diff --git a/src/view/ReportListView.vue b/src/view/ReportListView.vue new file mode 100644 index 0000000..f7fa8cb --- /dev/null +++ b/src/view/ReportListView.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/src/view/ReportView.vue b/src/view/ReportView.vue new file mode 100644 index 0000000..bc84c18 --- /dev/null +++ b/src/view/ReportView.vue @@ -0,0 +1,323 @@ + + + + + diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts index 817b917..fc81239 100644 --- a/src/vite-env.d.ts +++ b/src/vite-env.d.ts @@ -2,10 +2,6 @@ declare module "*.vue" { import type { DefineComponent } from "vue"; - const component: DefineComponent< - NonNullable, - NonNullable, - any - >; + const component: DefineComponent<{}, {}, any>; export default component; } diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..83590fc --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,24 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: [ + "./index.html", + "./src/**/*.{vue,js,ts,jsx,tsx}", + ], + theme: { + extend: { + colors: { + "intensity-1": "rgb(var(--intensity-1) / )", + "intensity-2": "rgb(var(--intensity-2) / )", + "intensity-3": "rgb(var(--intensity-3) / )", + "intensity-4": "rgb(var(--intensity-4) / )", + "intensity-5": "rgb(var(--intensity-5) / )", + "intensity-6": "rgb(var(--intensity-6) / )", + "intensity-7": "rgb(var(--intensity-7) / )", + "intensity-8": "rgb(var(--intensity-8) / )", + "intensity-9": "rgb(var(--intensity-9) / )", + } + }, + }, + plugins: [require("tailwindcss-primeui")] +} + diff --git a/tsconfig.json b/tsconfig.json index 319de0b..fa9467a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,28 +1,6 @@ { + "extends": "./.nuxt/tsconfig.json", "compilerOptions": { - "target": "ES2020", - "useDefineForClassFields": true, - "module": "ESNext", - "lib": ["ES2020", "DOM", "DOM.Iterable"], - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "preserve", - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true - }, - "vueCompilerOptions": { - "plugins": ["@vue/language-plugin-pug"] - }, - "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], - "references": [{ "path": "./tsconfig.node.json" }] + "resolveJsonModule": true + } } diff --git a/tsconfig.node.json b/tsconfig.node.json deleted file mode 100644 index 42872c5..0000000 --- a/tsconfig.node.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "skipLibCheck": true, - "module": "ESNext", - "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/vite.config.ts b/vite.config.ts deleted file mode 100644 index faed6be..0000000 --- a/vite.config.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { defineConfig } from "vite"; -import vue from "@vitejs/plugin-vue"; - -// https://vitejs.dev/config/ -export default defineConfig(async () => ({ - plugins: [vue()], - - // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` - // - // 1. prevent vite from obscuring rust errors - clearScreen: false, - // 2. tauri expects a fixed port, fail if that port is not available - server: { - port: 1420, - strictPort: true, - watch: { - // 3. tell vite to ignore watching `src-tauri` - ignored: ["**/src-tauri/**"], - }, - }, - build: { - target: "esnext", - rollupOptions: { - output: { - manualChunks(id) { - if (id.includes("node_modules")) { - return id.toString().split("node_modules/")[1].split("/")[0].toString(); - } - } - } - } - } -}));