diff --git a/package-lock.json b/package-lock.json index bcb3bb35..0004ddf1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "claude-mem", - "version": "6.5.2", + "version": "6.5.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "claude-mem", - "version": "6.5.2", + "version": "6.5.3", "license": "AGPL-3.0", "dependencies": { "@anthropic-ai/claude-agent-sdk": "^0.1.27", @@ -30,7 +30,8 @@ "@types/react-dom": "^18.3.0", "esbuild": "^0.25.12", "tsx": "^4.20.6", - "typescript": "^5.3.0" + "typescript": "^5.3.0", + "vitest": "^4.0.15" }, "engines": { "node": ">=18.0.0" @@ -769,6 +770,13 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, "node_modules/@modelcontextprotocol/sdk": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.20.1.tgz", @@ -1361,6 +1369,321 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz", + "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz", + "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz", + "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz", + "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz", + "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz", + "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz", + "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz", + "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz", + "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz", + "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz", + "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz", + "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz", + "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz", + "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz", + "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz", + "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz", + "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz", + "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz", + "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz", + "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz", + "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz", + "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "dev": true, + "license": "MIT" + }, "node_modules/@tootallnate/quickjs-emscripten": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", @@ -1388,6 +1711,17 @@ "@types/node": "*" } }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, "node_modules/@types/connect": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", @@ -1408,6 +1742,20 @@ "@types/node": "*" } }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/express": { "version": "4.17.23", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz", @@ -1485,6 +1833,7 @@ "integrity": "sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -1533,6 +1882,117 @@ "@types/node": "*" } }, + "node_modules/@vitest/expect": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.15.tgz", + "integrity": "sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.0.15", + "@vitest/utils": "4.0.15", + "chai": "^6.2.1", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.15.tgz", + "integrity": "sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.0.15", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.15.tgz", + "integrity": "sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.15.tgz", + "integrity": "sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "4.0.15", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.15.tgz", + "integrity": "sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.0.15", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.15.tgz", + "integrity": "sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.15.tgz", + "integrity": "sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.0.15", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -1664,6 +2124,16 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "license": "MIT" }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, "node_modules/ast-types": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", @@ -1865,6 +2335,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/chai": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.1.tgz", + "integrity": "sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -2195,6 +2675,13 @@ "node": ">= 0.4" } }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -2310,6 +2797,16 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -2362,11 +2859,22 @@ "node": ">=6" } }, + "node_modules/expect-type": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", + "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/express": { "version": "4.21.2", "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "license": "MIT", + "peer": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -3068,6 +3576,16 @@ "node": "20 || >=22" } }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -3208,6 +3726,25 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "license": "ISC" }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/napi-build-utils": { "version": "2.0.0", "license": "MIT" @@ -3306,6 +3843,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -3432,6 +3980,20 @@ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "license": "MIT" }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -3702,6 +4264,35 @@ "node": ">=10" } }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/prebuild-install": { "version": "7.1.3", "license": "MIT", @@ -3879,6 +4470,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -4002,6 +4594,48 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, + "node_modules/rollup": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz", + "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.53.3", + "@rollup/rollup-android-arm64": "4.53.3", + "@rollup/rollup-darwin-arm64": "4.53.3", + "@rollup/rollup-darwin-x64": "4.53.3", + "@rollup/rollup-freebsd-arm64": "4.53.3", + "@rollup/rollup-freebsd-x64": "4.53.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", + "@rollup/rollup-linux-arm-musleabihf": "4.53.3", + "@rollup/rollup-linux-arm64-gnu": "4.53.3", + "@rollup/rollup-linux-arm64-musl": "4.53.3", + "@rollup/rollup-linux-loong64-gnu": "4.53.3", + "@rollup/rollup-linux-ppc64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-musl": "4.53.3", + "@rollup/rollup-linux-s390x-gnu": "4.53.3", + "@rollup/rollup-linux-x64-gnu": "4.53.3", + "@rollup/rollup-linux-x64-musl": "4.53.3", + "@rollup/rollup-openharmony-arm64": "4.53.3", + "@rollup/rollup-win32-arm64-msvc": "4.53.3", + "@rollup/rollup-win32-ia32-msvc": "4.53.3", + "@rollup/rollup-win32-x64-gnu": "4.53.3", + "@rollup/rollup-win32-x64-msvc": "4.53.3", + "fsevents": "~2.3.2" + } + }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -4275,6 +4909,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, "node_modules/signal-exit": { "version": "4.1.0", "license": "ISC", @@ -4394,6 +5035,16 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -4410,6 +5061,13 @@ "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", "license": "BSD-3-Clause" }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -4419,6 +5077,13 @@ "node": ">= 0.8" } }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, "node_modules/string_decoder": { "version": "1.3.0", "license": "MIT", @@ -4573,6 +5238,82 @@ "node": ">=6" } }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tinyrainbow": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", + "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -4606,6 +5347,7 @@ "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" @@ -4743,6 +5485,204 @@ "node": ">= 0.8" } }, + "node_modules/vite": { + "version": "7.2.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.7.tgz", + "integrity": "sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vitest": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.15.tgz", + "integrity": "sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "4.0.15", + "@vitest/mocker": "4.0.15", + "@vitest/pretty-format": "4.0.15", + "@vitest/runner": "4.0.15", + "@vitest/snapshot": "4.0.15", + "@vitest/spy": "4.0.15", + "@vitest/utils": "4.0.15", + "es-module-lexer": "^1.7.0", + "expect-type": "^1.2.2", + "magic-string": "^0.30.21", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^3.10.0", + "tinybench": "^2.9.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3", + "vite": "^6.0.0 || ^7.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.0.15", + "@vitest/browser-preview": "4.0.15", + "@vitest/browser-webdriverio": "4.0.15", + "@vitest/ui": "4.0.15", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/vizion": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/vizion/-/vizion-2.2.1.tgz", @@ -4780,6 +5720,23 @@ "node": ">= 8" } }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "license": "MIT" @@ -4880,6 +5837,7 @@ "node_modules/zod": { "version": "3.25.76", "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index 2be9987d..0faee41a 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ }, "scripts": { "build": "node scripts/build-hooks.js", - "test": "node --test tests/", + "test": "vitest", "test:parser": "npx tsx src/sdk/parser.test.ts", "test:context": "echo '{\"session_id\":\"test-'$(date +%s)'\",\"cwd\":\"'$(pwd)'\",\"source\":\"startup\"}' | node plugin/scripts/context-hook.js 2>/dev/null", "test:context:verbose": "echo '{\"session_id\":\"test-'$(date +%s)'\",\"cwd\":\"'$(pwd)'\",\"source\":\"startup\"}' | node plugin/scripts/context-hook.js", @@ -67,6 +67,7 @@ "@types/react-dom": "^18.3.0", "esbuild": "^0.25.12", "tsx": "^4.20.6", - "typescript": "^5.3.0" + "typescript": "^5.3.0", + "vitest": "^4.0.15" } } diff --git a/plugin/.mcp.json b/plugin/.mcp.json index e0ce825c..aa68ee7b 100644 --- a/plugin/.mcp.json +++ b/plugin/.mcp.json @@ -2,7 +2,7 @@ "mcpServers": { "claude-mem-search": { "type": "stdio", - "command": "${CLAUDE_PLUGIN_ROOT}/scripts/search-server.cjs" + "command": "${CLAUDE_PLUGIN_ROOT}/scripts/mcp-server.cjs" } } } diff --git a/plugin/hooks/hooks.json b/plugin/hooks/hooks.json index 99a3a8e0..b3f3c2bd 100644 --- a/plugin/hooks/hooks.json +++ b/plugin/hooks/hooks.json @@ -8,12 +8,12 @@ { "type": "command", "command": "node \"${CLAUDE_PLUGIN_ROOT}/../scripts/smart-install.js\" && node ${CLAUDE_PLUGIN_ROOT}/scripts/context-hook.js", - "timeout": 300 + "timeout": 5 }, { "type": "command", "command": "node ${CLAUDE_PLUGIN_ROOT}/scripts/user-message-hook.js", - "timeout": 10 + "timeout": 5 } ] } diff --git a/plugin/scripts/cleanup-hook.js b/plugin/scripts/cleanup-hook.js index 96271da8..de1cce26 100755 --- a/plugin/scripts/cleanup-hook.js +++ b/plugin/scripts/cleanup-hook.js @@ -1,411 +1,5 @@ #!/usr/bin/env node -import{stdin as f}from"process";import w from"better-sqlite3";import{join as m,dirname as k,basename as W}from"path";import{homedir as I}from"os";import{existsSync as K,mkdirSync as x}from"fs";import{fileURLToPath as U}from"url";function M(){return typeof __dirname<"u"?__dirname:k(U(import.meta.url))}var q=M(),u=process.env.CLAUDE_MEM_DATA_DIR||m(I(),".claude-mem"),R=process.env.CLAUDE_CONFIG_DIR||m(I(),".claude"),J=m(u,"archives"),Q=m(u,"logs"),z=m(u,"trash"),Z=m(u,"backups"),ee=m(u,"settings.json"),O=m(u,"claude-mem.db"),se=m(u,"vector-db"),te=m(R,"settings.json"),re=m(R,"commands"),ne=m(R,"CLAUDE.md");function A(c){x(c,{recursive:!0})}var h=(n=>(n[n.DEBUG=0]="DEBUG",n[n.INFO=1]="INFO",n[n.WARN=2]="WARN",n[n.ERROR=3]="ERROR",n[n.SILENT=4]="SILENT",n))(h||{}),N=class{level;useColor;constructor(){let e=process.env.CLAUDE_MEM_LOG_LEVEL?.toUpperCase()||"INFO";this.level=h[e]??1,this.useColor=process.stdout.isTTY??!1}correlationId(e,s){return`obs-${e}-${s}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.level===0?`${e.message} -${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Object.keys(e);return s.length===0?"{}":s.length<=3?JSON.stringify(e):`{${s.length} keys: ${s.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,s){if(!s)return e;try{let t=typeof s=="string"?JSON.parse(s):s;if(e==="Bash"&&t.command){let r=t.command.length>50?t.command.substring(0,50)+"...":t.command;return`${e}(${r})`}if(e==="Read"&&t.file_path){let r=t.file_path.split("/").pop()||t.file_path;return`${e}(${r})`}if(e==="Edit"&&t.file_path){let r=t.file_path.split("/").pop()||t.file_path;return`${e}(${r})`}if(e==="Write"&&t.file_path){let r=t.file_path.split("/").pop()||t.file_path;return`${e}(${r})`}return e}catch{return e}}log(e,s,t,r,n){if(e0&&(E=` {${Object.entries(a).map(([y,D])=>`${y}=${D}`).join(", ")}}`)}let b=`[${o}] [${i}] [${d}] ${_}${t}${E}${T}`;e===3?console.error(b):console.log(b)}debug(e,s,t,r){this.log(0,e,s,t,r)}info(e,s,t,r){this.log(1,e,s,t,r)}warn(e,s,t,r){this.log(2,e,s,t,r)}error(e,s,t,r){this.log(3,e,s,t,r)}dataIn(e,s,t,r){this.info(e,`\u2192 ${s}`,t,r)}dataOut(e,s,t,r){this.info(e,`\u2190 ${s}`,t,r)}success(e,s,t,r){this.info(e,`\u2713 ${s}`,t,r)}failure(e,s,t,r){this.error(e,`\u2717 ${s}`,t,r)}timing(e,s,t,r){this.info(e,`\u23F1 ${s}`,r,{duration:`${t}ms`})}},L=new N;var g=class{db;constructor(){A(u),this.db=new w(O),this.db.pragma("journal_mode = WAL"),this.db.pragma("synchronous = NORMAL"),this.db.pragma("foreign_keys = ON"),this.initializeSchema(),this.ensureWorkerPortColumn(),this.ensurePromptTrackingColumns(),this.removeSessionSummariesUniqueConstraint(),this.addObservationHierarchicalFields(),this.makeObservationsTextNullable(),this.createUserPromptsTable(),this.ensureDiscoveryTokensColumn()}initializeSchema(){try{this.db.exec(` - CREATE TABLE IF NOT EXISTS schema_versions ( - id INTEGER PRIMARY KEY, - version INTEGER UNIQUE NOT NULL, - applied_at TEXT NOT NULL - ) - `);let e=this.db.prepare("SELECT version FROM schema_versions ORDER BY version").all();(e.length>0?Math.max(...e.map(t=>t.version)):0)===0&&(console.error("[SessionStore] Initializing fresh database with migration004..."),this.db.exec(` - CREATE TABLE IF NOT EXISTS sdk_sessions ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - claude_session_id TEXT UNIQUE NOT NULL, - sdk_session_id TEXT UNIQUE, - project TEXT NOT NULL, - user_prompt TEXT, - started_at TEXT NOT NULL, - started_at_epoch INTEGER NOT NULL, - completed_at TEXT, - completed_at_epoch INTEGER, - status TEXT CHECK(status IN ('active', 'completed', 'failed')) NOT NULL DEFAULT 'active' - ); - - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_claude_id ON sdk_sessions(claude_session_id); - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_sdk_id ON sdk_sessions(sdk_session_id); - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_project ON sdk_sessions(project); - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_status ON sdk_sessions(status); - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_started ON sdk_sessions(started_at_epoch DESC); - - CREATE TABLE IF NOT EXISTS observations ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - text TEXT NOT NULL, - type TEXT NOT NULL CHECK(type IN ('decision', 'bugfix', 'feature', 'refactor', 'discovery')), - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ); - - CREATE INDEX IF NOT EXISTS idx_observations_sdk_session ON observations(sdk_session_id); - CREATE INDEX IF NOT EXISTS idx_observations_project ON observations(project); - CREATE INDEX IF NOT EXISTS idx_observations_type ON observations(type); - CREATE INDEX IF NOT EXISTS idx_observations_created ON observations(created_at_epoch DESC); - - CREATE TABLE IF NOT EXISTS session_summaries ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT UNIQUE NOT NULL, - project TEXT NOT NULL, - request TEXT, - investigated TEXT, - learned TEXT, - completed TEXT, - next_steps TEXT, - files_read TEXT, - files_edited TEXT, - notes TEXT, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ); - - CREATE INDEX IF NOT EXISTS idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); - CREATE INDEX IF NOT EXISTS idx_session_summaries_project ON session_summaries(project); - CREATE INDEX IF NOT EXISTS idx_session_summaries_created ON session_summaries(created_at_epoch DESC); - `),this.db.prepare("INSERT INTO schema_versions (version, applied_at) VALUES (?, ?)").run(4,new Date().toISOString()),console.error("[SessionStore] Migration004 applied successfully"))}catch(e){throw console.error("[SessionStore] Schema initialization error:",e.message),e}}ensureWorkerPortColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(5))return;this.db.pragma("table_info(sdk_sessions)").some(r=>r.name==="worker_port")||(this.db.exec("ALTER TABLE sdk_sessions ADD COLUMN worker_port INTEGER"),console.error("[SessionStore] Added worker_port column to sdk_sessions table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(5,new Date().toISOString())}catch(e){console.error("[SessionStore] Migration error:",e.message)}}ensurePromptTrackingColumns(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(6))return;this.db.pragma("table_info(sdk_sessions)").some(d=>d.name==="prompt_counter")||(this.db.exec("ALTER TABLE sdk_sessions ADD COLUMN prompt_counter INTEGER DEFAULT 0"),console.error("[SessionStore] Added prompt_counter column to sdk_sessions table")),this.db.pragma("table_info(observations)").some(d=>d.name==="prompt_number")||(this.db.exec("ALTER TABLE observations ADD COLUMN prompt_number INTEGER"),console.error("[SessionStore] Added prompt_number column to observations table")),this.db.pragma("table_info(session_summaries)").some(d=>d.name==="prompt_number")||(this.db.exec("ALTER TABLE session_summaries ADD COLUMN prompt_number INTEGER"),console.error("[SessionStore] Added prompt_number column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(6,new Date().toISOString())}catch(e){console.error("[SessionStore] Prompt tracking migration error:",e.message)}}removeSessionSummariesUniqueConstraint(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(7))return;if(!this.db.pragma("index_list(session_summaries)").some(r=>r.unique===1)){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString());return}console.error("[SessionStore] Removing UNIQUE constraint from session_summaries.sdk_session_id..."),this.db.exec("BEGIN TRANSACTION");try{this.db.exec(` - CREATE TABLE session_summaries_new ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - request TEXT, - investigated TEXT, - learned TEXT, - completed TEXT, - next_steps TEXT, - files_read TEXT, - files_edited TEXT, - notes TEXT, - prompt_number INTEGER, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ) - `),this.db.exec(` - INSERT INTO session_summaries_new - SELECT id, sdk_session_id, project, request, investigated, learned, - completed, next_steps, files_read, files_edited, notes, - prompt_number, created_at, created_at_epoch - FROM session_summaries - `),this.db.exec("DROP TABLE session_summaries"),this.db.exec("ALTER TABLE session_summaries_new RENAME TO session_summaries"),this.db.exec(` - CREATE INDEX idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); - CREATE INDEX idx_session_summaries_project ON session_summaries(project); - CREATE INDEX idx_session_summaries_created ON session_summaries(created_at_epoch DESC); - `),this.db.exec("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString()),console.error("[SessionStore] Successfully removed UNIQUE constraint from session_summaries.sdk_session_id")}catch(r){throw this.db.exec("ROLLBACK"),r}}catch(e){console.error("[SessionStore] Migration error (remove UNIQUE constraint):",e.message)}}addObservationHierarchicalFields(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(8))return;if(this.db.pragma("table_info(observations)").some(r=>r.name==="title")){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString());return}console.error("[SessionStore] Adding hierarchical fields to observations table..."),this.db.exec(` - ALTER TABLE observations ADD COLUMN title TEXT; - ALTER TABLE observations ADD COLUMN subtitle TEXT; - ALTER TABLE observations ADD COLUMN facts TEXT; - ALTER TABLE observations ADD COLUMN narrative TEXT; - ALTER TABLE observations ADD COLUMN concepts TEXT; - ALTER TABLE observations ADD COLUMN files_read TEXT; - ALTER TABLE observations ADD COLUMN files_modified TEXT; - `),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString()),console.error("[SessionStore] Successfully added hierarchical fields to observations table")}catch(e){console.error("[SessionStore] Migration error (add hierarchical fields):",e.message)}}makeObservationsTextNullable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(9))return;let t=this.db.pragma("table_info(observations)").find(r=>r.name==="text");if(!t||t.notnull===0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString());return}console.error("[SessionStore] Making observations.text nullable..."),this.db.exec("BEGIN TRANSACTION");try{this.db.exec(` - CREATE TABLE observations_new ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - text TEXT, - type TEXT NOT NULL CHECK(type IN ('decision', 'bugfix', 'feature', 'refactor', 'discovery', 'change')), - title TEXT, - subtitle TEXT, - facts TEXT, - narrative TEXT, - concepts TEXT, - files_read TEXT, - files_modified TEXT, - prompt_number INTEGER, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ) - `),this.db.exec(` - INSERT INTO observations_new - SELECT id, sdk_session_id, project, text, type, title, subtitle, facts, - narrative, concepts, files_read, files_modified, prompt_number, - created_at, created_at_epoch - FROM observations - `),this.db.exec("DROP TABLE observations"),this.db.exec("ALTER TABLE observations_new RENAME TO observations"),this.db.exec(` - CREATE INDEX idx_observations_sdk_session ON observations(sdk_session_id); - CREATE INDEX idx_observations_project ON observations(project); - CREATE INDEX idx_observations_type ON observations(type); - CREATE INDEX idx_observations_created ON observations(created_at_epoch DESC); - `),this.db.exec("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString()),console.error("[SessionStore] Successfully made observations.text nullable")}catch(r){throw this.db.exec("ROLLBACK"),r}}catch(e){console.error("[SessionStore] Migration error (make text nullable):",e.message)}}createUserPromptsTable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(10))return;if(this.db.pragma("table_info(user_prompts)").length>0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString());return}console.error("[SessionStore] Creating user_prompts table with FTS5 support..."),this.db.exec("BEGIN TRANSACTION");try{this.db.exec(` - CREATE TABLE user_prompts ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - claude_session_id TEXT NOT NULL, - prompt_number INTEGER NOT NULL, - prompt_text TEXT NOT NULL, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(claude_session_id) REFERENCES sdk_sessions(claude_session_id) ON DELETE CASCADE - ); - - CREATE INDEX idx_user_prompts_claude_session ON user_prompts(claude_session_id); - CREATE INDEX idx_user_prompts_created ON user_prompts(created_at_epoch DESC); - CREATE INDEX idx_user_prompts_prompt_number ON user_prompts(prompt_number); - CREATE INDEX idx_user_prompts_lookup ON user_prompts(claude_session_id, prompt_number); - `),this.db.exec(` - CREATE VIRTUAL TABLE user_prompts_fts USING fts5( - prompt_text, - content='user_prompts', - content_rowid='id' - ); - `),this.db.exec(` - CREATE TRIGGER user_prompts_ai AFTER INSERT ON user_prompts BEGIN - INSERT INTO user_prompts_fts(rowid, prompt_text) - VALUES (new.id, new.prompt_text); - END; - - CREATE TRIGGER user_prompts_ad AFTER DELETE ON user_prompts BEGIN - INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) - VALUES('delete', old.id, old.prompt_text); - END; - - CREATE TRIGGER user_prompts_au AFTER UPDATE ON user_prompts BEGIN - INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) - VALUES('delete', old.id, old.prompt_text); - INSERT INTO user_prompts_fts(rowid, prompt_text) - VALUES (new.id, new.prompt_text); - END; - `),this.db.exec("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString()),console.error("[SessionStore] Successfully created user_prompts table with FTS5 support")}catch(t){throw this.db.exec("ROLLBACK"),t}}catch(e){console.error("[SessionStore] Migration error (create user_prompts table):",e.message)}}ensureDiscoveryTokensColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(11))return;this.db.pragma("table_info(observations)").some(o=>o.name==="discovery_tokens")||(this.db.exec("ALTER TABLE observations ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.error("[SessionStore] Added discovery_tokens column to observations table")),this.db.pragma("table_info(session_summaries)").some(o=>o.name==="discovery_tokens")||(this.db.exec("ALTER TABLE session_summaries ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.error("[SessionStore] Added discovery_tokens column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(11,new Date().toISOString())}catch(e){throw console.error("[SessionStore] Discovery tokens migration error:",e.message),e}}getRecentSummaries(e,s=10){return this.db.prepare(` - SELECT - request, investigated, learned, completed, next_steps, - files_read, files_edited, notes, prompt_number, created_at - FROM session_summaries - WHERE project = ? - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e,s)}getRecentSummariesWithSessionInfo(e,s=3){return this.db.prepare(` - SELECT - sdk_session_id, request, learned, completed, next_steps, - prompt_number, created_at - FROM session_summaries - WHERE project = ? - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e,s)}getRecentObservations(e,s=20){return this.db.prepare(` - SELECT type, text, prompt_number, created_at - FROM observations - WHERE project = ? - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e,s)}getAllRecentObservations(e=100){return this.db.prepare(` - SELECT id, type, title, subtitle, text, project, prompt_number, created_at, created_at_epoch - FROM observations - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e)}getAllRecentSummaries(e=50){return this.db.prepare(` - SELECT id, request, investigated, learned, completed, next_steps, - files_read, files_edited, notes, project, prompt_number, - created_at, created_at_epoch - FROM session_summaries - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e)}getAllRecentUserPrompts(e=100){return this.db.prepare(` - SELECT - up.id, - up.claude_session_id, - s.project, - up.prompt_number, - up.prompt_text, - up.created_at, - up.created_at_epoch - FROM user_prompts up - LEFT JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - ORDER BY up.created_at_epoch DESC - LIMIT ? - `).all(e)}getAllProjects(){return this.db.prepare(` - SELECT DISTINCT project - FROM sdk_sessions - WHERE project IS NOT NULL AND project != '' - ORDER BY project ASC - `).all().map(t=>t.project)}getRecentSessionsWithStatus(e,s=3){return this.db.prepare(` - SELECT * FROM ( - SELECT - s.sdk_session_id, - s.status, - s.started_at, - s.started_at_epoch, - s.user_prompt, - CASE WHEN sum.sdk_session_id IS NOT NULL THEN 1 ELSE 0 END as has_summary - FROM sdk_sessions s - LEFT JOIN session_summaries sum ON s.sdk_session_id = sum.sdk_session_id - WHERE s.project = ? AND s.sdk_session_id IS NOT NULL - GROUP BY s.sdk_session_id - ORDER BY s.started_at_epoch DESC - LIMIT ? - ) - ORDER BY started_at_epoch ASC - `).all(e,s)}getObservationsForSession(e){return this.db.prepare(` - SELECT title, subtitle, type, prompt_number - FROM observations - WHERE sdk_session_id = ? - ORDER BY created_at_epoch ASC - `).all(e)}getObservationById(e){return this.db.prepare(` - SELECT * - FROM observations - WHERE id = ? - `).get(e)||null}getObservationsByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:r}=s,n=t==="date_asc"?"ASC":"DESC",o=r?`LIMIT ${r}`:"",i=e.map(()=>"?").join(",");return this.db.prepare(` - SELECT * - FROM observations - WHERE id IN (${i}) - ORDER BY created_at_epoch ${n} - ${o} - `).all(...e)}getSummaryForSession(e){return this.db.prepare(` - SELECT - request, investigated, learned, completed, next_steps, - files_read, files_edited, notes, prompt_number, created_at - FROM session_summaries - WHERE sdk_session_id = ? - ORDER BY created_at_epoch DESC - LIMIT 1 - `).get(e)||null}getFilesForSession(e){let t=this.db.prepare(` - SELECT files_read, files_modified - FROM observations - WHERE sdk_session_id = ? - `).all(e),r=new Set,n=new Set;for(let o of t){if(o.files_read)try{let i=JSON.parse(o.files_read);Array.isArray(i)&&i.forEach(d=>r.add(d))}catch{}if(o.files_modified)try{let i=JSON.parse(o.files_modified);Array.isArray(i)&&i.forEach(d=>n.add(d))}catch{}}return{filesRead:Array.from(r),filesModified:Array.from(n)}}getSessionById(e){return this.db.prepare(` - SELECT id, claude_session_id, sdk_session_id, project, user_prompt - FROM sdk_sessions - WHERE id = ? - LIMIT 1 - `).get(e)||null}findActiveSDKSession(e){return this.db.prepare(` - SELECT id, sdk_session_id, project, worker_port - FROM sdk_sessions - WHERE claude_session_id = ? AND status = 'active' - LIMIT 1 - `).get(e)||null}findAnySDKSession(e){return this.db.prepare(` - SELECT id - FROM sdk_sessions - WHERE claude_session_id = ? - LIMIT 1 - `).get(e)||null}reactivateSession(e,s){this.db.prepare(` - UPDATE sdk_sessions - SET status = 'active', user_prompt = ?, worker_port = NULL - WHERE id = ? - `).run(s,e)}incrementPromptCounter(e){return this.db.prepare(` - UPDATE sdk_sessions - SET prompt_counter = COALESCE(prompt_counter, 0) + 1 - WHERE id = ? - `).run(e),this.db.prepare(` - SELECT prompt_counter FROM sdk_sessions WHERE id = ? - `).get(e)?.prompt_counter||1}getPromptCounter(e){return this.db.prepare(` - SELECT prompt_counter FROM sdk_sessions WHERE id = ? - `).get(e)?.prompt_counter||0}createSDKSession(e,s,t){let r=new Date,n=r.getTime(),i=this.db.prepare(` - INSERT OR IGNORE INTO sdk_sessions - (claude_session_id, sdk_session_id, project, user_prompt, started_at, started_at_epoch, status) - VALUES (?, ?, ?, ?, ?, ?, 'active') - `).run(e,e,s,t,r.toISOString(),n);return i.lastInsertRowid===0||i.changes===0?(s&&s.trim()!==""&&this.db.prepare(` - UPDATE sdk_sessions - SET project = ?, user_prompt = ? - WHERE claude_session_id = ? - `).run(s,t,e),this.db.prepare(` - SELECT id FROM sdk_sessions WHERE claude_session_id = ? LIMIT 1 - `).get(e).id):i.lastInsertRowid}updateSDKSessionId(e,s){return this.db.prepare(` - UPDATE sdk_sessions - SET sdk_session_id = ? - WHERE id = ? AND sdk_session_id IS NULL - `).run(s,e).changes===0?(L.debug("DB","sdk_session_id already set, skipping update",{sessionId:e,sdkSessionId:s}),!1):!0}setWorkerPort(e,s){this.db.prepare(` - UPDATE sdk_sessions - SET worker_port = ? - WHERE id = ? - `).run(s,e)}getWorkerPort(e){return this.db.prepare(` - SELECT worker_port - FROM sdk_sessions - WHERE id = ? - LIMIT 1 - `).get(e)?.worker_port||null}saveUserPrompt(e,s,t){let r=new Date,n=r.getTime();return this.db.prepare(` - INSERT INTO user_prompts - (claude_session_id, prompt_number, prompt_text, created_at, created_at_epoch) - VALUES (?, ?, ?, ?, ?) - `).run(e,s,t,r.toISOString(),n).lastInsertRowid}getUserPrompt(e,s){return this.db.prepare(` - SELECT prompt_text - FROM user_prompts - WHERE claude_session_id = ? AND prompt_number = ? - LIMIT 1 - `).get(e,s)?.prompt_text??null}storeObservation(e,s,t,r,n=0){let o=new Date,i=o.getTime();this.db.prepare(` - SELECT id FROM sdk_sessions WHERE sdk_session_id = ? - `).get(e)||(this.db.prepare(` - INSERT INTO sdk_sessions - (claude_session_id, sdk_session_id, project, started_at, started_at_epoch, status) - VALUES (?, ?, ?, ?, ?, 'active') - `).run(e,e,s,o.toISOString(),i),console.error(`[SessionStore] Auto-created session record for session_id: ${e}`));let E=this.db.prepare(` - INSERT INTO observations - (sdk_session_id, project, type, title, subtitle, facts, narrative, concepts, - files_read, files_modified, prompt_number, discovery_tokens, created_at, created_at_epoch) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `).run(e,s,t.type,t.title,t.subtitle,JSON.stringify(t.facts),t.narrative,JSON.stringify(t.concepts),JSON.stringify(t.files_read),JSON.stringify(t.files_modified),r||null,n,o.toISOString(),i);return{id:Number(E.lastInsertRowid),createdAtEpoch:i}}storeSummary(e,s,t,r,n=0){let o=new Date,i=o.getTime();this.db.prepare(` - SELECT id FROM sdk_sessions WHERE sdk_session_id = ? - `).get(e)||(this.db.prepare(` - INSERT INTO sdk_sessions - (claude_session_id, sdk_session_id, project, started_at, started_at_epoch, status) - VALUES (?, ?, ?, ?, ?, 'active') - `).run(e,e,s,o.toISOString(),i),console.error(`[SessionStore] Auto-created session record for session_id: ${e}`));let E=this.db.prepare(` - INSERT INTO session_summaries - (sdk_session_id, project, request, investigated, learned, completed, - next_steps, notes, prompt_number, discovery_tokens, created_at, created_at_epoch) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `).run(e,s,t.request,t.investigated,t.learned,t.completed,t.next_steps,t.notes,r||null,n,o.toISOString(),i);return{id:Number(E.lastInsertRowid),createdAtEpoch:i}}markSessionCompleted(e){let s=new Date,t=s.getTime();this.db.prepare(` - UPDATE sdk_sessions - SET status = 'completed', completed_at = ?, completed_at_epoch = ? - WHERE id = ? - `).run(s.toISOString(),t,e)}markSessionFailed(e){let s=new Date,t=s.getTime();this.db.prepare(` - UPDATE sdk_sessions - SET status = 'failed', completed_at = ?, completed_at_epoch = ? - WHERE id = ? - `).run(s.toISOString(),t,e)}getSessionSummariesByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:r}=s,n=t==="date_asc"?"ASC":"DESC",o=r?`LIMIT ${r}`:"",i=e.map(()=>"?").join(",");return this.db.prepare(` - SELECT * FROM session_summaries - WHERE id IN (${i}) - ORDER BY created_at_epoch ${n} - ${o} - `).all(...e)}getUserPromptsByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:r}=s,n=t==="date_asc"?"ASC":"DESC",o=r?`LIMIT ${r}`:"",i=e.map(()=>"?").join(",");return this.db.prepare(` - SELECT - up.*, - s.project, - s.sdk_session_id - FROM user_prompts up - JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - WHERE up.id IN (${i}) - ORDER BY up.created_at_epoch ${n} - ${o} - `).all(...e)}getTimelineAroundTimestamp(e,s=10,t=10,r){return this.getTimelineAroundObservation(null,e,s,t,r)}getTimelineAroundObservation(e,s,t=10,r=10,n){let o=n?"AND project = ?":"",i=n?[n]:[],d,_;if(e!==null){let l=` - SELECT id, created_at_epoch - FROM observations - WHERE id <= ? ${o} - ORDER BY id DESC - LIMIT ? - `,S=` - SELECT id, created_at_epoch - FROM observations - WHERE id >= ? ${o} - ORDER BY id ASC - LIMIT ? - `;try{let p=this.db.prepare(l).all(e,...i,t+1),a=this.db.prepare(S).all(e,...i,r+1);if(p.length===0&&a.length===0)return{observations:[],sessions:[],prompts:[]};d=p.length>0?p[p.length-1].created_at_epoch:s,_=a.length>0?a[a.length-1].created_at_epoch:s}catch(p){return console.error("[SessionStore] Error getting boundary observations:",p.message),{observations:[],sessions:[],prompts:[]}}}else{let l=` - SELECT created_at_epoch - FROM observations - WHERE created_at_epoch <= ? ${o} - ORDER BY created_at_epoch DESC - LIMIT ? - `,S=` - SELECT created_at_epoch - FROM observations - WHERE created_at_epoch >= ? ${o} - ORDER BY created_at_epoch ASC - LIMIT ? - `;try{let p=this.db.prepare(l).all(s,...i,t),a=this.db.prepare(S).all(s,...i,r+1);if(p.length===0&&a.length===0)return{observations:[],sessions:[],prompts:[]};d=p.length>0?p[p.length-1].created_at_epoch:s,_=a.length>0?a[a.length-1].created_at_epoch:s}catch(p){return console.error("[SessionStore] Error getting boundary timestamps:",p.message),{observations:[],sessions:[],prompts:[]}}}let T=` - SELECT * - FROM observations - WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${o} - ORDER BY created_at_epoch ASC - `,E=` - SELECT * - FROM session_summaries - WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${o} - ORDER BY created_at_epoch ASC - `,b=` - SELECT up.*, s.project, s.sdk_session_id - FROM user_prompts up - JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - WHERE up.created_at_epoch >= ? AND up.created_at_epoch <= ? ${o.replace("project","s.project")} - ORDER BY up.created_at_epoch ASC - `;try{let l=this.db.prepare(T).all(d,_,...i),S=this.db.prepare(E).all(d,_,...i),p=this.db.prepare(b).all(d,_,...i);return{observations:l,sessions:S.map(a=>({id:a.id,sdk_session_id:a.sdk_session_id,project:a.project,request:a.request,completed:a.completed,next_steps:a.next_steps,created_at:a.created_at,created_at_epoch:a.created_at_epoch})),prompts:p.map(a=>({id:a.id,claude_session_id:a.claude_session_id,project:a.project,prompt:a.prompt_text,created_at:a.created_at,created_at_epoch:a.created_at_epoch}))}}catch(l){return console.error("[SessionStore] Error querying timeline records:",l.message),{observations:[],sessions:[],prompts:[]}}}close(){this.db.close()}};import F from"path";import{homedir as X}from"os";import{existsSync as B,readFileSync as P}from"fs";function v(){try{let c=F.join(X(),".claude-mem","settings.json");if(B(c)){let e=JSON.parse(P(c,"utf-8")),s=parseInt(e.env?.CLAUDE_MEM_WORKER_PORT,10);if(!isNaN(s))return s}}catch{}return parseInt(process.env.CLAUDE_MEM_WORKER_PORT||"37777",10)}async function C(c){console.error("[claude-mem cleanup] Hook fired",{input:c?{session_id:c.session_id,cwd:c.cwd,reason:c.reason}:null}),c||(console.log("No input provided - this script is designed to run as a Claude Code SessionEnd hook"),console.log(` -Expected input format:`),console.log(JSON.stringify({session_id:"string",cwd:"string",transcript_path:"string",hook_event_name:"SessionEnd",reason:"exit"},null,2)),process.exit(0));let{session_id:e,reason:s}=c;console.error("[claude-mem cleanup] Searching for active SDK session",{session_id:e,reason:s});let t=new g,r=t.findActiveSDKSession(e);r||(console.error("[claude-mem cleanup] No active SDK session found",{session_id:e}),t.close(),console.log('{"continue": true, "suppressOutput": true}'),process.exit(0)),console.error("[claude-mem cleanup] Active SDK session found",{session_id:r.id,sdk_session_id:r.sdk_session_id,project:r.project,worker_port:r.worker_port}),t.markSessionCompleted(r.id),console.error("[claude-mem cleanup] Session marked as completed in database"),t.close();try{let n=r.worker_port||v();await fetch(`http://127.0.0.1:${n}/sessions/${r.id}/complete`,{method:"POST",signal:AbortSignal.timeout(1e3)}),console.error("[claude-mem cleanup] Worker notified to stop processing indicator")}catch(n){console.error("[claude-mem cleanup] Failed to notify worker (non-critical):",n)}console.error("[claude-mem cleanup] Cleanup completed successfully"),console.log('{"continue": true, "suppressOutput": true}'),process.exit(0)}if(f.isTTY)C(void 0);else{let c="";f.on("data",e=>c+=e),f.on("end",async()=>{let e=c?JSON.parse(c):void 0;await C(e)})} +import{stdin as S}from"process";import h from"path";import{homedir as y}from"os";import{join as o,dirname as C,basename as v}from"path";import{homedir as g}from"os";import{fileURLToPath as D}from"url";function M(){return typeof __dirname<"u"?__dirname:C(D(import.meta.url))}var H=M(),s=process.env.CLAUDE_MEM_DATA_DIR||o(g(),".claude-mem"),l=process.env.CLAUDE_CONFIG_DIR||o(g(),".claude"),X=o(s,"archives"),B=o(s,"logs"),V=o(s,"trash"),$=o(s,"backups"),j=o(s,"settings.json"),G=o(s,"claude-mem.db"),K=o(s,"vector-db"),Y=o(l,"settings.json"),J=o(l,"commands"),q=o(l,"CLAUDE.md");import{readFileSync as R,existsSync as U}from"fs";var N=["bugfix","feature","refactor","discovery","decision","change"],L=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"];var m=N.join(","),d=L.join(",");var p=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:m,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:d,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(t){return process.env[t]||this.DEFAULTS[t]}static getInt(t){let r=this.get(t);return parseInt(r,10)}static getBool(t){return this.get(t)==="true"}static loadFromFile(t){if(!U(t))return this.getAllDefaults();let r=R(t,"utf-8"),n=JSON.parse(r).env||{},i={...this.DEFAULTS};for(let _ of Object.keys(this.DEFAULTS))n[_]!==void 0&&(i[_]=n[_]);return i}};function O(){let e=h.join(y(),".claude-mem","settings.json"),t=p.loadFromFile(e);return parseInt(t.CLAUDE_MEM_WORKER_PORT,10)}import{appendFileSync as I}from"fs";import{homedir as x}from"os";import{join as P}from"path";var k=P(x(),".claude-mem","silent.log");function c(e,t,r=""){let a=new Date().toISOString(),u=((new Error().stack||"").split(` +`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),A=u?`${u[1].split("/").pop()}:${u[2]}`:"unknown",E=`[${a}] [${A}] ${e}`;if(t!==void 0)try{E+=` ${JSON.stringify(t)}`}catch(T){E+=` [stringify error: ${T}]`}E+=` +`;try{I(k,E)}catch(T){console.error("[silent-debug] Failed to write to log:",T)}return r}async function f(e){c("[cleanup-hook] Hook fired",{session_id:e?.session_id,cwd:e?.cwd,reason:e?.reason}),e||(console.log("No input provided - this script is designed to run as a Claude Code SessionEnd hook"),console.log(` +Expected input format:`),console.log(JSON.stringify({session_id:"string",cwd:"string",transcript_path:"string",hook_event_name:"SessionEnd",reason:"exit"},null,2)),process.exit(0));let{session_id:t,reason:r}=e,a=O();try{let n=await fetch(`http://127.0.0.1:${a}/api/sessions/complete`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({claudeSessionId:t,reason:r}),signal:AbortSignal.timeout(2e3)});if(n.ok){let i=await n.json();c("[cleanup-hook] Session cleanup completed",i)}else c("[cleanup-hook] Session not found or already cleaned up")}catch(n){c("[cleanup-hook] Worker not reachable (non-critical)",{error:n.message})}console.log('{"continue": true, "suppressOutput": true}'),process.exit(0)}if(S.isTTY)f(void 0);else{let e="";S.on("data",t=>e+=t),S.on("end",async()=>{let t=e?JSON.parse(e):void 0;await f(t)})} diff --git a/plugin/scripts/context-generator.cjs b/plugin/scripts/context-generator.cjs new file mode 100644 index 00000000..ae5281ea --- /dev/null +++ b/plugin/scripts/context-generator.cjs @@ -0,0 +1,449 @@ +"use strict";var De=Object.create;var V=Object.defineProperty;var ke=Object.getOwnPropertyDescriptor;var Me=Object.getOwnPropertyNames;var xe=Object.getPrototypeOf,$e=Object.prototype.hasOwnProperty;var Ue=(d,e)=>{for(var s in e)V(d,s,{get:e[s],enumerable:!0})},me=(d,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Me(e))!$e.call(d,n)&&n!==s&&V(d,n,{get:()=>e[n],enumerable:!(r=ke(e,n))||r.enumerable});return d};var Ee=(d,e,s)=>(s=d!=null?De(xe(d)):{},me(e||!d||!d.__esModule?V(s,"default",{value:d,enumerable:!0}):s,d)),we=d=>me(V({},"__esModule",{value:!0}),d);var Je={};Ue(Je,{generateContext:()=>qe});module.exports=we(Je);var $=Ee(require("path"),1),z=require("os"),P=require("fs");var Se=Ee(require("better-sqlite3"),1);var g=require("path"),te=require("os"),re=require("fs");var Te=require("url"),Xe={};function Fe(){return typeof __dirname<"u"?__dirname:(0,g.dirname)((0,Te.fileURLToPath)(Xe.url))}var ss=Fe(),C=process.env.CLAUDE_MEM_DATA_DIR||(0,g.join)((0,te.homedir)(),".claude-mem"),ne=process.env.CLAUDE_CONFIG_DIR||(0,g.join)((0,te.homedir)(),".claude"),ts=(0,g.join)(C,"archives"),rs=(0,g.join)(C,"logs"),ns=(0,g.join)(C,"trash"),os=(0,g.join)(C,"backups"),is=(0,g.join)(C,"settings.json"),ge=(0,g.join)(C,"claude-mem.db"),as=(0,g.join)(C,"vector-db"),ds=(0,g.join)(ne,"settings.json"),cs=(0,g.join)(ne,"commands"),ps=(0,g.join)(ne,"CLAUDE.md");function he(d){(0,re.mkdirSync)(d,{recursive:!0})}var oe=(i=>(i[i.DEBUG=0]="DEBUG",i[i.INFO=1]="INFO",i[i.WARN=2]="WARN",i[i.ERROR=3]="ERROR",i[i.SILENT=4]="SILENT",i))(oe||{}),ie=class{level;useColor;constructor(){let e=process.env.CLAUDE_MEM_LOG_LEVEL?.toUpperCase()||"INFO";this.level=oe[e]??1,this.useColor=process.stdout.isTTY??!1}correlationId(e,s){return`obs-${e}-${s}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.level===0?`${e.message} +${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Object.keys(e);return s.length===0?"{}":s.length<=3?JSON.stringify(e):`{${s.length} keys: ${s.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,s){if(!s)return e;try{let r=typeof s=="string"?JSON.parse(s):s;if(e==="Bash"&&r.command){let n=r.command.length>50?r.command.substring(0,50)+"...":r.command;return`${e}(${n})`}if(e==="Read"&&r.file_path){let n=r.file_path.split("/").pop()||r.file_path;return`${e}(${n})`}if(e==="Edit"&&r.file_path){let n=r.file_path.split("/").pop()||r.file_path;return`${e}(${n})`}if(e==="Write"&&r.file_path){let n=r.file_path.split("/").pop()||r.file_path;return`${e}(${n})`}return e}catch{return e}}log(e,s,r,n,i){if(e0&&(b=` {${Object.entries(t).map(([O,h])=>`${O}=${h}`).join(", ")}}`)}let v=`[${a}] [${c}] [${_}] ${S}${r}${b}${T}`;e===3?console.error(v):console.log(v)}debug(e,s,r,n){this.log(0,e,s,r,n)}info(e,s,r,n){this.log(1,e,s,r,n)}warn(e,s,r,n){this.log(2,e,s,r,n)}error(e,s,r,n){this.log(3,e,s,r,n)}dataIn(e,s,r,n){this.info(e,`\u2192 ${s}`,r,n)}dataOut(e,s,r,n){this.info(e,`\u2190 ${s}`,r,n)}success(e,s,r,n){this.info(e,`\u2713 ${s}`,r,n)}failure(e,s,r,n){this.error(e,`\u2717 ${s}`,r,n)}timing(e,s,r,n){this.info(e,`\u23F1 ${s}`,n,{duration:`${r}ms`})}},B=new ie;var K=class{db;constructor(){he(C),this.db=new Se.default(ge),this.db.pragma("journal_mode = WAL"),this.db.pragma("synchronous = NORMAL"),this.db.pragma("foreign_keys = ON"),this.initializeSchema(),this.ensureWorkerPortColumn(),this.ensurePromptTrackingColumns(),this.removeSessionSummariesUniqueConstraint(),this.addObservationHierarchicalFields(),this.makeObservationsTextNullable(),this.createUserPromptsTable(),this.ensureDiscoveryTokensColumn()}initializeSchema(){try{this.db.exec(` + CREATE TABLE IF NOT EXISTS schema_versions ( + id INTEGER PRIMARY KEY, + version INTEGER UNIQUE NOT NULL, + applied_at TEXT NOT NULL + ) + `);let e=this.db.prepare("SELECT version FROM schema_versions ORDER BY version").all();(e.length>0?Math.max(...e.map(r=>r.version)):0)===0&&(console.error("[SessionStore] Initializing fresh database with migration004..."),this.db.exec(` + CREATE TABLE IF NOT EXISTS sdk_sessions ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + claude_session_id TEXT UNIQUE NOT NULL, + sdk_session_id TEXT UNIQUE, + project TEXT NOT NULL, + user_prompt TEXT, + started_at TEXT NOT NULL, + started_at_epoch INTEGER NOT NULL, + completed_at TEXT, + completed_at_epoch INTEGER, + status TEXT CHECK(status IN ('active', 'completed', 'failed')) NOT NULL DEFAULT 'active' + ); + + CREATE INDEX IF NOT EXISTS idx_sdk_sessions_claude_id ON sdk_sessions(claude_session_id); + CREATE INDEX IF NOT EXISTS idx_sdk_sessions_sdk_id ON sdk_sessions(sdk_session_id); + CREATE INDEX IF NOT EXISTS idx_sdk_sessions_project ON sdk_sessions(project); + CREATE INDEX IF NOT EXISTS idx_sdk_sessions_status ON sdk_sessions(status); + CREATE INDEX IF NOT EXISTS idx_sdk_sessions_started ON sdk_sessions(started_at_epoch DESC); + + CREATE TABLE IF NOT EXISTS observations ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + sdk_session_id TEXT NOT NULL, + project TEXT NOT NULL, + text TEXT NOT NULL, + type TEXT NOT NULL CHECK(type IN ('decision', 'bugfix', 'feature', 'refactor', 'discovery')), + created_at TEXT NOT NULL, + created_at_epoch INTEGER NOT NULL, + FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE + ); + + CREATE INDEX IF NOT EXISTS idx_observations_sdk_session ON observations(sdk_session_id); + CREATE INDEX IF NOT EXISTS idx_observations_project ON observations(project); + CREATE INDEX IF NOT EXISTS idx_observations_type ON observations(type); + CREATE INDEX IF NOT EXISTS idx_observations_created ON observations(created_at_epoch DESC); + + CREATE TABLE IF NOT EXISTS session_summaries ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + sdk_session_id TEXT UNIQUE NOT NULL, + project TEXT NOT NULL, + request TEXT, + investigated TEXT, + learned TEXT, + completed TEXT, + next_steps TEXT, + files_read TEXT, + files_edited TEXT, + notes TEXT, + created_at TEXT NOT NULL, + created_at_epoch INTEGER NOT NULL, + FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE + ); + + CREATE INDEX IF NOT EXISTS idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); + CREATE INDEX IF NOT EXISTS idx_session_summaries_project ON session_summaries(project); + CREATE INDEX IF NOT EXISTS idx_session_summaries_created ON session_summaries(created_at_epoch DESC); + `),this.db.prepare("INSERT INTO schema_versions (version, applied_at) VALUES (?, ?)").run(4,new Date().toISOString()),console.error("[SessionStore] Migration004 applied successfully"))}catch(e){throw console.error("[SessionStore] Schema initialization error:",e.message),e}}ensureWorkerPortColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(5))return;this.db.pragma("table_info(sdk_sessions)").some(n=>n.name==="worker_port")||(this.db.exec("ALTER TABLE sdk_sessions ADD COLUMN worker_port INTEGER"),console.error("[SessionStore] Added worker_port column to sdk_sessions table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(5,new Date().toISOString())}catch(e){console.error("[SessionStore] Migration error:",e.message)}}ensurePromptTrackingColumns(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(6))return;this.db.pragma("table_info(sdk_sessions)").some(_=>_.name==="prompt_counter")||(this.db.exec("ALTER TABLE sdk_sessions ADD COLUMN prompt_counter INTEGER DEFAULT 0"),console.error("[SessionStore] Added prompt_counter column to sdk_sessions table")),this.db.pragma("table_info(observations)").some(_=>_.name==="prompt_number")||(this.db.exec("ALTER TABLE observations ADD COLUMN prompt_number INTEGER"),console.error("[SessionStore] Added prompt_number column to observations table")),this.db.pragma("table_info(session_summaries)").some(_=>_.name==="prompt_number")||(this.db.exec("ALTER TABLE session_summaries ADD COLUMN prompt_number INTEGER"),console.error("[SessionStore] Added prompt_number column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(6,new Date().toISOString())}catch(e){console.error("[SessionStore] Prompt tracking migration error:",e.message)}}removeSessionSummariesUniqueConstraint(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(7))return;if(!this.db.pragma("index_list(session_summaries)").some(n=>n.unique===1)){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString());return}console.error("[SessionStore] Removing UNIQUE constraint from session_summaries.sdk_session_id..."),this.db.exec("BEGIN TRANSACTION");try{this.db.exec(` + CREATE TABLE session_summaries_new ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + sdk_session_id TEXT NOT NULL, + project TEXT NOT NULL, + request TEXT, + investigated TEXT, + learned TEXT, + completed TEXT, + next_steps TEXT, + files_read TEXT, + files_edited TEXT, + notes TEXT, + prompt_number INTEGER, + created_at TEXT NOT NULL, + created_at_epoch INTEGER NOT NULL, + FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE + ) + `),this.db.exec(` + INSERT INTO session_summaries_new + SELECT id, sdk_session_id, project, request, investigated, learned, + completed, next_steps, files_read, files_edited, notes, + prompt_number, created_at, created_at_epoch + FROM session_summaries + `),this.db.exec("DROP TABLE session_summaries"),this.db.exec("ALTER TABLE session_summaries_new RENAME TO session_summaries"),this.db.exec(` + CREATE INDEX idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); + CREATE INDEX idx_session_summaries_project ON session_summaries(project); + CREATE INDEX idx_session_summaries_created ON session_summaries(created_at_epoch DESC); + `),this.db.exec("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString()),console.error("[SessionStore] Successfully removed UNIQUE constraint from session_summaries.sdk_session_id")}catch(n){throw this.db.exec("ROLLBACK"),n}}catch(e){console.error("[SessionStore] Migration error (remove UNIQUE constraint):",e.message)}}addObservationHierarchicalFields(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(8))return;if(this.db.pragma("table_info(observations)").some(n=>n.name==="title")){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString());return}console.error("[SessionStore] Adding hierarchical fields to observations table..."),this.db.exec(` + ALTER TABLE observations ADD COLUMN title TEXT; + ALTER TABLE observations ADD COLUMN subtitle TEXT; + ALTER TABLE observations ADD COLUMN facts TEXT; + ALTER TABLE observations ADD COLUMN narrative TEXT; + ALTER TABLE observations ADD COLUMN concepts TEXT; + ALTER TABLE observations ADD COLUMN files_read TEXT; + ALTER TABLE observations ADD COLUMN files_modified TEXT; + `),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString()),console.error("[SessionStore] Successfully added hierarchical fields to observations table")}catch(e){console.error("[SessionStore] Migration error (add hierarchical fields):",e.message)}}makeObservationsTextNullable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(9))return;let r=this.db.pragma("table_info(observations)").find(n=>n.name==="text");if(!r||r.notnull===0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString());return}console.error("[SessionStore] Making observations.text nullable..."),this.db.exec("BEGIN TRANSACTION");try{this.db.exec(` + CREATE TABLE observations_new ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + sdk_session_id TEXT NOT NULL, + project TEXT NOT NULL, + text TEXT, + type TEXT NOT NULL CHECK(type IN ('decision', 'bugfix', 'feature', 'refactor', 'discovery', 'change')), + title TEXT, + subtitle TEXT, + facts TEXT, + narrative TEXT, + concepts TEXT, + files_read TEXT, + files_modified TEXT, + prompt_number INTEGER, + created_at TEXT NOT NULL, + created_at_epoch INTEGER NOT NULL, + FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE + ) + `),this.db.exec(` + INSERT INTO observations_new + SELECT id, sdk_session_id, project, text, type, title, subtitle, facts, + narrative, concepts, files_read, files_modified, prompt_number, + created_at, created_at_epoch + FROM observations + `),this.db.exec("DROP TABLE observations"),this.db.exec("ALTER TABLE observations_new RENAME TO observations"),this.db.exec(` + CREATE INDEX idx_observations_sdk_session ON observations(sdk_session_id); + CREATE INDEX idx_observations_project ON observations(project); + CREATE INDEX idx_observations_type ON observations(type); + CREATE INDEX idx_observations_created ON observations(created_at_epoch DESC); + `),this.db.exec("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString()),console.error("[SessionStore] Successfully made observations.text nullable")}catch(n){throw this.db.exec("ROLLBACK"),n}}catch(e){console.error("[SessionStore] Migration error (make text nullable):",e.message)}}createUserPromptsTable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(10))return;if(this.db.pragma("table_info(user_prompts)").length>0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString());return}console.error("[SessionStore] Creating user_prompts table with FTS5 support..."),this.db.exec("BEGIN TRANSACTION");try{this.db.exec(` + CREATE TABLE user_prompts ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + claude_session_id TEXT NOT NULL, + prompt_number INTEGER NOT NULL, + prompt_text TEXT NOT NULL, + created_at TEXT NOT NULL, + created_at_epoch INTEGER NOT NULL, + FOREIGN KEY(claude_session_id) REFERENCES sdk_sessions(claude_session_id) ON DELETE CASCADE + ); + + CREATE INDEX idx_user_prompts_claude_session ON user_prompts(claude_session_id); + CREATE INDEX idx_user_prompts_created ON user_prompts(created_at_epoch DESC); + CREATE INDEX idx_user_prompts_prompt_number ON user_prompts(prompt_number); + CREATE INDEX idx_user_prompts_lookup ON user_prompts(claude_session_id, prompt_number); + `),this.db.exec(` + CREATE VIRTUAL TABLE user_prompts_fts USING fts5( + prompt_text, + content='user_prompts', + content_rowid='id' + ); + `),this.db.exec(` + CREATE TRIGGER user_prompts_ai AFTER INSERT ON user_prompts BEGIN + INSERT INTO user_prompts_fts(rowid, prompt_text) + VALUES (new.id, new.prompt_text); + END; + + CREATE TRIGGER user_prompts_ad AFTER DELETE ON user_prompts BEGIN + INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) + VALUES('delete', old.id, old.prompt_text); + END; + + CREATE TRIGGER user_prompts_au AFTER UPDATE ON user_prompts BEGIN + INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) + VALUES('delete', old.id, old.prompt_text); + INSERT INTO user_prompts_fts(rowid, prompt_text) + VALUES (new.id, new.prompt_text); + END; + `),this.db.exec("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString()),console.error("[SessionStore] Successfully created user_prompts table with FTS5 support")}catch(r){throw this.db.exec("ROLLBACK"),r}}catch(e){console.error("[SessionStore] Migration error (create user_prompts table):",e.message)}}ensureDiscoveryTokensColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(11))return;this.db.pragma("table_info(observations)").some(a=>a.name==="discovery_tokens")||(this.db.exec("ALTER TABLE observations ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.error("[SessionStore] Added discovery_tokens column to observations table")),this.db.pragma("table_info(session_summaries)").some(a=>a.name==="discovery_tokens")||(this.db.exec("ALTER TABLE session_summaries ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.error("[SessionStore] Added discovery_tokens column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(11,new Date().toISOString())}catch(e){throw console.error("[SessionStore] Discovery tokens migration error:",e.message),e}}getRecentSummaries(e,s=10){return this.db.prepare(` + SELECT + request, investigated, learned, completed, next_steps, + files_read, files_edited, notes, prompt_number, created_at + FROM session_summaries + WHERE project = ? + ORDER BY created_at_epoch DESC + LIMIT ? + `).all(e,s)}getRecentSummariesWithSessionInfo(e,s=3){return this.db.prepare(` + SELECT + sdk_session_id, request, learned, completed, next_steps, + prompt_number, created_at + FROM session_summaries + WHERE project = ? + ORDER BY created_at_epoch DESC + LIMIT ? + `).all(e,s)}getRecentObservations(e,s=20){return this.db.prepare(` + SELECT type, text, prompt_number, created_at + FROM observations + WHERE project = ? + ORDER BY created_at_epoch DESC + LIMIT ? + `).all(e,s)}getAllRecentObservations(e=100){return this.db.prepare(` + SELECT id, type, title, subtitle, text, project, prompt_number, created_at, created_at_epoch + FROM observations + ORDER BY created_at_epoch DESC + LIMIT ? + `).all(e)}getAllRecentSummaries(e=50){return this.db.prepare(` + SELECT id, request, investigated, learned, completed, next_steps, + files_read, files_edited, notes, project, prompt_number, + created_at, created_at_epoch + FROM session_summaries + ORDER BY created_at_epoch DESC + LIMIT ? + `).all(e)}getAllRecentUserPrompts(e=100){return this.db.prepare(` + SELECT + up.id, + up.claude_session_id, + s.project, + up.prompt_number, + up.prompt_text, + up.created_at, + up.created_at_epoch + FROM user_prompts up + LEFT JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id + ORDER BY up.created_at_epoch DESC + LIMIT ? + `).all(e)}getAllProjects(){return this.db.prepare(` + SELECT DISTINCT project + FROM sdk_sessions + WHERE project IS NOT NULL AND project != '' + ORDER BY project ASC + `).all().map(r=>r.project)}getLatestUserPrompt(e){return this.db.prepare(` + SELECT + up.*, + s.sdk_session_id, + s.project + FROM user_prompts up + JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id + WHERE up.claude_session_id = ? + ORDER BY up.created_at_epoch DESC + LIMIT 1 + `).get(e)}getRecentSessionsWithStatus(e,s=3){return this.db.prepare(` + SELECT * FROM ( + SELECT + s.sdk_session_id, + s.status, + s.started_at, + s.started_at_epoch, + s.user_prompt, + CASE WHEN sum.sdk_session_id IS NOT NULL THEN 1 ELSE 0 END as has_summary + FROM sdk_sessions s + LEFT JOIN session_summaries sum ON s.sdk_session_id = sum.sdk_session_id + WHERE s.project = ? AND s.sdk_session_id IS NOT NULL + GROUP BY s.sdk_session_id + ORDER BY s.started_at_epoch DESC + LIMIT ? + ) + ORDER BY started_at_epoch ASC + `).all(e,s)}getObservationsForSession(e){return this.db.prepare(` + SELECT title, subtitle, type, prompt_number + FROM observations + WHERE sdk_session_id = ? + ORDER BY created_at_epoch ASC + `).all(e)}getObservationById(e){return this.db.prepare(` + SELECT * + FROM observations + WHERE id = ? + `).get(e)||null}getObservationsByIds(e,s={}){if(e.length===0)return[];let{orderBy:r="date_desc",limit:n}=s,i=r==="date_asc"?"ASC":"DESC",a=n?`LIMIT ${n}`:"",c=e.map(()=>"?").join(",");return this.db.prepare(` + SELECT * + FROM observations + WHERE id IN (${c}) + ORDER BY created_at_epoch ${i} + ${a} + `).all(...e)}getSummaryForSession(e){return this.db.prepare(` + SELECT + request, investigated, learned, completed, next_steps, + files_read, files_edited, notes, prompt_number, created_at + FROM session_summaries + WHERE sdk_session_id = ? + ORDER BY created_at_epoch DESC + LIMIT 1 + `).get(e)||null}getFilesForSession(e){let r=this.db.prepare(` + SELECT files_read, files_modified + FROM observations + WHERE sdk_session_id = ? + `).all(e),n=new Set,i=new Set;for(let a of r){if(a.files_read)try{let c=JSON.parse(a.files_read);Array.isArray(c)&&c.forEach(_=>n.add(_))}catch{}if(a.files_modified)try{let c=JSON.parse(a.files_modified);Array.isArray(c)&&c.forEach(_=>i.add(_))}catch{}}return{filesRead:Array.from(n),filesModified:Array.from(i)}}getSessionById(e){return this.db.prepare(` + SELECT id, claude_session_id, sdk_session_id, project, user_prompt + FROM sdk_sessions + WHERE id = ? + LIMIT 1 + `).get(e)||null}findActiveSDKSession(e){return this.db.prepare(` + SELECT id, sdk_session_id, project, worker_port + FROM sdk_sessions + WHERE claude_session_id = ? AND status = 'active' + LIMIT 1 + `).get(e)||null}findAnySDKSession(e){return this.db.prepare(` + SELECT id + FROM sdk_sessions + WHERE claude_session_id = ? + LIMIT 1 + `).get(e)||null}reactivateSession(e,s){this.db.prepare(` + UPDATE sdk_sessions + SET status = 'active', user_prompt = ?, worker_port = NULL + WHERE id = ? + `).run(s,e)}incrementPromptCounter(e){return this.db.prepare(` + UPDATE sdk_sessions + SET prompt_counter = COALESCE(prompt_counter, 0) + 1 + WHERE id = ? + `).run(e),this.db.prepare(` + SELECT prompt_counter FROM sdk_sessions WHERE id = ? + `).get(e)?.prompt_counter||1}getPromptCounter(e){return this.db.prepare(` + SELECT prompt_counter FROM sdk_sessions WHERE id = ? + `).get(e)?.prompt_counter||0}createSDKSession(e,s,r){let n=new Date,i=n.getTime(),c=this.db.prepare(` + INSERT OR IGNORE INTO sdk_sessions + (claude_session_id, sdk_session_id, project, user_prompt, started_at, started_at_epoch, status) + VALUES (?, ?, ?, ?, ?, ?, 'active') + `).run(e,e,s,r,n.toISOString(),i);return c.lastInsertRowid===0||c.changes===0?(s&&s.trim()!==""&&this.db.prepare(` + UPDATE sdk_sessions + SET project = ?, user_prompt = ? + WHERE claude_session_id = ? + `).run(s,r,e),this.db.prepare(` + SELECT id FROM sdk_sessions WHERE claude_session_id = ? LIMIT 1 + `).get(e).id):c.lastInsertRowid}updateSDKSessionId(e,s){return this.db.prepare(` + UPDATE sdk_sessions + SET sdk_session_id = ? + WHERE id = ? AND sdk_session_id IS NULL + `).run(s,e).changes===0?(B.debug("DB","sdk_session_id already set, skipping update",{sessionId:e,sdkSessionId:s}),!1):!0}setWorkerPort(e,s){this.db.prepare(` + UPDATE sdk_sessions + SET worker_port = ? + WHERE id = ? + `).run(s,e)}getWorkerPort(e){return this.db.prepare(` + SELECT worker_port + FROM sdk_sessions + WHERE id = ? + LIMIT 1 + `).get(e)?.worker_port||null}saveUserPrompt(e,s,r){let n=new Date,i=n.getTime();return this.db.prepare(` + INSERT INTO user_prompts + (claude_session_id, prompt_number, prompt_text, created_at, created_at_epoch) + VALUES (?, ?, ?, ?, ?) + `).run(e,s,r,n.toISOString(),i).lastInsertRowid}getUserPrompt(e,s){return this.db.prepare(` + SELECT prompt_text + FROM user_prompts + WHERE claude_session_id = ? AND prompt_number = ? + LIMIT 1 + `).get(e,s)?.prompt_text??null}storeObservation(e,s,r,n,i=0){let a=new Date,c=a.getTime();this.db.prepare(` + SELECT id FROM sdk_sessions WHERE sdk_session_id = ? + `).get(e)||(this.db.prepare(` + INSERT INTO sdk_sessions + (claude_session_id, sdk_session_id, project, started_at, started_at_epoch, status) + VALUES (?, ?, ?, ?, ?, 'active') + `).run(e,e,s,a.toISOString(),c),console.error(`[SessionStore] Auto-created session record for session_id: ${e}`));let b=this.db.prepare(` + INSERT INTO observations + (sdk_session_id, project, type, title, subtitle, facts, narrative, concepts, + files_read, files_modified, prompt_number, discovery_tokens, created_at, created_at_epoch) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `).run(e,s,r.type,r.title,r.subtitle,JSON.stringify(r.facts),r.narrative,JSON.stringify(r.concepts),JSON.stringify(r.files_read),JSON.stringify(r.files_modified),n||null,i,a.toISOString(),c);return{id:Number(b.lastInsertRowid),createdAtEpoch:c}}storeSummary(e,s,r,n,i=0){let a=new Date,c=a.getTime();this.db.prepare(` + SELECT id FROM sdk_sessions WHERE sdk_session_id = ? + `).get(e)||(this.db.prepare(` + INSERT INTO sdk_sessions + (claude_session_id, sdk_session_id, project, started_at, started_at_epoch, status) + VALUES (?, ?, ?, ?, ?, 'active') + `).run(e,e,s,a.toISOString(),c),console.error(`[SessionStore] Auto-created session record for session_id: ${e}`));let b=this.db.prepare(` + INSERT INTO session_summaries + (sdk_session_id, project, request, investigated, learned, completed, + next_steps, notes, prompt_number, discovery_tokens, created_at, created_at_epoch) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `).run(e,s,r.request,r.investigated,r.learned,r.completed,r.next_steps,r.notes,n||null,i,a.toISOString(),c);return{id:Number(b.lastInsertRowid),createdAtEpoch:c}}markSessionCompleted(e){let s=new Date,r=s.getTime();this.db.prepare(` + UPDATE sdk_sessions + SET status = 'completed', completed_at = ?, completed_at_epoch = ? + WHERE id = ? + `).run(s.toISOString(),r,e)}markSessionFailed(e){let s=new Date,r=s.getTime();this.db.prepare(` + UPDATE sdk_sessions + SET status = 'failed', completed_at = ?, completed_at_epoch = ? + WHERE id = ? + `).run(s.toISOString(),r,e)}getSessionSummariesByIds(e,s={}){if(e.length===0)return[];let{orderBy:r="date_desc",limit:n}=s,i=r==="date_asc"?"ASC":"DESC",a=n?`LIMIT ${n}`:"",c=e.map(()=>"?").join(",");return this.db.prepare(` + SELECT * FROM session_summaries + WHERE id IN (${c}) + ORDER BY created_at_epoch ${i} + ${a} + `).all(...e)}getUserPromptsByIds(e,s={}){if(e.length===0)return[];let{orderBy:r="date_desc",limit:n}=s,i=r==="date_asc"?"ASC":"DESC",a=n?`LIMIT ${n}`:"",c=e.map(()=>"?").join(",");return this.db.prepare(` + SELECT + up.*, + s.project, + s.sdk_session_id + FROM user_prompts up + JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id + WHERE up.id IN (${c}) + ORDER BY up.created_at_epoch ${i} + ${a} + `).all(...e)}getTimelineAroundTimestamp(e,s=10,r=10,n){return this.getTimelineAroundObservation(null,e,s,r,n)}getTimelineAroundObservation(e,s,r=10,n=10,i){let a=i?"AND project = ?":"",c=i?[i]:[],_,S;if(e!==null){let f=` + SELECT id, created_at_epoch + FROM observations + WHERE id <= ? ${a} + ORDER BY id DESC + LIMIT ? + `,y=` + SELECT id, created_at_epoch + FROM observations + WHERE id >= ? ${a} + ORDER BY id ASC + LIMIT ? + `;try{let l=this.db.prepare(f).all(e,...c,r+1),t=this.db.prepare(y).all(e,...c,n+1);if(l.length===0&&t.length===0)return{observations:[],sessions:[],prompts:[]};_=l.length>0?l[l.length-1].created_at_epoch:s,S=t.length>0?t[t.length-1].created_at_epoch:s}catch(l){return console.error("[SessionStore] Error getting boundary observations:",l.message),{observations:[],sessions:[],prompts:[]}}}else{let f=` + SELECT created_at_epoch + FROM observations + WHERE created_at_epoch <= ? ${a} + ORDER BY created_at_epoch DESC + LIMIT ? + `,y=` + SELECT created_at_epoch + FROM observations + WHERE created_at_epoch >= ? ${a} + ORDER BY created_at_epoch ASC + LIMIT ? + `;try{let l=this.db.prepare(f).all(s,...c,r),t=this.db.prepare(y).all(s,...c,n+1);if(l.length===0&&t.length===0)return{observations:[],sessions:[],prompts:[]};_=l.length>0?l[l.length-1].created_at_epoch:s,S=t.length>0?t[t.length-1].created_at_epoch:s}catch(l){return console.error("[SessionStore] Error getting boundary timestamps:",l.message),{observations:[],sessions:[],prompts:[]}}}let T=` + SELECT * + FROM observations + WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${a} + ORDER BY created_at_epoch ASC + `,b=` + SELECT * + FROM session_summaries + WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${a} + ORDER BY created_at_epoch ASC + `,v=` + SELECT up.*, s.project, s.sdk_session_id + FROM user_prompts up + JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id + WHERE up.created_at_epoch >= ? AND up.created_at_epoch <= ? ${a.replace("project","s.project")} + ORDER BY up.created_at_epoch ASC + `;try{let f=this.db.prepare(T).all(_,S,...c),y=this.db.prepare(b).all(_,S,...c),l=this.db.prepare(v).all(_,S,...c);return{observations:f,sessions:y.map(t=>({id:t.id,sdk_session_id:t.sdk_session_id,project:t.project,request:t.request,completed:t.completed,next_steps:t.next_steps,created_at:t.created_at,created_at_epoch:t.created_at_epoch})),prompts:l.map(t=>({id:t.id,claude_session_id:t.claude_session_id,project:t.project,prompt:t.prompt_text,created_at:t.created_at,created_at_epoch:t.created_at_epoch}))}}catch(f){return console.error("[SessionStore] Error querying timeline records:",f.message),{observations:[],sessions:[],prompts:[]}}}close(){this.db.close()}};var ae=["bugfix","feature","refactor","discovery","decision","change"],de=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"],be={bugfix:"\u{1F534}",feature:"\u{1F7E3}",refactor:"\u{1F504}",change:"\u2705",discovery:"\u{1F535}",decision:"\u2696\uFE0F","session-request":"\u{1F3AF}"},fe={discovery:"\u{1F50D}",change:"\u{1F6E0}\uFE0F",feature:"\u{1F6E0}\uFE0F",bugfix:"\u{1F6E0}\uFE0F",refactor:"\u{1F6E0}\uFE0F",decision:"\u2696\uFE0F"},Oe=ae.join(","),Re=de.join(",");var J=require("fs");var q=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:Oe,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:Re,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(e){return process.env[e]||this.DEFAULTS[e]}static getInt(e){let s=this.get(e);return parseInt(s,10)}static getBool(e){return this.get(e)==="true"}static loadFromFile(e){if(!(0,J.existsSync)(e))return this.getAllDefaults();let s=(0,J.readFileSync)(e,"utf-8"),n=JSON.parse(s).env||{},i={...this.DEFAULTS};for(let a of Object.keys(this.DEFAULTS))n[a]!==void 0&&(i[a]=n[a]);return i}};var Pe=$.default.join((0,z.homedir)(),".claude","plugins","marketplaces","thedotmack","plugin",".install-version");function We(){let d=$.default.join((0,z.homedir)(),".claude-mem","settings.json"),e=q.loadFromFile(d);try{return{totalObservationCount:parseInt(e.CLAUDE_MEM_CONTEXT_OBSERVATIONS,10),fullObservationCount:parseInt(e.CLAUDE_MEM_CONTEXT_FULL_COUNT,10),sessionCount:parseInt(e.CLAUDE_MEM_CONTEXT_SESSION_COUNT,10),showReadTokens:e.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS==="true",showWorkTokens:e.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS==="true",showSavingsAmount:e.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT==="true",showSavingsPercent:e.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT==="true",observationTypes:new Set(e.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES.split(",").map(s=>s.trim()).filter(Boolean)),observationConcepts:new Set(e.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS.split(",").map(s=>s.trim()).filter(Boolean)),fullObservationField:e.CLAUDE_MEM_CONTEXT_FULL_FIELD,showLastSummary:e.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY==="true",showLastMessage:e.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE==="true"}}catch(s){return B.warn("WORKER","Failed to load context settings, using defaults",{},s),{totalObservationCount:50,fullObservationCount:5,sessionCount:10,showReadTokens:!0,showWorkTokens:!0,showSavingsAmount:!0,showSavingsPercent:!0,observationTypes:new Set(ae),observationConcepts:new Set(de),fullObservationField:"narrative",showLastSummary:!0,showLastMessage:!1}}}var Ne=4,Be=1,o={reset:"\x1B[0m",bright:"\x1B[1m",dim:"\x1B[2m",cyan:"\x1B[36m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",gray:"\x1B[90m",red:"\x1B[31m"};function Ie(d){if(!d)return[];try{let e=JSON.parse(d);return Array.isArray(e)?e:[]}catch{return[]}}function He(d){return new Date(d).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0})}function je(d){return new Date(d).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0})}function Ge(d){return new Date(d).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric"})}function Ye(d,e){return $.default.isAbsolute(d)?$.default.relative(e,d):d}function Q(d,e,s,r){return e?r?[`${s}${d}:${o.reset} ${e}`,""]:[`**${d}**: ${e}`,""]:[]}function Ve(d){return d.replace(/\//g,"-")}function Ke(d){try{if(!(0,P.existsSync)(d))return{userMessage:"",assistantMessage:""};let e=(0,P.readFileSync)(d,"utf-8").trim();if(!e)return{userMessage:"",assistantMessage:""};let s=e.split(` +`).filter(n=>n.trim()),r="";for(let n=s.length-1;n>=0;n--)try{let i=s[n];if(!i.includes('"type":"assistant"'))continue;let a=JSON.parse(i);if(a.type==="assistant"&&a.message?.content&&Array.isArray(a.message.content)){let c="";for(let _ of a.message.content)_.type==="text"&&(c+=_.text);if(c=c.replace(/[\s\S]*?<\/system-reminder>/g,"").trim(),c){r=c;break}}}catch{continue}return{userMessage:"",assistantMessage:r}}catch(e){return B.failure("WORKER","Failed to extract prior messages from transcript",{transcriptPath:d},e),{userMessage:"",assistantMessage:""}}}async function qe(d,e=!1){let s=We(),r=d?.cwd??process.cwd(),n=r?$.default.basename(r):"unknown-project",i=null;try{i=new K}catch(A){if(A.code==="ERR_DLOPEN_FAILED"){try{(0,P.unlinkSync)(Pe)}catch{}return console.error("Native module rebuild needed - restart Claude Code to auto-fix"),""}throw A}let a=Array.from(s.observationTypes),c=a.map(()=>"?").join(","),_=Array.from(s.observationConcepts),S=_.map(()=>"?").join(","),T=i.db.prepare(` + SELECT + id, sdk_session_id, type, title, subtitle, narrative, + facts, concepts, files_read, files_modified, discovery_tokens, + created_at, created_at_epoch + FROM observations + WHERE project = ? + AND type IN (${c}) + AND EXISTS ( + SELECT 1 FROM json_each(concepts) + WHERE value IN (${S}) + ) + ORDER BY created_at_epoch DESC + LIMIT ? + `).all(n,...a,..._,s.totalObservationCount),b=i.db.prepare(` + SELECT id, sdk_session_id, request, investigated, learned, completed, next_steps, created_at, created_at_epoch + FROM session_summaries + WHERE project = ? + ORDER BY created_at_epoch DESC + LIMIT ? + `).all(n,s.sessionCount+Be),v="",f="";if(s.showLastMessage&&T.length>0)try{let A=d?.session_id,O=T.find(h=>h.sdk_session_id!==A);if(O){let h=O.sdk_session_id,D=Ve(r),U=$.default.join((0,z.homedir)(),".claude","projects",D,`${h}.jsonl`),W=Ke(U);v=W.userMessage,f=W.assistantMessage}}catch{}if(T.length===0&&b.length===0)return i?.close(),e?` +${o.bright}${o.cyan}[${n}] recent context${o.reset} +${o.gray}${"\u2500".repeat(60)}${o.reset} + +${o.dim}No previous sessions found for this project yet.${o.reset} +`:`# [${n}] recent context + +No previous sessions found for this project yet.`;let y=b.slice(0,s.sessionCount),l=T,t=[];if(e?(t.push(""),t.push(`${o.bright}${o.cyan}[${n}] recent context${o.reset}`),t.push(`${o.gray}${"\u2500".repeat(60)}${o.reset}`),t.push("")):(t.push(`# [${n}] recent context`),t.push("")),l.length>0){e?t.push(`${o.dim}Legend: \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u2696\uFE0F decision${o.reset}`):t.push("**Legend:** \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u2696\uFE0F decision"),t.push(""),e?(t.push(`${o.bright}\u{1F4A1} Column Key${o.reset}`),t.push(`${o.dim} Read: Tokens to read this observation (cost to learn it now)${o.reset}`),t.push(`${o.dim} Work: Tokens spent on work that produced this record (\u{1F50D} research, \u{1F6E0}\uFE0F building, \u2696\uFE0F deciding)${o.reset}`)):(t.push("\u{1F4A1} **Column Key**:"),t.push("- **Read**: Tokens to read this observation (cost to learn it now)"),t.push("- **Work**: Tokens spent on work that produced this record (\u{1F50D} research, \u{1F6E0}\uFE0F building, \u2696\uFE0F deciding)")),t.push(""),e?(t.push(`${o.dim}\u{1F4A1} Context Index: This semantic index (titles, types, files, tokens) is usually sufficient to understand past work.${o.reset}`),t.push(""),t.push(`${o.dim}When you need implementation details, rationale, or debugging context:${o.reset}`),t.push(`${o.dim} - Use the mem-search skill to fetch full observations on-demand${o.reset}`),t.push(`${o.dim} - Critical types (\u{1F534} bugfix, \u2696\uFE0F decision) often need detailed fetching${o.reset}`),t.push(`${o.dim} - Trust this index over re-reading code for past decisions and learnings${o.reset}`)):(t.push("\u{1F4A1} **Context Index:** This semantic index (titles, types, files, tokens) is usually sufficient to understand past work."),t.push(""),t.push("When you need implementation details, rationale, or debugging context:"),t.push("- Use the mem-search skill to fetch full observations on-demand"),t.push("- Critical types (\u{1F534} bugfix, \u2696\uFE0F decision) often need detailed fetching"),t.push("- Trust this index over re-reading code for past decisions and learnings")),t.push("");let A=T.length,O=T.reduce((p,m)=>{let E=(m.title?.length||0)+(m.subtitle?.length||0)+(m.narrative?.length||0)+JSON.stringify(m.facts||[]).length;return p+Math.ceil(E/Ne)},0),h=T.reduce((p,m)=>p+(m.discovery_tokens||0),0),D=h-O,U=h>0?Math.round(D/h*100):0,W=s.showReadTokens||s.showWorkTokens||s.showSavingsAmount||s.showSavingsPercent;if(W)if(e){if(t.push(`${o.bright}${o.cyan}\u{1F4CA} Context Economics${o.reset}`),t.push(`${o.dim} Loading: ${A} observations (${O.toLocaleString()} tokens to read)${o.reset}`),t.push(`${o.dim} Work investment: ${h.toLocaleString()} tokens spent on research, building, and decisions${o.reset}`),h>0&&(s.showSavingsAmount||s.showSavingsPercent)){let p=" Your savings: ";s.showSavingsAmount&&s.showSavingsPercent?p+=`${D.toLocaleString()} tokens (${U}% reduction from reuse)`:s.showSavingsAmount?p+=`${D.toLocaleString()} tokens`:p+=`${U}% reduction from reuse`,t.push(`${o.green}${p}${o.reset}`)}t.push("")}else{if(t.push("\u{1F4CA} **Context Economics**:"),t.push(`- Loading: ${A} observations (${O.toLocaleString()} tokens to read)`),t.push(`- Work investment: ${h.toLocaleString()} tokens spent on research, building, and decisions`),h>0&&(s.showSavingsAmount||s.showSavingsPercent)){let p="- Your savings: ";s.showSavingsAmount&&s.showSavingsPercent?p+=`${D.toLocaleString()} tokens (${U}% reduction from reuse)`:s.showSavingsAmount?p+=`${D.toLocaleString()} tokens`:p+=`${U}% reduction from reuse`,t.push(p)}t.push("")}let Ae=b[0]?.id,Le=y.map((p,m)=>{let E=m===0?null:b[m+1];return{...p,displayEpoch:E?E.created_at_epoch:p.created_at_epoch,displayTime:E?E.created_at:p.created_at,shouldShowLink:p.id!==Ae}}),Ce=new Set(T.slice(0,s.fullObservationCount).map(p=>p.id)),ce=[...l.map(p=>({type:"observation",data:p})),...Le.map(p=>({type:"summary",data:p}))];ce.sort((p,m)=>{let E=p.type==="observation"?p.data.created_at_epoch:p.data.displayEpoch,k=m.type==="observation"?m.data.created_at_epoch:m.data.displayEpoch;return E-k});let H=new Map;for(let p of ce){let m=p.type==="observation"?p.data.created_at:p.data.displayTime,E=Ge(m);H.has(E)||H.set(E,[]),H.get(E).push(p)}let ve=Array.from(H.entries()).sort((p,m)=>{let E=new Date(p[0]).getTime(),k=new Date(m[0]).getTime();return E-k});for(let[p,m]of ve){e?(t.push(`${o.bright}${o.cyan}${p}${o.reset}`),t.push("")):(t.push(`### ${p}`),t.push(""));let E=null,k="",x=!1;for(let Z of m)if(Z.type==="summary"){x&&(t.push(""),x=!1,E=null,k="");let u=Z.data,w=`${u.request||"Session started"} (${He(u.displayTime)})`,L=u.shouldShowLink?`claude-mem://session-summary/${u.id}`:"";if(e){let R=L?`${o.dim}[${L}]${o.reset}`:"";t.push(`\u{1F3AF} ${o.yellow}#S${u.id}${o.reset} ${w} ${R}`)}else{let R=L?` [\u2192](${L})`:"";t.push(`**\u{1F3AF} #S${u.id}** ${w}${R}`)}t.push("")}else{let u=Z.data,w=Ie(u.files_modified),L=w.length>0&&w[0]?Ye(w[0],r):"General";L!==E&&(x&&t.push(""),e?t.push(`${o.dim}${L}${o.reset}`):t.push(`**${L}**`),e||(t.push("| ID | Time | T | Title | Read | Work |"),t.push("|----|------|---|-------|------|------|")),E=L,x=!0,k="");let R=je(u.created_at),j=u.title||"Untitled",G=be[u.type]||"\u2022",ye=(u.title?.length||0)+(u.subtitle?.length||0)+(u.narrative?.length||0)+JSON.stringify(u.facts||[]).length,F=Math.ceil(ye/Ne),X=u.discovery_tokens||0,ee=fe[u.type]||"\u{1F50D}",_e=X>0?`${ee} ${X.toLocaleString()}`:"-",se=R!==k,ue=se?R:"";if(k=R,Ce.has(u.id)){let M=s.fullObservationField==="narrative"?u.narrative:u.facts?Ie(u.facts).join(` +`):null;if(e){let I=se?`${o.dim}${R}${o.reset}`:" ".repeat(R.length),Y=s.showReadTokens&&F>0?`${o.dim}(~${F}t)${o.reset}`:"",le=s.showWorkTokens&&X>0?`${o.dim}(${ee} ${X.toLocaleString()}t)${o.reset}`:"";t.push(` ${o.dim}#${u.id}${o.reset} ${I} ${G} ${o.bright}${j}${o.reset}`),M&&t.push(` ${o.dim}${M}${o.reset}`),(Y||le)&&t.push(` ${Y} ${le}`),t.push("")}else{x&&(t.push(""),x=!1),t.push(`**#${u.id}** ${ue||"\u2033"} ${G} **${j}**`),M&&(t.push(""),t.push(M),t.push(""));let I=[];s.showReadTokens&&I.push(`Read: ~${F}`),s.showWorkTokens&&I.push(`Work: ${_e}`),I.length>0&&t.push(I.join(", ")),t.push(""),E=null}}else if(e){let M=se?`${o.dim}${R}${o.reset}`:" ".repeat(R.length),I=s.showReadTokens&&F>0?`${o.dim}(~${F}t)${o.reset}`:"",Y=s.showWorkTokens&&X>0?`${o.dim}(${ee} ${X.toLocaleString()}t)${o.reset}`:"";t.push(` ${o.dim}#${u.id}${o.reset} ${M} ${G} ${j} ${I} ${Y}`)}else{let M=s.showReadTokens?`~${F}`:"",I=s.showWorkTokens?_e:"";t.push(`| #${u.id} | ${ue||"\u2033"} | ${G} | ${j} | ${M} | ${I} |`)}}x&&t.push("")}let N=b[0],pe=T[0];if(s.showLastSummary&&N&&(N.investigated||N.learned||N.completed||N.next_steps)&&(!pe||N.created_at_epoch>pe.created_at_epoch)&&(t.push(...Q("Investigated",N.investigated,o.blue,e)),t.push(...Q("Learned",N.learned,o.yellow,e)),t.push(...Q("Completed",N.completed,o.green,e)),t.push(...Q("Next Steps",N.next_steps,o.magenta,e))),f&&(t.push(""),t.push("---"),t.push(""),e?(t.push(`${o.bright}${o.magenta}\u{1F4CB} Previously${o.reset}`),t.push(""),t.push(`${o.dim}A: ${f}${o.reset}`)):(t.push("**\u{1F4CB} Previously**"),t.push(""),t.push(`A: ${f}`)),t.push("")),W&&h>0&&D>0){let p=Math.round(h/1e3);t.push(""),e?t.push(`${o.dim}\u{1F4B0} Access ${p}k tokens of past research & decisions for just ${O.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.${o.reset}`):t.push(`\u{1F4B0} Access ${p}k tokens of past research & decisions for just ${O.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.`)}}return i?.close(),t.join(` +`).trimEnd()}0&&(module.exports={generateContext}); diff --git a/plugin/scripts/context-hook.js b/plugin/scripts/context-hook.js index be0dff92..ee447253 100755 --- a/plugin/scripts/context-hook.js +++ b/plugin/scripts/context-hook.js @@ -1,440 +1,2 @@ #!/usr/bin/env node -import X from"path";import{homedir as ge}from"os";import{existsSync as Se,readFileSync as be,unlinkSync as ke}from"fs";import{stdin as te}from"process";import{fileURLToPath as De}from"url";import{dirname as $e}from"path";import Ce from"better-sqlite3";import{join as f,dirname as ye,basename as qe}from"path";import{homedir as de}from"os";import{existsSync as Ze,mkdirSync as ve}from"fs";import{fileURLToPath as Ae}from"url";function Le(){return typeof __dirname<"u"?__dirname:ye(Ae(import.meta.url))}var ss=Le(),A=process.env.CLAUDE_MEM_DATA_DIR||f(de(),".claude-mem"),Q=process.env.CLAUDE_CONFIG_DIR||f(de(),".claude"),ts=f(A,"archives"),rs=f(A,"logs"),ns=f(A,"trash"),os=f(A,"backups"),is=f(A,"settings.json"),ce=f(A,"claude-mem.db"),as=f(A,"vector-db"),ds=f(Q,"settings.json"),cs=f(Q,"commands"),ps=f(Q,"CLAUDE.md");function pe(p){ve(p,{recursive:!0})}var z=(i=>(i[i.DEBUG=0]="DEBUG",i[i.INFO=1]="INFO",i[i.WARN=2]="WARN",i[i.ERROR=3]="ERROR",i[i.SILENT=4]="SILENT",i))(z||{}),Z=class{level;useColor;constructor(){let e=process.env.CLAUDE_MEM_LOG_LEVEL?.toUpperCase()||"INFO";this.level=z[e]??1,this.useColor=process.stdout.isTTY??!1}correlationId(e,s){return`obs-${e}-${s}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.level===0?`${e.message} -${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Object.keys(e);return s.length===0?"{}":s.length<=3?JSON.stringify(e):`{${s.length} keys: ${s.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,s){if(!s)return e;try{let t=typeof s=="string"?JSON.parse(s):s;if(e==="Bash"&&t.command){let n=t.command.length>50?t.command.substring(0,50)+"...":t.command;return`${e}(${n})`}if(e==="Read"&&t.file_path){let n=t.file_path.split("/").pop()||t.file_path;return`${e}(${n})`}if(e==="Edit"&&t.file_path){let n=t.file_path.split("/").pop()||t.file_path;return`${e}(${n})`}if(e==="Write"&&t.file_path){let n=t.file_path.split("/").pop()||t.file_path;return`${e}(${n})`}return e}catch{return e}}log(e,s,t,n,i){if(e0&&(S=` {${Object.entries(r).map(([R,h])=>`${R}=${h}`).join(", ")}}`)}let L=`[${a}] [${d}] [${u}] ${g}${t}${S}${T}`;e===3?console.error(L):console.log(L)}debug(e,s,t,n){this.log(0,e,s,t,n)}info(e,s,t,n){this.log(1,e,s,t,n)}warn(e,s,t,n){this.log(2,e,s,t,n)}error(e,s,t,n){this.log(3,e,s,t,n)}dataIn(e,s,t,n){this.info(e,`\u2192 ${s}`,t,n)}dataOut(e,s,t,n){this.info(e,`\u2190 ${s}`,t,n)}success(e,s,t,n){this.info(e,`\u2713 ${s}`,t,n)}failure(e,s,t,n){this.error(e,`\u2717 ${s}`,t,n)}timing(e,s,t,n){this.info(e,`\u23F1 ${s}`,n,{duration:`${t}ms`})}},B=new Z;var Y=class{db;constructor(){pe(A),this.db=new Ce(ce),this.db.pragma("journal_mode = WAL"),this.db.pragma("synchronous = NORMAL"),this.db.pragma("foreign_keys = ON"),this.initializeSchema(),this.ensureWorkerPortColumn(),this.ensurePromptTrackingColumns(),this.removeSessionSummariesUniqueConstraint(),this.addObservationHierarchicalFields(),this.makeObservationsTextNullable(),this.createUserPromptsTable(),this.ensureDiscoveryTokensColumn()}initializeSchema(){try{this.db.exec(` - CREATE TABLE IF NOT EXISTS schema_versions ( - id INTEGER PRIMARY KEY, - version INTEGER UNIQUE NOT NULL, - applied_at TEXT NOT NULL - ) - `);let e=this.db.prepare("SELECT version FROM schema_versions ORDER BY version").all();(e.length>0?Math.max(...e.map(t=>t.version)):0)===0&&(console.error("[SessionStore] Initializing fresh database with migration004..."),this.db.exec(` - CREATE TABLE IF NOT EXISTS sdk_sessions ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - claude_session_id TEXT UNIQUE NOT NULL, - sdk_session_id TEXT UNIQUE, - project TEXT NOT NULL, - user_prompt TEXT, - started_at TEXT NOT NULL, - started_at_epoch INTEGER NOT NULL, - completed_at TEXT, - completed_at_epoch INTEGER, - status TEXT CHECK(status IN ('active', 'completed', 'failed')) NOT NULL DEFAULT 'active' - ); - - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_claude_id ON sdk_sessions(claude_session_id); - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_sdk_id ON sdk_sessions(sdk_session_id); - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_project ON sdk_sessions(project); - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_status ON sdk_sessions(status); - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_started ON sdk_sessions(started_at_epoch DESC); - - CREATE TABLE IF NOT EXISTS observations ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - text TEXT NOT NULL, - type TEXT NOT NULL CHECK(type IN ('decision', 'bugfix', 'feature', 'refactor', 'discovery')), - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ); - - CREATE INDEX IF NOT EXISTS idx_observations_sdk_session ON observations(sdk_session_id); - CREATE INDEX IF NOT EXISTS idx_observations_project ON observations(project); - CREATE INDEX IF NOT EXISTS idx_observations_type ON observations(type); - CREATE INDEX IF NOT EXISTS idx_observations_created ON observations(created_at_epoch DESC); - - CREATE TABLE IF NOT EXISTS session_summaries ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT UNIQUE NOT NULL, - project TEXT NOT NULL, - request TEXT, - investigated TEXT, - learned TEXT, - completed TEXT, - next_steps TEXT, - files_read TEXT, - files_edited TEXT, - notes TEXT, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ); - - CREATE INDEX IF NOT EXISTS idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); - CREATE INDEX IF NOT EXISTS idx_session_summaries_project ON session_summaries(project); - CREATE INDEX IF NOT EXISTS idx_session_summaries_created ON session_summaries(created_at_epoch DESC); - `),this.db.prepare("INSERT INTO schema_versions (version, applied_at) VALUES (?, ?)").run(4,new Date().toISOString()),console.error("[SessionStore] Migration004 applied successfully"))}catch(e){throw console.error("[SessionStore] Schema initialization error:",e.message),e}}ensureWorkerPortColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(5))return;this.db.pragma("table_info(sdk_sessions)").some(n=>n.name==="worker_port")||(this.db.exec("ALTER TABLE sdk_sessions ADD COLUMN worker_port INTEGER"),console.error("[SessionStore] Added worker_port column to sdk_sessions table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(5,new Date().toISOString())}catch(e){console.error("[SessionStore] Migration error:",e.message)}}ensurePromptTrackingColumns(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(6))return;this.db.pragma("table_info(sdk_sessions)").some(u=>u.name==="prompt_counter")||(this.db.exec("ALTER TABLE sdk_sessions ADD COLUMN prompt_counter INTEGER DEFAULT 0"),console.error("[SessionStore] Added prompt_counter column to sdk_sessions table")),this.db.pragma("table_info(observations)").some(u=>u.name==="prompt_number")||(this.db.exec("ALTER TABLE observations ADD COLUMN prompt_number INTEGER"),console.error("[SessionStore] Added prompt_number column to observations table")),this.db.pragma("table_info(session_summaries)").some(u=>u.name==="prompt_number")||(this.db.exec("ALTER TABLE session_summaries ADD COLUMN prompt_number INTEGER"),console.error("[SessionStore] Added prompt_number column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(6,new Date().toISOString())}catch(e){console.error("[SessionStore] Prompt tracking migration error:",e.message)}}removeSessionSummariesUniqueConstraint(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(7))return;if(!this.db.pragma("index_list(session_summaries)").some(n=>n.unique===1)){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString());return}console.error("[SessionStore] Removing UNIQUE constraint from session_summaries.sdk_session_id..."),this.db.exec("BEGIN TRANSACTION");try{this.db.exec(` - CREATE TABLE session_summaries_new ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - request TEXT, - investigated TEXT, - learned TEXT, - completed TEXT, - next_steps TEXT, - files_read TEXT, - files_edited TEXT, - notes TEXT, - prompt_number INTEGER, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ) - `),this.db.exec(` - INSERT INTO session_summaries_new - SELECT id, sdk_session_id, project, request, investigated, learned, - completed, next_steps, files_read, files_edited, notes, - prompt_number, created_at, created_at_epoch - FROM session_summaries - `),this.db.exec("DROP TABLE session_summaries"),this.db.exec("ALTER TABLE session_summaries_new RENAME TO session_summaries"),this.db.exec(` - CREATE INDEX idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); - CREATE INDEX idx_session_summaries_project ON session_summaries(project); - CREATE INDEX idx_session_summaries_created ON session_summaries(created_at_epoch DESC); - `),this.db.exec("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString()),console.error("[SessionStore] Successfully removed UNIQUE constraint from session_summaries.sdk_session_id")}catch(n){throw this.db.exec("ROLLBACK"),n}}catch(e){console.error("[SessionStore] Migration error (remove UNIQUE constraint):",e.message)}}addObservationHierarchicalFields(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(8))return;if(this.db.pragma("table_info(observations)").some(n=>n.name==="title")){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString());return}console.error("[SessionStore] Adding hierarchical fields to observations table..."),this.db.exec(` - ALTER TABLE observations ADD COLUMN title TEXT; - ALTER TABLE observations ADD COLUMN subtitle TEXT; - ALTER TABLE observations ADD COLUMN facts TEXT; - ALTER TABLE observations ADD COLUMN narrative TEXT; - ALTER TABLE observations ADD COLUMN concepts TEXT; - ALTER TABLE observations ADD COLUMN files_read TEXT; - ALTER TABLE observations ADD COLUMN files_modified TEXT; - `),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString()),console.error("[SessionStore] Successfully added hierarchical fields to observations table")}catch(e){console.error("[SessionStore] Migration error (add hierarchical fields):",e.message)}}makeObservationsTextNullable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(9))return;let t=this.db.pragma("table_info(observations)").find(n=>n.name==="text");if(!t||t.notnull===0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString());return}console.error("[SessionStore] Making observations.text nullable..."),this.db.exec("BEGIN TRANSACTION");try{this.db.exec(` - CREATE TABLE observations_new ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - text TEXT, - type TEXT NOT NULL CHECK(type IN ('decision', 'bugfix', 'feature', 'refactor', 'discovery', 'change')), - title TEXT, - subtitle TEXT, - facts TEXT, - narrative TEXT, - concepts TEXT, - files_read TEXT, - files_modified TEXT, - prompt_number INTEGER, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ) - `),this.db.exec(` - INSERT INTO observations_new - SELECT id, sdk_session_id, project, text, type, title, subtitle, facts, - narrative, concepts, files_read, files_modified, prompt_number, - created_at, created_at_epoch - FROM observations - `),this.db.exec("DROP TABLE observations"),this.db.exec("ALTER TABLE observations_new RENAME TO observations"),this.db.exec(` - CREATE INDEX idx_observations_sdk_session ON observations(sdk_session_id); - CREATE INDEX idx_observations_project ON observations(project); - CREATE INDEX idx_observations_type ON observations(type); - CREATE INDEX idx_observations_created ON observations(created_at_epoch DESC); - `),this.db.exec("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString()),console.error("[SessionStore] Successfully made observations.text nullable")}catch(n){throw this.db.exec("ROLLBACK"),n}}catch(e){console.error("[SessionStore] Migration error (make text nullable):",e.message)}}createUserPromptsTable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(10))return;if(this.db.pragma("table_info(user_prompts)").length>0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString());return}console.error("[SessionStore] Creating user_prompts table with FTS5 support..."),this.db.exec("BEGIN TRANSACTION");try{this.db.exec(` - CREATE TABLE user_prompts ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - claude_session_id TEXT NOT NULL, - prompt_number INTEGER NOT NULL, - prompt_text TEXT NOT NULL, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(claude_session_id) REFERENCES sdk_sessions(claude_session_id) ON DELETE CASCADE - ); - - CREATE INDEX idx_user_prompts_claude_session ON user_prompts(claude_session_id); - CREATE INDEX idx_user_prompts_created ON user_prompts(created_at_epoch DESC); - CREATE INDEX idx_user_prompts_prompt_number ON user_prompts(prompt_number); - CREATE INDEX idx_user_prompts_lookup ON user_prompts(claude_session_id, prompt_number); - `),this.db.exec(` - CREATE VIRTUAL TABLE user_prompts_fts USING fts5( - prompt_text, - content='user_prompts', - content_rowid='id' - ); - `),this.db.exec(` - CREATE TRIGGER user_prompts_ai AFTER INSERT ON user_prompts BEGIN - INSERT INTO user_prompts_fts(rowid, prompt_text) - VALUES (new.id, new.prompt_text); - END; - - CREATE TRIGGER user_prompts_ad AFTER DELETE ON user_prompts BEGIN - INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) - VALUES('delete', old.id, old.prompt_text); - END; - - CREATE TRIGGER user_prompts_au AFTER UPDATE ON user_prompts BEGIN - INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) - VALUES('delete', old.id, old.prompt_text); - INSERT INTO user_prompts_fts(rowid, prompt_text) - VALUES (new.id, new.prompt_text); - END; - `),this.db.exec("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString()),console.error("[SessionStore] Successfully created user_prompts table with FTS5 support")}catch(t){throw this.db.exec("ROLLBACK"),t}}catch(e){console.error("[SessionStore] Migration error (create user_prompts table):",e.message)}}ensureDiscoveryTokensColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(11))return;this.db.pragma("table_info(observations)").some(a=>a.name==="discovery_tokens")||(this.db.exec("ALTER TABLE observations ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.error("[SessionStore] Added discovery_tokens column to observations table")),this.db.pragma("table_info(session_summaries)").some(a=>a.name==="discovery_tokens")||(this.db.exec("ALTER TABLE session_summaries ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.error("[SessionStore] Added discovery_tokens column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(11,new Date().toISOString())}catch(e){throw console.error("[SessionStore] Discovery tokens migration error:",e.message),e}}getRecentSummaries(e,s=10){return this.db.prepare(` - SELECT - request, investigated, learned, completed, next_steps, - files_read, files_edited, notes, prompt_number, created_at - FROM session_summaries - WHERE project = ? - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e,s)}getRecentSummariesWithSessionInfo(e,s=3){return this.db.prepare(` - SELECT - sdk_session_id, request, learned, completed, next_steps, - prompt_number, created_at - FROM session_summaries - WHERE project = ? - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e,s)}getRecentObservations(e,s=20){return this.db.prepare(` - SELECT type, text, prompt_number, created_at - FROM observations - WHERE project = ? - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e,s)}getAllRecentObservations(e=100){return this.db.prepare(` - SELECT id, type, title, subtitle, text, project, prompt_number, created_at, created_at_epoch - FROM observations - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e)}getAllRecentSummaries(e=50){return this.db.prepare(` - SELECT id, request, investigated, learned, completed, next_steps, - files_read, files_edited, notes, project, prompt_number, - created_at, created_at_epoch - FROM session_summaries - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e)}getAllRecentUserPrompts(e=100){return this.db.prepare(` - SELECT - up.id, - up.claude_session_id, - s.project, - up.prompt_number, - up.prompt_text, - up.created_at, - up.created_at_epoch - FROM user_prompts up - LEFT JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - ORDER BY up.created_at_epoch DESC - LIMIT ? - `).all(e)}getAllProjects(){return this.db.prepare(` - SELECT DISTINCT project - FROM sdk_sessions - WHERE project IS NOT NULL AND project != '' - ORDER BY project ASC - `).all().map(t=>t.project)}getRecentSessionsWithStatus(e,s=3){return this.db.prepare(` - SELECT * FROM ( - SELECT - s.sdk_session_id, - s.status, - s.started_at, - s.started_at_epoch, - s.user_prompt, - CASE WHEN sum.sdk_session_id IS NOT NULL THEN 1 ELSE 0 END as has_summary - FROM sdk_sessions s - LEFT JOIN session_summaries sum ON s.sdk_session_id = sum.sdk_session_id - WHERE s.project = ? AND s.sdk_session_id IS NOT NULL - GROUP BY s.sdk_session_id - ORDER BY s.started_at_epoch DESC - LIMIT ? - ) - ORDER BY started_at_epoch ASC - `).all(e,s)}getObservationsForSession(e){return this.db.prepare(` - SELECT title, subtitle, type, prompt_number - FROM observations - WHERE sdk_session_id = ? - ORDER BY created_at_epoch ASC - `).all(e)}getObservationById(e){return this.db.prepare(` - SELECT * - FROM observations - WHERE id = ? - `).get(e)||null}getObservationsByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:n}=s,i=t==="date_asc"?"ASC":"DESC",a=n?`LIMIT ${n}`:"",d=e.map(()=>"?").join(",");return this.db.prepare(` - SELECT * - FROM observations - WHERE id IN (${d}) - ORDER BY created_at_epoch ${i} - ${a} - `).all(...e)}getSummaryForSession(e){return this.db.prepare(` - SELECT - request, investigated, learned, completed, next_steps, - files_read, files_edited, notes, prompt_number, created_at - FROM session_summaries - WHERE sdk_session_id = ? - ORDER BY created_at_epoch DESC - LIMIT 1 - `).get(e)||null}getFilesForSession(e){let t=this.db.prepare(` - SELECT files_read, files_modified - FROM observations - WHERE sdk_session_id = ? - `).all(e),n=new Set,i=new Set;for(let a of t){if(a.files_read)try{let d=JSON.parse(a.files_read);Array.isArray(d)&&d.forEach(u=>n.add(u))}catch{}if(a.files_modified)try{let d=JSON.parse(a.files_modified);Array.isArray(d)&&d.forEach(u=>i.add(u))}catch{}}return{filesRead:Array.from(n),filesModified:Array.from(i)}}getSessionById(e){return this.db.prepare(` - SELECT id, claude_session_id, sdk_session_id, project, user_prompt - FROM sdk_sessions - WHERE id = ? - LIMIT 1 - `).get(e)||null}findActiveSDKSession(e){return this.db.prepare(` - SELECT id, sdk_session_id, project, worker_port - FROM sdk_sessions - WHERE claude_session_id = ? AND status = 'active' - LIMIT 1 - `).get(e)||null}findAnySDKSession(e){return this.db.prepare(` - SELECT id - FROM sdk_sessions - WHERE claude_session_id = ? - LIMIT 1 - `).get(e)||null}reactivateSession(e,s){this.db.prepare(` - UPDATE sdk_sessions - SET status = 'active', user_prompt = ?, worker_port = NULL - WHERE id = ? - `).run(s,e)}incrementPromptCounter(e){return this.db.prepare(` - UPDATE sdk_sessions - SET prompt_counter = COALESCE(prompt_counter, 0) + 1 - WHERE id = ? - `).run(e),this.db.prepare(` - SELECT prompt_counter FROM sdk_sessions WHERE id = ? - `).get(e)?.prompt_counter||1}getPromptCounter(e){return this.db.prepare(` - SELECT prompt_counter FROM sdk_sessions WHERE id = ? - `).get(e)?.prompt_counter||0}createSDKSession(e,s,t){let n=new Date,i=n.getTime(),d=this.db.prepare(` - INSERT OR IGNORE INTO sdk_sessions - (claude_session_id, sdk_session_id, project, user_prompt, started_at, started_at_epoch, status) - VALUES (?, ?, ?, ?, ?, ?, 'active') - `).run(e,e,s,t,n.toISOString(),i);return d.lastInsertRowid===0||d.changes===0?(s&&s.trim()!==""&&this.db.prepare(` - UPDATE sdk_sessions - SET project = ?, user_prompt = ? - WHERE claude_session_id = ? - `).run(s,t,e),this.db.prepare(` - SELECT id FROM sdk_sessions WHERE claude_session_id = ? LIMIT 1 - `).get(e).id):d.lastInsertRowid}updateSDKSessionId(e,s){return this.db.prepare(` - UPDATE sdk_sessions - SET sdk_session_id = ? - WHERE id = ? AND sdk_session_id IS NULL - `).run(s,e).changes===0?(B.debug("DB","sdk_session_id already set, skipping update",{sessionId:e,sdkSessionId:s}),!1):!0}setWorkerPort(e,s){this.db.prepare(` - UPDATE sdk_sessions - SET worker_port = ? - WHERE id = ? - `).run(s,e)}getWorkerPort(e){return this.db.prepare(` - SELECT worker_port - FROM sdk_sessions - WHERE id = ? - LIMIT 1 - `).get(e)?.worker_port||null}saveUserPrompt(e,s,t){let n=new Date,i=n.getTime();return this.db.prepare(` - INSERT INTO user_prompts - (claude_session_id, prompt_number, prompt_text, created_at, created_at_epoch) - VALUES (?, ?, ?, ?, ?) - `).run(e,s,t,n.toISOString(),i).lastInsertRowid}getUserPrompt(e,s){return this.db.prepare(` - SELECT prompt_text - FROM user_prompts - WHERE claude_session_id = ? AND prompt_number = ? - LIMIT 1 - `).get(e,s)?.prompt_text??null}storeObservation(e,s,t,n,i=0){let a=new Date,d=a.getTime();this.db.prepare(` - SELECT id FROM sdk_sessions WHERE sdk_session_id = ? - `).get(e)||(this.db.prepare(` - INSERT INTO sdk_sessions - (claude_session_id, sdk_session_id, project, started_at, started_at_epoch, status) - VALUES (?, ?, ?, ?, ?, 'active') - `).run(e,e,s,a.toISOString(),d),console.error(`[SessionStore] Auto-created session record for session_id: ${e}`));let S=this.db.prepare(` - INSERT INTO observations - (sdk_session_id, project, type, title, subtitle, facts, narrative, concepts, - files_read, files_modified, prompt_number, discovery_tokens, created_at, created_at_epoch) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `).run(e,s,t.type,t.title,t.subtitle,JSON.stringify(t.facts),t.narrative,JSON.stringify(t.concepts),JSON.stringify(t.files_read),JSON.stringify(t.files_modified),n||null,i,a.toISOString(),d);return{id:Number(S.lastInsertRowid),createdAtEpoch:d}}storeSummary(e,s,t,n,i=0){let a=new Date,d=a.getTime();this.db.prepare(` - SELECT id FROM sdk_sessions WHERE sdk_session_id = ? - `).get(e)||(this.db.prepare(` - INSERT INTO sdk_sessions - (claude_session_id, sdk_session_id, project, started_at, started_at_epoch, status) - VALUES (?, ?, ?, ?, ?, 'active') - `).run(e,e,s,a.toISOString(),d),console.error(`[SessionStore] Auto-created session record for session_id: ${e}`));let S=this.db.prepare(` - INSERT INTO session_summaries - (sdk_session_id, project, request, investigated, learned, completed, - next_steps, notes, prompt_number, discovery_tokens, created_at, created_at_epoch) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `).run(e,s,t.request,t.investigated,t.learned,t.completed,t.next_steps,t.notes,n||null,i,a.toISOString(),d);return{id:Number(S.lastInsertRowid),createdAtEpoch:d}}markSessionCompleted(e){let s=new Date,t=s.getTime();this.db.prepare(` - UPDATE sdk_sessions - SET status = 'completed', completed_at = ?, completed_at_epoch = ? - WHERE id = ? - `).run(s.toISOString(),t,e)}markSessionFailed(e){let s=new Date,t=s.getTime();this.db.prepare(` - UPDATE sdk_sessions - SET status = 'failed', completed_at = ?, completed_at_epoch = ? - WHERE id = ? - `).run(s.toISOString(),t,e)}getSessionSummariesByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:n}=s,i=t==="date_asc"?"ASC":"DESC",a=n?`LIMIT ${n}`:"",d=e.map(()=>"?").join(",");return this.db.prepare(` - SELECT * FROM session_summaries - WHERE id IN (${d}) - ORDER BY created_at_epoch ${i} - ${a} - `).all(...e)}getUserPromptsByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:n}=s,i=t==="date_asc"?"ASC":"DESC",a=n?`LIMIT ${n}`:"",d=e.map(()=>"?").join(",");return this.db.prepare(` - SELECT - up.*, - s.project, - s.sdk_session_id - FROM user_prompts up - JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - WHERE up.id IN (${d}) - ORDER BY up.created_at_epoch ${i} - ${a} - `).all(...e)}getTimelineAroundTimestamp(e,s=10,t=10,n){return this.getTimelineAroundObservation(null,e,s,t,n)}getTimelineAroundObservation(e,s,t=10,n=10,i){let a=i?"AND project = ?":"",d=i?[i]:[],u,g;if(e!==null){let b=` - SELECT id, created_at_epoch - FROM observations - WHERE id <= ? ${a} - ORDER BY id DESC - LIMIT ? - `,C=` - SELECT id, created_at_epoch - FROM observations - WHERE id >= ? ${a} - ORDER BY id ASC - LIMIT ? - `;try{let _=this.db.prepare(b).all(e,...d,t+1),r=this.db.prepare(C).all(e,...d,n+1);if(_.length===0&&r.length===0)return{observations:[],sessions:[],prompts:[]};u=_.length>0?_[_.length-1].created_at_epoch:s,g=r.length>0?r[r.length-1].created_at_epoch:s}catch(_){return console.error("[SessionStore] Error getting boundary observations:",_.message),{observations:[],sessions:[],prompts:[]}}}else{let b=` - SELECT created_at_epoch - FROM observations - WHERE created_at_epoch <= ? ${a} - ORDER BY created_at_epoch DESC - LIMIT ? - `,C=` - SELECT created_at_epoch - FROM observations - WHERE created_at_epoch >= ? ${a} - ORDER BY created_at_epoch ASC - LIMIT ? - `;try{let _=this.db.prepare(b).all(s,...d,t),r=this.db.prepare(C).all(s,...d,n+1);if(_.length===0&&r.length===0)return{observations:[],sessions:[],prompts:[]};u=_.length>0?_[_.length-1].created_at_epoch:s,g=r.length>0?r[r.length-1].created_at_epoch:s}catch(_){return console.error("[SessionStore] Error getting boundary timestamps:",_.message),{observations:[],sessions:[],prompts:[]}}}let T=` - SELECT * - FROM observations - WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${a} - ORDER BY created_at_epoch ASC - `,S=` - SELECT * - FROM session_summaries - WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${a} - ORDER BY created_at_epoch ASC - `,L=` - SELECT up.*, s.project, s.sdk_session_id - FROM user_prompts up - JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - WHERE up.created_at_epoch >= ? AND up.created_at_epoch <= ? ${a.replace("project","s.project")} - ORDER BY up.created_at_epoch ASC - `;try{let b=this.db.prepare(T).all(u,g,...d),C=this.db.prepare(S).all(u,g,...d),_=this.db.prepare(L).all(u,g,...d);return{observations:b,sessions:C.map(r=>({id:r.id,sdk_session_id:r.sdk_session_id,project:r.project,request:r.request,completed:r.completed,next_steps:r.next_steps,created_at:r.created_at,created_at_epoch:r.created_at_epoch})),prompts:_.map(r=>({id:r.id,claude_session_id:r.claude_session_id,project:r.project,prompt:r.prompt_text,created_at:r.created_at,created_at_epoch:r.created_at_epoch}))}}catch(b){return console.error("[SessionStore] Error querying timeline records:",b.message),{observations:[],sessions:[],prompts:[]}}}close(){this.db.close()}};var ee=["bugfix","feature","refactor","discovery","decision","change"],se=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"],ue={bugfix:"\u{1F534}",feature:"\u{1F7E3}",refactor:"\u{1F504}",change:"\u2705",discovery:"\u{1F535}",decision:"\u2696\uFE0F","session-request":"\u{1F3AF}"},le={discovery:"\u{1F50D}",change:"\u{1F6E0}\uFE0F",feature:"\u{1F6E0}\uFE0F",bugfix:"\u{1F6E0}\uFE0F",refactor:"\u{1F6E0}\uFE0F",decision:"\u2696\uFE0F"},_e=ee.join(","),me=se.join(",");var xe=De(import.meta.url),Me=$e(xe),we=X.join(Me,"../../.install-version");function Ue(){let p={totalObservationCount:parseInt(process.env.CLAUDE_MEM_CONTEXT_OBSERVATIONS||"50",10),fullObservationCount:5,sessionCount:10,showReadTokens:!0,showWorkTokens:!0,showSavingsAmount:!0,showSavingsPercent:!0,observationTypes:new Set(ee),observationConcepts:new Set(se),fullObservationField:"narrative",showLastSummary:!0,showLastMessage:!1};try{let e=X.join(ge(),".claude-mem","settings.json");if(!Se(e))return p;let t=JSON.parse(be(e,"utf-8")).env||{};return{totalObservationCount:parseInt(t.CLAUDE_MEM_CONTEXT_OBSERVATIONS||"50",10),fullObservationCount:parseInt(t.CLAUDE_MEM_CONTEXT_FULL_COUNT||"5",10),sessionCount:parseInt(t.CLAUDE_MEM_CONTEXT_SESSION_COUNT||"10",10),showReadTokens:t.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS!=="false",showWorkTokens:t.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS!=="false",showSavingsAmount:t.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT!=="false",showSavingsPercent:t.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT!=="false",observationTypes:new Set((t.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES||_e).split(",").map(n=>n.trim()).filter(Boolean)),observationConcepts:new Set((t.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS||me).split(",").map(n=>n.trim()).filter(Boolean)),fullObservationField:t.CLAUDE_MEM_CONTEXT_FULL_FIELD||"narrative",showLastSummary:t.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY!=="false",showLastMessage:t.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE==="true"}}catch(e){return B.warn("HOOK","Failed to load context settings, using defaults",{},e),p}}var Ee=4,Fe=1,o={reset:"\x1B[0m",bright:"\x1B[1m",dim:"\x1B[2m",cyan:"\x1B[36m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",gray:"\x1B[90m",red:"\x1B[31m"};function Te(p){if(!p)return[];try{let e=JSON.parse(p);return Array.isArray(e)?e:[]}catch{return[]}}function Xe(p){return new Date(p).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0})}function Pe(p){return new Date(p).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0})}function Be(p){return new Date(p).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric"})}function je(p,e){return X.isAbsolute(p)?X.relative(e,p):p}function V(p,e,s,t){return e?t?[`${s}${p}:${o.reset} ${e}`,""]:[`**${p}**: ${e}`,""]:[]}function We(p){return p.replace(/\//g,"-")}function He(p){try{if(!Se(p))return{userMessage:"",assistantMessage:""};let e=be(p,"utf-8").trim();if(!e)return{userMessage:"",assistantMessage:""};let s=e.split(` -`).filter(n=>n.trim()),t="";for(let n=s.length-1;n>=0;n--)try{let i=s[n];if(!i.includes('"type":"assistant"'))continue;let a=JSON.parse(i);if(a.type==="assistant"&&a.message?.content&&Array.isArray(a.message.content)){let d="";for(let u of a.message.content)u.type==="text"&&(d+=u.text);if(d=d.replace(/[\s\S]*?<\/system-reminder>/g,"").trim(),d){t=d;break}}}catch{continue}return{userMessage:"",assistantMessage:t}}catch(e){return B.failure("HOOK","Failed to extract prior messages from transcript",{transcriptPath:p},e),{userMessage:"",assistantMessage:""}}}async function he(p,e=!1){let s=Ue(),t=p?.cwd??process.cwd(),n=t?X.basename(t):"unknown-project",i=null;try{i=new Y}catch(y){if(y.code==="ERR_DLOPEN_FAILED"){try{ke(we)}catch{}console.error("\u26A0\uFE0F Native module rebuild needed - restart Claude Code to auto-fix"),console.error(" (This happens after Node.js version upgrades)"),process.exit(0)}throw y}let a=Array.from(s.observationTypes),d=a.map(()=>"?").join(","),u=Array.from(s.observationConcepts),g=u.map(()=>"?").join(","),T=i.db.prepare(` - SELECT - id, sdk_session_id, type, title, subtitle, narrative, - facts, concepts, files_read, files_modified, discovery_tokens, - created_at, created_at_epoch - FROM observations - WHERE project = ? - AND type IN (${d}) - AND EXISTS ( - SELECT 1 FROM json_each(concepts) - WHERE value IN (${g}) - ) - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(n,...a,...u,s.totalObservationCount),S=i.db.prepare(` - SELECT id, sdk_session_id, request, investigated, learned, completed, next_steps, created_at, created_at_epoch - FROM session_summaries - WHERE project = ? - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(n,s.sessionCount+Fe),L="",b="";if(s.showLastMessage&&T.length>0)try{let y=p?.session_id,R=T.find(h=>h.sdk_session_id!==y);if(R){let h=R.sdk_session_id,k=We(t),M=X.join(ge(),".claude","projects",k,`${h}.jsonl`),P=He(M);L=P.userMessage,b=P.assistantMessage}}catch{}if(T.length===0&&S.length===0)return i?.close(),e?` -${o.bright}${o.cyan}\u{1F4DD} [${n}] recent context${o.reset} -${o.gray}${"\u2500".repeat(60)}${o.reset} - -${o.dim}No previous sessions found for this project yet.${o.reset} -`:`# [${n}] recent context - -No previous sessions found for this project yet.`;let C=S.slice(0,s.sessionCount),_=T,r=[];if(e?(r.push(""),r.push(`${o.bright}${o.cyan}\u{1F4DD} [${n}] recent context${o.reset}`),r.push(`${o.gray}${"\u2500".repeat(60)}${o.reset}`),r.push("")):(r.push(`# [${n}] recent context`),r.push("")),_.length>0){e?r.push(`${o.dim}Legend: \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u2696\uFE0F decision${o.reset}`):r.push("**Legend:** \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u2696\uFE0F decision"),r.push(""),e?(r.push(`${o.bright}\u{1F4A1} Column Key${o.reset}`),r.push(`${o.dim} Read: Tokens to read this observation (cost to learn it now)${o.reset}`),r.push(`${o.dim} Work: Tokens spent on work that produced this record (\u{1F50D} research, \u{1F6E0}\uFE0F building, \u2696\uFE0F deciding)${o.reset}`)):(r.push("\u{1F4A1} **Column Key**:"),r.push("- **Read**: Tokens to read this observation (cost to learn it now)"),r.push("- **Work**: Tokens spent on work that produced this record (\u{1F50D} research, \u{1F6E0}\uFE0F building, \u2696\uFE0F deciding)")),r.push(""),e?(r.push(`${o.dim}\u{1F4A1} Context Index: This semantic index (titles, types, files, tokens) is usually sufficient to understand past work.${o.reset}`),r.push(""),r.push(`${o.dim}When you need implementation details, rationale, or debugging context:${o.reset}`),r.push(`${o.dim} - Use the mem-search skill to fetch full observations on-demand${o.reset}`),r.push(`${o.dim} - Critical types (\u{1F534} bugfix, \u2696\uFE0F decision) often need detailed fetching${o.reset}`),r.push(`${o.dim} - Trust this index over re-reading code for past decisions and learnings${o.reset}`)):(r.push("\u{1F4A1} **Context Index:** This semantic index (titles, types, files, tokens) is usually sufficient to understand past work."),r.push(""),r.push("When you need implementation details, rationale, or debugging context:"),r.push("- Use the mem-search skill to fetch full observations on-demand"),r.push("- Critical types (\u{1F534} bugfix, \u2696\uFE0F decision) often need detailed fetching"),r.push("- Trust this index over re-reading code for past decisions and learnings")),r.push("");let y=T.length,R=T.reduce((c,m)=>{let E=(m.title?.length||0)+(m.subtitle?.length||0)+(m.narrative?.length||0)+JSON.stringify(m.facts||[]).length;return c+Math.ceil(E/Ee)},0),h=T.reduce((c,m)=>c+(m.discovery_tokens||0),0),k=h-R,M=h>0?Math.round(k/h*100):0,P=s.showReadTokens||s.showWorkTokens||s.showSavingsAmount||s.showSavingsPercent;if(P)if(e){if(r.push(`${o.bright}${o.cyan}\u{1F4CA} Context Economics${o.reset}`),r.push(`${o.dim} Loading: ${y} observations (${R.toLocaleString()} tokens to read)${o.reset}`),r.push(`${o.dim} Work investment: ${h.toLocaleString()} tokens spent on research, building, and decisions${o.reset}`),h>0&&(s.showSavingsAmount||s.showSavingsPercent)){let c=" Your savings: ";s.showSavingsAmount&&s.showSavingsPercent?c+=`${k.toLocaleString()} tokens (${M}% reduction from reuse)`:s.showSavingsAmount?c+=`${k.toLocaleString()} tokens`:c+=`${M}% reduction from reuse`,r.push(`${o.green}${c}${o.reset}`)}r.push("")}else{if(r.push("\u{1F4CA} **Context Economics**:"),r.push(`- Loading: ${y} observations (${R.toLocaleString()} tokens to read)`),r.push(`- Work investment: ${h.toLocaleString()} tokens spent on research, building, and decisions`),h>0&&(s.showSavingsAmount||s.showSavingsPercent)){let c="- Your savings: ";s.showSavingsAmount&&s.showSavingsPercent?c+=`${k.toLocaleString()} tokens (${M}% reduction from reuse)`:s.showSavingsAmount?c+=`${k.toLocaleString()} tokens`:c+=`${M}% reduction from reuse`,r.push(c)}r.push("")}let fe=S[0]?.id,Re=C.map((c,m)=>{let E=m===0?null:S[m+1];return{...c,displayEpoch:E?E.created_at_epoch:c.created_at_epoch,displayTime:E?E.created_at:c.created_at,shouldShowLink:c.id!==fe}}),Oe=new Set(T.slice(0,s.fullObservationCount).map(c=>c.id)),re=[..._.map(c=>({type:"observation",data:c})),...Re.map(c=>({type:"summary",data:c}))];re.sort((c,m)=>{let E=c.type==="observation"?c.data.created_at_epoch:c.data.displayEpoch,D=m.type==="observation"?m.data.created_at_epoch:m.data.displayEpoch;return E-D});let j=new Map;for(let c of re){let m=c.type==="observation"?c.data.created_at:c.data.displayTime,E=Be(m);j.has(E)||j.set(E,[]),j.get(E).push(c)}let Ne=Array.from(j.entries()).sort((c,m)=>{let E=new Date(c[0]).getTime(),D=new Date(m[0]).getTime();return E-D});for(let[c,m]of Ne){e?(r.push(`${o.bright}${o.cyan}${c}${o.reset}`),r.push("")):(r.push(`### ${c}`),r.push(""));let E=null,D="",x=!1;for(let K of m)if(K.type==="summary"){x&&(r.push(""),x=!1,E=null,D="");let l=K.data,w=`${l.request||"Session started"} (${Xe(l.displayTime)})`,v=l.shouldShowLink?`claude-mem://session-summary/${l.id}`:"";if(e){let O=v?`${o.dim}[${v}]${o.reset}`:"";r.push(`\u{1F3AF} ${o.yellow}#S${l.id}${o.reset} ${w} ${O}`)}else{let O=v?` [\u2192](${v})`:"";r.push(`**\u{1F3AF} #S${l.id}** ${w}${O}`)}r.push("")}else{let l=K.data,w=Te(l.files_modified),v=w.length>0&&w[0]?je(w[0],t):"General";v!==E&&(x&&r.push(""),e?r.push(`${o.dim}${v}${o.reset}`):r.push(`**${v}**`),e||(r.push("| ID | Time | T | Title | Read | Work |"),r.push("|----|------|---|-------|------|------|")),E=v,x=!0,D="");let O=Pe(l.created_at),W=l.title||"Untitled",H=ue[l.type]||"\u2022",Ie=(l.title?.length||0)+(l.subtitle?.length||0)+(l.narrative?.length||0)+JSON.stringify(l.facts||[]).length,U=Math.ceil(Ie/Ee),F=l.discovery_tokens||0,q=le[l.type]||"\u{1F50D}",oe=F>0?`${q} ${F.toLocaleString()}`:"-",J=O!==D,ie=J?O:"";if(D=O,Oe.has(l.id)){let $=s.fullObservationField==="narrative"?l.narrative:l.facts?Te(l.facts).join(` -`):null;if(e){let I=J?`${o.dim}${O}${o.reset}`:" ".repeat(O.length),G=s.showReadTokens&&U>0?`${o.dim}(~${U}t)${o.reset}`:"",ae=s.showWorkTokens&&F>0?`${o.dim}(${q} ${F.toLocaleString()}t)${o.reset}`:"";r.push(` ${o.dim}#${l.id}${o.reset} ${I} ${H} ${o.bright}${W}${o.reset}`),$&&r.push(` ${o.dim}${$}${o.reset}`),(G||ae)&&r.push(` ${G} ${ae}`),r.push("")}else{x&&(r.push(""),x=!1),r.push(`**#${l.id}** ${ie||"\u2033"} ${H} **${W}**`),$&&(r.push(""),r.push($),r.push(""));let I=[];s.showReadTokens&&I.push(`Read: ~${U}`),s.showWorkTokens&&I.push(`Work: ${oe}`),I.length>0&&r.push(I.join(", ")),r.push(""),E=null}}else if(e){let $=J?`${o.dim}${O}${o.reset}`:" ".repeat(O.length),I=s.showReadTokens&&U>0?`${o.dim}(~${U}t)${o.reset}`:"",G=s.showWorkTokens&&F>0?`${o.dim}(${q} ${F.toLocaleString()}t)${o.reset}`:"";r.push(` ${o.dim}#${l.id}${o.reset} ${$} ${H} ${W} ${I} ${G}`)}else{let $=s.showReadTokens?`~${U}`:"",I=s.showWorkTokens?oe:"";r.push(`| #${l.id} | ${ie||"\u2033"} | ${H} | ${W} | ${$} | ${I} |`)}}x&&r.push("")}let N=S[0],ne=T[0];if(s.showLastSummary&&N&&(N.investigated||N.learned||N.completed||N.next_steps)&&(!ne||N.created_at_epoch>ne.created_at_epoch)&&(r.push(...V("Investigated",N.investigated,o.blue,e)),r.push(...V("Learned",N.learned,o.yellow,e)),r.push(...V("Completed",N.completed,o.green,e)),r.push(...V("Next Steps",N.next_steps,o.magenta,e))),b&&(r.push(""),r.push("---"),r.push(""),e?(r.push(`${o.bright}${o.magenta}\u{1F4CB} Previously${o.reset}`),r.push(""),r.push(`${o.dim}A: ${b}${o.reset}`)):(r.push("**\u{1F4CB} Previously**"),r.push(""),r.push(`A: ${b}`)),r.push("")),P&&h>0&&k>0){let c=Math.round(h/1e3);r.push(""),e?r.push(`${o.dim}\u{1F4B0} Access ${c}k tokens of past research & decisions for just ${R.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.${o.reset}`):r.push(`\u{1F4B0} Access ${c}k tokens of past research & decisions for just ${R.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.`)}}return i?.close(),r.join(` -`).trimEnd()}var Ge=process.argv.includes("--colors");if(te.isTTY||Ge)he(void 0,!0).then(p=>{console.log(p),process.exit(0)});else{let p="";te.on("data",e=>p+=e),te.on("end",async()=>{let e=p.trim()?JSON.parse(p):void 0,t={hookSpecificOutput:{hookEventName:"SessionStart",additionalContext:await he(e,!1)}};console.log(JSON.stringify(t)),process.exit(0)})}export{he as contextHook}; +import L from"path";import{stdin as u}from"process";import{execSync as l}from"child_process";import N from"path";import{homedir as R}from"os";import{join as r,dirname as f,basename as x}from"path";import{homedir as T}from"os";import{fileURLToPath as g}from"url";function A(){return typeof __dirname<"u"?__dirname:f(g(import.meta.url))}var v=A(),n=process.env.CLAUDE_MEM_DATA_DIR||r(T(),".claude-mem"),E=process.env.CLAUDE_CONFIG_DIR||r(T(),".claude"),k=r(n,"archives"),b=r(n,"logs"),W=r(n,"trash"),F=r(n,"backups"),H=r(n,"settings.json"),X=r(n,"claude-mem.db"),B=r(n,"vector-db"),V=r(E,"settings.json"),j=r(E,"commands"),G=r(E,"CLAUDE.md");import{readFileSync as d,existsSync as M}from"fs";var C=["bugfix","feature","refactor","discovery","decision","change"],D=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"];var p=C.join(","),S=D.join(",");var _=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:p,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:S,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(t){return process.env[t]||this.DEFAULTS[t]}static getInt(t){let o=this.get(t);return parseInt(o,10)}static getBool(t){return this.get(t)==="true"}static loadFromFile(t){if(!M(t))return this.getAllDefaults();let o=d(t,"utf-8"),i=JSON.parse(o).env||{},c={...this.DEFAULTS};for(let a of Object.keys(this.DEFAULTS))i[a]!==void 0&&(c[a]=i[a]);return c}};function m(){let e=N.join(R(),".claude-mem","settings.json"),t=_.loadFromFile(e);return parseInt(t.CLAUDE_MEM_WORKER_PORT,10)}async function U(e,t=1e4){let o=Date.now(),s=100;for(;Date.now()-o /dev/null 2>&1`,{timeout:1e3}),!0}catch{await new Promise(i=>setTimeout(i,s))}return!1}async function O(e){let t=e?.cwd??process.cwd(),o=t?L.basename(t):"unknown-project",s=m();if(!await U(s))throw new Error(`Worker service not available on port ${s} after 10s. Try: npm run worker:restart`);let c=`http://localhost:${s}/api/context/inject?project=${encodeURIComponent(o)}`;return l(`curl -s "${c}"`,{encoding:"utf-8",timeout:5e3}).trim()}var I=process.argv.includes("--colors");if(u.isTTY||I)O(void 0).then(e=>{console.log(e),process.exit(0)});else{let e="";u.on("data",t=>e+=t),u.on("end",async()=>{let t=e.trim()?JSON.parse(e):void 0,o=await O(t);console.log(JSON.stringify({hookSpecificOutput:{hookEventName:"SessionStart",additionalContext:o}})),process.exit(0)})} diff --git a/plugin/scripts/mcp-server.cjs b/plugin/scripts/mcp-server.cjs new file mode 100755 index 00000000..0709e6f7 --- /dev/null +++ b/plugin/scripts/mcp-server.cjs @@ -0,0 +1,15 @@ +#!/usr/bin/env node +"use strict";var hl=Object.create;var Pa=Object.defineProperty;var pl=Object.getOwnPropertyDescriptor;var ml=Object.getOwnPropertyNames;var vl=Object.getPrototypeOf,gl=Object.prototype.hasOwnProperty;var Q=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports),yl=(a,e)=>{for(var t in e)Pa(a,t,{get:e[t],enumerable:!0})},bl=(a,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of ml(e))!gl.call(a,r)&&r!==t&&Pa(a,r,{get:()=>e[r],enumerable:!(s=pl(e,r))||s.enumerable});return a};var $s=(a,e,t)=>(t=a!=null?hl(vl(a)):{},bl(e||!a||!a.__esModule?Pa(t,"default",{value:a,enumerable:!0}):t,a));var ln=Q((Bt,on)=>{(function(a,e){typeof Bt=="object"&&typeof on<"u"?e(Bt):typeof define=="function"&&define.amd?define(["exports"],e):e(a.URI=a.URI||{})})(Bt,(function(a){"use strict";function e(){for(var p=arguments.length,u=Array(p),v=0;v1){u[0]=u[0].slice(0,-1);for(var x=u.length-1,P=1;P= 0x80 (not a basic code point)","invalid-input":"Invalid input"},k=c-y,z=Math.floor,M=String.fromCharCode;function F(p){throw new RangeError(q[p])}function D(p,u){for(var v=[],x=p.length;x--;)v[x]=u(p[x]);return v}function A(p,u){var v=p.split("@"),x="";v.length>1&&(x=v[0]+"@",p=v[1]),p=p.replace(V,".");var P=p.split("."),N=D(P,u).join(".");return x+N}function L(p){for(var u=[],v=0,x=p.length;v=55296&&P<=56319&&v>1,u+=z(u/v);u>k*b>>1;P+=c)u=z(u/k);return z(P+(k+1)*u/(u+g))},Z=function(u){var v=[],x=u.length,P=0,N=S,K=$,ae=u.lastIndexOf(R);ae<0&&(ae=0);for(var oe=0;oe=128&&F("not-basic"),v.push(u.charCodeAt(oe));for(var _e=ae>0?ae+1:0;_e=x&&F("invalid-input");var de=Y(u.charCodeAt(_e++));(de>=c||de>z((_-P)/he))&&F("overflow"),P+=de*he;var ne=xe<=K?y:xe>=K+b?b:xe-K;if(dez(_/pe)&&F("overflow"),he*=pe}var ce=v.length+1;K=G(P-te,ce,te==0),z(P/ce)>_-N&&F("overflow"),N+=z(P/ce),P%=ce,v.splice(P++,0,N)}return String.fromCodePoint.apply(String,v)},me=function(u){var v=[];u=L(u);var x=u.length,P=S,N=0,K=$,ae=!0,oe=!1,_e=void 0;try{for(var te=u[Symbol.iterator](),he;!(ae=(he=te.next()).done);ae=!0){var xe=he.value;xe<128&&v.push(M(xe))}}catch(kr){oe=!0,_e=kr}finally{try{!ae&&te.return&&te.return()}finally{if(oe)throw _e}}var de=v.length,ne=de;for(de&&v.push(R);ne=P&&qez((_-N)/Ve)&&F("overflow"),N+=(pe-P)*Ve,P=pe;var sr=!0,Ir=!1,dr=void 0;try{for(var pt=u[Symbol.iterator](),$t;!(sr=($t=pt.next()).done);sr=!0){var Tt=$t.value;if(Tt_&&F("overflow"),Tt==P){for(var Yr=N,Xr=c;;Xr+=c){var fr=Xr<=K?y:Xr>=K+b?b:Xr-K;if(Yr>6|192).toString(16).toUpperCase()+"%"+(u&63|128).toString(16).toUpperCase():v="%"+(u>>12|224).toString(16).toUpperCase()+"%"+(u>>6&63|128).toString(16).toUpperCase()+"%"+(u&63|128).toString(16).toUpperCase(),v}function $e(p){for(var u="",v=0,x=p.length;v=194&&P<224){if(x-v>=6){var N=parseInt(p.substr(v+4,2),16);u+=String.fromCharCode((P&31)<<6|N&63)}else u+=p.substr(v,6);v+=6}else if(P>=224){if(x-v>=9){var K=parseInt(p.substr(v+4,2),16),ae=parseInt(p.substr(v+7,2),16);u+=String.fromCharCode((P&15)<<12|(K&63)<<6|ae&63)}else u+=p.substr(v,9);v+=9}else u+=p.substr(v,3),v+=3}return u}function yr(p,u){function v(x){var P=$e(x);return P.match(u.UNRESERVED)?P:x}return p.scheme&&(p.scheme=String(p.scheme).replace(u.PCT_ENCODED,v).toLowerCase().replace(u.NOT_SCHEME,"")),p.userinfo!==void 0&&(p.userinfo=String(p.userinfo).replace(u.PCT_ENCODED,v).replace(u.NOT_USERINFO,Pe).replace(u.PCT_ENCODED,r)),p.host!==void 0&&(p.host=String(p.host).replace(u.PCT_ENCODED,v).toLowerCase().replace(u.NOT_HOST,Pe).replace(u.PCT_ENCODED,r)),p.path!==void 0&&(p.path=String(p.path).replace(u.PCT_ENCODED,v).replace(p.scheme?u.NOT_PATH:u.NOT_PATH_NOSCHEME,Pe).replace(u.PCT_ENCODED,r)),p.query!==void 0&&(p.query=String(p.query).replace(u.PCT_ENCODED,v).replace(u.NOT_QUERY,Pe).replace(u.PCT_ENCODED,r)),p.fragment!==void 0&&(p.fragment=String(p.fragment).replace(u.PCT_ENCODED,v).replace(u.NOT_FRAGMENT,Pe).replace(u.PCT_ENCODED,r)),p}function cr(p){return p.replace(/^0*(.*)/,"$1")||"0"}function be(p,u){var v=p.match(u.IPV4ADDRESS)||[],x=h(v,2),P=x[1];return P?P.split(".").map(cr).join("."):p}function ve(p,u){var v=p.match(u.IPV6ADDRESS)||[],x=h(v,3),P=x[1],N=x[2];if(P){for(var K=P.toLowerCase().split("::").reverse(),ae=h(K,2),oe=ae[0],_e=ae[1],te=_e?_e.split(":").map(cr):[],he=oe.split(":").map(cr),xe=u.IPV4ADDRESS.test(he[he.length-1]),de=xe?7:8,ne=he.length-de,pe=Array(de),ce=0;ce1){var ue=pe.slice(0,Me.index),qe=pe.slice(Me.index+Me.length);Ue=ue.join(":")+"::"+qe.join(":")}else Ue=pe.join(":");return N&&(Ue+="%"+N),Ue}else return p}var Or=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,Re="".match(/(){0}/)[1]===void 0;function ie(p){var u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},v={},x=u.iri!==!1?f:d;u.reference==="suffix"&&(p=(u.scheme?u.scheme+":":"")+"//"+p);var P=p.match(Or);if(P){Re?(v.scheme=P[1],v.userinfo=P[3],v.host=P[4],v.port=parseInt(P[5],10),v.path=P[6]||"",v.query=P[7],v.fragment=P[8],isNaN(v.port)&&(v.port=P[5])):(v.scheme=P[1]||void 0,v.userinfo=p.indexOf("@")!==-1?P[3]:void 0,v.host=p.indexOf("//")!==-1?P[4]:void 0,v.port=parseInt(P[5],10),v.path=P[6]||"",v.query=p.indexOf("?")!==-1?P[7]:void 0,v.fragment=p.indexOf("#")!==-1?P[8]:void 0,isNaN(v.port)&&(v.port=p.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?P[4]:void 0)),v.host&&(v.host=ve(be(v.host,x),x)),v.scheme===void 0&&v.userinfo===void 0&&v.host===void 0&&v.port===void 0&&!v.path&&v.query===void 0?v.reference="same-document":v.scheme===void 0?v.reference="relative":v.fragment===void 0?v.reference="absolute":v.reference="uri",u.reference&&u.reference!=="suffix"&&u.reference!==v.reference&&(v.error=v.error||"URI is not a "+u.reference+" reference.");var N=ye[(u.scheme||v.scheme||"").toLowerCase()];if(!u.unicodeSupport&&(!N||!N.unicodeSupport)){if(v.host&&(u.domainHost||N&&N.domainHost))try{v.host=se.toASCII(v.host.replace(x.PCT_ENCODED,$e).toLowerCase())}catch(K){v.error=v.error||"Host's domain name can not be converted to ASCII via punycode: "+K}yr(v,d)}else yr(v,x);N&&N.parse&&N.parse(v,u)}else v.error=v.error||"URI can not be parsed.";return v}function br(p,u){var v=u.iri!==!1?f:d,x=[];return p.userinfo!==void 0&&(x.push(p.userinfo),x.push("@")),p.host!==void 0&&x.push(ve(be(String(p.host),v),v).replace(v.IPV6ADDRESS,function(P,N,K){return"["+N+(K?"%25"+K:"")+"]"})),(typeof p.port=="number"||typeof p.port=="string")&&(x.push(":"),x.push(String(p.port))),x.length?x.join(""):void 0}var ur=/^\.\.?\//,Dr=/^\/\.(\/|$)/,$r=/^\/\.\.(\/|$)/,Ee=/^\/?(?:.|\n)*?(?=\/|$)/;function ze(p){for(var u=[];p.length;)if(p.match(ur))p=p.replace(ur,"");else if(p.match(Dr))p=p.replace(Dr,"/");else if(p.match($r))p=p.replace($r,"/"),u.pop();else if(p==="."||p==="..")p="";else{var v=p.match(Ee);if(v){var x=v[0];p=p.slice(x.length),u.push(x)}else throw new Error("Unexpected dot segment condition")}return u.join("")}function ke(p){var u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},v=u.iri?f:d,x=[],P=ye[(u.scheme||p.scheme||"").toLowerCase()];if(P&&P.serialize&&P.serialize(p,u),p.host&&!v.IPV6ADDRESS.test(p.host)){if(u.domainHost||P&&P.domainHost)try{p.host=u.iri?se.toUnicode(p.host):se.toASCII(p.host.replace(v.PCT_ENCODED,$e).toLowerCase())}catch(ae){p.error=p.error||"Host's domain name can not be converted to "+(u.iri?"Unicode":"ASCII")+" via punycode: "+ae}}yr(p,v),u.reference!=="suffix"&&p.scheme&&(x.push(p.scheme),x.push(":"));var N=br(p,u);if(N!==void 0&&(u.reference!=="suffix"&&x.push("//"),x.push(N),p.path&&p.path.charAt(0)!=="/"&&x.push("/")),p.path!==void 0){var K=p.path;!u.absolutePath&&(!P||!P.absolutePath)&&(K=ze(K)),N===void 0&&(K=K.replace(/^\/\//,"/%2F")),x.push(K)}return p.query!==void 0&&(x.push("?"),x.push(p.query)),p.fragment!==void 0&&(x.push("#"),x.push(p.fragment)),x.join("")}function Te(p,u){var v=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},x=arguments[3],P={};return x||(p=ie(ke(p,v),v),u=ie(ke(u,v),v)),v=v||{},!v.tolerant&&u.scheme?(P.scheme=u.scheme,P.userinfo=u.userinfo,P.host=u.host,P.port=u.port,P.path=ze(u.path||""),P.query=u.query):(u.userinfo!==void 0||u.host!==void 0||u.port!==void 0?(P.userinfo=u.userinfo,P.host=u.host,P.port=u.port,P.path=ze(u.path||""),P.query=u.query):(u.path?(u.path.charAt(0)==="/"?P.path=ze(u.path):((p.userinfo!==void 0||p.host!==void 0||p.port!==void 0)&&!p.path?P.path="/"+u.path:p.path?P.path=p.path.slice(0,p.path.lastIndexOf("/")+1)+u.path:P.path=u.path,P.path=ze(P.path)),P.query=u.query):(P.path=p.path,u.query!==void 0?P.query=u.query:P.query=p.query),P.userinfo=p.userinfo,P.host=p.host,P.port=p.port),P.scheme=p.scheme),P.fragment=u.fragment,P}function tr(p,u,v){var x=l({scheme:"null"},v);return ke(Te(ie(p,x),ie(u,x),x,!0),x)}function Le(p,u){return typeof p=="string"?p=ke(ie(p,u),u):s(p)==="object"&&(p=ie(ke(p,u),u)),p}function Dt(p,u,v){return typeof p=="string"?p=ke(ie(p,v),v):s(p)==="object"&&(p=ke(p,v)),typeof u=="string"?u=ke(ie(u,v),v):s(u)==="object"&&(u=ke(u,v)),p===u}function ya(p,u){return p&&p.toString().replace(!u||!u.iri?d.ESCAPE:f.ESCAPE,Pe)}function Ke(p,u){return p&&p.toString().replace(!u||!u.iri?d.PCT_ENCODED:f.PCT_ENCODED,$e)}var ft={scheme:"http",domainHost:!0,parse:function(u,v){return u.host||(u.error=u.error||"HTTP URIs must have a host."),u},serialize:function(u,v){var x=String(u.scheme).toLowerCase()==="https";return(u.port===(x?443:80)||u.port==="")&&(u.port=void 0),u.path||(u.path="/"),u}},gs={scheme:"https",domainHost:ft.domainHost,parse:ft.parse,serialize:ft.serialize};function ys(p){return typeof p.secure=="boolean"?p.secure:String(p.scheme).toLowerCase()==="wss"}var ht={scheme:"ws",domainHost:!0,parse:function(u,v){var x=u;return x.secure=ys(x),x.resourceName=(x.path||"/")+(x.query?"?"+x.query:""),x.path=void 0,x.query=void 0,x},serialize:function(u,v){if((u.port===(ys(u)?443:80)||u.port==="")&&(u.port=void 0),typeof u.secure=="boolean"&&(u.scheme=u.secure?"wss":"ws",u.secure=void 0),u.resourceName){var x=u.resourceName.split("?"),P=h(x,2),N=P[0],K=P[1];u.path=N&&N!=="/"?N:void 0,u.query=K,u.resourceName=void 0}return u.fragment=void 0,u}},bs={scheme:"wss",domainHost:ht.domainHost,parse:ht.parse,serialize:ht.serialize},Jo={},Ko=!0,_s="[A-Za-z0-9\\-\\.\\_\\~"+(Ko?"\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF":"")+"]",ar="[0-9A-Fa-f]",Wo=t(t("%[EFef]"+ar+"%"+ar+ar+"%"+ar+ar)+"|"+t("%[89A-Fa-f]"+ar+"%"+ar+ar)+"|"+t("%"+ar+ar)),Go="[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]",Yo="[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",Xo=e(Yo,'[\\"\\\\]'),el="[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]",rl=new RegExp(_s,"g"),Gr=new RegExp(Wo,"g"),tl=new RegExp(e("[^]",Go,"[\\.]",'[\\"]',Xo),"g"),xs=new RegExp(e("[^]",_s,el),"g"),al=xs;function ba(p){var u=$e(p);return u.match(rl)?u:p}var Ps={scheme:"mailto",parse:function(u,v){var x=u,P=x.to=x.path?x.path.split(","):[];if(x.path=void 0,x.query){for(var N=!1,K={},ae=x.query.split("&"),oe=0,_e=ae.length;oe<_e;++oe){var te=ae[oe].split("=");switch(te[0]){case"to":for(var he=te[1].split(","),xe=0,de=he.length;xe{"use strict";cn.exports=function a(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var s,r,n;if(Array.isArray(e)){if(s=e.length,s!=t.length)return!1;for(r=s;r--!==0;)if(!a(e[r],t[r]))return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(n=Object.keys(e),s=n.length,s!==Object.keys(t).length)return!1;for(r=s;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,n[r]))return!1;for(r=s;r--!==0;){var l=n[r];if(!a(e[l],t[l]))return!1}return!0}return e!==e&&t!==t}});var dn=Q((dh,un)=>{"use strict";un.exports=function(e){for(var t=0,s=e.length,r=0,n;r=55296&&n<=56319&&r{"use strict";pn.exports={copy:Ru,checkDataType:qa,checkDataTypes:Ou,coerceToTypes:Du,toHash:Ua,getProperty:Va,escapeQuotes:Za,equal:Qt(),ucs2length:dn(),varOccurences:Iu,varReplace:ku,schemaHasRules:Au,schemaHasRulesExcept:ju,schemaUnknownRules:Cu,toQuotedString:za,getPathExpr:Nu,getPath:Fu,getData:qu,unescapeFragment:zu,unescapeJsonPointer:Ba,escapeFragment:Uu,escapeJsonPointer:Ha};function Ru(a,e){e=e||{};for(var t in a)e[t]=a[t];return e}function qa(a,e,t,s){var r=s?" !== ":" === ",n=s?" || ":" && ",l=s?"!":"",o=s?"":"!";switch(a){case"null":return e+r+"null";case"array":return l+"Array.isArray("+e+")";case"object":return"("+l+e+n+"typeof "+e+r+'"object"'+n+o+"Array.isArray("+e+"))";case"integer":return"(typeof "+e+r+'"number"'+n+o+"("+e+" % 1)"+n+e+r+e+(t?n+l+"isFinite("+e+")":"")+")";case"number":return"(typeof "+e+r+'"'+a+'"'+(t?n+l+"isFinite("+e+")":"")+")";default:return"typeof "+e+r+'"'+a+'"'}}function Ou(a,e,t){switch(a.length){case 1:return qa(a[0],e,t,!0);default:var s="",r=Ua(a);r.array&&r.object&&(s=r.null?"(":"(!"+e+" || ",s+="typeof "+e+' !== "object")',delete r.null,delete r.array,delete r.object),r.number&&delete r.integer;for(var n in r)s+=(s?" && ":"")+qa(n,e,t,!0);return s}}var fn=Ua(["string","number","integer","boolean","null"]);function Du(a,e){if(Array.isArray(e)){for(var t=[],s=0;s=e)throw new Error("Cannot access property/index "+s+" levels up, current level is "+e);return t[e-s]}if(s>e)throw new Error("Cannot access data "+s+" levels up, current level is "+e);if(n="data"+(e-s||""),!r)return n}for(var o=n,d=r.split("/"),f=0;f{"use strict";var Vu=Kr();mn.exports=Zu;function Zu(a){Vu.copy(a,this)}});var gn=Q((ph,vn)=>{"use strict";var Sr=vn.exports=function(a,e,t){typeof e=="function"&&(t=e,e={}),t=e.cb||t;var s=typeof t=="function"?t:t.pre||function(){},r=t.post||function(){};Jt(e,s,r,a,"",a)};Sr.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0};Sr.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};Sr.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};Sr.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function Jt(a,e,t,s,r,n,l,o,d,f){if(s&&typeof s=="object"&&!Array.isArray(s)){e(s,r,n,l,o,d,f);for(var h in s){var m=s[h];if(Array.isArray(m)){if(h in Sr.arrayKeywords)for(var _=0;_{"use strict";var Rt=ln(),yn=Qt(),Yt=Kr(),Kt=Qa(),Bu=gn();xn.exports=Rr;Rr.normalizeId=wr;Rr.fullPath=Wt;Rr.url=Gt;Rr.ids=Gu;Rr.inlineRef=Ja;Rr.schema=Xt;function Rr(a,e,t){var s=this._refs[t];if(typeof s=="string")if(this._refs[s])s=this._refs[s];else return Rr.call(this,a,e,s);if(s=s||this._schemas[t],s instanceof Kt)return Ja(s.schema,this._opts.inlineRefs)?s.schema:s.validate||this._compile(s);var r=Xt.call(this,e,t),n,l,o;return r&&(n=r.schema,e=r.root,o=r.baseId),n instanceof Kt?l=n.validate||a.call(this,n.schema,e,void 0,o):n!==void 0&&(l=Ja(n,this._opts.inlineRefs)?n:a.call(this,n,e,void 0,o)),l}function Xt(a,e){var t=Rt.parse(e),s=_n(t),r=Wt(this._getId(a.schema));if(Object.keys(a.schema).length===0||s!==r){var n=wr(s),l=this._refs[n];if(typeof l=="string")return Qu.call(this,a,l,t);if(l instanceof Kt)l.validate||this._compile(l),a=l;else if(l=this._schemas[n],l instanceof Kt){if(l.validate||this._compile(l),n==wr(e))return{schema:l,root:a,baseId:r};a=l}else return;if(!a.schema)return;r=Wt(this._getId(a.schema))}return bn.call(this,t,r,a.schema,a)}function Qu(a,e,t){var s=Xt.call(this,a,e);if(s){var r=s.schema,n=s.baseId;a=s.root;var l=this._getId(r);return l&&(n=Gt(n,l)),bn.call(this,t,n,r,a)}}var Ju=Yt.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function bn(a,e,t,s){if(a.fragment=a.fragment||"",a.fragment.slice(0,1)=="/"){for(var r=a.fragment.split("/"),n=1;n{"use strict";var Ga=ea();En.exports={Validation:Pn(Yu),MissingRef:Pn(Ya)};function Yu(a){this.message="validation failed",this.errors=a,this.ajv=this.validation=!0}Ya.message=function(a,e){return"can't resolve reference "+e+" from id "+a};function Ya(a,e,t){this.message=t||Ya.message(a,e),this.missingRef=Ga.url(a,e),this.missingSchema=Ga.normalizeId(Ga.fullPath(this.missingRef))}function Pn(a){return a.prototype=Object.create(Error.prototype),a.prototype.constructor=a,a}});var Xa=Q((gh,Sn)=>{"use strict";Sn.exports=function(a,e){e||(e={}),typeof e=="function"&&(e={cmp:e});var t=typeof e.cycles=="boolean"?e.cycles:!1,s=e.cmp&&(function(n){return function(l){return function(o,d){var f={key:o,value:l[o]},h={key:d,value:l[d]};return n(f,h)}}})(e.cmp),r=[];return(function n(l){if(l&&l.toJSON&&typeof l.toJSON=="function"&&(l=l.toJSON()),l!==void 0){if(typeof l=="number")return isFinite(l)?""+l:"null";if(typeof l!="object")return JSON.stringify(l);var o,d;if(Array.isArray(l)){for(d="[",o=0;o{"use strict";wn.exports=function(e,t,s){var r="",n=e.schema.$async===!0,l=e.util.schemaHasRulesExcept(e.schema,e.RULES.all,"$ref"),o=e.self._getId(e.schema);if(e.opts.strictKeywords){var d=e.util.schemaUnknownRules(e.schema,e.RULES.keywords);if(d){var f="unknown keyword: "+d;if(e.opts.strictKeywords==="log")e.logger.warn(f);else throw new Error(f)}}if(e.isTop&&(r+=" var validate = ",n&&(e.async=!0,r+="async "),r+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",o&&(e.opts.sourceCode||e.opts.processCode)&&(r+=" "+("/*# sourceURL="+o+" */")+" ")),typeof e.schema=="boolean"||!(l||e.schema.$ref)){var t="false schema",h=e.level,m=e.dataLevel,_=e.schema[t],c=e.schemaPath+e.util.getProperty(t),y=e.errSchemaPath+"/"+t,T=!e.opts.allErrors,q,b="data"+(m||""),R="valid"+h;if(e.schema===!1){e.isTop?T=!0:r+=" var "+R+" = false; ";var g=g||[];g.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(q||"false schema")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(y)+" , params: {} ",e.opts.messages!==!1&&(r+=" , message: 'boolean schema is false' "),e.opts.verbose&&(r+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+b+" "),r+=" } "):r+=" {} ";var E=r;r=g.pop(),!e.compositeRule&&T?e.async?r+=" throw new ValidationError(["+E+"]); ":r+=" validate.errors = ["+E+"]; return false; ":r+=" var err = "+E+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else e.isTop?n?r+=" return data; ":r+=" validate.errors = null; return true; ":r+=" var "+R+" = true; ";return e.isTop&&(r+=" }; return validate; "),r}if(e.isTop){var $=e.isTop,h=e.level=0,m=e.dataLevel=0,b="data";if(e.rootId=e.resolve.fullPath(e.self._getId(e.root.schema)),e.baseId=e.baseId||e.rootId,delete e.isTop,e.dataPathArr=[""],e.schema.default!==void 0&&e.opts.useDefaults&&e.opts.strictDefaults){var S="default is ignored in the schema root";if(e.opts.strictDefaults==="log")e.logger.warn(S);else throw new Error(S)}r+=" var vErrors = null; ",r+=" var errors = 0; ",r+=" if (rootData === undefined) rootData = data; "}else{var h=e.level,m=e.dataLevel,b="data"+(m||"");if(o&&(e.baseId=e.resolve.url(e.baseId,o)),n&&!e.async)throw new Error("async schema in sync schema");r+=" var errs_"+h+" = errors;"}var R="valid"+h,T=!e.opts.allErrors,I="",V="",q,k=e.schema.type,z=Array.isArray(k);if(k&&e.opts.nullable&&e.schema.nullable===!0&&(z?k.indexOf("null")==-1&&(k=k.concat("null")):k!="null"&&(k=[k,"null"],z=!0)),z&&k.length==1&&(k=k[0],z=!1),e.schema.$ref&&l){if(e.opts.extendRefs=="fail")throw new Error('$ref: validation keywords used in schema at path "'+e.errSchemaPath+'" (see option extendRefs)');e.opts.extendRefs!==!0&&(l=!1,e.logger.warn('$ref: keywords ignored in schema at path "'+e.errSchemaPath+'"'))}if(e.schema.$comment&&e.opts.$comment&&(r+=" "+e.RULES.all.$comment.code(e,"$comment")),k){if(e.opts.coerceTypes)var M=e.util.coerceToTypes(e.opts.coerceTypes,k);var F=e.RULES.types[k];if(M||z||F===!0||F&&!Ee(F)){var c=e.schemaPath+".type",y=e.errSchemaPath+"/type",c=e.schemaPath+".type",y=e.errSchemaPath+"/type",D=z?"checkDataTypes":"checkDataType";if(r+=" if ("+e.util[D](k,b,e.opts.strictNumbers,!0)+") { ",M){var A="dataType"+h,L="coerced"+h;r+=" var "+A+" = typeof "+b+"; var "+L+" = undefined; ",e.opts.coerceTypes=="array"&&(r+=" if ("+A+" == 'object' && Array.isArray("+b+") && "+b+".length == 1) { "+b+" = "+b+"[0]; "+A+" = typeof "+b+"; if ("+e.util.checkDataType(e.schema.type,b,e.opts.strictNumbers)+") "+L+" = "+b+"; } "),r+=" if ("+L+" !== undefined) ; ";var le=M;if(le)for(var Y,re=-1,G=le.length-1;re{"use strict";var ta=ea(),sa=Kr(),On=ra(),Xu=Xa(),Rn=es(),ed=sa.ucs2length,rd=Qt(),td=On.Validation;$n.exports=rs;function rs(a,e,t,s){var r=this,n=this._opts,l=[void 0],o={},d=[],f={},h=[],m={},_=[];e=e||{schema:a,refVal:l,refs:o};var c=ad.call(this,a,e,s),y=this._compilations[c.index];if(c.compiling)return y.callValidate=S;var b=this._formats,g=this.RULES;try{var E=R(a,e,t,s);y.validate=E;var $=y.callValidate;return $&&($.schema=E.schema,$.errors=null,$.refs=E.refs,$.refVal=E.refVal,$.root=E.root,$.$async=E.$async,n.sourceCode&&($.source=E.source)),E}finally{sd.call(this,a,e,s)}function S(){var D=y.validate,A=D.apply(this,arguments);return S.errors=D.errors,A}function R(D,A,L,le){var Y=!A||A&&A.schema==D;if(A.schema!=e.schema)return rs.call(r,D,A,L,le);var re=D.$async===!0,G=Rn({isTop:!0,schema:D,isRoot:Y,baseId:le,root:A,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:On.MissingRef,RULES:g,validate:Rn,util:sa,resolve:ta,resolveRef:T,usePattern:z,useDefault:M,useCustomRule:F,opts:n,formats:b,logger:r.logger,self:r});G=aa(l,od)+aa(d,nd)+aa(h,id)+aa(_,ld)+G,n.processCode&&(G=n.processCode(G,D));var Z;try{var me=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",G);Z=me(r,g,b,e,l,h,_,rd,ed,td),l[0]=Z}catch(we){throw r.logger.error("Error compiling schema, function code:",G),we}return Z.schema=D,Z.errors=null,Z.refs=o,Z.refVal=l,Z.root=Y?Z:A,re&&(Z.$async=!0),n.sourceCode===!0&&(Z.source={code:G,patterns:d,defaults:h}),Z}function T(D,A,L){A=ta.url(D,A);var le=o[A],Y,re;if(le!==void 0)return Y=l[le],re="refVal["+le+"]",k(Y,re);if(!L&&e.refs){var G=e.refs[A];if(G!==void 0)return Y=e.refVal[G],re=I(A,Y),k(Y,re)}re=I(A);var Z=ta.call(r,R,e,A);if(Z===void 0){var me=t&&t[A];me&&(Z=ta.inlineRef(me,n.inlineRefs)?me:rs.call(r,me,e,t,D))}if(Z===void 0)V(A);else return q(A,Z),k(Z,re)}function I(D,A){var L=l.length;return l[L]=A,o[D]=L,"refVal"+L}function V(D){delete o[D]}function q(D,A){var L=o[D];l[L]=A}function k(D,A){return typeof D=="object"||typeof D=="boolean"?{code:A,schema:D,inline:!0}:{code:A,$async:D&&!!D.$async}}function z(D){var A=f[D];return A===void 0&&(A=f[D]=d.length,d[A]=D),"pattern"+A}function M(D){switch(typeof D){case"boolean":case"number":return""+D;case"string":return sa.toQuotedString(D);case"object":if(D===null)return"null";var A=Xu(D),L=m[A];return L===void 0&&(L=m[A]=h.length,h[L]=D),"default"+L}}function F(D,A,L,le){if(r._opts.validateSchema!==!1){var Y=D.definition.dependencies;if(Y&&!Y.every(function(Pe){return Object.prototype.hasOwnProperty.call(L,Pe)}))throw new Error("parent schema must have all required keywords: "+Y.join(","));var re=D.definition.validateSchema;if(re){var G=re(A);if(!G){var Z="keyword schema is invalid: "+r.errorsText(re.errors);if(r._opts.validateSchema=="log")r.logger.error(Z);else throw new Error(Z)}}}var me=D.definition.compile,we=D.definition.inline,De=D.definition.macro,se;if(me)se=me.call(r,A,L,le);else if(De)se=De.call(r,A,L,le),n.validateSchema!==!1&&r.validateSchema(se,!0);else if(we)se=we.call(r,le,D.keyword,A,L);else if(se=D.definition.validate,!se)return;if(se===void 0)throw new Error('custom keyword "'+D.keyword+'"failed to compile');var ye=_.length;return _[ye]=se,{code:"customRule"+ye,validate:se}}}function ad(a,e,t){var s=Dn.call(this,a,e,t);return s>=0?{index:s,compiling:!0}:(s=this._compilations.length,this._compilations[s]={schema:a,root:e,baseId:t},{index:s,compiling:!1})}function sd(a,e,t){var s=Dn.call(this,a,e,t);s>=0&&this._compilations.splice(s,1)}function Dn(a,e,t){for(var s=0;s{"use strict";var na=In.exports=function(){this._cache={}};na.prototype.put=function(e,t){this._cache[e]=t};na.prototype.get=function(e){return this._cache[e]};na.prototype.del=function(e){delete this._cache[e]};na.prototype.clear=function(){this._cache={}}});var Zn=Q((xh,Vn)=>{"use strict";var cd=Kr(),ud=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,dd=[0,31,28,31,30,31,30,31,31,30,31,30,31],fd=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,An=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,hd=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,pd=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,jn=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,Cn=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,Nn=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,Fn=/^(?:\/(?:[^~/]|~0|~1)*)*$/,Ln=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,Mn=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;Vn.exports=ia;function ia(a){return a=a=="full"?"full":"fast",cd.copy(ia[a])}ia.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":jn,url:Cn,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:An,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:Un,uuid:Nn,"json-pointer":Fn,"json-pointer-uri-fragment":Ln,"relative-json-pointer":Mn};ia.full={date:qn,time:zn,"date-time":gd,uri:bd,"uri-reference":pd,"uri-template":jn,url:Cn,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:An,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:Un,uuid:Nn,"json-pointer":Fn,"json-pointer-uri-fragment":Ln,"relative-json-pointer":Mn};function md(a){return a%4===0&&(a%100!==0||a%400===0)}function qn(a){var e=a.match(ud);if(!e)return!1;var t=+e[1],s=+e[2],r=+e[3];return s>=1&&s<=12&&r>=1&&r<=(s==2&&md(t)?29:dd[s])}function zn(a,e){var t=a.match(fd);if(!t)return!1;var s=t[1],r=t[2],n=t[3],l=t[5];return(s<=23&&r<=59&&n<=59||s==23&&r==59&&n==60)&&(!e||l)}var vd=/t|\s/i;function gd(a){var e=a.split(vd);return e.length==2&&qn(e[0])&&zn(e[1],!0)}var yd=/\/|:/;function bd(a){return yd.test(a)&&hd.test(a)}var _d=/[^\\]\\Z/;function Un(a){if(_d.test(a))return!1;try{return new RegExp(a),!0}catch{return!1}}});var Bn=Q((Ph,Hn)=>{"use strict";Hn.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.errSchemaPath+"/"+t,f=!e.opts.allErrors,h="data"+(l||""),m="valid"+n,_,c;if(o=="#"||o=="#/")e.isRoot?(_=e.async,c="validate"):(_=e.root.schema.$async===!0,c="root.refVal[0]");else{var y=e.resolveRef(e.baseId,o,e.isRoot);if(y===void 0){var b=e.MissingRefError.message(e.baseId,o);if(e.opts.missingRefs=="fail"){e.logger.error(b);var g=g||[];g.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { ref: '"+e.util.escapeQuotes(o)+"' } ",e.opts.messages!==!1&&(r+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(o)+"' "),e.opts.verbose&&(r+=" , schema: "+e.util.toQuotedString(o)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),r+=" } "):r+=" {} ";var E=r;r=g.pop(),!e.compositeRule&&f?e.async?r+=" throw new ValidationError(["+E+"]); ":r+=" validate.errors = ["+E+"]; return false; ":r+=" var err = "+E+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",f&&(r+=" if (false) { ")}else if(e.opts.missingRefs=="ignore")e.logger.warn(b),f&&(r+=" if (true) { ");else throw new e.MissingRefError(e.baseId,o,b)}else if(y.inline){var $=e.util.copy(e);$.level++;var S="valid"+$.level;$.schema=y.schema,$.schemaPath="",$.errSchemaPath=o;var R=e.validate($).replace(/validate\.schema/g,y.code);r+=" "+R+" ",f&&(r+=" if ("+S+") { ")}else _=y.$async===!0||e.async&&y.$async!==!1,c=y.code}if(c){var g=g||[];g.push(r),r="",e.opts.passContext?r+=" "+c+".call(this, ":r+=" "+c+"( ",r+=" "+h+", (dataPath || '')",e.errorPath!='""'&&(r+=" + "+e.errorPath);var T=l?"data"+(l-1||""):"parentData",I=l?e.dataPathArr[l]:"parentDataProperty";r+=" , "+T+" , "+I+", rootData) ";var V=r;if(r=g.pop(),_){if(!e.async)throw new Error("async schema referenced by sync schema");f&&(r+=" var "+m+"; "),r+=" try { await "+V+"; ",f&&(r+=" "+m+" = true; "),r+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",f&&(r+=" "+m+" = false; "),r+=" } ",f&&(r+=" if ("+m+") { ")}else r+=" if (!"+V+") { if (vErrors === null) vErrors = "+c+".errors; else vErrors = vErrors.concat("+c+".errors); errors = vErrors.length; } ",f&&(r+=" else { ")}return r}});var Jn=Q((Eh,Qn)=>{"use strict";Qn.exports=function(e,t,s){var r=" ",n=e.schema[t],l=e.schemaPath+e.util.getProperty(t),o=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,f=e.util.copy(e),h="";f.level++;var m="valid"+f.level,_=f.baseId,c=!0,y=n;if(y)for(var b,g=-1,E=y.length-1;g0||b===!1:e.util.schemaHasRules(b,e.RULES.all))&&(c=!1,f.schema=b,f.schemaPath=l+"["+g+"]",f.errSchemaPath=o+"/"+g,r+=" "+e.validate(f)+" ",f.baseId=_,d&&(r+=" if ("+m+") { ",h+="}"));return d&&(c?r+=" if (true) { ":r+=" "+h.slice(0,-1)+" "),r}});var Wn=Q((Sh,Kn)=>{"use strict";Kn.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),_="valid"+n,c="errs__"+n,y=e.util.copy(e),b="";y.level++;var g="valid"+y.level,E=o.every(function(q){return e.opts.strictKeywords?typeof q=="object"&&Object.keys(q).length>0||q===!1:e.util.schemaHasRules(q,e.RULES.all)});if(E){var $=y.baseId;r+=" var "+c+" = errors; var "+_+" = false; ";var S=e.compositeRule;e.compositeRule=y.compositeRule=!0;var R=o;if(R)for(var T,I=-1,V=R.length-1;I{"use strict";Gn.exports=function(e,t,s){var r=" ",n=e.schema[t],l=e.errSchemaPath+"/"+t,o=!e.opts.allErrors,d=e.util.toQuotedString(n);return e.opts.$comment===!0?r+=" console.log("+d+");":typeof e.opts.$comment=="function"&&(r+=" self._opts.$comment("+d+", "+e.util.toQuotedString(l)+", validate.root.schema);"),r}});var ei=Q((Rh,Xn)=>{"use strict";Xn.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),_="valid"+n,c=e.opts.$data&&o&&o.$data,y;c?(r+=" var schema"+n+" = "+e.util.getData(o.$data,l,e.dataPathArr)+"; ",y="schema"+n):y=o,c||(r+=" var schema"+n+" = validate.schema"+d+";"),r+="var "+_+" = equal("+m+", schema"+n+"); if (!"+_+") { ";var b=b||[];b.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { allowedValue: schema"+n+" } ",e.opts.messages!==!1&&(r+=" , message: 'should be equal to constant' "),e.opts.verbose&&(r+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var g=r;return r=b.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+g+"]); ":r+=" validate.errors = ["+g+"]; return false; ":r+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" }",h&&(r+=" else { "),r}});var ti=Q((Oh,ri)=>{"use strict";ri.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),_="valid"+n,c="errs__"+n,y=e.util.copy(e),b="";y.level++;var g="valid"+y.level,E="i"+n,$=y.dataLevel=e.dataLevel+1,S="data"+$,R=e.baseId,T=e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all);if(r+="var "+c+" = errors;var "+_+";",T){var I=e.compositeRule;e.compositeRule=y.compositeRule=!0,y.schema=o,y.schemaPath=d,y.errSchemaPath=f,r+=" var "+g+" = false; for (var "+E+" = 0; "+E+" < "+m+".length; "+E+"++) { ",y.errorPath=e.util.getPathExpr(e.errorPath,E,e.opts.jsonPointers,!0);var V=m+"["+E+"]";y.dataPathArr[$]=E;var q=e.validate(y);y.baseId=R,e.util.varOccurences(q,S)<2?r+=" "+e.util.varReplace(q,S,V)+" ":r+=" var "+S+" = "+V+"; "+q+" ",r+=" if ("+g+") break; } ",e.compositeRule=y.compositeRule=I,r+=" "+b+" if (!"+g+") {"}else r+=" if ("+m+".length == 0) {";var k=k||[];k.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: {} ",e.opts.messages!==!1&&(r+=" , message: 'should contain a valid item' "),e.opts.verbose&&(r+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var z=r;return r=k.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+z+"]); ":r+=" validate.errors = ["+z+"]; return false; ":r+=" var err = "+z+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { ",T&&(r+=" errors = "+c+"; if (vErrors !== null) { if ("+c+") vErrors.length = "+c+"; else vErrors = null; } "),e.opts.allErrors&&(r+=" } "),r}});var si=Q((Dh,ai)=>{"use strict";ai.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),_="errs__"+n,c=e.util.copy(e),y="";c.level++;var b="valid"+c.level,g={},E={},$=e.opts.ownProperties;for(I in o)if(I!="__proto__"){var S=o[I],R=Array.isArray(S)?E:g;R[I]=S}r+="var "+_+" = errors;";var T=e.errorPath;r+="var missing"+n+";";for(var I in E)if(R=E[I],R.length){if(r+=" if ( "+m+e.util.getProperty(I)+" !== undefined ",$&&(r+=" && Object.prototype.hasOwnProperty.call("+m+", '"+e.util.escapeQuotes(I)+"') "),h){r+=" && ( ";var V=R;if(V)for(var q,k=-1,z=V.length-1;k0||S===!1:e.util.schemaHasRules(S,e.RULES.all))&&(r+=" "+b+" = true; if ( "+m+e.util.getProperty(I)+" !== undefined ",$&&(r+=" && Object.prototype.hasOwnProperty.call("+m+", '"+e.util.escapeQuotes(I)+"') "),r+=") { ",c.schema=S,c.schemaPath=d+e.util.getProperty(I),c.errSchemaPath=f+"/"+e.util.escapeFragment(I),r+=" "+e.validate(c)+" ",c.baseId=Z,r+=" } ",h&&(r+=" if ("+b+") { ",y+="}"))}return h&&(r+=" "+y+" if ("+_+" == errors) {"),r}});var ii=Q(($h,ni)=>{"use strict";ni.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),_="valid"+n,c=e.opts.$data&&o&&o.$data,y;c?(r+=" var schema"+n+" = "+e.util.getData(o.$data,l,e.dataPathArr)+"; ",y="schema"+n):y=o;var b="i"+n,g="schema"+n;c||(r+=" var "+g+" = validate.schema"+d+";"),r+="var "+_+";",c&&(r+=" if (schema"+n+" === undefined) "+_+" = true; else if (!Array.isArray(schema"+n+")) "+_+" = false; else {"),r+=""+_+" = false;for (var "+b+"=0; "+b+"<"+g+".length; "+b+"++) if (equal("+m+", "+g+"["+b+"])) { "+_+" = true; break; }",c&&(r+=" } "),r+=" if (!"+_+") { ";var E=E||[];E.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { allowedValues: schema"+n+" } ",e.opts.messages!==!1&&(r+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(r+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var $=r;return r=E.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+$+"]); ":r+=" validate.errors = ["+$+"]; return false; ":r+=" var err = "+$+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" }",h&&(r+=" else { "),r}});var li=Q((Th,oi)=>{"use strict";oi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||"");if(e.opts.format===!1)return h&&(r+=" if (true) { "),r;var _=e.opts.$data&&o&&o.$data,c;_?(r+=" var schema"+n+" = "+e.util.getData(o.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=o;var y=e.opts.unknownFormats,b=Array.isArray(y);if(_){var g="format"+n,E="isObject"+n,$="formatType"+n;r+=" var "+g+" = formats["+c+"]; var "+E+" = typeof "+g+" == 'object' && !("+g+" instanceof RegExp) && "+g+".validate; var "+$+" = "+E+" && "+g+".type || 'string'; if ("+E+") { ",e.async&&(r+=" var async"+n+" = "+g+".async; "),r+=" "+g+" = "+g+".validate; } if ( ",_&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'string') || "),r+=" (",y!="ignore"&&(r+=" ("+c+" && !"+g+" ",b&&(r+=" && self._opts.unknownFormats.indexOf("+c+") == -1 "),r+=") || "),r+=" ("+g+" && "+$+" == '"+s+"' && !(typeof "+g+" == 'function' ? ",e.async?r+=" (async"+n+" ? await "+g+"("+m+") : "+g+"("+m+")) ":r+=" "+g+"("+m+") ",r+=" : "+g+".test("+m+"))))) {"}else{var g=e.formats[o];if(!g){if(y=="ignore")return e.logger.warn('unknown format "'+o+'" ignored in schema at path "'+e.errSchemaPath+'"'),h&&(r+=" if (true) { "),r;if(b&&y.indexOf(o)>=0)return h&&(r+=" if (true) { "),r;throw new Error('unknown format "'+o+'" is used in schema at path "'+e.errSchemaPath+'"')}var E=typeof g=="object"&&!(g instanceof RegExp)&&g.validate,$=E&&g.type||"string";if(E){var S=g.async===!0;g=g.validate}if($!=s)return h&&(r+=" if (true) { "),r;if(S){if(!e.async)throw new Error("async format in sync schema");var R="formats"+e.util.getProperty(o)+".validate";r+=" if (!(await "+R+"("+m+"))) { "}else{r+=" if (! ";var R="formats"+e.util.getProperty(o);E&&(R+=".validate"),typeof g=="function"?r+=" "+R+"("+m+") ":r+=" "+R+".test("+m+") ",r+=") { "}}var T=T||[];T.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { format: ",_?r+=""+c:r+=""+e.util.toQuotedString(o),r+=" } ",e.opts.messages!==!1&&(r+=` , message: 'should match format "`,_?r+="' + "+c+" + '":r+=""+e.util.escapeQuotes(o),r+=`"' `),e.opts.verbose&&(r+=" , schema: ",_?r+="validate.schema"+d:r+=""+e.util.toQuotedString(o),r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var I=r;return r=T.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+I+"]); ":r+=" validate.errors = ["+I+"]; return false; ":r+=" var err = "+I+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",h&&(r+=" else { "),r}});var ui=Q((Ih,ci)=>{"use strict";ci.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),_="valid"+n,c="errs__"+n,y=e.util.copy(e);y.level++;var b="valid"+y.level,g=e.schema.then,E=e.schema.else,$=g!==void 0&&(e.opts.strictKeywords?typeof g=="object"&&Object.keys(g).length>0||g===!1:e.util.schemaHasRules(g,e.RULES.all)),S=E!==void 0&&(e.opts.strictKeywords?typeof E=="object"&&Object.keys(E).length>0||E===!1:e.util.schemaHasRules(E,e.RULES.all)),R=y.baseId;if($||S){var T;y.createErrors=!1,y.schema=o,y.schemaPath=d,y.errSchemaPath=f,r+=" var "+c+" = errors; var "+_+" = true; ";var I=e.compositeRule;e.compositeRule=y.compositeRule=!0,r+=" "+e.validate(y)+" ",y.baseId=R,y.createErrors=!0,r+=" errors = "+c+"; if (vErrors !== null) { if ("+c+") vErrors.length = "+c+"; else vErrors = null; } ",e.compositeRule=y.compositeRule=I,$?(r+=" if ("+b+") { ",y.schema=e.schema.then,y.schemaPath=e.schemaPath+".then",y.errSchemaPath=e.errSchemaPath+"/then",r+=" "+e.validate(y)+" ",y.baseId=R,r+=" "+_+" = "+b+"; ",$&&S?(T="ifClause"+n,r+=" var "+T+" = 'then'; "):T="'then'",r+=" } ",S&&(r+=" else { ")):r+=" if (!"+b+") { ",S&&(y.schema=e.schema.else,y.schemaPath=e.schemaPath+".else",y.errSchemaPath=e.errSchemaPath+"/else",r+=" "+e.validate(y)+" ",y.baseId=R,r+=" "+_+" = "+b+"; ",$&&S?(T="ifClause"+n,r+=" var "+T+" = 'else'; "):T="'else'",r+=" } "),r+=" if (!"+_+") { var err = ",e.createErrors!==!1?(r+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { failingKeyword: "+T+" } ",e.opts.messages!==!1&&(r+=` , message: 'should match "' + `+T+` + '" schema' `),e.opts.verbose&&(r+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ",r+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&h&&(e.async?r+=" throw new ValidationError(vErrors); ":r+=" validate.errors = vErrors; return false; "),r+=" } ",h&&(r+=" else { ")}else h&&(r+=" if (true) { ");return r}});var fi=Q((kh,di)=>{"use strict";di.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),_="valid"+n,c="errs__"+n,y=e.util.copy(e),b="";y.level++;var g="valid"+y.level,E="i"+n,$=y.dataLevel=e.dataLevel+1,S="data"+$,R=e.baseId;if(r+="var "+c+" = errors;var "+_+";",Array.isArray(o)){var T=e.schema.additionalItems;if(T===!1){r+=" "+_+" = "+m+".length <= "+o.length+"; ";var I=f;f=e.errSchemaPath+"/additionalItems",r+=" if (!"+_+") { ";var V=V||[];V.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { limit: "+o.length+" } ",e.opts.messages!==!1&&(r+=" , message: 'should NOT have more than "+o.length+" items' "),e.opts.verbose&&(r+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var q=r;r=V.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+q+"]); ":r+=" validate.errors = ["+q+"]; return false; ":r+=" var err = "+q+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",f=I,h&&(b+="}",r+=" else { ")}var k=o;if(k){for(var z,M=-1,F=k.length-1;M0||z===!1:e.util.schemaHasRules(z,e.RULES.all)){r+=" "+g+" = true; if ("+m+".length > "+M+") { ";var D=m+"["+M+"]";y.schema=z,y.schemaPath=d+"["+M+"]",y.errSchemaPath=f+"/"+M,y.errorPath=e.util.getPathExpr(e.errorPath,M,e.opts.jsonPointers,!0),y.dataPathArr[$]=M;var A=e.validate(y);y.baseId=R,e.util.varOccurences(A,S)<2?r+=" "+e.util.varReplace(A,S,D)+" ":r+=" var "+S+" = "+D+"; "+A+" ",r+=" } ",h&&(r+=" if ("+g+") { ",b+="}")}}if(typeof T=="object"&&(e.opts.strictKeywords?typeof T=="object"&&Object.keys(T).length>0||T===!1:e.util.schemaHasRules(T,e.RULES.all))){y.schema=T,y.schemaPath=e.schemaPath+".additionalItems",y.errSchemaPath=e.errSchemaPath+"/additionalItems",r+=" "+g+" = true; if ("+m+".length > "+o.length+") { for (var "+E+" = "+o.length+"; "+E+" < "+m+".length; "+E+"++) { ",y.errorPath=e.util.getPathExpr(e.errorPath,E,e.opts.jsonPointers,!0);var D=m+"["+E+"]";y.dataPathArr[$]=E;var A=e.validate(y);y.baseId=R,e.util.varOccurences(A,S)<2?r+=" "+e.util.varReplace(A,S,D)+" ":r+=" var "+S+" = "+D+"; "+A+" ",h&&(r+=" if (!"+g+") break; "),r+=" } } ",h&&(r+=" if ("+g+") { ",b+="}")}}else if(e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){y.schema=o,y.schemaPath=d,y.errSchemaPath=f,r+=" for (var "+E+" = 0; "+E+" < "+m+".length; "+E+"++) { ",y.errorPath=e.util.getPathExpr(e.errorPath,E,e.opts.jsonPointers,!0);var D=m+"["+E+"]";y.dataPathArr[$]=E;var A=e.validate(y);y.baseId=R,e.util.varOccurences(A,S)<2?r+=" "+e.util.varReplace(A,S,D)+" ":r+=" var "+S+" = "+D+"; "+A+" ",h&&(r+=" if (!"+g+") break; "),r+=" }"}return h&&(r+=" "+b+" if ("+c+" == errors) {"),r}});var ts=Q((Ah,hi)=>{"use strict";hi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,R,m="data"+(l||""),_=e.opts.$data&&o&&o.$data,c;_?(r+=" var schema"+n+" = "+e.util.getData(o.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=o;var y=t=="maximum",b=y?"exclusiveMaximum":"exclusiveMinimum",g=e.schema[b],E=e.opts.$data&&g&&g.$data,$=y?"<":">",S=y?">":"<",R=void 0;if(!(_||typeof o=="number"||o===void 0))throw new Error(t+" must be number");if(!(E||g===void 0||typeof g=="number"||typeof g=="boolean"))throw new Error(b+" must be number or boolean");if(E){var T=e.util.getData(g.$data,l,e.dataPathArr),I="exclusive"+n,V="exclType"+n,q="exclIsNumber"+n,k="op"+n,z="' + "+k+" + '";r+=" var schemaExcl"+n+" = "+T+"; ",T="schemaExcl"+n,r+=" var "+I+"; var "+V+" = typeof "+T+"; if ("+V+" != 'boolean' && "+V+" != 'undefined' && "+V+" != 'number') { ";var R=b,M=M||[];M.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(R||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: {} ",e.opts.messages!==!1&&(r+=" , message: '"+b+" should be boolean' "),e.opts.verbose&&(r+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var F=r;r=M.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+F+"]); ":r+=" validate.errors = ["+F+"]; return false; ":r+=" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else if ( ",_&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),r+=" "+V+" == 'number' ? ( ("+I+" = "+c+" === undefined || "+T+" "+$+"= "+c+") ? "+m+" "+S+"= "+T+" : "+m+" "+S+" "+c+" ) : ( ("+I+" = "+T+" === true) ? "+m+" "+S+"= "+c+" : "+m+" "+S+" "+c+" ) || "+m+" !== "+m+") { var op"+n+" = "+I+" ? '"+$+"' : '"+$+"='; ",o===void 0&&(R=b,f=e.errSchemaPath+"/"+b,c=T,_=E)}else{var q=typeof g=="number",z=$;if(q&&_){var k="'"+z+"'";r+=" if ( ",_&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),r+=" ( "+c+" === undefined || "+g+" "+$+"= "+c+" ? "+m+" "+S+"= "+g+" : "+m+" "+S+" "+c+" ) || "+m+" !== "+m+") { "}else{q&&o===void 0?(I=!0,R=b,f=e.errSchemaPath+"/"+b,c=g,S+="="):(q&&(c=Math[y?"min":"max"](g,o)),g===(q?c:!0)?(I=!0,R=b,f=e.errSchemaPath+"/"+b,S+="="):(I=!1,z+="="));var k="'"+z+"'";r+=" if ( ",_&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),r+=" "+m+" "+S+" "+c+" || "+m+" !== "+m+") { "}}R=R||t;var M=M||[];M.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(R||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { comparison: "+k+", limit: "+c+", exclusive: "+I+" } ",e.opts.messages!==!1&&(r+=" , message: 'should be "+z+" ",_?r+="' + "+c:r+=""+c+"'"),e.opts.verbose&&(r+=" , schema: ",_?r+="validate.schema"+d:r+=""+o,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var F=r;return r=M.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+F+"]); ":r+=" validate.errors = ["+F+"]; return false; ":r+=" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",h&&(r+=" else { "),r}});var as=Q((jh,pi)=>{"use strict";pi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,b,m="data"+(l||""),_=e.opts.$data&&o&&o.$data,c;if(_?(r+=" var schema"+n+" = "+e.util.getData(o.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=o,!(_||typeof o=="number"))throw new Error(t+" must be number");var y=t=="maxItems"?">":"<";r+="if ( ",_&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),r+=" "+m+".length "+y+" "+c+") { ";var b=t,g=g||[];g.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(b||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { limit: "+c+" } ",e.opts.messages!==!1&&(r+=" , message: 'should NOT have ",t=="maxItems"?r+="more":r+="fewer",r+=" than ",_?r+="' + "+c+" + '":r+=""+o,r+=" items' "),e.opts.verbose&&(r+=" , schema: ",_?r+="validate.schema"+d:r+=""+o,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var E=r;return r=g.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+E+"]); ":r+=" validate.errors = ["+E+"]; return false; ":r+=" var err = "+E+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}});var ss=Q((Ch,mi)=>{"use strict";mi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,b,m="data"+(l||""),_=e.opts.$data&&o&&o.$data,c;if(_?(r+=" var schema"+n+" = "+e.util.getData(o.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=o,!(_||typeof o=="number"))throw new Error(t+" must be number");var y=t=="maxLength"?">":"<";r+="if ( ",_&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),e.opts.unicode===!1?r+=" "+m+".length ":r+=" ucs2length("+m+") ",r+=" "+y+" "+c+") { ";var b=t,g=g||[];g.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(b||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { limit: "+c+" } ",e.opts.messages!==!1&&(r+=" , message: 'should NOT be ",t=="maxLength"?r+="longer":r+="shorter",r+=" than ",_?r+="' + "+c+" + '":r+=""+o,r+=" characters' "),e.opts.verbose&&(r+=" , schema: ",_?r+="validate.schema"+d:r+=""+o,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var E=r;return r=g.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+E+"]); ":r+=" validate.errors = ["+E+"]; return false; ":r+=" var err = "+E+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}});var ns=Q((Nh,vi)=>{"use strict";vi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,b,m="data"+(l||""),_=e.opts.$data&&o&&o.$data,c;if(_?(r+=" var schema"+n+" = "+e.util.getData(o.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=o,!(_||typeof o=="number"))throw new Error(t+" must be number");var y=t=="maxProperties"?">":"<";r+="if ( ",_&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'number') || "),r+=" Object.keys("+m+").length "+y+" "+c+") { ";var b=t,g=g||[];g.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(b||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { limit: "+c+" } ",e.opts.messages!==!1&&(r+=" , message: 'should NOT have ",t=="maxProperties"?r+="more":r+="fewer",r+=" than ",_?r+="' + "+c+" + '":r+=""+o,r+=" properties' "),e.opts.verbose&&(r+=" , schema: ",_?r+="validate.schema"+d:r+=""+o,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var E=r;return r=g.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+E+"]); ":r+=" validate.errors = ["+E+"]; return false; ":r+=" var err = "+E+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}});var yi=Q((Fh,gi)=>{"use strict";gi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),_=e.opts.$data&&o&&o.$data,c;if(_?(r+=" var schema"+n+" = "+e.util.getData(o.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=o,!(_||typeof o=="number"))throw new Error(t+" must be number");r+="var division"+n+";if (",_&&(r+=" "+c+" !== undefined && ( typeof "+c+" != 'number' || "),r+=" (division"+n+" = "+m+" / "+c+", ",e.opts.multipleOfPrecision?r+=" Math.abs(Math.round(division"+n+") - division"+n+") > 1e-"+e.opts.multipleOfPrecision+" ":r+=" division"+n+" !== parseInt(division"+n+") ",r+=" ) ",_&&(r+=" ) "),r+=" ) { ";var y=y||[];y.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { multipleOf: "+c+" } ",e.opts.messages!==!1&&(r+=" , message: 'should be multiple of ",_?r+="' + "+c:r+=""+c+"'"),e.opts.verbose&&(r+=" , schema: ",_?r+="validate.schema"+d:r+=""+o,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var b=r;return r=y.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+b+"]); ":r+=" validate.errors = ["+b+"]; return false; ":r+=" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}});var _i=Q((Lh,bi)=>{"use strict";bi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),_="errs__"+n,c=e.util.copy(e);c.level++;var y="valid"+c.level;if(e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){c.schema=o,c.schemaPath=d,c.errSchemaPath=f,r+=" var "+_+" = errors; ";var b=e.compositeRule;e.compositeRule=c.compositeRule=!0,c.createErrors=!1;var g;c.opts.allErrors&&(g=c.opts.allErrors,c.opts.allErrors=!1),r+=" "+e.validate(c)+" ",c.createErrors=!0,g&&(c.opts.allErrors=g),e.compositeRule=c.compositeRule=b,r+=" if ("+y+") { ";var E=E||[];E.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: {} ",e.opts.messages!==!1&&(r+=" , message: 'should NOT be valid' "),e.opts.verbose&&(r+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var $=r;r=E.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+$+"]); ":r+=" validate.errors = ["+$+"]; return false; ":r+=" var err = "+$+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { errors = "+_+"; if (vErrors !== null) { if ("+_+") vErrors.length = "+_+"; else vErrors = null; } ",e.opts.allErrors&&(r+=" } ")}else r+=" var err = ",e.createErrors!==!1?(r+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: {} ",e.opts.messages!==!1&&(r+=" , message: 'should NOT be valid' "),e.opts.verbose&&(r+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ",r+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",h&&(r+=" if (false) { ");return r}});var Pi=Q((Mh,xi)=>{"use strict";xi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),_="valid"+n,c="errs__"+n,y=e.util.copy(e),b="";y.level++;var g="valid"+y.level,E=y.baseId,$="prevValid"+n,S="passingSchemas"+n;r+="var "+c+" = errors , "+$+" = false , "+_+" = false , "+S+" = null; ";var R=e.compositeRule;e.compositeRule=y.compositeRule=!0;var T=o;if(T)for(var I,V=-1,q=T.length-1;V0||I===!1:e.util.schemaHasRules(I,e.RULES.all))?(y.schema=I,y.schemaPath=d+"["+V+"]",y.errSchemaPath=f+"/"+V,r+=" "+e.validate(y)+" ",y.baseId=E):r+=" var "+g+" = true; ",V&&(r+=" if ("+g+" && "+$+") { "+_+" = false; "+S+" = ["+S+", "+V+"]; } else { ",b+="}"),r+=" if ("+g+") { "+_+" = "+$+" = true; "+S+" = "+V+"; }";return e.compositeRule=y.compositeRule=R,r+=""+b+"if (!"+_+") { var err = ",e.createErrors!==!1?(r+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { passingSchemas: "+S+" } ",e.opts.messages!==!1&&(r+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(r+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ",r+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&h&&(e.async?r+=" throw new ValidationError(vErrors); ":r+=" validate.errors = vErrors; return false; "),r+="} else { errors = "+c+"; if (vErrors !== null) { if ("+c+") vErrors.length = "+c+"; else vErrors = null; }",e.opts.allErrors&&(r+=" } "),r}});var Si=Q((qh,Ei)=>{"use strict";Ei.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),_=e.opts.$data&&o&&o.$data,c;_?(r+=" var schema"+n+" = "+e.util.getData(o.$data,l,e.dataPathArr)+"; ",c="schema"+n):c=o;var y=_?"(new RegExp("+c+"))":e.usePattern(o);r+="if ( ",_&&(r+=" ("+c+" !== undefined && typeof "+c+" != 'string') || "),r+=" !"+y+".test("+m+") ) { ";var b=b||[];b.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { pattern: ",_?r+=""+c:r+=""+e.util.toQuotedString(o),r+=" } ",e.opts.messages!==!1&&(r+=` , message: 'should match pattern "`,_?r+="' + "+c+" + '":r+=""+e.util.escapeQuotes(o),r+=`"' `),e.opts.verbose&&(r+=" , schema: ",_?r+="validate.schema"+d:r+=""+e.util.toQuotedString(o),r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var g=r;return r=b.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+g+"]); ":r+=" validate.errors = ["+g+"]; return false; ":r+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}});var Ri=Q((zh,wi)=>{"use strict";wi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),_="errs__"+n,c=e.util.copy(e),y="";c.level++;var b="valid"+c.level,g="key"+n,E="idx"+n,$=c.dataLevel=e.dataLevel+1,S="data"+$,R="dataProperties"+n,T=Object.keys(o||{}).filter(re),I=e.schema.patternProperties||{},V=Object.keys(I).filter(re),q=e.schema.additionalProperties,k=T.length||V.length,z=q===!1,M=typeof q=="object"&&Object.keys(q).length,F=e.opts.removeAdditional,D=z||M||F,A=e.opts.ownProperties,L=e.baseId,le=e.schema.required;if(le&&!(e.opts.$data&&le.$data)&&le.length8)r+=" || validate.schema"+d+".hasOwnProperty("+g+") ";else{var G=T;if(G)for(var Z,me=-1,we=G.length-1;me0||Ee===!1:e.util.schemaHasRules(Ee,e.RULES.all)){var ze=e.util.getProperty(Z),Re=m+ze,ke=br&&Ee.default!==void 0;c.schema=Ee,c.schemaPath=d+ze,c.errSchemaPath=f+"/"+e.util.escapeFragment(Z),c.errorPath=e.util.getPath(e.errorPath,Z,e.opts.jsonPointers),c.dataPathArr[$]=e.util.toQuotedString(Z);var ie=e.validate(c);if(c.baseId=L,e.util.varOccurences(ie,S)<2){ie=e.util.varReplace(ie,S,Re);var Te=Re}else{var Te=S;r+=" var "+S+" = "+Re+"; "}if(ke)r+=" "+ie+" ";else{if(Y&&Y[Z]){r+=" if ( "+Te+" === undefined ",A&&(r+=" || ! Object.prototype.hasOwnProperty.call("+m+", '"+e.util.escapeQuotes(Z)+"') "),r+=") { "+b+" = false; ";var $e=e.errorPath,cr=f,tr=e.util.escapeQuotes(Z);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath($e,Z,e.opts.jsonPointers)),f=e.errSchemaPath+"/required";var be=be||[];be.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { missingProperty: '"+tr+"' } ",e.opts.messages!==!1&&(r+=" , message: '",e.opts._errorDataPathProperty?r+="is a required property":r+="should have required property \\'"+tr+"\\'",r+="' "),e.opts.verbose&&(r+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var ve=r;r=be.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+ve+"]); ":r+=" validate.errors = ["+ve+"]; return false; ":r+=" var err = "+ve+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",f=cr,e.errorPath=$e,r+=" } else { "}else h?(r+=" if ( "+Te+" === undefined ",A&&(r+=" || ! Object.prototype.hasOwnProperty.call("+m+", '"+e.util.escapeQuotes(Z)+"') "),r+=") { "+b+" = true; } else { "):(r+=" if ("+Te+" !== undefined ",A&&(r+=" && Object.prototype.hasOwnProperty.call("+m+", '"+e.util.escapeQuotes(Z)+"') "),r+=" ) { ");r+=" "+ie+" } "}}h&&(r+=" if ("+b+") { ",y+="}")}}if(V.length){var Le=V;if(Le)for(var se,Dt=-1,ya=Le.length-1;Dt0||Ee===!1:e.util.schemaHasRules(Ee,e.RULES.all)){c.schema=Ee,c.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(se),c.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(se),A?r+=" "+R+" = "+R+" || Object.keys("+m+"); for (var "+E+"=0; "+E+"<"+R+".length; "+E+"++) { var "+g+" = "+R+"["+E+"]; ":r+=" for (var "+g+" in "+m+") { ",r+=" if ("+e.usePattern(se)+".test("+g+")) { ",c.errorPath=e.util.getPathExpr(e.errorPath,g,e.opts.jsonPointers);var Re=m+"["+g+"]";c.dataPathArr[$]=g;var ie=e.validate(c);c.baseId=L,e.util.varOccurences(ie,S)<2?r+=" "+e.util.varReplace(ie,S,Re)+" ":r+=" var "+S+" = "+Re+"; "+ie+" ",h&&(r+=" if (!"+b+") break; "),r+=" } ",h&&(r+=" else "+b+" = true; "),r+=" } ",h&&(r+=" if ("+b+") { ",y+="}")}}}return h&&(r+=" "+y+" if ("+_+" == errors) {"),r}});var Di=Q((Uh,Oi)=>{"use strict";Oi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),_="errs__"+n,c=e.util.copy(e),y="";c.level++;var b="valid"+c.level;if(r+="var "+_+" = errors;",e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){c.schema=o,c.schemaPath=d,c.errSchemaPath=f;var g="key"+n,E="idx"+n,$="i"+n,S="' + "+g+" + '",R=c.dataLevel=e.dataLevel+1,T="data"+R,I="dataProperties"+n,V=e.opts.ownProperties,q=e.baseId;V&&(r+=" var "+I+" = undefined; "),V?r+=" "+I+" = "+I+" || Object.keys("+m+"); for (var "+E+"=0; "+E+"<"+I+".length; "+E+"++) { var "+g+" = "+I+"["+E+"]; ":r+=" for (var "+g+" in "+m+") { ",r+=" var startErrs"+n+" = errors; ";var k=g,z=e.compositeRule;e.compositeRule=c.compositeRule=!0;var M=e.validate(c);c.baseId=q,e.util.varOccurences(M,T)<2?r+=" "+e.util.varReplace(M,T,k)+" ":r+=" var "+T+" = "+k+"; "+M+" ",e.compositeRule=c.compositeRule=z,r+=" if (!"+b+") { for (var "+$+"=startErrs"+n+"; "+$+"{"use strict";$i.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),_="valid"+n,c=e.opts.$data&&o&&o.$data,y;c?(r+=" var schema"+n+" = "+e.util.getData(o.$data,l,e.dataPathArr)+"; ",y="schema"+n):y=o;var b="schema"+n;if(!c)if(o.length0||T===!1:e.util.schemaHasRules(T,e.RULES.all))||(g[g.length]=$)}}else var g=o;if(c||g.length){var I=e.errorPath,V=c||g.length>=e.opts.loopRequired,q=e.opts.ownProperties;if(h)if(r+=" var missing"+n+"; ",V){c||(r+=" var "+b+" = validate.schema"+d+"; ");var k="i"+n,z="schema"+n+"["+k+"]",M="' + "+z+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(I,z,e.opts.jsonPointers)),r+=" var "+_+" = true; ",c&&(r+=" if (schema"+n+" === undefined) "+_+" = true; else if (!Array.isArray(schema"+n+")) "+_+" = false; else {"),r+=" for (var "+k+" = 0; "+k+" < "+b+".length; "+k+"++) { "+_+" = "+m+"["+b+"["+k+"]] !== undefined ",q&&(r+=" && Object.prototype.hasOwnProperty.call("+m+", "+b+"["+k+"]) "),r+="; if (!"+_+") break; } ",c&&(r+=" } "),r+=" if (!"+_+") { ";var F=F||[];F.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { missingProperty: '"+M+"' } ",e.opts.messages!==!1&&(r+=" , message: '",e.opts._errorDataPathProperty?r+="is a required property":r+="should have required property \\'"+M+"\\'",r+="' "),e.opts.verbose&&(r+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var D=r;r=F.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+D+"]); ":r+=" validate.errors = ["+D+"]; return false; ":r+=" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { "}else{r+=" if ( ";var A=g;if(A)for(var L,k=-1,le=A.length-1;k{"use strict";Ii.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m="data"+(l||""),_="valid"+n,c=e.opts.$data&&o&&o.$data,y;if(c?(r+=" var schema"+n+" = "+e.util.getData(o.$data,l,e.dataPathArr)+"; ",y="schema"+n):y=o,(o||c)&&e.opts.uniqueItems!==!1){c&&(r+=" var "+_+"; if ("+y+" === false || "+y+" === undefined) "+_+" = true; else if (typeof "+y+" != 'boolean') "+_+" = false; else { "),r+=" var i = "+m+".length , "+_+" = true , j; if (i > 1) { ";var b=e.schema.items&&e.schema.items.type,g=Array.isArray(b);if(!b||b=="object"||b=="array"||g&&(b.indexOf("object")>=0||b.indexOf("array")>=0))r+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+m+"[i], "+m+"[j])) { "+_+" = false; break outer; } } } ";else{r+=" var itemIndices = {}, item; for (;i--;) { var item = "+m+"[i]; ";var E="checkDataType"+(g?"s":"");r+=" if ("+e.util[E](b,"item",e.opts.strictNumbers,!0)+") continue; ",g&&(r+=` if (typeof item == 'string') item = '"' + item; `),r+=" if (typeof itemIndices[item] == 'number') { "+_+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}r+=" } ",c&&(r+=" } "),r+=" if (!"+_+") { ";var $=$||[];$.push(r),r="",e.createErrors!==!1?(r+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { i: i, j: j } ",e.opts.messages!==!1&&(r+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(r+=" , schema: ",c?r+="validate.schema"+d:r+=""+o,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),r+=" } "):r+=" {} ";var S=r;r=$.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+S+"]); ":r+=" validate.errors = ["+S+"]; return false; ":r+=" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",h&&(r+=" else { ")}else h&&(r+=" if (true) { ");return r}});var ji=Q((Hh,Ai)=>{"use strict";Ai.exports={$ref:Bn(),allOf:Jn(),anyOf:Wn(),$comment:Yn(),const:ei(),contains:ti(),dependencies:si(),enum:ii(),format:li(),if:ui(),items:fi(),maximum:ts(),minimum:ts(),maxItems:as(),minItems:as(),maxLength:ss(),minLength:ss(),maxProperties:ns(),minProperties:ns(),multipleOf:yi(),not:_i(),oneOf:Pi(),pattern:Si(),properties:Ri(),propertyNames:Di(),required:Ti(),uniqueItems:ki(),validate:es()}});var Fi=Q((Bh,Ni)=>{"use strict";var Ci=ji(),is=Kr().toHash;Ni.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],t=["type","$comment"],s=["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"],r=["number","integer","string","array","object","boolean","null"];return e.all=is(t),e.types=is(r),e.forEach(function(n){n.rules=n.rules.map(function(l){var o;if(typeof l=="object"){var d=Object.keys(l)[0];o=l[d],l=d,o.forEach(function(h){t.push(h),e.all[h]=!0})}t.push(l);var f=e.all[l]={keyword:l,code:Ci[l],implements:o};return f}),e.all.$comment={keyword:"$comment",code:Ci.$comment},n.type&&(e.types[n.type]=n)}),e.keywords=is(t.concat(s)),e.custom={},e}});var qi=Q((Qh,Mi)=>{"use strict";var Li=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];Mi.exports=function(a,e){for(var t=0;t{"use strict";var xd=ra().MissingRef;Ui.exports=zi;function zi(a,e,t){var s=this;if(typeof this._opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");typeof e=="function"&&(t=e,e=void 0);var r=n(a).then(function(){var o=s._addSchema(a,void 0,e);return o.validate||l(o)});return t&&r.then(function(o){t(null,o)},t),r;function n(o){var d=o.$schema;return d&&!s.getSchema(d)?zi.call(s,{$ref:d},!0):Promise.resolve()}function l(o){try{return s._compile(o)}catch(f){if(f instanceof xd)return d(f);throw f}function d(f){var h=f.missingSchema;if(c(h))throw new Error("Schema "+h+" is loaded but "+f.missingRef+" cannot be resolved");var m=s._loadingSchemas[h];return m||(m=s._loadingSchemas[h]=s._opts.loadSchema(h),m.then(_,_)),m.then(function(y){if(!c(h))return n(y).then(function(){c(h)||s.addSchema(y,h,void 0,e)})}).then(function(){return l(o)});function _(){delete s._loadingSchemas[h]}function c(y){return s._refs[y]||s._schemas[y]}}}}});var Hi=Q((Kh,Zi)=>{"use strict";Zi.exports=function(e,t,s){var r=" ",n=e.level,l=e.dataLevel,o=e.schema[t],d=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,m,_="data"+(l||""),c="valid"+n,y="errs__"+n,b=e.opts.$data&&o&&o.$data,g;b?(r+=" var schema"+n+" = "+e.util.getData(o.$data,l,e.dataPathArr)+"; ",g="schema"+n):g=o;var E=this,$="definition"+n,S=E.definition,R="",T,I,V,q,k;if(b&&S.$data){k="keywordValidate"+n;var z=S.validateSchema;r+=" var "+$+" = RULES.custom['"+t+"'].definition; var "+k+" = "+$+".validate;"}else{if(q=e.useCustomRule(E,o,e.schema,e),!q)return;g="validate.schema"+d,k=q.code,T=S.compile,I=S.inline,V=S.macro}var M=k+".errors",F="i"+n,D="ruleErr"+n,A=S.async;if(A&&!e.async)throw new Error("async keyword in sync schema");if(I||V||(r+=""+M+" = null;"),r+="var "+y+" = errors;var "+c+";",b&&S.$data&&(R+="}",r+=" if ("+g+" === undefined) { "+c+" = true; } else { ",z&&(R+="}",r+=" "+c+" = "+$+".validateSchema("+g+"); if ("+c+") { ")),I)S.statements?r+=" "+q.validate+" ":r+=" "+c+" = "+q.validate+"; ";else if(V){var L=e.util.copy(e),R="";L.level++;var le="valid"+L.level;L.schema=q.validate,L.schemaPath="";var Y=e.compositeRule;e.compositeRule=L.compositeRule=!0;var re=e.validate(L).replace(/validate\.schema/g,k);e.compositeRule=L.compositeRule=Y,r+=" "+re}else{var G=G||[];G.push(r),r="",r+=" "+k+".call( ",e.opts.passContext?r+="this":r+="self",T||S.schema===!1?r+=" , "+_+" ":r+=" , "+g+" , "+_+" , validate.schema"+e.schemaPath+" ",r+=" , (dataPath || '')",e.errorPath!='""'&&(r+=" + "+e.errorPath);var Z=l?"data"+(l-1||""):"parentData",me=l?e.dataPathArr[l]:"parentDataProperty";r+=" , "+Z+" , "+me+" , rootData ) ";var we=r;r=G.pop(),S.errors===!1?(r+=" "+c+" = ",A&&(r+="await "),r+=""+we+"; "):A?(M="customErrors"+n,r+=" var "+M+" = null; try { "+c+" = await "+we+"; } catch (e) { "+c+" = false; if (e instanceof ValidationError) "+M+" = e.errors; else throw e; } "):r+=" "+M+" = null; "+c+" = "+we+"; "}if(S.modifying&&(r+=" if ("+Z+") "+_+" = "+Z+"["+me+"];"),r+=""+R,S.valid)h&&(r+=" if (true) { ");else{r+=" if ( ",S.valid===void 0?(r+=" !",V?r+=""+le:r+=""+c):r+=" "+!S.valid+" ",r+=") { ",m=E.keyword;var G=G||[];G.push(r),r="";var G=G||[];G.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(m||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(f)+" , params: { keyword: '"+E.keyword+"' } ",e.opts.messages!==!1&&(r+=` , message: 'should pass "`+E.keyword+`" keyword validation' `),e.opts.verbose&&(r+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+_+" "),r+=" } "):r+=" {} ";var De=r;r=G.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+De+"]); ":r+=" validate.errors = ["+De+"]; return false; ":r+=" var err = "+De+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var se=r;r=G.pop(),I?S.errors?S.errors!="full"&&(r+=" for (var "+F+"="+y+"; "+F+"{Pd.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var Ji=Q((Gh,Qi)=>{"use strict";var Bi=os();Qi.exports={$id:"https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:Bi.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:Bi.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}});var Wi=Q((Yh,Ki)=>{"use strict";var Ed=/^[a-z_$][a-z0-9_$-]*$/i,Sd=Hi(),wd=Ji();Ki.exports={add:Rd,get:Od,remove:Dd,validate:ls};function Rd(a,e){var t=this.RULES;if(t.keywords[a])throw new Error("Keyword "+a+" is already defined");if(!Ed.test(a))throw new Error("Keyword "+a+" is not a valid identifier");if(e){this.validateKeyword(e,!0);var s=e.type;if(Array.isArray(s))for(var r=0;r{$d.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON Schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var oo=Q((ep,io)=>{"use strict";var Xi=Tn(),Wr=ea(),Td=kn(),eo=Qa(),Id=Xa(),kd=Zn(),Ad=Fi(),ro=qi(),to=Kr();io.exports=ge;ge.prototype.validate=Cd;ge.prototype.compile=Nd;ge.prototype.addSchema=Fd;ge.prototype.addMetaSchema=Ld;ge.prototype.validateSchema=Md;ge.prototype.getSchema=zd;ge.prototype.removeSchema=Vd;ge.prototype.addFormat=Gd;ge.prototype.errorsText=Wd;ge.prototype._addSchema=Zd;ge.prototype._compile=Hd;ge.prototype.compileAsync=Vi();var ca=Wi();ge.prototype.addKeyword=ca.add;ge.prototype.getKeyword=ca.get;ge.prototype.removeKeyword=ca.remove;ge.prototype.validateKeyword=ca.validate;var ao=ra();ge.ValidationError=ao.Validation;ge.MissingRefError=ao.MissingRef;ge.$dataMetaSchema=ro;var la="http://json-schema.org/draft-07/schema",Yi=["removeAdditional","useDefaults","coerceTypes","strictDefaults"],jd=["/properties"];function ge(a){if(!(this instanceof ge))return new ge(a);a=this._opts=to.copy(a)||{},af(this),this._schemas={},this._refs={},this._fragments={},this._formats=kd(a.format),this._cache=a.cache||new Td,this._loadingSchemas={},this._compilations=[],this.RULES=Ad(),this._getId=Bd(a),a.loopRequired=a.loopRequired||1/0,a.errorDataPath=="property"&&(a._errorDataPathProperty=!0),a.serialize===void 0&&(a.serialize=Id),this._metaOpts=tf(this),a.formats&&ef(this),a.keywords&&rf(this),Yd(this),typeof a.meta=="object"&&this.addMetaSchema(a.meta),a.nullable&&this.addKeyword("nullable",{metaSchema:{type:"boolean"}}),Xd(this)}function Cd(a,e){var t;if(typeof a=="string"){if(t=this.getSchema(a),!t)throw new Error('no schema with key or ref "'+a+'"')}else{var s=this._addSchema(a);t=s.validate||this._compile(s)}var r=t(e);return t.$async!==!0&&(this.errors=t.errors),r}function Nd(a,e){var t=this._addSchema(a,void 0,e);return t.validate||this._compile(t)}function Fd(a,e,t,s){if(Array.isArray(a)){for(var r=0;rHl,DIRTY:()=>Ar,EMPTY_PATH:()=>El,INVALID:()=>H,NEVER:()=>$c,OK:()=>Oe,ParseStatus:()=>Se,Schema:()=>W,ZodAny:()=>Pr,ZodArray:()=>gr,ZodBigInt:()=>Cr,ZodBoolean:()=>Nr,ZodBranded:()=>_t,ZodCatch:()=>Qr,ZodDate:()=>Fr,ZodDefault:()=>Br,ZodDiscriminatedUnion:()=>jt,ZodEffects:()=>Be,ZodEnum:()=>Zr,ZodError:()=>Ae,ZodFirstPartyTypeKind:()=>O,ZodFunction:()=>Nt,ZodIntersection:()=>zr,ZodIssueCode:()=>w,ZodLazy:()=>Ur,ZodLiteral:()=>Vr,ZodMap:()=>ct,ZodNaN:()=>dt,ZodNativeEnum:()=>Hr,ZodNever:()=>We,ZodNull:()=>Mr,ZodNullable:()=>or,ZodNumber:()=>jr,ZodObject:()=>je,ZodOptional:()=>Ze,ZodParsedType:()=>C,ZodPipeline:()=>xt,ZodPromise:()=>Er,ZodReadonly:()=>Jr,ZodRecord:()=>Ct,ZodSchema:()=>W,ZodSet:()=>ut,ZodString:()=>xr,ZodSymbol:()=>ot,ZodTransformer:()=>Be,ZodTuple:()=>ir,ZodType:()=>W,ZodUndefined:()=>Lr,ZodUnion:()=>qr,ZodUnknown:()=>vr,ZodVoid:()=>lt,addIssueToContext:()=>j,any:()=>ec,array:()=>sc,bigint:()=>Kl,boolean:()=>qs,coerce:()=>Dc,custom:()=>Fs,date:()=>Wl,datetimeRegex:()=>Cs,defaultErrorMap:()=>pr,discriminatedUnion:()=>lc,effect:()=>_c,enum:()=>gc,function:()=>pc,getErrorMap:()=>st,getParsedType:()=>nr,instanceof:()=>Ql,intersection:()=>cc,isAborted:()=>kt,isAsync:()=>nt,isDirty:()=>At,isValid:()=>_r,late:()=>Bl,lazy:()=>mc,literal:()=>vc,makeIssue:()=>bt,map:()=>fc,nan:()=>Jl,nativeEnum:()=>yc,never:()=>tc,null:()=>Xl,nullable:()=>Pc,number:()=>Ms,object:()=>nc,objectUtil:()=>Ea,oboolean:()=>Oc,onumber:()=>Rc,optional:()=>xc,ostring:()=>wc,pipeline:()=>Sc,preprocess:()=>Ec,promise:()=>bc,quotelessJson:()=>_l,record:()=>dc,set:()=>hc,setErrorMap:()=>Pl,strictObject:()=>ic,string:()=>Ls,symbol:()=>Gl,transformer:()=>_c,tuple:()=>uc,undefined:()=>Yl,union:()=>oc,unknown:()=>rc,util:()=>X,void:()=>ac});var X;(function(a){a.assertEqual=r=>{};function e(r){}a.assertIs=e;function t(r){throw new Error}a.assertNever=t,a.arrayToEnum=r=>{let n={};for(let l of r)n[l]=l;return n},a.getValidEnumValues=r=>{let n=a.objectKeys(r).filter(o=>typeof r[r[o]]!="number"),l={};for(let o of n)l[o]=r[o];return a.objectValues(l)},a.objectValues=r=>a.objectKeys(r).map(function(n){return r[n]}),a.objectKeys=typeof Object.keys=="function"?r=>Object.keys(r):r=>{let n=[];for(let l in r)Object.prototype.hasOwnProperty.call(r,l)&&n.push(l);return n},a.find=(r,n)=>{for(let l of r)if(n(l))return l},a.isInteger=typeof Number.isInteger=="function"?r=>Number.isInteger(r):r=>typeof r=="number"&&Number.isFinite(r)&&Math.floor(r)===r;function s(r,n=" | "){return r.map(l=>typeof l=="string"?`'${l}'`:l).join(n)}a.joinValues=s,a.jsonStringifyReplacer=(r,n)=>typeof n=="bigint"?n.toString():n})(X||(X={}));var Ea;(function(a){a.mergeShapes=(e,t)=>({...e,...t})})(Ea||(Ea={}));var C=X.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),nr=a=>{switch(typeof a){case"undefined":return C.undefined;case"string":return C.string;case"number":return Number.isNaN(a)?C.nan:C.number;case"boolean":return C.boolean;case"function":return C.function;case"bigint":return C.bigint;case"symbol":return C.symbol;case"object":return Array.isArray(a)?C.array:a===null?C.null:a.then&&typeof a.then=="function"&&a.catch&&typeof a.catch=="function"?C.promise:typeof Map<"u"&&a instanceof Map?C.map:typeof Set<"u"&&a instanceof Set?C.set:typeof Date<"u"&&a instanceof Date?C.date:C.object;default:return C.unknown}};var w=X.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),_l=a=>JSON.stringify(a,null,2).replace(/"([^"]+)":/g,"$1:"),Ae=class a extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=s=>{this.issues=[...this.issues,s]},this.addIssues=(s=[])=>{this.issues=[...this.issues,...s]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){let t=e||function(n){return n.message},s={_errors:[]},r=n=>{for(let l of n.issues)if(l.code==="invalid_union")l.unionErrors.map(r);else if(l.code==="invalid_return_type")r(l.returnTypeError);else if(l.code==="invalid_arguments")r(l.argumentsError);else if(l.path.length===0)s._errors.push(t(l));else{let o=s,d=0;for(;dt.message){let t={},s=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else s.push(e(r));return{formErrors:s,fieldErrors:t}}get formErrors(){return this.flatten()}};Ae.create=a=>new Ae(a);var xl=(a,e)=>{let t;switch(a.code){case w.invalid_type:a.received===C.undefined?t="Required":t=`Expected ${a.expected}, received ${a.received}`;break;case w.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(a.expected,X.jsonStringifyReplacer)}`;break;case w.unrecognized_keys:t=`Unrecognized key(s) in object: ${X.joinValues(a.keys,", ")}`;break;case w.invalid_union:t="Invalid input";break;case w.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${X.joinValues(a.options)}`;break;case w.invalid_enum_value:t=`Invalid enum value. Expected ${X.joinValues(a.options)}, received '${a.received}'`;break;case w.invalid_arguments:t="Invalid function arguments";break;case w.invalid_return_type:t="Invalid function return type";break;case w.invalid_date:t="Invalid date";break;case w.invalid_string:typeof a.validation=="object"?"includes"in a.validation?(t=`Invalid input: must include "${a.validation.includes}"`,typeof a.validation.position=="number"&&(t=`${t} at one or more positions greater than or equal to ${a.validation.position}`)):"startsWith"in a.validation?t=`Invalid input: must start with "${a.validation.startsWith}"`:"endsWith"in a.validation?t=`Invalid input: must end with "${a.validation.endsWith}"`:X.assertNever(a.validation):a.validation!=="regex"?t=`Invalid ${a.validation}`:t="Invalid";break;case w.too_small:a.type==="array"?t=`Array must contain ${a.exact?"exactly":a.inclusive?"at least":"more than"} ${a.minimum} element(s)`:a.type==="string"?t=`String must contain ${a.exact?"exactly":a.inclusive?"at least":"over"} ${a.minimum} character(s)`:a.type==="number"?t=`Number must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${a.minimum}`:a.type==="bigint"?t=`Number must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${a.minimum}`:a.type==="date"?t=`Date must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(a.minimum))}`:t="Invalid input";break;case w.too_big:a.type==="array"?t=`Array must contain ${a.exact?"exactly":a.inclusive?"at most":"less than"} ${a.maximum} element(s)`:a.type==="string"?t=`String must contain ${a.exact?"exactly":a.inclusive?"at most":"under"} ${a.maximum} character(s)`:a.type==="number"?t=`Number must be ${a.exact?"exactly":a.inclusive?"less than or equal to":"less than"} ${a.maximum}`:a.type==="bigint"?t=`BigInt must be ${a.exact?"exactly":a.inclusive?"less than or equal to":"less than"} ${a.maximum}`:a.type==="date"?t=`Date must be ${a.exact?"exactly":a.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(a.maximum))}`:t="Invalid input";break;case w.custom:t="Invalid input";break;case w.invalid_intersection_types:t="Intersection results could not be merged";break;case w.not_multiple_of:t=`Number must be a multiple of ${a.multipleOf}`;break;case w.not_finite:t="Number must be finite";break;default:t=e.defaultError,X.assertNever(a)}return{message:t}},pr=xl;var Ts=pr;function Pl(a){Ts=a}function st(){return Ts}var bt=a=>{let{data:e,path:t,errorMaps:s,issueData:r}=a,n=[...t,...r.path||[]],l={...r,path:n};if(r.message!==void 0)return{...r,path:n,message:r.message};let o="",d=s.filter(f=>!!f).slice().reverse();for(let f of d)o=f(l,{data:e,defaultError:o}).message;return{...r,path:n,message:o}},El=[];function j(a,e){let t=st(),s=bt({issueData:e,data:a.data,path:a.path,errorMaps:[a.common.contextualErrorMap,a.schemaErrorMap,t,t===pr?void 0:pr].filter(r=>!!r)});a.common.issues.push(s)}var Se=class a{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,t){let s=[];for(let r of t){if(r.status==="aborted")return H;r.status==="dirty"&&e.dirty(),s.push(r.value)}return{status:e.value,value:s}}static async mergeObjectAsync(e,t){let s=[];for(let r of t){let n=await r.key,l=await r.value;s.push({key:n,value:l})}return a.mergeObjectSync(e,s)}static mergeObjectSync(e,t){let s={};for(let r of t){let{key:n,value:l}=r;if(n.status==="aborted"||l.status==="aborted")return H;n.status==="dirty"&&e.dirty(),l.status==="dirty"&&e.dirty(),n.value!=="__proto__"&&(typeof l.value<"u"||r.alwaysSet)&&(s[n.value]=l.value)}return{status:e.value,value:s}}},H=Object.freeze({status:"aborted"}),Ar=a=>({status:"dirty",value:a}),Oe=a=>({status:"valid",value:a}),kt=a=>a.status==="aborted",At=a=>a.status==="dirty",_r=a=>a.status==="valid",nt=a=>typeof Promise<"u"&&a instanceof Promise;var U;(function(a){a.errToObj=e=>typeof e=="string"?{message:e}:e||{},a.toString=e=>typeof e=="string"?e:e?.message})(U||(U={}));var He=class{constructor(e,t,s,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=s,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},Is=(a,e)=>{if(_r(e))return{success:!0,data:e.value};if(!a.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let t=new Ae(a.common.issues);return this._error=t,this._error}}};function J(a){if(!a)return{};let{errorMap:e,invalid_type_error:t,required_error:s,description:r}=a;if(e&&(t||s))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:r}:{errorMap:(l,o)=>{let{message:d}=a;return l.code==="invalid_enum_value"?{message:d??o.defaultError}:typeof o.data>"u"?{message:d??s??o.defaultError}:l.code!=="invalid_type"?{message:o.defaultError}:{message:d??t??o.defaultError}},description:r}}var W=class{get description(){return this._def.description}_getType(e){return nr(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:nr(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new Se,ctx:{common:e.parent.common,data:e.data,parsedType:nr(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(nt(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let s=this.safeParse(e,t);if(s.success)return s.data;throw s.error}safeParse(e,t){let s={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:nr(e)},r=this._parseSync({data:e,path:s.path,parent:s});return Is(s,r)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:nr(e)};if(!this["~standard"].async)try{let s=this._parseSync({data:e,path:[],parent:t});return _r(s)?{value:s.value}:{issues:t.common.issues}}catch(s){s?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(s=>_r(s)?{value:s.value}:{issues:t.common.issues})}async parseAsync(e,t){let s=await this.safeParseAsync(e,t);if(s.success)return s.data;throw s.error}async safeParseAsync(e,t){let s={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:nr(e)},r=this._parse({data:e,path:s.path,parent:s}),n=await(nt(r)?r:Promise.resolve(r));return Is(s,n)}refine(e,t){let s=r=>typeof t=="string"||typeof t>"u"?{message:t}:typeof t=="function"?t(r):t;return this._refinement((r,n)=>{let l=e(r),o=()=>n.addIssue({code:w.custom,...s(r)});return typeof Promise<"u"&&l instanceof Promise?l.then(d=>d?!0:(o(),!1)):l?!0:(o(),!1)})}refinement(e,t){return this._refinement((s,r)=>e(s)?!0:(r.addIssue(typeof t=="function"?t(s,r):t),!1))}_refinement(e){return new Be({schema:this,typeName:O.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:t=>this["~validate"](t)}}optional(){return Ze.create(this,this._def)}nullable(){return or.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return gr.create(this)}promise(){return Er.create(this,this._def)}or(e){return qr.create([this,e],this._def)}and(e){return zr.create(this,e,this._def)}transform(e){return new Be({...J(this._def),schema:this,typeName:O.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let t=typeof e=="function"?e:()=>e;return new Br({...J(this._def),innerType:this,defaultValue:t,typeName:O.ZodDefault})}brand(){return new _t({typeName:O.ZodBranded,type:this,...J(this._def)})}catch(e){let t=typeof e=="function"?e:()=>e;return new Qr({...J(this._def),innerType:this,catchValue:t,typeName:O.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return xt.create(this,e)}readonly(){return Jr.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},Sl=/^c[^\s-]{8,}$/i,wl=/^[0-9a-z]+$/,Rl=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Ol=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Dl=/^[a-z0-9_-]{21}$/i,$l=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Tl=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Il=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,kl="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Sa,Al=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,jl=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,Cl=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Nl=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Fl=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Ll=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,As="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",Ml=new RegExp(`^${As}$`);function js(a){let e="[0-5]\\d";a.precision?e=`${e}\\.\\d{${a.precision}}`:a.precision==null&&(e=`${e}(\\.\\d+)?`);let t=a.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${t}`}function ql(a){return new RegExp(`^${js(a)}$`)}function Cs(a){let e=`${As}T${js(a)}`,t=[];return t.push(a.local?"Z?":"Z"),a.offset&&t.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${t.join("|")})`,new RegExp(`^${e}$`)}function zl(a,e){return!!((e==="v4"||!e)&&Al.test(a)||(e==="v6"||!e)&&Cl.test(a))}function Ul(a,e){if(!$l.test(a))return!1;try{let[t]=a.split(".");if(!t)return!1;let s=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),r=JSON.parse(atob(s));return!(typeof r!="object"||r===null||"typ"in r&&r?.typ!=="JWT"||!r.alg||e&&r.alg!==e)}catch{return!1}}function Vl(a,e){return!!((e==="v4"||!e)&&jl.test(a)||(e==="v6"||!e)&&Nl.test(a))}var xr=class a extends W{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==C.string){let n=this._getOrReturnCtx(e);return j(n,{code:w.invalid_type,expected:C.string,received:n.parsedType}),H}let s=new Se,r;for(let n of this._def.checks)if(n.kind==="min")e.data.lengthn.value&&(r=this._getOrReturnCtx(e,r),j(r,{code:w.too_big,maximum:n.value,type:"string",inclusive:!0,exact:!1,message:n.message}),s.dirty());else if(n.kind==="length"){let l=e.data.length>n.value,o=e.data.lengthe.test(r),{validation:t,code:w.invalid_string,...U.errToObj(s)})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...U.errToObj(e)})}url(e){return this._addCheck({kind:"url",...U.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...U.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...U.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...U.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...U.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...U.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...U.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...U.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...U.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...U.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...U.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...U.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...U.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...U.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...U.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...U.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...U.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...U.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...U.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...U.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...U.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...U.errToObj(t)})}nonempty(e){return this.min(1,U.errToObj(e))}trim(){return new a({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new a({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new a({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuenew xr({checks:[],typeName:O.ZodString,coerce:a?.coerce??!1,...J(a)});function Zl(a,e){let t=(a.toString().split(".")[1]||"").length,s=(e.toString().split(".")[1]||"").length,r=t>s?t:s,n=Number.parseInt(a.toFixed(r).replace(".","")),l=Number.parseInt(e.toFixed(r).replace(".",""));return n%l/10**r}var jr=class a extends W{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==C.number){let n=this._getOrReturnCtx(e);return j(n,{code:w.invalid_type,expected:C.number,received:n.parsedType}),H}let s,r=new Se;for(let n of this._def.checks)n.kind==="int"?X.isInteger(e.data)||(s=this._getOrReturnCtx(e,s),j(s,{code:w.invalid_type,expected:"integer",received:"float",message:n.message}),r.dirty()):n.kind==="min"?(n.inclusive?e.datan.value:e.data>=n.value)&&(s=this._getOrReturnCtx(e,s),j(s,{code:w.too_big,maximum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),r.dirty()):n.kind==="multipleOf"?Zl(e.data,n.value)!==0&&(s=this._getOrReturnCtx(e,s),j(s,{code:w.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):n.kind==="finite"?Number.isFinite(e.data)||(s=this._getOrReturnCtx(e,s),j(s,{code:w.not_finite,message:n.message}),r.dirty()):X.assertNever(n);return{status:r.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,U.toString(t))}gt(e,t){return this.setLimit("min",e,!1,U.toString(t))}lte(e,t){return this.setLimit("max",e,!0,U.toString(t))}lt(e,t){return this.setLimit("max",e,!1,U.toString(t))}setLimit(e,t,s,r){return new a({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:U.toString(r)}]})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:U.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:U.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:U.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:U.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:U.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:U.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:U.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:U.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:U.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuee.kind==="int"||e.kind==="multipleOf"&&X.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let s of this._def.checks){if(s.kind==="finite"||s.kind==="int"||s.kind==="multipleOf")return!0;s.kind==="min"?(t===null||s.value>t)&&(t=s.value):s.kind==="max"&&(e===null||s.valuenew jr({checks:[],typeName:O.ZodNumber,coerce:a?.coerce||!1,...J(a)});var Cr=class a extends W{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==C.bigint)return this._getInvalidInput(e);let s,r=new Se;for(let n of this._def.checks)n.kind==="min"?(n.inclusive?e.datan.value:e.data>=n.value)&&(s=this._getOrReturnCtx(e,s),j(s,{code:w.too_big,type:"bigint",maximum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):n.kind==="multipleOf"?e.data%n.value!==BigInt(0)&&(s=this._getOrReturnCtx(e,s),j(s,{code:w.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):X.assertNever(n);return{status:r.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return j(t,{code:w.invalid_type,expected:C.bigint,received:t.parsedType}),H}gte(e,t){return this.setLimit("min",e,!0,U.toString(t))}gt(e,t){return this.setLimit("min",e,!1,U.toString(t))}lte(e,t){return this.setLimit("max",e,!0,U.toString(t))}lt(e,t){return this.setLimit("max",e,!1,U.toString(t))}setLimit(e,t,s,r){return new a({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:U.toString(r)}]})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:U.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:U.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:U.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:U.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:U.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuenew Cr({checks:[],typeName:O.ZodBigInt,coerce:a?.coerce??!1,...J(a)});var Nr=class extends W{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==C.boolean){let s=this._getOrReturnCtx(e);return j(s,{code:w.invalid_type,expected:C.boolean,received:s.parsedType}),H}return Oe(e.data)}};Nr.create=a=>new Nr({typeName:O.ZodBoolean,coerce:a?.coerce||!1,...J(a)});var Fr=class a extends W{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==C.date){let n=this._getOrReturnCtx(e);return j(n,{code:w.invalid_type,expected:C.date,received:n.parsedType}),H}if(Number.isNaN(e.data.getTime())){let n=this._getOrReturnCtx(e);return j(n,{code:w.invalid_date}),H}let s=new Se,r;for(let n of this._def.checks)n.kind==="min"?e.data.getTime()n.value&&(r=this._getOrReturnCtx(e,r),j(r,{code:w.too_big,message:n.message,inclusive:!0,exact:!1,maximum:n.value,type:"date"}),s.dirty()):X.assertNever(n);return{status:s.value,value:new Date(e.data.getTime())}}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:U.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:U.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuenew Fr({checks:[],coerce:a?.coerce||!1,typeName:O.ZodDate,...J(a)});var ot=class extends W{_parse(e){if(this._getType(e)!==C.symbol){let s=this._getOrReturnCtx(e);return j(s,{code:w.invalid_type,expected:C.symbol,received:s.parsedType}),H}return Oe(e.data)}};ot.create=a=>new ot({typeName:O.ZodSymbol,...J(a)});var Lr=class extends W{_parse(e){if(this._getType(e)!==C.undefined){let s=this._getOrReturnCtx(e);return j(s,{code:w.invalid_type,expected:C.undefined,received:s.parsedType}),H}return Oe(e.data)}};Lr.create=a=>new Lr({typeName:O.ZodUndefined,...J(a)});var Mr=class extends W{_parse(e){if(this._getType(e)!==C.null){let s=this._getOrReturnCtx(e);return j(s,{code:w.invalid_type,expected:C.null,received:s.parsedType}),H}return Oe(e.data)}};Mr.create=a=>new Mr({typeName:O.ZodNull,...J(a)});var Pr=class extends W{constructor(){super(...arguments),this._any=!0}_parse(e){return Oe(e.data)}};Pr.create=a=>new Pr({typeName:O.ZodAny,...J(a)});var vr=class extends W{constructor(){super(...arguments),this._unknown=!0}_parse(e){return Oe(e.data)}};vr.create=a=>new vr({typeName:O.ZodUnknown,...J(a)});var We=class extends W{_parse(e){let t=this._getOrReturnCtx(e);return j(t,{code:w.invalid_type,expected:C.never,received:t.parsedType}),H}};We.create=a=>new We({typeName:O.ZodNever,...J(a)});var lt=class extends W{_parse(e){if(this._getType(e)!==C.undefined){let s=this._getOrReturnCtx(e);return j(s,{code:w.invalid_type,expected:C.void,received:s.parsedType}),H}return Oe(e.data)}};lt.create=a=>new lt({typeName:O.ZodVoid,...J(a)});var gr=class a extends W{_parse(e){let{ctx:t,status:s}=this._processInputParams(e),r=this._def;if(t.parsedType!==C.array)return j(t,{code:w.invalid_type,expected:C.array,received:t.parsedType}),H;if(r.exactLength!==null){let l=t.data.length>r.exactLength.value,o=t.data.lengthr.maxLength.value&&(j(t,{code:w.too_big,maximum:r.maxLength.value,type:"array",inclusive:!0,exact:!1,message:r.maxLength.message}),s.dirty()),t.common.async)return Promise.all([...t.data].map((l,o)=>r.type._parseAsync(new He(t,l,t.path,o)))).then(l=>Se.mergeArray(s,l));let n=[...t.data].map((l,o)=>r.type._parseSync(new He(t,l,t.path,o)));return Se.mergeArray(s,n)}get element(){return this._def.type}min(e,t){return new a({...this._def,minLength:{value:e,message:U.toString(t)}})}max(e,t){return new a({...this._def,maxLength:{value:e,message:U.toString(t)}})}length(e,t){return new a({...this._def,exactLength:{value:e,message:U.toString(t)}})}nonempty(e){return this.min(1,e)}};gr.create=(a,e)=>new gr({type:a,minLength:null,maxLength:null,exactLength:null,typeName:O.ZodArray,...J(e)});function it(a){if(a instanceof je){let e={};for(let t in a.shape){let s=a.shape[t];e[t]=Ze.create(it(s))}return new je({...a._def,shape:()=>e})}else return a instanceof gr?new gr({...a._def,type:it(a.element)}):a instanceof Ze?Ze.create(it(a.unwrap())):a instanceof or?or.create(it(a.unwrap())):a instanceof ir?ir.create(a.items.map(e=>it(e))):a}var je=class a extends W{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=X.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==C.object){let f=this._getOrReturnCtx(e);return j(f,{code:w.invalid_type,expected:C.object,received:f.parsedType}),H}let{status:s,ctx:r}=this._processInputParams(e),{shape:n,keys:l}=this._getCached(),o=[];if(!(this._def.catchall instanceof We&&this._def.unknownKeys==="strip"))for(let f in r.data)l.includes(f)||o.push(f);let d=[];for(let f of l){let h=n[f],m=r.data[f];d.push({key:{status:"valid",value:f},value:h._parse(new He(r,m,r.path,f)),alwaysSet:f in r.data})}if(this._def.catchall instanceof We){let f=this._def.unknownKeys;if(f==="passthrough")for(let h of o)d.push({key:{status:"valid",value:h},value:{status:"valid",value:r.data[h]}});else if(f==="strict")o.length>0&&(j(r,{code:w.unrecognized_keys,keys:o}),s.dirty());else if(f!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let f=this._def.catchall;for(let h of o){let m=r.data[h];d.push({key:{status:"valid",value:h},value:f._parse(new He(r,m,r.path,h)),alwaysSet:h in r.data})}}return r.common.async?Promise.resolve().then(async()=>{let f=[];for(let h of d){let m=await h.key,_=await h.value;f.push({key:m,value:_,alwaysSet:h.alwaysSet})}return f}).then(f=>Se.mergeObjectSync(s,f)):Se.mergeObjectSync(s,d)}get shape(){return this._def.shape()}strict(e){return U.errToObj,new a({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,s)=>{let r=this._def.errorMap?.(t,s).message??s.defaultError;return t.code==="unrecognized_keys"?{message:U.errToObj(e).message??r}:{message:r}}}:{}})}strip(){return new a({...this._def,unknownKeys:"strip"})}passthrough(){return new a({...this._def,unknownKeys:"passthrough"})}extend(e){return new a({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new a({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:O.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new a({...this._def,catchall:e})}pick(e){let t={};for(let s of X.objectKeys(e))e[s]&&this.shape[s]&&(t[s]=this.shape[s]);return new a({...this._def,shape:()=>t})}omit(e){let t={};for(let s of X.objectKeys(this.shape))e[s]||(t[s]=this.shape[s]);return new a({...this._def,shape:()=>t})}deepPartial(){return it(this)}partial(e){let t={};for(let s of X.objectKeys(this.shape)){let r=this.shape[s];e&&!e[s]?t[s]=r:t[s]=r.optional()}return new a({...this._def,shape:()=>t})}required(e){let t={};for(let s of X.objectKeys(this.shape))if(e&&!e[s])t[s]=this.shape[s];else{let n=this.shape[s];for(;n instanceof Ze;)n=n._def.innerType;t[s]=n}return new a({...this._def,shape:()=>t})}keyof(){return Ns(X.objectKeys(this.shape))}};je.create=(a,e)=>new je({shape:()=>a,unknownKeys:"strip",catchall:We.create(),typeName:O.ZodObject,...J(e)});je.strictCreate=(a,e)=>new je({shape:()=>a,unknownKeys:"strict",catchall:We.create(),typeName:O.ZodObject,...J(e)});je.lazycreate=(a,e)=>new je({shape:a,unknownKeys:"strip",catchall:We.create(),typeName:O.ZodObject,...J(e)});var qr=class extends W{_parse(e){let{ctx:t}=this._processInputParams(e),s=this._def.options;function r(n){for(let o of n)if(o.result.status==="valid")return o.result;for(let o of n)if(o.result.status==="dirty")return t.common.issues.push(...o.ctx.common.issues),o.result;let l=n.map(o=>new Ae(o.ctx.common.issues));return j(t,{code:w.invalid_union,unionErrors:l}),H}if(t.common.async)return Promise.all(s.map(async n=>{let l={...t,common:{...t.common,issues:[]},parent:null};return{result:await n._parseAsync({data:t.data,path:t.path,parent:l}),ctx:l}})).then(r);{let n,l=[];for(let d of s){let f={...t,common:{...t.common,issues:[]},parent:null},h=d._parseSync({data:t.data,path:t.path,parent:f});if(h.status==="valid")return h;h.status==="dirty"&&!n&&(n={result:h,ctx:f}),f.common.issues.length&&l.push(f.common.issues)}if(n)return t.common.issues.push(...n.ctx.common.issues),n.result;let o=l.map(d=>new Ae(d));return j(t,{code:w.invalid_union,unionErrors:o}),H}}get options(){return this._def.options}};qr.create=(a,e)=>new qr({options:a,typeName:O.ZodUnion,...J(e)});var mr=a=>a instanceof Ur?mr(a.schema):a instanceof Be?mr(a.innerType()):a instanceof Vr?[a.value]:a instanceof Zr?a.options:a instanceof Hr?X.objectValues(a.enum):a instanceof Br?mr(a._def.innerType):a instanceof Lr?[void 0]:a instanceof Mr?[null]:a instanceof Ze?[void 0,...mr(a.unwrap())]:a instanceof or?[null,...mr(a.unwrap())]:a instanceof _t||a instanceof Jr?mr(a.unwrap()):a instanceof Qr?mr(a._def.innerType):[],jt=class a extends W{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==C.object)return j(t,{code:w.invalid_type,expected:C.object,received:t.parsedType}),H;let s=this.discriminator,r=t.data[s],n=this.optionsMap.get(r);return n?t.common.async?n._parseAsync({data:t.data,path:t.path,parent:t}):n._parseSync({data:t.data,path:t.path,parent:t}):(j(t,{code:w.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[s]}),H)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,s){let r=new Map;for(let n of t){let l=mr(n.shape[e]);if(!l.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let o of l){if(r.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);r.set(o,n)}}return new a({typeName:O.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:r,...J(s)})}};function wa(a,e){let t=nr(a),s=nr(e);if(a===e)return{valid:!0,data:a};if(t===C.object&&s===C.object){let r=X.objectKeys(e),n=X.objectKeys(a).filter(o=>r.indexOf(o)!==-1),l={...a,...e};for(let o of n){let d=wa(a[o],e[o]);if(!d.valid)return{valid:!1};l[o]=d.data}return{valid:!0,data:l}}else if(t===C.array&&s===C.array){if(a.length!==e.length)return{valid:!1};let r=[];for(let n=0;n{if(kt(n)||kt(l))return H;let o=wa(n.value,l.value);return o.valid?((At(n)||At(l))&&t.dirty(),{status:t.value,value:o.data}):(j(s,{code:w.invalid_intersection_types}),H)};return s.common.async?Promise.all([this._def.left._parseAsync({data:s.data,path:s.path,parent:s}),this._def.right._parseAsync({data:s.data,path:s.path,parent:s})]).then(([n,l])=>r(n,l)):r(this._def.left._parseSync({data:s.data,path:s.path,parent:s}),this._def.right._parseSync({data:s.data,path:s.path,parent:s}))}};zr.create=(a,e,t)=>new zr({left:a,right:e,typeName:O.ZodIntersection,...J(t)});var ir=class a extends W{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==C.array)return j(s,{code:w.invalid_type,expected:C.array,received:s.parsedType}),H;if(s.data.lengththis._def.items.length&&(j(s,{code:w.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());let n=[...s.data].map((l,o)=>{let d=this._def.items[o]||this._def.rest;return d?d._parse(new He(s,l,s.path,o)):null}).filter(l=>!!l);return s.common.async?Promise.all(n).then(l=>Se.mergeArray(t,l)):Se.mergeArray(t,n)}get items(){return this._def.items}rest(e){return new a({...this._def,rest:e})}};ir.create=(a,e)=>{if(!Array.isArray(a))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new ir({items:a,typeName:O.ZodTuple,rest:null,...J(e)})};var Ct=class a extends W{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==C.object)return j(s,{code:w.invalid_type,expected:C.object,received:s.parsedType}),H;let r=[],n=this._def.keyType,l=this._def.valueType;for(let o in s.data)r.push({key:n._parse(new He(s,o,s.path,o)),value:l._parse(new He(s,s.data[o],s.path,o)),alwaysSet:o in s.data});return s.common.async?Se.mergeObjectAsync(t,r):Se.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(e,t,s){return t instanceof W?new a({keyType:e,valueType:t,typeName:O.ZodRecord,...J(s)}):new a({keyType:xr.create(),valueType:e,typeName:O.ZodRecord,...J(t)})}},ct=class extends W{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==C.map)return j(s,{code:w.invalid_type,expected:C.map,received:s.parsedType}),H;let r=this._def.keyType,n=this._def.valueType,l=[...s.data.entries()].map(([o,d],f)=>({key:r._parse(new He(s,o,s.path,[f,"key"])),value:n._parse(new He(s,d,s.path,[f,"value"]))}));if(s.common.async){let o=new Map;return Promise.resolve().then(async()=>{for(let d of l){let f=await d.key,h=await d.value;if(f.status==="aborted"||h.status==="aborted")return H;(f.status==="dirty"||h.status==="dirty")&&t.dirty(),o.set(f.value,h.value)}return{status:t.value,value:o}})}else{let o=new Map;for(let d of l){let f=d.key,h=d.value;if(f.status==="aborted"||h.status==="aborted")return H;(f.status==="dirty"||h.status==="dirty")&&t.dirty(),o.set(f.value,h.value)}return{status:t.value,value:o}}}};ct.create=(a,e,t)=>new ct({valueType:e,keyType:a,typeName:O.ZodMap,...J(t)});var ut=class a extends W{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==C.set)return j(s,{code:w.invalid_type,expected:C.set,received:s.parsedType}),H;let r=this._def;r.minSize!==null&&s.data.sizer.maxSize.value&&(j(s,{code:w.too_big,maximum:r.maxSize.value,type:"set",inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let n=this._def.valueType;function l(d){let f=new Set;for(let h of d){if(h.status==="aborted")return H;h.status==="dirty"&&t.dirty(),f.add(h.value)}return{status:t.value,value:f}}let o=[...s.data.values()].map((d,f)=>n._parse(new He(s,d,s.path,f)));return s.common.async?Promise.all(o).then(d=>l(d)):l(o)}min(e,t){return new a({...this._def,minSize:{value:e,message:U.toString(t)}})}max(e,t){return new a({...this._def,maxSize:{value:e,message:U.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};ut.create=(a,e)=>new ut({valueType:a,minSize:null,maxSize:null,typeName:O.ZodSet,...J(e)});var Nt=class a extends W{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==C.function)return j(t,{code:w.invalid_type,expected:C.function,received:t.parsedType}),H;function s(o,d){return bt({data:o,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,st(),pr].filter(f=>!!f),issueData:{code:w.invalid_arguments,argumentsError:d}})}function r(o,d){return bt({data:o,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,st(),pr].filter(f=>!!f),issueData:{code:w.invalid_return_type,returnTypeError:d}})}let n={errorMap:t.common.contextualErrorMap},l=t.data;if(this._def.returns instanceof Er){let o=this;return Oe(async function(...d){let f=new Ae([]),h=await o._def.args.parseAsync(d,n).catch(c=>{throw f.addIssue(s(d,c)),f}),m=await Reflect.apply(l,this,h);return await o._def.returns._def.type.parseAsync(m,n).catch(c=>{throw f.addIssue(r(m,c)),f})})}else{let o=this;return Oe(function(...d){let f=o._def.args.safeParse(d,n);if(!f.success)throw new Ae([s(d,f.error)]);let h=Reflect.apply(l,this,f.data),m=o._def.returns.safeParse(h,n);if(!m.success)throw new Ae([r(h,m.error)]);return m.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new a({...this._def,args:ir.create(e).rest(vr.create())})}returns(e){return new a({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,s){return new a({args:e||ir.create([]).rest(vr.create()),returns:t||vr.create(),typeName:O.ZodFunction,...J(s)})}},Ur=class extends W{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};Ur.create=(a,e)=>new Ur({getter:a,typeName:O.ZodLazy,...J(e)});var Vr=class extends W{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return j(t,{received:t.data,code:w.invalid_literal,expected:this._def.value}),H}return{status:"valid",value:e.data}}get value(){return this._def.value}};Vr.create=(a,e)=>new Vr({value:a,typeName:O.ZodLiteral,...J(e)});function Ns(a,e){return new Zr({values:a,typeName:O.ZodEnum,...J(e)})}var Zr=class a extends W{_parse(e){if(typeof e.data!="string"){let t=this._getOrReturnCtx(e),s=this._def.values;return j(t,{expected:X.joinValues(s),received:t.parsedType,code:w.invalid_type}),H}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),s=this._def.values;return j(t,{received:t.data,code:w.invalid_enum_value,options:s}),H}return Oe(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return a.create(e,{...this._def,...t})}exclude(e,t=this._def){return a.create(this.options.filter(s=>!e.includes(s)),{...this._def,...t})}};Zr.create=Ns;var Hr=class extends W{_parse(e){let t=X.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(e);if(s.parsedType!==C.string&&s.parsedType!==C.number){let r=X.objectValues(t);return j(s,{expected:X.joinValues(r),received:s.parsedType,code:w.invalid_type}),H}if(this._cache||(this._cache=new Set(X.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let r=X.objectValues(t);return j(s,{received:s.data,code:w.invalid_enum_value,options:r}),H}return Oe(e.data)}get enum(){return this._def.values}};Hr.create=(a,e)=>new Hr({values:a,typeName:O.ZodNativeEnum,...J(e)});var Er=class extends W{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==C.promise&&t.common.async===!1)return j(t,{code:w.invalid_type,expected:C.promise,received:t.parsedType}),H;let s=t.parsedType===C.promise?t.data:Promise.resolve(t.data);return Oe(s.then(r=>this._def.type.parseAsync(r,{path:t.path,errorMap:t.common.contextualErrorMap})))}};Er.create=(a,e)=>new Er({type:a,typeName:O.ZodPromise,...J(e)});var Be=class extends W{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===O.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:s}=this._processInputParams(e),r=this._def.effect||null,n={addIssue:l=>{j(s,l),l.fatal?t.abort():t.dirty()},get path(){return s.path}};if(n.addIssue=n.addIssue.bind(n),r.type==="preprocess"){let l=r.transform(s.data,n);if(s.common.async)return Promise.resolve(l).then(async o=>{if(t.value==="aborted")return H;let d=await this._def.schema._parseAsync({data:o,path:s.path,parent:s});return d.status==="aborted"?H:d.status==="dirty"?Ar(d.value):t.value==="dirty"?Ar(d.value):d});{if(t.value==="aborted")return H;let o=this._def.schema._parseSync({data:l,path:s.path,parent:s});return o.status==="aborted"?H:o.status==="dirty"?Ar(o.value):t.value==="dirty"?Ar(o.value):o}}if(r.type==="refinement"){let l=o=>{let d=r.refinement(o,n);if(s.common.async)return Promise.resolve(d);if(d instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(s.common.async===!1){let o=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});return o.status==="aborted"?H:(o.status==="dirty"&&t.dirty(),l(o.value),{status:t.value,value:o.value})}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(o=>o.status==="aborted"?H:(o.status==="dirty"&&t.dirty(),l(o.value).then(()=>({status:t.value,value:o.value}))))}if(r.type==="transform")if(s.common.async===!1){let l=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});if(!_r(l))return H;let o=r.transform(l.value,n);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:o}}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(l=>_r(l)?Promise.resolve(r.transform(l.value,n)).then(o=>({status:t.value,value:o})):H);X.assertNever(r)}};Be.create=(a,e,t)=>new Be({schema:a,typeName:O.ZodEffects,effect:e,...J(t)});Be.createWithPreprocess=(a,e,t)=>new Be({schema:e,effect:{type:"preprocess",transform:a},typeName:O.ZodEffects,...J(t)});var Ze=class extends W{_parse(e){return this._getType(e)===C.undefined?Oe(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Ze.create=(a,e)=>new Ze({innerType:a,typeName:O.ZodOptional,...J(e)});var or=class extends W{_parse(e){return this._getType(e)===C.null?Oe(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};or.create=(a,e)=>new or({innerType:a,typeName:O.ZodNullable,...J(e)});var Br=class extends W{_parse(e){let{ctx:t}=this._processInputParams(e),s=t.data;return t.parsedType===C.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};Br.create=(a,e)=>new Br({innerType:a,typeName:O.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...J(e)});var Qr=class extends W{_parse(e){let{ctx:t}=this._processInputParams(e),s={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:s.data,path:s.path,parent:{...s}});return nt(r)?r.then(n=>({status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new Ae(s.common.issues)},input:s.data})})):{status:"valid",value:r.status==="valid"?r.value:this._def.catchValue({get error(){return new Ae(s.common.issues)},input:s.data})}}removeCatch(){return this._def.innerType}};Qr.create=(a,e)=>new Qr({innerType:a,typeName:O.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...J(e)});var dt=class extends W{_parse(e){if(this._getType(e)!==C.nan){let s=this._getOrReturnCtx(e);return j(s,{code:w.invalid_type,expected:C.nan,received:s.parsedType}),H}return{status:"valid",value:e.data}}};dt.create=a=>new dt({typeName:O.ZodNaN,...J(a)});var Hl=Symbol("zod_brand"),_t=class extends W{_parse(e){let{ctx:t}=this._processInputParams(e),s=t.data;return this._def.type._parse({data:s,path:t.path,parent:t})}unwrap(){return this._def.type}},xt=class a extends W{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.common.async)return(async()=>{let n=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return n.status==="aborted"?H:n.status==="dirty"?(t.dirty(),Ar(n.value)):this._def.out._parseAsync({data:n.value,path:s.path,parent:s})})();{let r=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return r.status==="aborted"?H:r.status==="dirty"?(t.dirty(),{status:"dirty",value:r.value}):this._def.out._parseSync({data:r.value,path:s.path,parent:s})}}static create(e,t){return new a({in:e,out:t,typeName:O.ZodPipeline})}},Jr=class extends W{_parse(e){let t=this._def.innerType._parse(e),s=r=>(_r(r)&&(r.value=Object.freeze(r.value)),r);return nt(t)?t.then(r=>s(r)):s(t)}unwrap(){return this._def.innerType}};Jr.create=(a,e)=>new Jr({innerType:a,typeName:O.ZodReadonly,...J(e)});function ks(a,e){let t=typeof a=="function"?a(e):typeof a=="string"?{message:a}:a;return typeof t=="string"?{message:t}:t}function Fs(a,e={},t){return a?Pr.create().superRefine((s,r)=>{let n=a(s);if(n instanceof Promise)return n.then(l=>{if(!l){let o=ks(e,s),d=o.fatal??t??!0;r.addIssue({code:"custom",...o,fatal:d})}});if(!n){let l=ks(e,s),o=l.fatal??t??!0;r.addIssue({code:"custom",...l,fatal:o})}}):Pr.create()}var Bl={object:je.lazycreate},O;(function(a){a.ZodString="ZodString",a.ZodNumber="ZodNumber",a.ZodNaN="ZodNaN",a.ZodBigInt="ZodBigInt",a.ZodBoolean="ZodBoolean",a.ZodDate="ZodDate",a.ZodSymbol="ZodSymbol",a.ZodUndefined="ZodUndefined",a.ZodNull="ZodNull",a.ZodAny="ZodAny",a.ZodUnknown="ZodUnknown",a.ZodNever="ZodNever",a.ZodVoid="ZodVoid",a.ZodArray="ZodArray",a.ZodObject="ZodObject",a.ZodUnion="ZodUnion",a.ZodDiscriminatedUnion="ZodDiscriminatedUnion",a.ZodIntersection="ZodIntersection",a.ZodTuple="ZodTuple",a.ZodRecord="ZodRecord",a.ZodMap="ZodMap",a.ZodSet="ZodSet",a.ZodFunction="ZodFunction",a.ZodLazy="ZodLazy",a.ZodLiteral="ZodLiteral",a.ZodEnum="ZodEnum",a.ZodEffects="ZodEffects",a.ZodNativeEnum="ZodNativeEnum",a.ZodOptional="ZodOptional",a.ZodNullable="ZodNullable",a.ZodDefault="ZodDefault",a.ZodCatch="ZodCatch",a.ZodPromise="ZodPromise",a.ZodBranded="ZodBranded",a.ZodPipeline="ZodPipeline",a.ZodReadonly="ZodReadonly"})(O||(O={}));var Ql=(a,e={message:`Input not instance of ${a.name}`})=>Fs(t=>t instanceof a,e),Ls=xr.create,Ms=jr.create,Jl=dt.create,Kl=Cr.create,qs=Nr.create,Wl=Fr.create,Gl=ot.create,Yl=Lr.create,Xl=Mr.create,ec=Pr.create,rc=vr.create,tc=We.create,ac=lt.create,sc=gr.create,nc=je.create,ic=je.strictCreate,oc=qr.create,lc=jt.create,cc=zr.create,uc=ir.create,dc=Ct.create,fc=ct.create,hc=ut.create,pc=Nt.create,mc=Ur.create,vc=Vr.create,gc=Zr.create,yc=Hr.create,bc=Er.create,_c=Be.create,xc=Ze.create,Pc=or.create,Ec=Be.createWithPreprocess,Sc=xt.create,wc=()=>Ls().optional(),Rc=()=>Ms().optional(),Oc=()=>qs().optional(),Dc={string:(a=>xr.create({...a,coerce:!0})),number:(a=>jr.create({...a,coerce:!0})),boolean:(a=>Nr.create({...a,coerce:!0})),bigint:(a=>Cr.create({...a,coerce:!0})),date:(a=>Fr.create({...a,coerce:!0}))};var $c=H;var Ra="2025-06-18";var zs=[Ra,"2025-03-26","2024-11-05","2024-10-07"],Ft="2.0",Us=i.union([i.string(),i.number().int()]),Vs=i.string(),Tc=i.object({progressToken:i.optional(Us)}).passthrough(),Qe=i.object({_meta:i.optional(Tc)}).passthrough(),Ce=i.object({method:i.string(),params:i.optional(Qe)}),Pt=i.object({_meta:i.optional(i.object({}).passthrough())}).passthrough(),lr=i.object({method:i.string(),params:i.optional(Pt)}),Je=i.object({_meta:i.optional(i.object({}).passthrough())}).passthrough(),Lt=i.union([i.string(),i.number().int()]),Zs=i.object({jsonrpc:i.literal(Ft),id:Lt}).merge(Ce).strict(),Hs=a=>Zs.safeParse(a).success,Bs=i.object({jsonrpc:i.literal(Ft)}).merge(lr).strict(),Qs=a=>Bs.safeParse(a).success,Js=i.object({jsonrpc:i.literal(Ft),id:Lt,result:Je}).strict(),Oa=a=>Js.safeParse(a).success,Ge;(function(a){a[a.ConnectionClosed=-32e3]="ConnectionClosed",a[a.RequestTimeout=-32001]="RequestTimeout",a[a.ParseError=-32700]="ParseError",a[a.InvalidRequest=-32600]="InvalidRequest",a[a.MethodNotFound=-32601]="MethodNotFound",a[a.InvalidParams=-32602]="InvalidParams",a[a.InternalError=-32603]="InternalError"})(Ge||(Ge={}));var Ks=i.object({jsonrpc:i.literal(Ft),id:Lt,error:i.object({code:i.number().int(),message:i.string(),data:i.optional(i.unknown())})}).strict(),Ws=a=>Ks.safeParse(a).success,Gs=i.union([Zs,Bs,Js,Ks]),Mt=Je.strict(),qt=lr.extend({method:i.literal("notifications/cancelled"),params:Pt.extend({requestId:Lt,reason:i.string().optional()})}),Ic=i.object({src:i.string(),mimeType:i.optional(i.string()),sizes:i.optional(i.array(i.string()))}).passthrough(),Et=i.object({icons:i.array(Ic).optional()}).passthrough(),St=i.object({name:i.string(),title:i.optional(i.string())}).passthrough(),Ys=St.extend({version:i.string(),websiteUrl:i.optional(i.string())}).merge(Et),kc=i.object({experimental:i.optional(i.object({}).passthrough()),sampling:i.optional(i.object({}).passthrough()),elicitation:i.optional(i.object({}).passthrough()),roots:i.optional(i.object({listChanged:i.optional(i.boolean())}).passthrough())}).passthrough(),Da=Ce.extend({method:i.literal("initialize"),params:Qe.extend({protocolVersion:i.string(),capabilities:kc,clientInfo:Ys})});var Ac=i.object({experimental:i.optional(i.object({}).passthrough()),logging:i.optional(i.object({}).passthrough()),completions:i.optional(i.object({}).passthrough()),prompts:i.optional(i.object({listChanged:i.optional(i.boolean())}).passthrough()),resources:i.optional(i.object({subscribe:i.optional(i.boolean()),listChanged:i.optional(i.boolean())}).passthrough()),tools:i.optional(i.object({listChanged:i.optional(i.boolean())}).passthrough())}).passthrough(),jc=Je.extend({protocolVersion:i.string(),capabilities:Ac,serverInfo:Ys,instructions:i.optional(i.string())}),$a=lr.extend({method:i.literal("notifications/initialized")});var zt=Ce.extend({method:i.literal("ping")}),Cc=i.object({progress:i.number(),total:i.optional(i.number()),message:i.optional(i.string())}).passthrough(),Ut=lr.extend({method:i.literal("notifications/progress"),params:Pt.merge(Cc).extend({progressToken:Us})}),Vt=Ce.extend({params:Qe.extend({cursor:i.optional(Vs)}).optional()}),Zt=Je.extend({nextCursor:i.optional(Vs)}),Xs=i.object({uri:i.string(),mimeType:i.optional(i.string()),_meta:i.optional(i.object({}).passthrough())}).passthrough(),en=Xs.extend({text:i.string()}),Ta=i.string().refine(a=>{try{return atob(a),!0}catch{return!1}},{message:"Invalid Base64 string"}),rn=Xs.extend({blob:Ta}),tn=St.extend({uri:i.string(),description:i.optional(i.string()),mimeType:i.optional(i.string()),_meta:i.optional(i.object({}).passthrough())}).merge(Et),Nc=St.extend({uriTemplate:i.string(),description:i.optional(i.string()),mimeType:i.optional(i.string()),_meta:i.optional(i.object({}).passthrough())}).merge(Et),Fc=Vt.extend({method:i.literal("resources/list")}),Lc=Zt.extend({resources:i.array(tn)}),Mc=Vt.extend({method:i.literal("resources/templates/list")}),qc=Zt.extend({resourceTemplates:i.array(Nc)}),zc=Ce.extend({method:i.literal("resources/read"),params:Qe.extend({uri:i.string()})}),Uc=Je.extend({contents:i.array(i.union([en,rn]))}),Vc=lr.extend({method:i.literal("notifications/resources/list_changed")}),Zc=Ce.extend({method:i.literal("resources/subscribe"),params:Qe.extend({uri:i.string()})}),Hc=Ce.extend({method:i.literal("resources/unsubscribe"),params:Qe.extend({uri:i.string()})}),Bc=lr.extend({method:i.literal("notifications/resources/updated"),params:Pt.extend({uri:i.string()})}),Qc=i.object({name:i.string(),description:i.optional(i.string()),required:i.optional(i.boolean())}).passthrough(),Jc=St.extend({description:i.optional(i.string()),arguments:i.optional(i.array(Qc)),_meta:i.optional(i.object({}).passthrough())}).merge(Et),Kc=Vt.extend({method:i.literal("prompts/list")}),Wc=Zt.extend({prompts:i.array(Jc)}),Gc=Ce.extend({method:i.literal("prompts/get"),params:Qe.extend({name:i.string(),arguments:i.optional(i.record(i.string()))})}),Ia=i.object({type:i.literal("text"),text:i.string(),_meta:i.optional(i.object({}).passthrough())}).passthrough(),ka=i.object({type:i.literal("image"),data:Ta,mimeType:i.string(),_meta:i.optional(i.object({}).passthrough())}).passthrough(),Aa=i.object({type:i.literal("audio"),data:Ta,mimeType:i.string(),_meta:i.optional(i.object({}).passthrough())}).passthrough(),Yc=i.object({type:i.literal("resource"),resource:i.union([en,rn]),_meta:i.optional(i.object({}).passthrough())}).passthrough(),Xc=tn.extend({type:i.literal("resource_link")}),an=i.union([Ia,ka,Aa,Xc,Yc]),eu=i.object({role:i.enum(["user","assistant"]),content:an}).passthrough(),ru=Je.extend({description:i.optional(i.string()),messages:i.array(eu)}),tu=lr.extend({method:i.literal("notifications/prompts/list_changed")}),au=i.object({title:i.optional(i.string()),readOnlyHint:i.optional(i.boolean()),destructiveHint:i.optional(i.boolean()),idempotentHint:i.optional(i.boolean()),openWorldHint:i.optional(i.boolean())}).passthrough(),su=St.extend({description:i.optional(i.string()),inputSchema:i.object({type:i.literal("object"),properties:i.optional(i.object({}).passthrough()),required:i.optional(i.array(i.string()))}).passthrough(),outputSchema:i.optional(i.object({type:i.literal("object"),properties:i.optional(i.object({}).passthrough()),required:i.optional(i.array(i.string()))}).passthrough()),annotations:i.optional(au),_meta:i.optional(i.object({}).passthrough())}).merge(Et),ja=Vt.extend({method:i.literal("tools/list")}),nu=Zt.extend({tools:i.array(su)}),sn=Je.extend({content:i.array(an).default([]),structuredContent:i.object({}).passthrough().optional(),isError:i.optional(i.boolean())}),eh=sn.or(Je.extend({toolResult:i.unknown()})),Ca=Ce.extend({method:i.literal("tools/call"),params:Qe.extend({name:i.string(),arguments:i.optional(i.record(i.unknown()))})}),iu=lr.extend({method:i.literal("notifications/tools/list_changed")}),wt=i.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),Na=Ce.extend({method:i.literal("logging/setLevel"),params:Qe.extend({level:wt})}),ou=lr.extend({method:i.literal("notifications/message"),params:Pt.extend({level:wt,logger:i.optional(i.string()),data:i.unknown()})}),lu=i.object({name:i.string().optional()}).passthrough(),cu=i.object({hints:i.optional(i.array(lu)),costPriority:i.optional(i.number().min(0).max(1)),speedPriority:i.optional(i.number().min(0).max(1)),intelligencePriority:i.optional(i.number().min(0).max(1))}).passthrough(),uu=i.object({role:i.enum(["user","assistant"]),content:i.union([Ia,ka,Aa])}).passthrough(),du=Ce.extend({method:i.literal("sampling/createMessage"),params:Qe.extend({messages:i.array(uu),systemPrompt:i.optional(i.string()),includeContext:i.optional(i.enum(["none","thisServer","allServers"])),temperature:i.optional(i.number()),maxTokens:i.number().int(),stopSequences:i.optional(i.array(i.string())),metadata:i.optional(i.object({}).passthrough()),modelPreferences:i.optional(cu)})}),Fa=Je.extend({model:i.string(),stopReason:i.optional(i.enum(["endTurn","stopSequence","maxTokens"]).or(i.string())),role:i.enum(["user","assistant"]),content:i.discriminatedUnion("type",[Ia,ka,Aa])}),fu=i.object({type:i.literal("boolean"),title:i.optional(i.string()),description:i.optional(i.string()),default:i.optional(i.boolean())}).passthrough(),hu=i.object({type:i.literal("string"),title:i.optional(i.string()),description:i.optional(i.string()),minLength:i.optional(i.number()),maxLength:i.optional(i.number()),format:i.optional(i.enum(["email","uri","date","date-time"]))}).passthrough(),pu=i.object({type:i.enum(["number","integer"]),title:i.optional(i.string()),description:i.optional(i.string()),minimum:i.optional(i.number()),maximum:i.optional(i.number())}).passthrough(),mu=i.object({type:i.literal("string"),title:i.optional(i.string()),description:i.optional(i.string()),enum:i.array(i.string()),enumNames:i.optional(i.array(i.string()))}).passthrough(),vu=i.union([fu,hu,pu,mu]),gu=Ce.extend({method:i.literal("elicitation/create"),params:Qe.extend({message:i.string(),requestedSchema:i.object({type:i.literal("object"),properties:i.record(i.string(),vu),required:i.optional(i.array(i.string()))}).passthrough()})}),La=Je.extend({action:i.enum(["accept","decline","cancel"]),content:i.optional(i.record(i.string(),i.unknown()))}),yu=i.object({type:i.literal("ref/resource"),uri:i.string()}).passthrough();var bu=i.object({type:i.literal("ref/prompt"),name:i.string()}).passthrough(),_u=Ce.extend({method:i.literal("completion/complete"),params:Qe.extend({ref:i.union([bu,yu]),argument:i.object({name:i.string(),value:i.string()}).passthrough(),context:i.optional(i.object({arguments:i.optional(i.record(i.string(),i.string()))}))})}),xu=Je.extend({completion:i.object({values:i.array(i.string()).max(100),total:i.optional(i.number().int()),hasMore:i.optional(i.boolean())}).passthrough()}),Pu=i.object({uri:i.string().startsWith("file://"),name:i.optional(i.string()),_meta:i.optional(i.object({}).passthrough())}).passthrough(),Eu=Ce.extend({method:i.literal("roots/list")}),Ma=Je.extend({roots:i.array(Pu)}),Su=lr.extend({method:i.literal("notifications/roots/list_changed")}),rh=i.union([zt,Da,_u,Na,Gc,Kc,Fc,Mc,zc,Zc,Hc,Ca,ja]),th=i.union([qt,Ut,$a,Su]),ah=i.union([Mt,Fa,La,Ma]),sh=i.union([zt,du,gu,Eu]),nh=i.union([qt,Ut,ou,Bc,Vc,iu,tu]),ih=i.union([Mt,jc,xu,ru,Wc,Lc,qc,Uc,sn,nu]),Ye=class extends Error{constructor(e,t,s){super(`MCP error ${e}: ${t}`),this.code=e,this.data=s,this.name="McpError"}};var wu=6e4,Ht=class{constructor(e){this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this.setNotificationHandler(qt,t=>{let s=this._requestHandlerAbortControllers.get(t.params.requestId);s?.abort(t.params.reason)}),this.setNotificationHandler(Ut,t=>{this._onprogress(t)}),this.setRequestHandler(zt,t=>({}))}_setupTimeout(e,t,s,r,n=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(r,t),startTime:Date.now(),timeout:t,maxTotalTimeout:s,resetTimeoutOnProgress:n,onTimeout:r})}_resetTimeout(e){let t=this._timeoutInfo.get(e);if(!t)return!1;let s=Date.now()-t.startTime;if(t.maxTotalTimeout&&s>=t.maxTotalTimeout)throw this._timeoutInfo.delete(e),new Ye(Ge.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:t.maxTotalTimeout,totalElapsed:s});return clearTimeout(t.timeoutId),t.timeoutId=setTimeout(t.onTimeout,t.timeout),!0}_cleanupTimeout(e){let t=this._timeoutInfo.get(e);t&&(clearTimeout(t.timeoutId),this._timeoutInfo.delete(e))}async connect(e){var t,s,r;this._transport=e;let n=(t=this.transport)===null||t===void 0?void 0:t.onclose;this._transport.onclose=()=>{n?.(),this._onclose()};let l=(s=this.transport)===null||s===void 0?void 0:s.onerror;this._transport.onerror=d=>{l?.(d),this._onerror(d)};let o=(r=this._transport)===null||r===void 0?void 0:r.onmessage;this._transport.onmessage=(d,f)=>{o?.(d,f),Oa(d)||Ws(d)?this._onresponse(d):Hs(d)?this._onrequest(d,f):Qs(d)?this._onnotification(d):this._onerror(new Error(`Unknown message type: ${JSON.stringify(d)}`))},await this._transport.start()}_onclose(){var e;let t=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._pendingDebouncedNotifications.clear(),this._transport=void 0,(e=this.onclose)===null||e===void 0||e.call(this);let s=new Ye(Ge.ConnectionClosed,"Connection closed");for(let r of t.values())r(s)}_onerror(e){var t;(t=this.onerror)===null||t===void 0||t.call(this,e)}_onnotification(e){var t;let s=(t=this._notificationHandlers.get(e.method))!==null&&t!==void 0?t:this.fallbackNotificationHandler;s!==void 0&&Promise.resolve().then(()=>s(e)).catch(r=>this._onerror(new Error(`Uncaught error in notification handler: ${r}`)))}_onrequest(e,t){var s,r;let n=(s=this._requestHandlers.get(e.method))!==null&&s!==void 0?s:this.fallbackRequestHandler,l=this._transport;if(n===void 0){l?.send({jsonrpc:"2.0",id:e.id,error:{code:Ge.MethodNotFound,message:"Method not found"}}).catch(f=>this._onerror(new Error(`Failed to send an error response: ${f}`)));return}let o=new AbortController;this._requestHandlerAbortControllers.set(e.id,o);let d={signal:o.signal,sessionId:l?.sessionId,_meta:(r=e.params)===null||r===void 0?void 0:r._meta,sendNotification:f=>this.notification(f,{relatedRequestId:e.id}),sendRequest:(f,h,m)=>this.request(f,h,{...m,relatedRequestId:e.id}),authInfo:t?.authInfo,requestId:e.id,requestInfo:t?.requestInfo};Promise.resolve().then(()=>n(e,d)).then(f=>{if(!o.signal.aborted)return l?.send({result:f,jsonrpc:"2.0",id:e.id})},f=>{var h;if(!o.signal.aborted)return l?.send({jsonrpc:"2.0",id:e.id,error:{code:Number.isSafeInteger(f.code)?f.code:Ge.InternalError,message:(h=f.message)!==null&&h!==void 0?h:"Internal error"}})}).catch(f=>this._onerror(new Error(`Failed to send response: ${f}`))).finally(()=>{this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:t,...s}=e.params,r=Number(t),n=this._progressHandlers.get(r);if(!n){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let l=this._responseHandlers.get(r),o=this._timeoutInfo.get(r);if(o&&l&&o.resetTimeoutOnProgress)try{this._resetTimeout(r)}catch(d){l(d);return}n(s)}_onresponse(e){let t=Number(e.id),s=this._responseHandlers.get(t);if(s===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}if(this._responseHandlers.delete(t),this._progressHandlers.delete(t),this._cleanupTimeout(t),Oa(e))s(e);else{let r=new Ye(e.error.code,e.error.message,e.error.data);s(r)}}get transport(){return this._transport}async close(){var e;await((e=this._transport)===null||e===void 0?void 0:e.close())}request(e,t,s){let{relatedRequestId:r,resumptionToken:n,onresumptiontoken:l}=s??{};return new Promise((o,d)=>{var f,h,m,_,c,y;if(!this._transport){d(new Error("Not connected"));return}((f=this._options)===null||f===void 0?void 0:f.enforceStrictCapabilities)===!0&&this.assertCapabilityForMethod(e.method),(h=s?.signal)===null||h===void 0||h.throwIfAborted();let b=this._requestMessageId++,g={...e,jsonrpc:"2.0",id:b};s?.onprogress&&(this._progressHandlers.set(b,s.onprogress),g.params={...e.params,_meta:{...((m=e.params)===null||m===void 0?void 0:m._meta)||{},progressToken:b}});let E=R=>{var T;this._responseHandlers.delete(b),this._progressHandlers.delete(b),this._cleanupTimeout(b),(T=this._transport)===null||T===void 0||T.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:b,reason:String(R)}},{relatedRequestId:r,resumptionToken:n,onresumptiontoken:l}).catch(I=>this._onerror(new Error(`Failed to send cancellation: ${I}`))),d(R)};this._responseHandlers.set(b,R=>{var T;if(!(!((T=s?.signal)===null||T===void 0)&&T.aborted)){if(R instanceof Error)return d(R);try{let I=t.parse(R.result);o(I)}catch(I){d(I)}}}),(_=s?.signal)===null||_===void 0||_.addEventListener("abort",()=>{var R;E((R=s?.signal)===null||R===void 0?void 0:R.reason)});let $=(c=s?.timeout)!==null&&c!==void 0?c:wu,S=()=>E(new Ye(Ge.RequestTimeout,"Request timed out",{timeout:$}));this._setupTimeout(b,$,s?.maxTotalTimeout,S,(y=s?.resetTimeoutOnProgress)!==null&&y!==void 0?y:!1),this._transport.send(g,{relatedRequestId:r,resumptionToken:n,onresumptiontoken:l}).catch(R=>{this._cleanupTimeout(b),d(R)})})}async notification(e,t){var s,r;if(!this._transport)throw new Error("Not connected");if(this.assertNotificationCapability(e.method),((r=(s=this._options)===null||s===void 0?void 0:s.debouncedNotificationMethods)!==null&&r!==void 0?r:[]).includes(e.method)&&!e.params&&!t?.relatedRequestId){if(this._pendingDebouncedNotifications.has(e.method))return;this._pendingDebouncedNotifications.add(e.method),Promise.resolve().then(()=>{var d;if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let f={...e,jsonrpc:"2.0"};(d=this._transport)===null||d===void 0||d.send(f,t).catch(h=>this._onerror(h))});return}let o={...e,jsonrpc:"2.0"};await this._transport.send(o,t)}setRequestHandler(e,t){let s=e.shape.method.value;this.assertRequestHandlerCapability(s),this._requestHandlers.set(s,(r,n)=>Promise.resolve(t(e.parse(r),n)))}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw new Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,t){this._notificationHandlers.set(e.shape.method.value,s=>Promise.resolve(t(e.parse(s))))}removeNotificationHandler(e){this._notificationHandlers.delete(e)}};function nn(a,e){return Object.entries(e).reduce((t,[s,r])=>(r&&typeof r=="object"?t[s]=t[s]?{...t[s],...r}:r:t[s]=r,t),{...a})}var lo=$s(oo(),1),ua=class extends Ht{constructor(e,t){var s;super(t),this._serverInfo=e,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(wt.options.map((r,n)=>[r,n])),this.isMessageIgnored=(r,n)=>{let l=this._loggingLevels.get(n);return l?this.LOG_LEVEL_SEVERITY.get(r)this._oninitialize(r)),this.setNotificationHandler($a,()=>{var r;return(r=this.oninitialized)===null||r===void 0?void 0:r.call(this)}),this._capabilities.logging&&this.setRequestHandler(Na,async(r,n)=>{var l;let o=n.sessionId||((l=n.requestInfo)===null||l===void 0?void 0:l.headers["mcp-session-id"])||void 0,{level:d}=r.params,f=wt.safeParse(d);return f.success&&this._loggingLevels.set(o,f.data),{}})}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=nn(this._capabilities,e)}assertCapabilityForMethod(e){var t,s,r;switch(e){case"sampling/createMessage":if(!(!((t=this._clientCapabilities)===null||t===void 0)&&t.sampling))throw new Error(`Client does not support sampling (required for ${e})`);break;case"elicitation/create":if(!(!((s=this._clientCapabilities)===null||s===void 0)&&s.elicitation))throw new Error(`Client does not support elicitation (required for ${e})`);break;case"roots/list":if(!(!((r=this._clientCapabilities)===null||r===void 0)&&r.roots))throw new Error(`Client does not support listing roots (required for ${e})`);break;case"ping":break}}assertNotificationCapability(e){switch(e){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${e})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${e})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${e})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){switch(e){case"sampling/createMessage":if(!this._capabilities.sampling)throw new Error(`Server does not support sampling (required for ${e})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${e})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${e})`);break;case"ping":case"initialize":break}}async _oninitialize(e){let t=e.params.protocolVersion;return this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,{protocolVersion:zs.includes(t)?t:Ra,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},Mt)}async createMessage(e,t){return this.request({method:"sampling/createMessage",params:e},Fa,t)}async elicitInput(e,t){let s=await this.request({method:"elicitation/create",params:e},La,t);if(s.action==="accept"&&s.content)try{let r=new lo.default,n=r.compile(e.requestedSchema);if(!n(s.content))throw new Ye(Ge.InvalidParams,`Elicitation response content does not match requested schema: ${r.errorsText(n.errors)}`)}catch(r){throw r instanceof Ye?r:new Ye(Ge.InternalError,`Error validating elicitation response: ${r}`)}return s}async listRoots(e,t){return this.request({method:"roots/list",params:e},Ma,t)}async sendLoggingMessage(e,t){if(this._capabilities.logging&&!this.isMessageIgnored(e.level,t))return this.notification({method:"notifications/message",params:e})}async sendResourceUpdated(e){return this.notification({method:"notifications/resources/updated",params:e})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}};var us=$s(require("node:process"),1);var da=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(` +`);if(e===-1)return null;let t=this._buffer.toString("utf8",0,e).replace(/\r$/,"");return this._buffer=this._buffer.subarray(e+1),sf(t)}clear(){this._buffer=void 0}};function sf(a){return Gs.parse(JSON.parse(a))}function co(a){return JSON.stringify(a)+` +`}var fa=class{constructor(e=us.default.stdin,t=us.default.stdout){this._stdin=e,this._stdout=t,this._readBuffer=new da,this._started=!1,this._ondata=s=>{this._readBuffer.append(s),this.processReadBuffer()},this._onerror=s=>{var r;(r=this.onerror)===null||r===void 0||r.call(this,s)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(var e,t;;)try{let s=this._readBuffer.readMessage();if(s===null)break;(e=this.onmessage)===null||e===void 0||e.call(this,s)}catch(s){(t=this.onerror)===null||t===void 0||t.call(this,s)}}async close(){var e;this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),(e=this.onclose)===null||e===void 0||e.call(this)}send(e){return new Promise(t=>{let s=co(e);this._stdout.write(s)?t():this._stdout.once("drain",t)})}};var fo=Symbol("Let zodToJsonSchema decide on which parser to use");var uo={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:"definitions",target:"jsonSchema7",strictUnions:!1,definitions:{},errorMessages:!1,markdownDescription:!1,patternStrategy:"escape",applyRegexFlags:!1,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref",openAiAnyTypeName:"OpenAiAnyType"},ho=a=>typeof a=="string"?{...uo,name:a}:{...uo,...a};var po=a=>{let e=ho(a),t=e.name!==void 0?[...e.basePath,e.definitionPath,e.name]:e.basePath;return{...e,flags:{hasReferencedOpenAiAnyType:!1},currentPath:t,propertyPath:void 0,seen:new Map(Object.entries(e.definitions).map(([s,r])=>[r._def,{def:r._def,path:[...e.basePath,e.definitionPath,s],jsonSchema:void 0}]))}};function ds(a,e,t,s){s?.errorMessages&&t&&(a.errorMessage={...a.errorMessage,[e]:t})}function ee(a,e,t,s,r){a[e]=t,ds(a,e,s,r)}var ha=(a,e)=>{let t=0;for(;tB(a.innerType._def,e);function fs(a,e,t){let s=t??e.dateStrategy;if(Array.isArray(s))return{anyOf:s.map((r,n)=>fs(a,e,r))};switch(s){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return nf(a,e)}}var nf=(a,e)=>{let t={type:"integer",format:"unix-time"};if(e.target==="openApi3")return t;for(let s of a.checks)switch(s.kind){case"min":ee(t,"minimum",s.value,s.message,e);break;case"max":ee(t,"maximum",s.value,s.message,e);break}return t};function bo(a,e){return{...B(a.innerType._def,e),default:a.defaultValue()}}function _o(a,e){return e.effectStrategy==="input"?B(a.schema._def,e):fe(e)}function xo(a){return{type:"string",enum:Array.from(a.values)}}var of=a=>"type"in a&&a.type==="string"?!1:"allOf"in a;function Po(a,e){let t=[B(a.left._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),B(a.right._def,{...e,currentPath:[...e.currentPath,"allOf","1"]})].filter(n=>!!n),s=e.target==="jsonSchema2019-09"?{unevaluatedProperties:!1}:void 0,r=[];return t.forEach(n=>{if(of(n))r.push(...n.allOf),n.unevaluatedProperties===void 0&&(s=void 0);else{let l=n;if("additionalProperties"in n&&n.additionalProperties===!1){let{additionalProperties:o,...d}=n;l=d}else s=void 0;r.push(l)}}),r.length?{allOf:r,...s}:void 0}function Eo(a,e){let t=typeof a.value;return t!=="bigint"&&t!=="number"&&t!=="boolean"&&t!=="string"?{type:Array.isArray(a.value)?"array":"object"}:e.target==="openApi3"?{type:t==="bigint"?"integer":t,enum:[a.value]}:{type:t==="bigint"?"integer":t,const:a.value}}var hs,Xe={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(hs===void 0&&(hs=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),hs),uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function ma(a,e){let t={type:"string"};if(a.checks)for(let s of a.checks)switch(s.kind){case"min":ee(t,"minLength",typeof t.minLength=="number"?Math.max(t.minLength,s.value):s.value,s.message,e);break;case"max":ee(t,"maxLength",typeof t.maxLength=="number"?Math.min(t.maxLength,s.value):s.value,s.message,e);break;case"email":switch(e.emailStrategy){case"format:email":er(t,"email",s.message,e);break;case"format:idn-email":er(t,"idn-email",s.message,e);break;case"pattern:zod":Ie(t,Xe.email,s.message,e);break}break;case"url":er(t,"uri",s.message,e);break;case"uuid":er(t,"uuid",s.message,e);break;case"regex":Ie(t,s.regex,s.message,e);break;case"cuid":Ie(t,Xe.cuid,s.message,e);break;case"cuid2":Ie(t,Xe.cuid2,s.message,e);break;case"startsWith":Ie(t,RegExp(`^${ps(s.value,e)}`),s.message,e);break;case"endsWith":Ie(t,RegExp(`${ps(s.value,e)}$`),s.message,e);break;case"datetime":er(t,"date-time",s.message,e);break;case"date":er(t,"date",s.message,e);break;case"time":er(t,"time",s.message,e);break;case"duration":er(t,"duration",s.message,e);break;case"length":ee(t,"minLength",typeof t.minLength=="number"?Math.max(t.minLength,s.value):s.value,s.message,e),ee(t,"maxLength",typeof t.maxLength=="number"?Math.min(t.maxLength,s.value):s.value,s.message,e);break;case"includes":{Ie(t,RegExp(ps(s.value,e)),s.message,e);break}case"ip":{s.version!=="v6"&&er(t,"ipv4",s.message,e),s.version!=="v4"&&er(t,"ipv6",s.message,e);break}case"base64url":Ie(t,Xe.base64url,s.message,e);break;case"jwt":Ie(t,Xe.jwt,s.message,e);break;case"cidr":{s.version!=="v6"&&Ie(t,Xe.ipv4Cidr,s.message,e),s.version!=="v4"&&Ie(t,Xe.ipv6Cidr,s.message,e);break}case"emoji":Ie(t,Xe.emoji(),s.message,e);break;case"ulid":{Ie(t,Xe.ulid,s.message,e);break}case"base64":{switch(e.base64Strategy){case"format:binary":{er(t,"binary",s.message,e);break}case"contentEncoding:base64":{ee(t,"contentEncoding","base64",s.message,e);break}case"pattern:zod":{Ie(t,Xe.base64,s.message,e);break}}break}case"nanoid":Ie(t,Xe.nanoid,s.message,e);case"toLowerCase":case"toUpperCase":case"trim":break;default:}return t}function ps(a,e){return e.patternStrategy==="escape"?cf(a):a}var lf=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function cf(a){let e="";for(let t=0;tr.format)?(a.anyOf||(a.anyOf=[]),a.format&&(a.anyOf.push({format:a.format,...a.errorMessage&&s.errorMessages&&{errorMessage:{format:a.errorMessage.format}}}),delete a.format,a.errorMessage&&(delete a.errorMessage.format,Object.keys(a.errorMessage).length===0&&delete a.errorMessage)),a.anyOf.push({format:e,...t&&s.errorMessages&&{errorMessage:{format:t}}})):ee(a,"format",e,t,s)}function Ie(a,e,t,s){a.pattern||a.allOf?.some(r=>r.pattern)?(a.allOf||(a.allOf=[]),a.pattern&&(a.allOf.push({pattern:a.pattern,...a.errorMessage&&s.errorMessages&&{errorMessage:{pattern:a.errorMessage.pattern}}}),delete a.pattern,a.errorMessage&&(delete a.errorMessage.pattern,Object.keys(a.errorMessage).length===0&&delete a.errorMessage)),a.allOf.push({pattern:So(e,s),...t&&s.errorMessages&&{errorMessage:{pattern:t}}})):ee(a,"pattern",So(e,s),t,s)}function So(a,e){if(!e.applyRegexFlags||!a.flags)return a.source;let t={i:a.flags.includes("i"),m:a.flags.includes("m"),s:a.flags.includes("s")},s=t.i?a.source.toLowerCase():a.source,r="",n=!1,l=!1,o=!1;for(let d=0;d({...s,[r]:B(a.valueType._def,{...e,currentPath:[...e.currentPath,"properties",r]})??fe(e)}),{}),additionalProperties:e.rejectedAdditionalProperties};let t={type:"object",additionalProperties:B(a.valueType._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]})??e.allowedAdditionalProperties};if(e.target==="openApi3")return t;if(a.keyType?._def.typeName===O.ZodString&&a.keyType._def.checks?.length){let{type:s,...r}=ma(a.keyType._def,e);return{...t,propertyNames:r}}else{if(a.keyType?._def.typeName===O.ZodEnum)return{...t,propertyNames:{enum:a.keyType._def.values}};if(a.keyType?._def.typeName===O.ZodBranded&&a.keyType._def.type._def.typeName===O.ZodString&&a.keyType._def.type._def.checks?.length){let{type:s,...r}=pa(a.keyType._def,e);return{...t,propertyNames:r}}}return t}function wo(a,e){if(e.mapStrategy==="record")return va(a,e);let t=B(a.keyType._def,{...e,currentPath:[...e.currentPath,"items","items","0"]})||fe(e),s=B(a.valueType._def,{...e,currentPath:[...e.currentPath,"items","items","1"]})||fe(e);return{type:"array",maxItems:125,items:{type:"array",items:[t,s],minItems:2,maxItems:2}}}function Ro(a){let e=a.values,s=Object.keys(a.values).filter(n=>typeof e[e[n]]!="number").map(n=>e[n]),r=Array.from(new Set(s.map(n=>typeof n)));return{type:r.length===1?r[0]==="string"?"string":"number":["string","number"],enum:s}}function Oo(a){return a.target==="openAi"?void 0:{not:fe({...a,currentPath:[...a.currentPath,"not"]})}}function Do(a){return a.target==="openApi3"?{enum:["null"],nullable:!0}:{type:"null"}}var Ot={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function To(a,e){if(e.target==="openApi3")return $o(a,e);let t=a.options instanceof Map?Array.from(a.options.values()):a.options;if(t.every(s=>s._def.typeName in Ot&&(!s._def.checks||!s._def.checks.length))){let s=t.reduce((r,n)=>{let l=Ot[n._def.typeName];return l&&!r.includes(l)?[...r,l]:r},[]);return{type:s.length>1?s:s[0]}}else if(t.every(s=>s._def.typeName==="ZodLiteral"&&!s.description)){let s=t.reduce((r,n)=>{let l=typeof n._def.value;switch(l){case"string":case"number":case"boolean":return[...r,l];case"bigint":return[...r,"integer"];case"object":if(n._def.value===null)return[...r,"null"];case"symbol":case"undefined":case"function":default:return r}},[]);if(s.length===t.length){let r=s.filter((n,l,o)=>o.indexOf(n)===l);return{type:r.length>1?r:r[0],enum:t.reduce((n,l)=>n.includes(l._def.value)?n:[...n,l._def.value],[])}}}else if(t.every(s=>s._def.typeName==="ZodEnum"))return{type:"string",enum:t.reduce((s,r)=>[...s,...r._def.values.filter(n=>!s.includes(n))],[])};return $o(a,e)}var $o=(a,e)=>{let t=(a.options instanceof Map?Array.from(a.options.values()):a.options).map((s,r)=>B(s._def,{...e,currentPath:[...e.currentPath,"anyOf",`${r}`]})).filter(s=>!!s&&(!e.strictUnions||typeof s=="object"&&Object.keys(s).length>0));return t.length?{anyOf:t}:void 0};function Io(a,e){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(a.innerType._def.typeName)&&(!a.innerType._def.checks||!a.innerType._def.checks.length))return e.target==="openApi3"?{type:Ot[a.innerType._def.typeName],nullable:!0}:{type:[Ot[a.innerType._def.typeName],"null"]};if(e.target==="openApi3"){let s=B(a.innerType._def,{...e,currentPath:[...e.currentPath]});return s&&"$ref"in s?{allOf:[s],nullable:!0}:s&&{...s,nullable:!0}}let t=B(a.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","0"]});return t&&{anyOf:[t,{type:"null"}]}}function ko(a,e){let t={type:"number"};if(!a.checks)return t;for(let s of a.checks)switch(s.kind){case"int":t.type="integer",ds(t,"type",s.message,e);break;case"min":e.target==="jsonSchema7"?s.inclusive?ee(t,"minimum",s.value,s.message,e):ee(t,"exclusiveMinimum",s.value,s.message,e):(s.inclusive||(t.exclusiveMinimum=!0),ee(t,"minimum",s.value,s.message,e));break;case"max":e.target==="jsonSchema7"?s.inclusive?ee(t,"maximum",s.value,s.message,e):ee(t,"exclusiveMaximum",s.value,s.message,e):(s.inclusive||(t.exclusiveMaximum=!0),ee(t,"maximum",s.value,s.message,e));break;case"multipleOf":ee(t,"multipleOf",s.value,s.message,e);break}return t}function Ao(a,e){let t=e.target==="openAi",s={type:"object",properties:{}},r=[],n=a.shape();for(let o in n){let d=n[o];if(d===void 0||d._def===void 0)continue;let f=df(d);f&&t&&(d._def.typeName==="ZodOptional"&&(d=d._def.innerType),d.isNullable()||(d=d.nullable()),f=!1);let h=B(d._def,{...e,currentPath:[...e.currentPath,"properties",o],propertyPath:[...e.currentPath,"properties",o]});h!==void 0&&(s.properties[o]=h,f||r.push(o))}r.length&&(s.required=r);let l=uf(a,e);return l!==void 0&&(s.additionalProperties=l),s}function uf(a,e){if(a.catchall._def.typeName!=="ZodNever")return B(a.catchall._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]});switch(a.unknownKeys){case"passthrough":return e.allowedAdditionalProperties;case"strict":return e.rejectedAdditionalProperties;case"strip":return e.removeAdditionalStrategy==="strict"?e.allowedAdditionalProperties:e.rejectedAdditionalProperties}}function df(a){try{return a.isOptional()}catch{return!0}}var jo=(a,e)=>{if(e.currentPath.toString()===e.propertyPath?.toString())return B(a.innerType._def,e);let t=B(a.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","1"]});return t?{anyOf:[{not:fe(e)},t]}:fe(e)};var Co=(a,e)=>{if(e.pipeStrategy==="input")return B(a.in._def,e);if(e.pipeStrategy==="output")return B(a.out._def,e);let t=B(a.in._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),s=B(a.out._def,{...e,currentPath:[...e.currentPath,"allOf",t?"1":"0"]});return{allOf:[t,s].filter(r=>r!==void 0)}};function No(a,e){return B(a.type._def,e)}function Fo(a,e){let s={type:"array",uniqueItems:!0,items:B(a.valueType._def,{...e,currentPath:[...e.currentPath,"items"]})};return a.minSize&&ee(s,"minItems",a.minSize.value,a.minSize.message,e),a.maxSize&&ee(s,"maxItems",a.maxSize.value,a.maxSize.message,e),s}function Lo(a,e){return a.rest?{type:"array",minItems:a.items.length,items:a.items.map((t,s)=>B(t._def,{...e,currentPath:[...e.currentPath,"items",`${s}`]})).reduce((t,s)=>s===void 0?t:[...t,s],[]),additionalItems:B(a.rest._def,{...e,currentPath:[...e.currentPath,"additionalItems"]})}:{type:"array",minItems:a.items.length,maxItems:a.items.length,items:a.items.map((t,s)=>B(t._def,{...e,currentPath:[...e.currentPath,"items",`${s}`]})).reduce((t,s)=>s===void 0?t:[...t,s],[])}}function Mo(a){return{not:fe(a)}}function qo(a){return fe(a)}var zo=(a,e)=>B(a.innerType._def,e);var Uo=(a,e,t)=>{switch(e){case O.ZodString:return ma(a,t);case O.ZodNumber:return ko(a,t);case O.ZodObject:return Ao(a,t);case O.ZodBigInt:return vo(a,t);case O.ZodBoolean:return go();case O.ZodDate:return fs(a,t);case O.ZodUndefined:return Mo(t);case O.ZodNull:return Do(t);case O.ZodArray:return mo(a,t);case O.ZodUnion:case O.ZodDiscriminatedUnion:return To(a,t);case O.ZodIntersection:return Po(a,t);case O.ZodTuple:return Lo(a,t);case O.ZodRecord:return va(a,t);case O.ZodLiteral:return Eo(a,t);case O.ZodEnum:return xo(a);case O.ZodNativeEnum:return Ro(a);case O.ZodNullable:return Io(a,t);case O.ZodOptional:return jo(a,t);case O.ZodMap:return wo(a,t);case O.ZodSet:return Fo(a,t);case O.ZodLazy:return()=>a.getter()._def;case O.ZodPromise:return No(a,t);case O.ZodNaN:case O.ZodNever:return Oo(t);case O.ZodEffects:return _o(a,t);case O.ZodAny:return fe(t);case O.ZodUnknown:return qo(t);case O.ZodDefault:return bo(a,t);case O.ZodBranded:return pa(a,t);case O.ZodReadonly:return zo(a,t);case O.ZodCatch:return yo(a,t);case O.ZodPipeline:return Co(a,t);case O.ZodFunction:case O.ZodVoid:case O.ZodSymbol:return;default:return(s=>{})(e)}};function B(a,e,t=!1){let s=e.seen.get(a);if(e.override){let o=e.override?.(a,e,s,t);if(o!==fo)return o}if(s&&!t){let o=ff(s,e);if(o!==void 0)return o}let r={def:a,path:e.currentPath,jsonSchema:void 0};e.seen.set(a,r);let n=Uo(a,a.typeName,e),l=typeof n=="function"?B(n(),e):n;if(l&&hf(a,e,l),e.postProcess){let o=e.postProcess(l,a,e);return r.jsonSchema=l,o}return r.jsonSchema=l,l}var ff=(a,e)=>{switch(e.$refStrategy){case"root":return{$ref:a.path.join("/")};case"relative":return{$ref:ha(e.currentPath,a.path)};case"none":case"seen":return a.path.lengthe.currentPath[s]===t)?(console.warn(`Recursive reference detected at ${e.currentPath.join("/")}! Defaulting to any`),fe(e)):e.$refStrategy==="seen"?fe(e):void 0}},hf=(a,e,t)=>(a.description&&(t.description=a.description,e.markdownDescription&&(t.markdownDescription=a.description)),t);var ms=(a,e)=>{let t=po(e),s=typeof e=="object"&&e.definitions?Object.entries(e.definitions).reduce((d,[f,h])=>({...d,[f]:B(h._def,{...t,currentPath:[...t.basePath,t.definitionPath,f]},!0)??fe(t)}),{}):void 0,r=typeof e=="string"?e:e?.nameStrategy==="title"?void 0:e?.name,n=B(a._def,r===void 0?t:{...t,currentPath:[...t.basePath,t.definitionPath,r]},!1)??fe(t),l=typeof e=="object"&&e.name!==void 0&&e.nameStrategy==="title"?e.name:void 0;l!==void 0&&(n.title=l),t.flags.hasReferencedOpenAiAnyType&&(s||(s={}),s[t.openAiAnyTypeName]||(s[t.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:t.$refStrategy==="relative"?"1":[...t.basePath,t.definitionPath,t.openAiAnyTypeName].join("/")}}));let o=r===void 0?s?{...n,[t.definitionPath]:s}:n:{$ref:[...t.$refStrategy==="relative"?[]:t.basePath,t.definitionPath,r].join("/"),[t.definitionPath]:{...s,[r]:n}};return t.target==="jsonSchema7"?o.$schema="http://json-schema.org/draft-07/schema#":(t.target==="jsonSchema2019-09"||t.target==="openAi")&&(o.$schema="https://json-schema.org/draft/2019-09/schema#"),t.target==="openAi"&&("anyOf"in o||"oneOf"in o||"allOf"in o||"type"in o&&Array.isArray(o.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),o};var Vo=require("fs"),Zo=require("os"),Ho=require("path"),pf=(0,Ho.join)((0,Zo.homedir)(),".claude-mem","silent.log");function rr(a,e,t=""){let s=new Date().toISOString(),o=((new Error().stack||"").split(` +`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),d=o?`${o[1].split("/").pop()}:${o[2]}`:"unknown",f=`[${s}] [${d}] ${a}`;if(e!==void 0)try{f+=` ${JSON.stringify(e)}`}catch(h){f+=` [stringify error: ${h}]`}f+=` +`;try{(0,Vo.appendFileSync)(pf,f)}catch(h){console.error("[silent-debug] Failed to write to log:",h)}return t}var mf=parseInt(process.env.CLAUDE_MEM_WORKER_PORT||"37777",10),ga=`http://localhost:${mf}`,Ne={search:"/api/search",timeline:"/api/timeline",decisions:"/api/decisions",changes:"/api/changes",how_it_works:"/api/how-it-works",search_observations:"/api/search/observations",search_sessions:"/api/search/sessions",search_user_prompts:"/api/search/prompts",find_by_concept:"/api/search/by-concept",find_by_file:"/api/search/by-file",find_by_type:"/api/search/by-type",get_recent_context:"/api/context/recent",get_context_timeline:"/api/context/timeline",get_timeline_by_query:"/api/timeline/by-query"};async function Fe(a,e){rr("[search-server] \u2192 Worker API",{endpoint:a,params:e});try{let t=new URLSearchParams;for(let[l,o]of Object.entries(e))o!=null&&t.append(l,String(o));let s=`${ga}${a}?${t}`,r=await fetch(s);if(!r.ok){let l=await r.text();throw new Error(`Worker API error (${r.status}): ${l}`)}let n=await r.json();return rr("[search-server] \u2190 Worker API success",{endpoint:a}),n}catch(t){return rr("[search-server] \u2190 Worker API error",{endpoint:a,error:t.message}),{content:[{type:"text",text:`Error calling Worker API: ${t.message}`}],isError:!0}}}async function vf(){try{return(await fetch(`${ga}/api/health`)).ok}catch{return!1}}var Bo=[{name:"search",description:'Unified search across all memory types (observations, sessions, and user prompts) using vector-first semantic search (ChromaDB). Returns combined results from all document types. IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.',inputSchema:i.object({query:i.string().optional().describe("Natural language search query for semantic ranking via ChromaDB vector search. Optional - omit for date-filtered queries only (Chroma cannot filter by date, requires direct SQLite)."),format:i.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'),type:i.enum(["observations","sessions","prompts"]).optional().describe("Filter by document type (observations, sessions, or prompts). Omit to search all types."),obs_type:i.string().optional().describe('Filter observations by type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change). Only applies when type="observations"'),concepts:i.string().optional().describe('Filter by concept tags (single value or comma-separated list). Only applies when type="observations"'),files:i.string().optional().describe('Filter by file paths (single value or comma-separated list for partial match). Only applies when type="observations"'),project:i.string().optional().describe("Filter by project name"),dateStart:i.union([i.string(),i.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:i.union([i.string(),i.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:i.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:i.number().min(0).default(0).describe("Number of results to skip"),orderBy:i.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async a=>{let e=Ne.search;return await Fe(e,a)}},{name:"timeline",description:"Fetch timeline of observations around a specific point in time. Supports two modes: anchor-based (fetch observations before/after a specific observation ID) and query-based (semantic search for anchor point). IMPORTANT: Use anchor_id when you know the specific observation, or query to find an anchor point first.",inputSchema:i.object({query:i.string().optional().describe("Natural language query to find anchor observation (query-based mode). Mutually exclusive with anchor_id."),anchor_id:i.number().optional().describe("Observation ID to use as anchor (anchor-based mode). Mutually exclusive with query."),before:i.number().min(0).max(100).default(10).describe("Number of observations to fetch before anchor"),after:i.number().min(0).max(100).default(10).describe("Number of observations to fetch after anchor"),format:i.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'),obs_type:i.string().optional().describe("Filter observations by type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)"),concepts:i.string().optional().describe("Filter by concept tags (single value or comma-separated list)"),files:i.string().optional().describe("Filter by file paths (single value or comma-separated list for partial match)"),project:i.string().optional().describe("Filter by project name")}),handler:async a=>{let e=Ne.timeline;return await Fe(e,a)}},{name:"decisions",description:"Semantic shortcut for finding architectural, design, and implementation decisions. Optimized for decision-type observations with relevant keyword boosting.",inputSchema:i.object({query:i.string().describe("Natural language query for finding decisions"),format:i.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'),limit:i.number().min(1).max(100).default(20).describe("Maximum number of results"),dateStart:i.union([i.string(),i.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:i.union([i.string(),i.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)")}),handler:async a=>{let e=Ne.decisions;return await Fe(e,a)}},{name:"changes",description:"Semantic shortcut for finding code changes, refactorings, and modifications. Optimized for change-type observations with relevant keyword boosting.",inputSchema:i.object({query:i.string().describe("Natural language query for finding changes"),format:i.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'),limit:i.number().min(1).max(100).default(20).describe("Maximum number of results"),dateStart:i.union([i.string(),i.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:i.union([i.string(),i.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)")}),handler:async a=>{let e=Ne.changes;return await Fe(e,a)}},{name:"how_it_works",description:"Semantic shortcut for understanding system architecture, design patterns, and implementation details. Optimized for discovery-type observations with architecture/design keyword boosting.",inputSchema:i.object({query:i.string().describe("Natural language query for understanding how something works"),format:i.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'),limit:i.number().min(1).max(100).default(20).describe("Maximum number of results"),dateStart:i.union([i.string(),i.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:i.union([i.string(),i.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)")}),handler:async a=>{let e=Ne.how_it_works;return await Fe(e,a)}},{name:"search_observations",description:'[DEPRECATED - Use "search" with type="observations" instead] Search observations (facts/narratives) using FTS5 full-text search. Supports filtering by type, concepts, files, and date range.',inputSchema:i.object({query:i.string().optional().describe("Full-text search query (FTS5)"),format:i.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'),type:i.string().optional().describe("Filter by observation type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)"),concepts:i.string().optional().describe("Filter by concept tags (single value or comma-separated list)"),files:i.string().optional().describe("Filter by file paths (single value or comma-separated list for partial match)"),project:i.string().optional().describe("Filter by project name"),dateStart:i.union([i.string(),i.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:i.union([i.string(),i.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:i.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:i.number().min(0).default(0).describe("Number of results to skip"),orderBy:i.enum(["relevance","date_desc","date_asc"]).default("relevance").describe("Sort order (relevance only when query provided)")}),handler:async a=>{let e=Ne.search_observations;return await Fe(e,a)}},{name:"search_sessions",description:'[DEPRECATED - Use "search" with type="sessions" instead] Search session summaries using FTS5 full-text search. Returns both request_summary and learned_summary fields.',inputSchema:i.object({query:i.string().optional().describe("Full-text search query (FTS5)"),format:i.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'),project:i.string().optional().describe("Filter by project name"),dateStart:i.union([i.string(),i.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:i.union([i.string(),i.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:i.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:i.number().min(0).default(0).describe("Number of results to skip"),orderBy:i.enum(["relevance","date_desc","date_asc"]).default("relevance").describe("Sort order (relevance only when query provided)")}),handler:async a=>{let e=Ne.search_sessions;return await Fe(e,a)}},{name:"search_user_prompts",description:'[DEPRECATED - Use "search" with type="prompts" instead] Search user prompts using FTS5 full-text search. Searches prompt text only.',inputSchema:i.object({query:i.string().optional().describe("Full-text search query (FTS5)"),format:i.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'),project:i.string().optional().describe("Filter by project name"),dateStart:i.union([i.string(),i.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:i.union([i.string(),i.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:i.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:i.number().min(0).default(0).describe("Number of results to skip"),orderBy:i.enum(["relevance","date_desc","date_asc"]).default("relevance").describe("Sort order (relevance only when query provided)")}),handler:async a=>{let e=Ne.search_user_prompts;return await Fe(e,a)}},{name:"find_by_concept",description:"Find observations tagged with specific concepts. Returns observations that match any of the provided concept tags.",inputSchema:i.object({concepts:i.string().describe("Concept tag(s) to filter by (single value or comma-separated list)"),format:i.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'),type:i.string().optional().describe("Filter by observation type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)"),files:i.string().optional().describe("Filter by file paths (single value or comma-separated list for partial match)"),project:i.string().optional().describe("Filter by project name"),dateStart:i.union([i.string(),i.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:i.union([i.string(),i.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:i.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:i.number().min(0).default(0).describe("Number of results to skip"),orderBy:i.enum(["date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async a=>{let e=Ne.find_by_concept;return await Fe(e,a)}},{name:"find_by_file",description:"Find observations related to specific file paths. Uses partial matching - searches for file paths containing the provided string.",inputSchema:i.object({files:i.string().describe("File path(s) to filter by (single value or comma-separated list for partial match)"),format:i.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'),type:i.string().optional().describe("Filter by observation type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)"),concepts:i.string().optional().describe("Filter by concept tags (single value or comma-separated list)"),project:i.string().optional().describe("Filter by project name"),dateStart:i.union([i.string(),i.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:i.union([i.string(),i.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:i.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:i.number().min(0).default(0).describe("Number of results to skip"),orderBy:i.enum(["date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async a=>{let e=Ne.find_by_file;return await Fe(e,a)}},{name:"find_by_type",description:"Find observations of specific types. Returns observations matching any of the provided observation types.",inputSchema:i.object({type:i.string().describe("Observation type(s) to filter by (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)"),format:i.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'),concepts:i.string().optional().describe("Filter by concept tags (single value or comma-separated list)"),files:i.string().optional().describe("Filter by file paths (single value or comma-separated list for partial match)"),project:i.string().optional().describe("Filter by project name"),dateStart:i.union([i.string(),i.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:i.union([i.string(),i.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:i.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:i.number().min(0).default(0).describe("Number of results to skip"),orderBy:i.enum(["date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async a=>{let e=Ne.find_by_type;return await Fe(e,a)}},{name:"get_recent_context",description:"Get recent session context for timeline display. Returns recent observations, sessions, and user prompts with metadata for building timeline UI.",inputSchema:i.object({limit:i.number().min(1).max(100).default(30).describe("Maximum number of timeline items to return"),format:i.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'),type:i.string().optional().describe("Filter by observation type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)"),concepts:i.string().optional().describe("Filter by concept tags (single value or comma-separated list)"),files:i.string().optional().describe("Filter by file paths (single value or comma-separated list for partial match)"),project:i.string().optional().describe("Filter by project name"),dateStart:i.union([i.string(),i.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:i.union([i.string(),i.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)")}),handler:async a=>{let e=Ne.get_recent_context;return await Fe(e,a)}},{name:"get_context_timeline",description:"Get timeline of observations around a specific observation ID. Returns observations before and after the anchor point with metadata for timeline display.",inputSchema:i.object({anchor_id:i.number().describe("Observation ID to use as anchor point"),before:i.number().min(0).max(100).default(10).describe("Number of observations to fetch before anchor"),after:i.number().min(0).max(100).default(10).describe("Number of observations to fetch after anchor"),format:i.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'),type:i.string().optional().describe("Filter by observation type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)"),concepts:i.string().optional().describe("Filter by concept tags (single value or comma-separated list)"),files:i.string().optional().describe("Filter by file paths (single value or comma-separated list for partial match)"),project:i.string().optional().describe("Filter by project name")}),handler:async a=>{let e=Ne.get_context_timeline;return await Fe(e,a)}},{name:"get_timeline_by_query",description:"Combined search + timeline tool. First searches for observations matching the query, then returns timeline around the best match. Useful for finding specific observations and viewing their context.",inputSchema:i.object({query:i.string().describe("Natural language query to find anchor observation"),before:i.number().min(0).max(100).default(10).describe("Number of observations to fetch before anchor"),after:i.number().min(0).max(100).default(10).describe("Number of observations to fetch after anchor"),format:i.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'),type:i.string().optional().describe("Filter by observation type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)"),concepts:i.string().optional().describe("Filter by concept tags (single value or comma-separated list)"),files:i.string().optional().describe("Filter by file paths (single value or comma-separated list for partial match)"),project:i.string().optional().describe("Filter by project name"),dateStart:i.union([i.string(),i.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:i.union([i.string(),i.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)")}),handler:async a=>{let e=Ne.get_timeline_by_query;return await Fe(e,a)}}],vs=new ua({name:"claude-mem-search-server",version:"1.0.0"},{capabilities:{tools:{}}});vs.setRequestHandler(ja,async()=>({tools:Bo.map(a=>({name:a.name,description:a.description,inputSchema:ms(a.inputSchema)}))}));vs.setRequestHandler(Ca,async a=>{let e=Bo.find(t=>t.name===a.params.name);if(!e)throw new Error(`Unknown tool: ${a.params.name}`);try{return await e.handler(a.params.arguments||{})}catch(t){return{content:[{type:"text",text:`Tool execution failed: ${t.message}`}],isError:!0}}});async function Qo(){rr("[search-server] Shutting down..."),process.exit(0)}process.on("SIGTERM",Qo);process.on("SIGINT",Qo);async function gf(){let a=new fa;await vs.connect(a),rr("[search-server] Claude-mem search server started"),setTimeout(async()=>{await vf()?rr("[search-server] Worker available at",ga):(rr("[search-server] WARNING: Worker not available at",ga),rr("[search-server] Tools will fail until Worker is started"),rr("[search-server] Start Worker with: npm run worker:restart"))},0)}gf().catch(a=>{rr("[search-server] Fatal error:",a),process.exit(1)}); +/*! Bundled license information: + +uri-js/dist/es5/uri.all.js: + (** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js *) +*/ diff --git a/plugin/scripts/new-hook.js b/plugin/scripts/new-hook.js index 868add94..c58ee5ce 100755 --- a/plugin/scripts/new-hook.js +++ b/plugin/scripts/new-hook.js @@ -1,7 +1,7 @@ #!/usr/bin/env node -import ie from"path";import{stdin as X}from"process";import Y from"better-sqlite3";import{join as l,dirname as B,basename as ce}from"path";import{homedir as C}from"os";import{existsSync as le,mkdirSync as $}from"fs";import{fileURLToPath as j}from"url";function W(){return typeof __dirname<"u"?__dirname:B(j(import.meta.url))}var G=W(),E=process.env.CLAUDE_MEM_DATA_DIR||l(C(),".claude-mem"),f=process.env.CLAUDE_CONFIG_DIR||l(C(),".claude"),Te=l(E,"archives"),ge=l(E,"logs"),be=l(E,"trash"),Se=l(E,"backups"),Re=l(E,"settings.json"),D=l(E,"claude-mem.db"),he=l(E,"vector-db"),fe=l(f,"settings.json"),Ne=l(f,"commands"),Oe=l(f,"CLAUDE.md");function k(a){$(a,{recursive:!0})}function N(){return l(G,"..","..")}var O=(n=>(n[n.DEBUG=0]="DEBUG",n[n.INFO=1]="INFO",n[n.WARN=2]="WARN",n[n.ERROR=3]="ERROR",n[n.SILENT=4]="SILENT",n))(O||{}),I=class{level;useColor;constructor(){let e=process.env.CLAUDE_MEM_LOG_LEVEL?.toUpperCase()||"INFO";this.level=O[e]??1,this.useColor=process.stdout.isTTY??!1}correlationId(e,s){return`obs-${e}-${s}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.level===0?`${e.message} -${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Object.keys(e);return s.length===0?"{}":s.length<=3?JSON.stringify(e):`{${s.length} keys: ${s.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,s){if(!s)return e;try{let t=typeof s=="string"?JSON.parse(s):s;if(e==="Bash"&&t.command){let r=t.command.length>50?t.command.substring(0,50)+"...":t.command;return`${e}(${r})`}if(e==="Read"&&t.file_path){let r=t.file_path.split("/").pop()||t.file_path;return`${e}(${r})`}if(e==="Edit"&&t.file_path){let r=t.file_path.split("/").pop()||t.file_path;return`${e}(${r})`}if(e==="Write"&&t.file_path){let r=t.file_path.split("/").pop()||t.file_path;return`${e}(${r})`}return e}catch{return e}}log(e,s,t,r,n){if(e0&&(m=` {${Object.entries(d).map(([P,H])=>`${P}=${H}`).join(", ")}}`)}let T=`[${i}] [${o}] [${p}] ${c}${t}${m}${_}`;e===3?console.error(T):console.log(T)}debug(e,s,t,r){this.log(0,e,s,t,r)}info(e,s,t,r){this.log(1,e,s,t,r)}warn(e,s,t,r){this.log(2,e,s,t,r)}error(e,s,t,r){this.log(3,e,s,t,r)}dataIn(e,s,t,r){this.info(e,`\u2192 ${s}`,t,r)}dataOut(e,s,t,r){this.info(e,`\u2190 ${s}`,t,r)}success(e,s,t,r){this.info(e,`\u2713 ${s}`,t,r)}failure(e,s,t,r){this.error(e,`\u2717 ${s}`,t,r)}timing(e,s,t,r){this.info(e,`\u23F1 ${s}`,r,{duration:`${t}ms`})}},x=new I;var R=class{db;constructor(){k(E),this.db=new Y(D),this.db.pragma("journal_mode = WAL"),this.db.pragma("synchronous = NORMAL"),this.db.pragma("foreign_keys = ON"),this.initializeSchema(),this.ensureWorkerPortColumn(),this.ensurePromptTrackingColumns(),this.removeSessionSummariesUniqueConstraint(),this.addObservationHierarchicalFields(),this.makeObservationsTextNullable(),this.createUserPromptsTable(),this.ensureDiscoveryTokensColumn()}initializeSchema(){try{this.db.exec(` +import _e from"path";import{stdin as H}from"process";import K from"better-sqlite3";import{join as m,dirname as j,basename as le}from"path";import{homedir as v}from"os";import{existsSync as be,mkdirSync as $}from"fs";import{fileURLToPath as G}from"url";function Y(){return typeof __dirname<"u"?__dirname:j(G(import.meta.url))}var V=Y(),l=process.env.CLAUDE_MEM_DATA_DIR||m(v(),".claude-mem"),N=process.env.CLAUDE_CONFIG_DIR||m(v(),".claude"),Oe=m(l,"archives"),he=m(l,"logs"),Ne=m(l,"trash"),fe=m(l,"backups"),Ie=m(l,"settings.json"),y=m(l,"claude-mem.db"),Ae=m(l,"vector-db"),Le=m(N,"settings.json"),Ce=m(N,"commands"),De=m(N,"CLAUDE.md");function k(a){$(a,{recursive:!0})}function f(){return m(V,"..","..")}var I=(o=>(o[o.DEBUG=0]="DEBUG",o[o.INFO=1]="INFO",o[o.WARN=2]="WARN",o[o.ERROR=3]="ERROR",o[o.SILENT=4]="SILENT",o))(I||{}),A=class{level;useColor;constructor(){let e=process.env.CLAUDE_MEM_LOG_LEVEL?.toUpperCase()||"INFO";this.level=I[e]??1,this.useColor=process.stdout.isTTY??!1}correlationId(e,s){return`obs-${e}-${s}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.level===0?`${e.message} +${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Object.keys(e);return s.length===0?"{}":s.length<=3?JSON.stringify(e):`{${s.length} keys: ${s.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,s){if(!s)return e;try{let t=typeof s=="string"?JSON.parse(s):s;if(e==="Bash"&&t.command){let r=t.command.length>50?t.command.substring(0,50)+"...":t.command;return`${e}(${r})`}if(e==="Read"&&t.file_path){let r=t.file_path.split("/").pop()||t.file_path;return`${e}(${r})`}if(e==="Edit"&&t.file_path){let r=t.file_path.split("/").pop()||t.file_path;return`${e}(${r})`}if(e==="Write"&&t.file_path){let r=t.file_path.split("/").pop()||t.file_path;return`${e}(${r})`}return e}catch{return e}}log(e,s,t,r,o){if(e0&&(_=` {${Object.entries(c).map(([B,W])=>`${B}=${W}`).join(", ")}}`)}let T=`[${n}] [${i}] [${p}] ${d}${t}${_}${E}`;e===3?console.error(T):console.log(T)}debug(e,s,t,r){this.log(0,e,s,t,r)}info(e,s,t,r){this.log(1,e,s,t,r)}warn(e,s,t,r){this.log(2,e,s,t,r)}error(e,s,t,r){this.log(3,e,s,t,r)}dataIn(e,s,t,r){this.info(e,`\u2192 ${s}`,t,r)}dataOut(e,s,t,r){this.info(e,`\u2190 ${s}`,t,r)}success(e,s,t,r){this.info(e,`\u2713 ${s}`,t,r)}failure(e,s,t,r){this.error(e,`\u2717 ${s}`,t,r)}timing(e,s,t,r){this.info(e,`\u23F1 ${s}`,r,{duration:`${t}ms`})}},x=new A;var R=class{db;constructor(){k(l),this.db=new K(y),this.db.pragma("journal_mode = WAL"),this.db.pragma("synchronous = NORMAL"),this.db.pragma("foreign_keys = ON"),this.initializeSchema(),this.ensureWorkerPortColumn(),this.ensurePromptTrackingColumns(),this.removeSessionSummariesUniqueConstraint(),this.addObservationHierarchicalFields(),this.makeObservationsTextNullable(),this.createUserPromptsTable(),this.ensureDiscoveryTokensColumn()}initializeSchema(){try{this.db.exec(` CREATE TABLE IF NOT EXISTS schema_versions ( id INTEGER PRIMARY KEY, version INTEGER UNIQUE NOT NULL, @@ -167,7 +167,7 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Obje INSERT INTO user_prompts_fts(rowid, prompt_text) VALUES (new.id, new.prompt_text); END; - `),this.db.exec("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString()),console.error("[SessionStore] Successfully created user_prompts table with FTS5 support")}catch(t){throw this.db.exec("ROLLBACK"),t}}catch(e){console.error("[SessionStore] Migration error (create user_prompts table):",e.message)}}ensureDiscoveryTokensColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(11))return;this.db.pragma("table_info(observations)").some(i=>i.name==="discovery_tokens")||(this.db.exec("ALTER TABLE observations ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.error("[SessionStore] Added discovery_tokens column to observations table")),this.db.pragma("table_info(session_summaries)").some(i=>i.name==="discovery_tokens")||(this.db.exec("ALTER TABLE session_summaries ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.error("[SessionStore] Added discovery_tokens column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(11,new Date().toISOString())}catch(e){throw console.error("[SessionStore] Discovery tokens migration error:",e.message),e}}getRecentSummaries(e,s=10){return this.db.prepare(` + `),this.db.exec("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString()),console.error("[SessionStore] Successfully created user_prompts table with FTS5 support")}catch(t){throw this.db.exec("ROLLBACK"),t}}catch(e){console.error("[SessionStore] Migration error (create user_prompts table):",e.message)}}ensureDiscoveryTokensColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(11))return;this.db.pragma("table_info(observations)").some(n=>n.name==="discovery_tokens")||(this.db.exec("ALTER TABLE observations ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.error("[SessionStore] Added discovery_tokens column to observations table")),this.db.pragma("table_info(session_summaries)").some(n=>n.name==="discovery_tokens")||(this.db.exec("ALTER TABLE session_summaries ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.error("[SessionStore] Added discovery_tokens column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(11,new Date().toISOString())}catch(e){throw console.error("[SessionStore] Discovery tokens migration error:",e.message),e}}getRecentSummaries(e,s=10){return this.db.prepare(` SELECT request, investigated, learned, completed, next_steps, files_read, files_edited, notes, prompt_number, created_at @@ -219,7 +219,17 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Obje FROM sdk_sessions WHERE project IS NOT NULL AND project != '' ORDER BY project ASC - `).all().map(t=>t.project)}getRecentSessionsWithStatus(e,s=3){return this.db.prepare(` + `).all().map(t=>t.project)}getLatestUserPrompt(e){return this.db.prepare(` + SELECT + up.*, + s.sdk_session_id, + s.project + FROM user_prompts up + JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id + WHERE up.claude_session_id = ? + ORDER BY up.created_at_epoch DESC + LIMIT 1 + `).get(e)}getRecentSessionsWithStatus(e,s=3){return this.db.prepare(` SELECT * FROM ( SELECT s.sdk_session_id, @@ -245,12 +255,12 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Obje SELECT * FROM observations WHERE id = ? - `).get(e)||null}getObservationsByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:r}=s,n=t==="date_asc"?"ASC":"DESC",i=r?`LIMIT ${r}`:"",o=e.map(()=>"?").join(",");return this.db.prepare(` + `).get(e)||null}getObservationsByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:r}=s,o=t==="date_asc"?"ASC":"DESC",n=r?`LIMIT ${r}`:"",i=e.map(()=>"?").join(",");return this.db.prepare(` SELECT * FROM observations - WHERE id IN (${o}) - ORDER BY created_at_epoch ${n} - ${i} + WHERE id IN (${i}) + ORDER BY created_at_epoch ${o} + ${n} `).all(...e)}getSummaryForSession(e){return this.db.prepare(` SELECT request, investigated, learned, completed, next_steps, @@ -263,7 +273,7 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Obje SELECT files_read, files_modified FROM observations WHERE sdk_session_id = ? - `).all(e),r=new Set,n=new Set;for(let i of t){if(i.files_read)try{let o=JSON.parse(i.files_read);Array.isArray(o)&&o.forEach(p=>r.add(p))}catch{}if(i.files_modified)try{let o=JSON.parse(i.files_modified);Array.isArray(o)&&o.forEach(p=>n.add(p))}catch{}}return{filesRead:Array.from(r),filesModified:Array.from(n)}}getSessionById(e){return this.db.prepare(` + `).all(e),r=new Set,o=new Set;for(let n of t){if(n.files_read)try{let i=JSON.parse(n.files_read);Array.isArray(i)&&i.forEach(p=>r.add(p))}catch{}if(n.files_modified)try{let i=JSON.parse(n.files_modified);Array.isArray(i)&&i.forEach(p=>o.add(p))}catch{}}return{filesRead:Array.from(r),filesModified:Array.from(o)}}getSessionById(e){return this.db.prepare(` SELECT id, claude_session_id, sdk_session_id, project, user_prompt FROM sdk_sessions WHERE id = ? @@ -290,17 +300,17 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Obje SELECT prompt_counter FROM sdk_sessions WHERE id = ? `).get(e)?.prompt_counter||1}getPromptCounter(e){return this.db.prepare(` SELECT prompt_counter FROM sdk_sessions WHERE id = ? - `).get(e)?.prompt_counter||0}createSDKSession(e,s,t){let r=new Date,n=r.getTime(),o=this.db.prepare(` + `).get(e)?.prompt_counter||0}createSDKSession(e,s,t){let r=new Date,o=r.getTime(),i=this.db.prepare(` INSERT OR IGNORE INTO sdk_sessions (claude_session_id, sdk_session_id, project, user_prompt, started_at, started_at_epoch, status) VALUES (?, ?, ?, ?, ?, ?, 'active') - `).run(e,e,s,t,r.toISOString(),n);return o.lastInsertRowid===0||o.changes===0?(s&&s.trim()!==""&&this.db.prepare(` + `).run(e,e,s,t,r.toISOString(),o);return i.lastInsertRowid===0||i.changes===0?(s&&s.trim()!==""&&this.db.prepare(` UPDATE sdk_sessions SET project = ?, user_prompt = ? WHERE claude_session_id = ? `).run(s,t,e),this.db.prepare(` SELECT id FROM sdk_sessions WHERE claude_session_id = ? LIMIT 1 - `).get(e).id):o.lastInsertRowid}updateSDKSessionId(e,s){return this.db.prepare(` + `).get(e).id):i.lastInsertRowid}updateSDKSessionId(e,s){return this.db.prepare(` UPDATE sdk_sessions SET sdk_session_id = ? WHERE id = ? AND sdk_session_id IS NULL @@ -313,38 +323,38 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Obje FROM sdk_sessions WHERE id = ? LIMIT 1 - `).get(e)?.worker_port||null}saveUserPrompt(e,s,t){let r=new Date,n=r.getTime();return this.db.prepare(` + `).get(e)?.worker_port||null}saveUserPrompt(e,s,t){let r=new Date,o=r.getTime();return this.db.prepare(` INSERT INTO user_prompts (claude_session_id, prompt_number, prompt_text, created_at, created_at_epoch) VALUES (?, ?, ?, ?, ?) - `).run(e,s,t,r.toISOString(),n).lastInsertRowid}getUserPrompt(e,s){return this.db.prepare(` + `).run(e,s,t,r.toISOString(),o).lastInsertRowid}getUserPrompt(e,s){return this.db.prepare(` SELECT prompt_text FROM user_prompts WHERE claude_session_id = ? AND prompt_number = ? LIMIT 1 - `).get(e,s)?.prompt_text??null}storeObservation(e,s,t,r,n=0){let i=new Date,o=i.getTime();this.db.prepare(` + `).get(e,s)?.prompt_text??null}storeObservation(e,s,t,r,o=0){let n=new Date,i=n.getTime();this.db.prepare(` SELECT id FROM sdk_sessions WHERE sdk_session_id = ? `).get(e)||(this.db.prepare(` INSERT INTO sdk_sessions (claude_session_id, sdk_session_id, project, started_at, started_at_epoch, status) VALUES (?, ?, ?, ?, ?, 'active') - `).run(e,e,s,i.toISOString(),o),console.error(`[SessionStore] Auto-created session record for session_id: ${e}`));let m=this.db.prepare(` + `).run(e,e,s,n.toISOString(),i),console.error(`[SessionStore] Auto-created session record for session_id: ${e}`));let _=this.db.prepare(` INSERT INTO observations (sdk_session_id, project, type, title, subtitle, facts, narrative, concepts, files_read, files_modified, prompt_number, discovery_tokens, created_at, created_at_epoch) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `).run(e,s,t.type,t.title,t.subtitle,JSON.stringify(t.facts),t.narrative,JSON.stringify(t.concepts),JSON.stringify(t.files_read),JSON.stringify(t.files_modified),r||null,n,i.toISOString(),o);return{id:Number(m.lastInsertRowid),createdAtEpoch:o}}storeSummary(e,s,t,r,n=0){let i=new Date,o=i.getTime();this.db.prepare(` + `).run(e,s,t.type,t.title,t.subtitle,JSON.stringify(t.facts),t.narrative,JSON.stringify(t.concepts),JSON.stringify(t.files_read),JSON.stringify(t.files_modified),r||null,o,n.toISOString(),i);return{id:Number(_.lastInsertRowid),createdAtEpoch:i}}storeSummary(e,s,t,r,o=0){let n=new Date,i=n.getTime();this.db.prepare(` SELECT id FROM sdk_sessions WHERE sdk_session_id = ? `).get(e)||(this.db.prepare(` INSERT INTO sdk_sessions (claude_session_id, sdk_session_id, project, started_at, started_at_epoch, status) VALUES (?, ?, ?, ?, ?, 'active') - `).run(e,e,s,i.toISOString(),o),console.error(`[SessionStore] Auto-created session record for session_id: ${e}`));let m=this.db.prepare(` + `).run(e,e,s,n.toISOString(),i),console.error(`[SessionStore] Auto-created session record for session_id: ${e}`));let _=this.db.prepare(` INSERT INTO session_summaries (sdk_session_id, project, request, investigated, learned, completed, next_steps, notes, prompt_number, discovery_tokens, created_at, created_at_epoch) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `).run(e,s,t.request,t.investigated,t.learned,t.completed,t.next_steps,t.notes,r||null,n,i.toISOString(),o);return{id:Number(m.lastInsertRowid),createdAtEpoch:o}}markSessionCompleted(e){let s=new Date,t=s.getTime();this.db.prepare(` + `).run(e,s,t.request,t.investigated,t.learned,t.completed,t.next_steps,t.notes,r||null,o,n.toISOString(),i);return{id:Number(_.lastInsertRowid),createdAtEpoch:i}}markSessionCompleted(e){let s=new Date,t=s.getTime();this.db.prepare(` UPDATE sdk_sessions SET status = 'completed', completed_at = ?, completed_at_epoch = ? WHERE id = ? @@ -352,67 +362,67 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Obje UPDATE sdk_sessions SET status = 'failed', completed_at = ?, completed_at_epoch = ? WHERE id = ? - `).run(s.toISOString(),t,e)}getSessionSummariesByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:r}=s,n=t==="date_asc"?"ASC":"DESC",i=r?`LIMIT ${r}`:"",o=e.map(()=>"?").join(",");return this.db.prepare(` + `).run(s.toISOString(),t,e)}getSessionSummariesByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:r}=s,o=t==="date_asc"?"ASC":"DESC",n=r?`LIMIT ${r}`:"",i=e.map(()=>"?").join(",");return this.db.prepare(` SELECT * FROM session_summaries - WHERE id IN (${o}) - ORDER BY created_at_epoch ${n} - ${i} - `).all(...e)}getUserPromptsByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:r}=s,n=t==="date_asc"?"ASC":"DESC",i=r?`LIMIT ${r}`:"",o=e.map(()=>"?").join(",");return this.db.prepare(` + WHERE id IN (${i}) + ORDER BY created_at_epoch ${o} + ${n} + `).all(...e)}getUserPromptsByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:r}=s,o=t==="date_asc"?"ASC":"DESC",n=r?`LIMIT ${r}`:"",i=e.map(()=>"?").join(",");return this.db.prepare(` SELECT up.*, s.project, s.sdk_session_id FROM user_prompts up JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - WHERE up.id IN (${o}) - ORDER BY up.created_at_epoch ${n} - ${i} - `).all(...e)}getTimelineAroundTimestamp(e,s=10,t=10,r){return this.getTimelineAroundObservation(null,e,s,t,r)}getTimelineAroundObservation(e,s,t=10,r=10,n){let i=n?"AND project = ?":"",o=n?[n]:[],p,c;if(e!==null){let g=` + WHERE up.id IN (${i}) + ORDER BY up.created_at_epoch ${o} + ${n} + `).all(...e)}getTimelineAroundTimestamp(e,s=10,t=10,r){return this.getTimelineAroundObservation(null,e,s,t,r)}getTimelineAroundObservation(e,s,t=10,r=10,o){let n=o?"AND project = ?":"",i=o?[o]:[],p,d;if(e!==null){let S=` SELECT id, created_at_epoch FROM observations - WHERE id <= ? ${i} + WHERE id <= ? ${n} ORDER BY id DESC LIMIT ? - `,S=` + `,b=` SELECT id, created_at_epoch FROM observations - WHERE id >= ? ${i} + WHERE id >= ? ${n} ORDER BY id ASC LIMIT ? - `;try{let u=this.db.prepare(g).all(e,...o,t+1),d=this.db.prepare(S).all(e,...o,r+1);if(u.length===0&&d.length===0)return{observations:[],sessions:[],prompts:[]};p=u.length>0?u[u.length-1].created_at_epoch:s,c=d.length>0?d[d.length-1].created_at_epoch:s}catch(u){return console.error("[SessionStore] Error getting boundary observations:",u.message),{observations:[],sessions:[],prompts:[]}}}else{let g=` + `;try{let u=this.db.prepare(S).all(e,...i,t+1),c=this.db.prepare(b).all(e,...i,r+1);if(u.length===0&&c.length===0)return{observations:[],sessions:[],prompts:[]};p=u.length>0?u[u.length-1].created_at_epoch:s,d=c.length>0?c[c.length-1].created_at_epoch:s}catch(u){return console.error("[SessionStore] Error getting boundary observations:",u.message),{observations:[],sessions:[],prompts:[]}}}else{let S=` SELECT created_at_epoch FROM observations - WHERE created_at_epoch <= ? ${i} + WHERE created_at_epoch <= ? ${n} ORDER BY created_at_epoch DESC LIMIT ? - `,S=` + `,b=` SELECT created_at_epoch FROM observations - WHERE created_at_epoch >= ? ${i} + WHERE created_at_epoch >= ? ${n} ORDER BY created_at_epoch ASC LIMIT ? - `;try{let u=this.db.prepare(g).all(s,...o,t),d=this.db.prepare(S).all(s,...o,r+1);if(u.length===0&&d.length===0)return{observations:[],sessions:[],prompts:[]};p=u.length>0?u[u.length-1].created_at_epoch:s,c=d.length>0?d[d.length-1].created_at_epoch:s}catch(u){return console.error("[SessionStore] Error getting boundary timestamps:",u.message),{observations:[],sessions:[],prompts:[]}}}let _=` + `;try{let u=this.db.prepare(S).all(s,...i,t),c=this.db.prepare(b).all(s,...i,r+1);if(u.length===0&&c.length===0)return{observations:[],sessions:[],prompts:[]};p=u.length>0?u[u.length-1].created_at_epoch:s,d=c.length>0?c[c.length-1].created_at_epoch:s}catch(u){return console.error("[SessionStore] Error getting boundary timestamps:",u.message),{observations:[],sessions:[],prompts:[]}}}let E=` SELECT * FROM observations - WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${i} + WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${n} ORDER BY created_at_epoch ASC - `,m=` + `,_=` SELECT * FROM session_summaries - WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${i} + WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${n} ORDER BY created_at_epoch ASC `,T=` SELECT up.*, s.project, s.sdk_session_id FROM user_prompts up JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - WHERE up.created_at_epoch >= ? AND up.created_at_epoch <= ? ${i.replace("project","s.project")} + WHERE up.created_at_epoch >= ? AND up.created_at_epoch <= ? ${n.replace("project","s.project")} ORDER BY up.created_at_epoch ASC - `;try{let g=this.db.prepare(_).all(p,c,...o),S=this.db.prepare(m).all(p,c,...o),u=this.db.prepare(T).all(p,c,...o);return{observations:g,sessions:S.map(d=>({id:d.id,sdk_session_id:d.sdk_session_id,project:d.project,request:d.request,completed:d.completed,next_steps:d.next_steps,created_at:d.created_at,created_at_epoch:d.created_at_epoch})),prompts:u.map(d=>({id:d.id,claude_session_id:d.claude_session_id,project:d.project,prompt:d.prompt_text,created_at:d.created_at,created_at_epoch:d.created_at_epoch}))}}catch(g){return console.error("[SessionStore] Error querying timeline records:",g.message),{observations:[],sessions:[],prompts:[]}}}close(){this.db.close()}};function K(a,e,s){return a==="PreCompact"?e?{continue:!0,suppressOutput:!0}:{continue:!1,stopReason:s.reason||"Pre-compact operation failed",suppressOutput:!0}:a==="SessionStart"?e&&s.context?{continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"SessionStart",additionalContext:s.context}}:{continue:!0,suppressOutput:!0}:a==="UserPromptSubmit"||a==="PostToolUse"?{continue:!0,suppressOutput:!0}:a==="Stop"?{continue:!0,suppressOutput:!0}:{continue:e,suppressOutput:!0,...s.reason&&!e?{stopReason:s.reason}:{}}}function L(a,e,s={}){let t=K(a,e,s);return JSON.stringify(t)}import A from"path";import{homedir as V}from"os";import{existsSync as y,readFileSync as q}from"fs";import{spawnSync as J}from"child_process";var Q=100,z=500,Z=10;function h(){try{let a=A.join(V(),".claude-mem","settings.json");if(y(a)){let e=JSON.parse(q(a,"utf-8")),s=parseInt(e.env?.CLAUDE_MEM_WORKER_PORT,10);if(!isNaN(s))return s}}catch{}return parseInt(process.env.CLAUDE_MEM_WORKER_PORT||"37777",10)}async function U(){try{let a=h();return(await fetch(`http://127.0.0.1:${a}/health`,{signal:AbortSignal.timeout(Q)})).ok}catch{return!1}}async function ee(){try{let a=N(),e=A.join(a,"ecosystem.config.cjs");if(!y(e))throw new Error(`Ecosystem config not found at ${e}`);let s=A.join(a,"node_modules",".bin","pm2"),t=process.platform==="win32"?s+".cmd":s,r=y(t)?t:"pm2",n=J(r,["start",e],{cwd:a,stdio:"pipe",encoding:"utf-8",windowsHide:!0});if(n.status!==0)throw new Error(n.stderr||"PM2 start failed");for(let i=0;isetTimeout(o,z)),await U())return!0;return!1}catch{return!1}}async function w(){if(await U())return;if(!await ee()){let e=h(),s=N();throw new Error(`Worker service failed to start on port ${e}. + `;try{let S=this.db.prepare(E).all(p,d,...i),b=this.db.prepare(_).all(p,d,...i),u=this.db.prepare(T).all(p,d,...i);return{observations:S,sessions:b.map(c=>({id:c.id,sdk_session_id:c.sdk_session_id,project:c.project,request:c.request,completed:c.completed,next_steps:c.next_steps,created_at:c.created_at,created_at_epoch:c.created_at_epoch})),prompts:u.map(c=>({id:c.id,claude_session_id:c.claude_session_id,project:c.project,prompt:c.prompt_text,created_at:c.created_at,created_at_epoch:c.created_at_epoch}))}}catch(S){return console.error("[SessionStore] Error querying timeline records:",S.message),{observations:[],sessions:[],prompts:[]}}}close(){this.db.close()}};function q(a,e,s){return a==="PreCompact"?e?{continue:!0,suppressOutput:!0}:{continue:!1,stopReason:s.reason||"Pre-compact operation failed",suppressOutput:!0}:a==="SessionStart"?e&&s.context?{continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"SessionStart",additionalContext:s.context}}:{continue:!0,suppressOutput:!0}:a==="UserPromptSubmit"||a==="PostToolUse"?{continue:!0,suppressOutput:!0}:a==="Stop"?{continue:!0,suppressOutput:!0}:{continue:e,suppressOutput:!0,...s.reason&&!e?{stopReason:s.reason}:{}}}function L(a,e,s={}){let t=q(a,e,s);return JSON.stringify(t)}import C from"path";import{homedir as ee}from"os";import{spawnSync as se}from"child_process";import{readFileSync as z,existsSync as Z}from"fs";var J=["bugfix","feature","refactor","discovery","decision","change"],Q=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"];var U=J.join(","),M=Q.join(",");var O=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:U,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:M,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(e){return process.env[e]||this.DEFAULTS[e]}static getInt(e){let s=this.get(e);return parseInt(s,10)}static getBool(e){return this.get(e)==="true"}static loadFromFile(e){if(!Z(e))return this.getAllDefaults();let s=z(e,"utf-8"),r=JSON.parse(s).env||{},o={...this.DEFAULTS};for(let n of Object.keys(this.DEFAULTS))r[n]!==void 0&&(o[n]=r[n]);return o}};var te=100,re=500,oe=10;function h(){let a=C.join(ee(),".claude-mem","settings.json"),e=O.loadFromFile(a);return parseInt(e.CLAUDE_MEM_WORKER_PORT,10)}async function w(){try{let a=h();return(await fetch(`http://127.0.0.1:${a}/health`,{signal:AbortSignal.timeout(te)})).ok}catch{return!1}}async function ne(){try{let a=f(),e=C.join(a,"ecosystem.config.cjs");if(!existsSync(e))throw new Error(`Ecosystem config not found at ${e}`);let s=C.join(a,"node_modules",".bin","pm2"),t=process.platform==="win32"?s+".cmd":s,r=existsSync(t)?t:"pm2",o=se(r,["start",e],{cwd:a,stdio:"pipe",encoding:"utf-8",windowsHide:!0});if(o.status!==0)throw new Error(o.stderr||"PM2 start failed");for(let n=0;nsetTimeout(i,re)),await w())return!0;return!1}catch{return!1}}async function F(){if(await w())return;if(!await ne()){let e=h(),s=f();throw new Error(`Worker service failed to start on port ${e}. To start manually, run: cd ${s} npx pm2 start ecosystem.config.cjs -If already running, try: npx pm2 restart claude-mem-worker`)}}import{appendFileSync as se}from"fs";import{homedir as te}from"os";import{join as re}from"path";var ne=re(te(),".claude-mem","silent.log");function b(a,e,s=""){let t=new Date().toISOString(),o=((new Error().stack||"").split(` -`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),p=o?`${o[1].split("/").pop()}:${o[2]}`:"unknown",c=`[${t}] [${p}] ${a}`;if(e!==void 0)try{c+=` ${JSON.stringify(e)}`}catch(_){c+=` [stringify error: ${_}]`}c+=` -`;try{se(ne,c)}catch(_){console.error("[silent-debug] Failed to write to log:",_)}return s}var M=100;function oe(a){let e=(a.match(//g)||[]).length,s=(a.match(//g)||[]).length;return e+s}function F(a){if(typeof a!="string")return b("[tag-stripping] received non-string for prompt context:",{type:typeof a}),"";let e=oe(a);return e>M&&b("[tag-stripping] tag count exceeds limit, truncating:",{tagCount:e,maxAllowed:M,contentLength:a.length}),a.replace(/[\s\S]*?<\/claude-mem-context>/g,"").replace(/[\s\S]*?<\/private>/g,"").trim()}async function ae(a){if(!a)throw new Error("newHook requires input");let{session_id:e,cwd:s,prompt:t}=a;b("[new-hook] Input received",{session_id:e,cwd:s,cwd_type:typeof s,cwd_length:s?.length,has_cwd:!!s,prompt_length:t?.length});let r=ie.basename(s);b("[new-hook] Project extracted",{project:r,project_type:typeof r,project_length:r?.length,is_empty:r==="",cwd_was:s}),await w();let n=new R,i=n.createSDKSession(e,r,t),o=n.incrementPromptCounter(i),p=F(t);if(!p||p.trim()===""){b("[new-hook] Prompt entirely private, skipping memory operations",{session_id:e,promptNumber:o,originalLength:t.length}),n.close(),console.error(`[new-hook] Session ${i}, prompt #${o} (fully private - skipped)`),console.log(L("UserPromptSubmit",!0));return}n.saveUserPrompt(e,o,p),console.error(`[new-hook] Session ${i}, prompt #${o}`),n.close();let c=h(),_=t.startsWith("/")?t.substring(1):t;try{let m=await fetch(`http://127.0.0.1:${c}/sessions/${i}/init`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({project:r,userPrompt:_,promptNumber:o}),signal:AbortSignal.timeout(5e3)});if(!m.ok){let T=await m.text();throw new Error(`Failed to initialize session: ${m.status} ${T}`)}}catch(m){throw m.cause?.code==="ECONNREFUSED"||m.name==="TimeoutError"||m.message.includes("fetch failed")?new Error("There's a problem with the worker. If you just updated, type `pm2 restart claude-mem-worker` in your terminal to continue"):m}console.log(L("UserPromptSubmit",!0))}var v="";X.on("data",a=>v+=a);X.on("end",async()=>{let a=v?JSON.parse(v):void 0;await ae(a)}); +If already running, try: npx pm2 restart claude-mem-worker`)}}import{appendFileSync as ie}from"fs";import{homedir as ae}from"os";import{join as pe}from"path";var ce=pe(ae(),".claude-mem","silent.log");function g(a,e,s=""){let t=new Date().toISOString(),i=((new Error().stack||"").split(` +`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),p=i?`${i[1].split("/").pop()}:${i[2]}`:"unknown",d=`[${t}] [${p}] ${a}`;if(e!==void 0)try{d+=` ${JSON.stringify(e)}`}catch(E){d+=` [stringify error: ${E}]`}d+=` +`;try{ie(ce,d)}catch(E){console.error("[silent-debug] Failed to write to log:",E)}return s}var X=100;function de(a){let e=(a.match(//g)||[]).length,s=(a.match(//g)||[]).length;return e+s}function P(a){if(typeof a!="string")return g("[tag-stripping] received non-string for prompt context:",{type:typeof a}),"";let e=de(a);return e>X&&g("[tag-stripping] tag count exceeds limit, truncating:",{tagCount:e,maxAllowed:X,contentLength:a.length}),a.replace(/[\s\S]*?<\/claude-mem-context>/g,"").replace(/[\s\S]*?<\/private>/g,"").trim()}async function ue(a){if(!a)throw new Error("newHook requires input");let{session_id:e,cwd:s,prompt:t}=a;g("[new-hook] Input received",{session_id:e,cwd:s,cwd_type:typeof s,cwd_length:s?.length,has_cwd:!!s,prompt_length:t?.length});let r=_e.basename(s);g("[new-hook] Project extracted",{project:r,project_type:typeof r,project_length:r?.length,is_empty:r==="",cwd_was:s}),await F();let o=new R,n=o.createSDKSession(e,r,t),i=o.incrementPromptCounter(n),p=P(t);if(!p||p.trim()===""){g("[new-hook] Prompt entirely private, skipping memory operations",{session_id:e,promptNumber:i,originalLength:t.length}),o.close(),console.error(`[new-hook] Session ${n}, prompt #${i} (fully private - skipped)`),console.log(L("UserPromptSubmit",!0));return}o.saveUserPrompt(e,i,p),console.error(`[new-hook] Session ${n}, prompt #${i}`),o.close();let d=h(),E=t.startsWith("/")?t.substring(1):t;try{let _=await fetch(`http://127.0.0.1:${d}/sessions/${n}/init`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({project:r,userPrompt:E,promptNumber:i}),signal:AbortSignal.timeout(5e3)});if(!_.ok){let T=await _.text();throw new Error(`Failed to initialize session: ${_.status} ${T}`)}}catch(_){throw _.cause?.code==="ECONNREFUSED"||_.name==="TimeoutError"||_.message.includes("fetch failed")?new Error("There's a problem with the worker. If you just updated, type `pm2 restart claude-mem-worker` in your terminal to continue"):_}console.log(L("UserPromptSubmit",!0))}var D="";H.on("data",a=>D+=a);H.on("end",async()=>{let a=D?JSON.parse(D):void 0;await ue(a)}); diff --git a/plugin/scripts/save-hook.js b/plugin/scripts/save-hook.js index 73e8b1ed..819081df 100755 --- a/plugin/scripts/save-hook.js +++ b/plugin/scripts/save-hook.js @@ -1,418 +1,10 @@ #!/usr/bin/env node -import{stdin as X}from"process";import Y from"better-sqlite3";import{join as l,dirname as B,basename as ce}from"path";import{homedir as k}from"os";import{existsSync as le,mkdirSync as $}from"fs";import{fileURLToPath as j}from"url";function W(){return typeof __dirname<"u"?__dirname:B(j(import.meta.url))}var G=W(),b=process.env.CLAUDE_MEM_DATA_DIR||l(k(),".claude-mem"),O=process.env.CLAUDE_CONFIG_DIR||l(k(),".claude"),Te=l(b,"archives"),ge=l(b,"logs"),be=l(b,"trash"),Se=l(b,"backups"),Re=l(b,"settings.json"),x=l(b,"claude-mem.db"),he=l(b,"vector-db"),fe=l(O,"settings.json"),Ne=l(O,"commands"),Oe=l(O,"CLAUDE.md");function U(a){$(a,{recursive:!0})}function I(){return l(G,"..","..")}var L=(n=>(n[n.DEBUG=0]="DEBUG",n[n.INFO=1]="INFO",n[n.WARN=2]="WARN",n[n.ERROR=3]="ERROR",n[n.SILENT=4]="SILENT",n))(L||{}),A=class{level;useColor;constructor(){let e=process.env.CLAUDE_MEM_LOG_LEVEL?.toUpperCase()||"INFO";this.level=L[e]??1,this.useColor=process.stdout.isTTY??!1}correlationId(e,s){return`obs-${e}-${s}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.level===0?`${e.message} -${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Object.keys(e);return s.length===0?"{}":s.length<=3?JSON.stringify(e):`{${s.length} keys: ${s.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,s){if(!s)return e;try{let t=typeof s=="string"?JSON.parse(s):s;if(e==="Bash"&&t.command){let r=t.command.length>50?t.command.substring(0,50)+"...":t.command;return`${e}(${r})`}if(e==="Read"&&t.file_path){let r=t.file_path.split("/").pop()||t.file_path;return`${e}(${r})`}if(e==="Edit"&&t.file_path){let r=t.file_path.split("/").pop()||t.file_path;return`${e}(${r})`}if(e==="Write"&&t.file_path){let r=t.file_path.split("/").pop()||t.file_path;return`${e}(${r})`}return e}catch{return e}}log(e,s,t,r,n){if(e0&&(T=` {${Object.entries(d).map(([P,H])=>`${P}=${H}`).join(", ")}}`)}let _=`[${i}] [${o}] [${p}] ${u}${t}${T}${m}`;e===3?console.error(_):console.log(_)}debug(e,s,t,r){this.log(0,e,s,t,r)}info(e,s,t,r){this.log(1,e,s,t,r)}warn(e,s,t,r){this.log(2,e,s,t,r)}error(e,s,t,r){this.log(3,e,s,t,r)}dataIn(e,s,t,r){this.info(e,`\u2192 ${s}`,t,r)}dataOut(e,s,t,r){this.info(e,`\u2190 ${s}`,t,r)}success(e,s,t,r){this.info(e,`\u2713 ${s}`,t,r)}failure(e,s,t,r){this.error(e,`\u2717 ${s}`,t,r)}timing(e,s,t,r){this.info(e,`\u23F1 ${s}`,r,{duration:`${t}ms`})}},S=new A;var h=class{db;constructor(){U(b),this.db=new Y(x),this.db.pragma("journal_mode = WAL"),this.db.pragma("synchronous = NORMAL"),this.db.pragma("foreign_keys = ON"),this.initializeSchema(),this.ensureWorkerPortColumn(),this.ensurePromptTrackingColumns(),this.removeSessionSummariesUniqueConstraint(),this.addObservationHierarchicalFields(),this.makeObservationsTextNullable(),this.createUserPromptsTable(),this.ensureDiscoveryTokensColumn()}initializeSchema(){try{this.db.exec(` - CREATE TABLE IF NOT EXISTS schema_versions ( - id INTEGER PRIMARY KEY, - version INTEGER UNIQUE NOT NULL, - applied_at TEXT NOT NULL - ) - `);let e=this.db.prepare("SELECT version FROM schema_versions ORDER BY version").all();(e.length>0?Math.max(...e.map(t=>t.version)):0)===0&&(console.error("[SessionStore] Initializing fresh database with migration004..."),this.db.exec(` - CREATE TABLE IF NOT EXISTS sdk_sessions ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - claude_session_id TEXT UNIQUE NOT NULL, - sdk_session_id TEXT UNIQUE, - project TEXT NOT NULL, - user_prompt TEXT, - started_at TEXT NOT NULL, - started_at_epoch INTEGER NOT NULL, - completed_at TEXT, - completed_at_epoch INTEGER, - status TEXT CHECK(status IN ('active', 'completed', 'failed')) NOT NULL DEFAULT 'active' - ); - - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_claude_id ON sdk_sessions(claude_session_id); - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_sdk_id ON sdk_sessions(sdk_session_id); - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_project ON sdk_sessions(project); - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_status ON sdk_sessions(status); - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_started ON sdk_sessions(started_at_epoch DESC); - - CREATE TABLE IF NOT EXISTS observations ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - text TEXT NOT NULL, - type TEXT NOT NULL CHECK(type IN ('decision', 'bugfix', 'feature', 'refactor', 'discovery')), - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ); - - CREATE INDEX IF NOT EXISTS idx_observations_sdk_session ON observations(sdk_session_id); - CREATE INDEX IF NOT EXISTS idx_observations_project ON observations(project); - CREATE INDEX IF NOT EXISTS idx_observations_type ON observations(type); - CREATE INDEX IF NOT EXISTS idx_observations_created ON observations(created_at_epoch DESC); - - CREATE TABLE IF NOT EXISTS session_summaries ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT UNIQUE NOT NULL, - project TEXT NOT NULL, - request TEXT, - investigated TEXT, - learned TEXT, - completed TEXT, - next_steps TEXT, - files_read TEXT, - files_edited TEXT, - notes TEXT, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ); - - CREATE INDEX IF NOT EXISTS idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); - CREATE INDEX IF NOT EXISTS idx_session_summaries_project ON session_summaries(project); - CREATE INDEX IF NOT EXISTS idx_session_summaries_created ON session_summaries(created_at_epoch DESC); - `),this.db.prepare("INSERT INTO schema_versions (version, applied_at) VALUES (?, ?)").run(4,new Date().toISOString()),console.error("[SessionStore] Migration004 applied successfully"))}catch(e){throw console.error("[SessionStore] Schema initialization error:",e.message),e}}ensureWorkerPortColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(5))return;this.db.pragma("table_info(sdk_sessions)").some(r=>r.name==="worker_port")||(this.db.exec("ALTER TABLE sdk_sessions ADD COLUMN worker_port INTEGER"),console.error("[SessionStore] Added worker_port column to sdk_sessions table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(5,new Date().toISOString())}catch(e){console.error("[SessionStore] Migration error:",e.message)}}ensurePromptTrackingColumns(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(6))return;this.db.pragma("table_info(sdk_sessions)").some(p=>p.name==="prompt_counter")||(this.db.exec("ALTER TABLE sdk_sessions ADD COLUMN prompt_counter INTEGER DEFAULT 0"),console.error("[SessionStore] Added prompt_counter column to sdk_sessions table")),this.db.pragma("table_info(observations)").some(p=>p.name==="prompt_number")||(this.db.exec("ALTER TABLE observations ADD COLUMN prompt_number INTEGER"),console.error("[SessionStore] Added prompt_number column to observations table")),this.db.pragma("table_info(session_summaries)").some(p=>p.name==="prompt_number")||(this.db.exec("ALTER TABLE session_summaries ADD COLUMN prompt_number INTEGER"),console.error("[SessionStore] Added prompt_number column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(6,new Date().toISOString())}catch(e){console.error("[SessionStore] Prompt tracking migration error:",e.message)}}removeSessionSummariesUniqueConstraint(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(7))return;if(!this.db.pragma("index_list(session_summaries)").some(r=>r.unique===1)){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString());return}console.error("[SessionStore] Removing UNIQUE constraint from session_summaries.sdk_session_id..."),this.db.exec("BEGIN TRANSACTION");try{this.db.exec(` - CREATE TABLE session_summaries_new ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - request TEXT, - investigated TEXT, - learned TEXT, - completed TEXT, - next_steps TEXT, - files_read TEXT, - files_edited TEXT, - notes TEXT, - prompt_number INTEGER, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ) - `),this.db.exec(` - INSERT INTO session_summaries_new - SELECT id, sdk_session_id, project, request, investigated, learned, - completed, next_steps, files_read, files_edited, notes, - prompt_number, created_at, created_at_epoch - FROM session_summaries - `),this.db.exec("DROP TABLE session_summaries"),this.db.exec("ALTER TABLE session_summaries_new RENAME TO session_summaries"),this.db.exec(` - CREATE INDEX idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); - CREATE INDEX idx_session_summaries_project ON session_summaries(project); - CREATE INDEX idx_session_summaries_created ON session_summaries(created_at_epoch DESC); - `),this.db.exec("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString()),console.error("[SessionStore] Successfully removed UNIQUE constraint from session_summaries.sdk_session_id")}catch(r){throw this.db.exec("ROLLBACK"),r}}catch(e){console.error("[SessionStore] Migration error (remove UNIQUE constraint):",e.message)}}addObservationHierarchicalFields(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(8))return;if(this.db.pragma("table_info(observations)").some(r=>r.name==="title")){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString());return}console.error("[SessionStore] Adding hierarchical fields to observations table..."),this.db.exec(` - ALTER TABLE observations ADD COLUMN title TEXT; - ALTER TABLE observations ADD COLUMN subtitle TEXT; - ALTER TABLE observations ADD COLUMN facts TEXT; - ALTER TABLE observations ADD COLUMN narrative TEXT; - ALTER TABLE observations ADD COLUMN concepts TEXT; - ALTER TABLE observations ADD COLUMN files_read TEXT; - ALTER TABLE observations ADD COLUMN files_modified TEXT; - `),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString()),console.error("[SessionStore] Successfully added hierarchical fields to observations table")}catch(e){console.error("[SessionStore] Migration error (add hierarchical fields):",e.message)}}makeObservationsTextNullable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(9))return;let t=this.db.pragma("table_info(observations)").find(r=>r.name==="text");if(!t||t.notnull===0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString());return}console.error("[SessionStore] Making observations.text nullable..."),this.db.exec("BEGIN TRANSACTION");try{this.db.exec(` - CREATE TABLE observations_new ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - text TEXT, - type TEXT NOT NULL CHECK(type IN ('decision', 'bugfix', 'feature', 'refactor', 'discovery', 'change')), - title TEXT, - subtitle TEXT, - facts TEXT, - narrative TEXT, - concepts TEXT, - files_read TEXT, - files_modified TEXT, - prompt_number INTEGER, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ) - `),this.db.exec(` - INSERT INTO observations_new - SELECT id, sdk_session_id, project, text, type, title, subtitle, facts, - narrative, concepts, files_read, files_modified, prompt_number, - created_at, created_at_epoch - FROM observations - `),this.db.exec("DROP TABLE observations"),this.db.exec("ALTER TABLE observations_new RENAME TO observations"),this.db.exec(` - CREATE INDEX idx_observations_sdk_session ON observations(sdk_session_id); - CREATE INDEX idx_observations_project ON observations(project); - CREATE INDEX idx_observations_type ON observations(type); - CREATE INDEX idx_observations_created ON observations(created_at_epoch DESC); - `),this.db.exec("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString()),console.error("[SessionStore] Successfully made observations.text nullable")}catch(r){throw this.db.exec("ROLLBACK"),r}}catch(e){console.error("[SessionStore] Migration error (make text nullable):",e.message)}}createUserPromptsTable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(10))return;if(this.db.pragma("table_info(user_prompts)").length>0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString());return}console.error("[SessionStore] Creating user_prompts table with FTS5 support..."),this.db.exec("BEGIN TRANSACTION");try{this.db.exec(` - CREATE TABLE user_prompts ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - claude_session_id TEXT NOT NULL, - prompt_number INTEGER NOT NULL, - prompt_text TEXT NOT NULL, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(claude_session_id) REFERENCES sdk_sessions(claude_session_id) ON DELETE CASCADE - ); - - CREATE INDEX idx_user_prompts_claude_session ON user_prompts(claude_session_id); - CREATE INDEX idx_user_prompts_created ON user_prompts(created_at_epoch DESC); - CREATE INDEX idx_user_prompts_prompt_number ON user_prompts(prompt_number); - CREATE INDEX idx_user_prompts_lookup ON user_prompts(claude_session_id, prompt_number); - `),this.db.exec(` - CREATE VIRTUAL TABLE user_prompts_fts USING fts5( - prompt_text, - content='user_prompts', - content_rowid='id' - ); - `),this.db.exec(` - CREATE TRIGGER user_prompts_ai AFTER INSERT ON user_prompts BEGIN - INSERT INTO user_prompts_fts(rowid, prompt_text) - VALUES (new.id, new.prompt_text); - END; - - CREATE TRIGGER user_prompts_ad AFTER DELETE ON user_prompts BEGIN - INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) - VALUES('delete', old.id, old.prompt_text); - END; - - CREATE TRIGGER user_prompts_au AFTER UPDATE ON user_prompts BEGIN - INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) - VALUES('delete', old.id, old.prompt_text); - INSERT INTO user_prompts_fts(rowid, prompt_text) - VALUES (new.id, new.prompt_text); - END; - `),this.db.exec("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString()),console.error("[SessionStore] Successfully created user_prompts table with FTS5 support")}catch(t){throw this.db.exec("ROLLBACK"),t}}catch(e){console.error("[SessionStore] Migration error (create user_prompts table):",e.message)}}ensureDiscoveryTokensColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(11))return;this.db.pragma("table_info(observations)").some(i=>i.name==="discovery_tokens")||(this.db.exec("ALTER TABLE observations ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.error("[SessionStore] Added discovery_tokens column to observations table")),this.db.pragma("table_info(session_summaries)").some(i=>i.name==="discovery_tokens")||(this.db.exec("ALTER TABLE session_summaries ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.error("[SessionStore] Added discovery_tokens column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(11,new Date().toISOString())}catch(e){throw console.error("[SessionStore] Discovery tokens migration error:",e.message),e}}getRecentSummaries(e,s=10){return this.db.prepare(` - SELECT - request, investigated, learned, completed, next_steps, - files_read, files_edited, notes, prompt_number, created_at - FROM session_summaries - WHERE project = ? - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e,s)}getRecentSummariesWithSessionInfo(e,s=3){return this.db.prepare(` - SELECT - sdk_session_id, request, learned, completed, next_steps, - prompt_number, created_at - FROM session_summaries - WHERE project = ? - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e,s)}getRecentObservations(e,s=20){return this.db.prepare(` - SELECT type, text, prompt_number, created_at - FROM observations - WHERE project = ? - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e,s)}getAllRecentObservations(e=100){return this.db.prepare(` - SELECT id, type, title, subtitle, text, project, prompt_number, created_at, created_at_epoch - FROM observations - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e)}getAllRecentSummaries(e=50){return this.db.prepare(` - SELECT id, request, investigated, learned, completed, next_steps, - files_read, files_edited, notes, project, prompt_number, - created_at, created_at_epoch - FROM session_summaries - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e)}getAllRecentUserPrompts(e=100){return this.db.prepare(` - SELECT - up.id, - up.claude_session_id, - s.project, - up.prompt_number, - up.prompt_text, - up.created_at, - up.created_at_epoch - FROM user_prompts up - LEFT JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - ORDER BY up.created_at_epoch DESC - LIMIT ? - `).all(e)}getAllProjects(){return this.db.prepare(` - SELECT DISTINCT project - FROM sdk_sessions - WHERE project IS NOT NULL AND project != '' - ORDER BY project ASC - `).all().map(t=>t.project)}getRecentSessionsWithStatus(e,s=3){return this.db.prepare(` - SELECT * FROM ( - SELECT - s.sdk_session_id, - s.status, - s.started_at, - s.started_at_epoch, - s.user_prompt, - CASE WHEN sum.sdk_session_id IS NOT NULL THEN 1 ELSE 0 END as has_summary - FROM sdk_sessions s - LEFT JOIN session_summaries sum ON s.sdk_session_id = sum.sdk_session_id - WHERE s.project = ? AND s.sdk_session_id IS NOT NULL - GROUP BY s.sdk_session_id - ORDER BY s.started_at_epoch DESC - LIMIT ? - ) - ORDER BY started_at_epoch ASC - `).all(e,s)}getObservationsForSession(e){return this.db.prepare(` - SELECT title, subtitle, type, prompt_number - FROM observations - WHERE sdk_session_id = ? - ORDER BY created_at_epoch ASC - `).all(e)}getObservationById(e){return this.db.prepare(` - SELECT * - FROM observations - WHERE id = ? - `).get(e)||null}getObservationsByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:r}=s,n=t==="date_asc"?"ASC":"DESC",i=r?`LIMIT ${r}`:"",o=e.map(()=>"?").join(",");return this.db.prepare(` - SELECT * - FROM observations - WHERE id IN (${o}) - ORDER BY created_at_epoch ${n} - ${i} - `).all(...e)}getSummaryForSession(e){return this.db.prepare(` - SELECT - request, investigated, learned, completed, next_steps, - files_read, files_edited, notes, prompt_number, created_at - FROM session_summaries - WHERE sdk_session_id = ? - ORDER BY created_at_epoch DESC - LIMIT 1 - `).get(e)||null}getFilesForSession(e){let t=this.db.prepare(` - SELECT files_read, files_modified - FROM observations - WHERE sdk_session_id = ? - `).all(e),r=new Set,n=new Set;for(let i of t){if(i.files_read)try{let o=JSON.parse(i.files_read);Array.isArray(o)&&o.forEach(p=>r.add(p))}catch{}if(i.files_modified)try{let o=JSON.parse(i.files_modified);Array.isArray(o)&&o.forEach(p=>n.add(p))}catch{}}return{filesRead:Array.from(r),filesModified:Array.from(n)}}getSessionById(e){return this.db.prepare(` - SELECT id, claude_session_id, sdk_session_id, project, user_prompt - FROM sdk_sessions - WHERE id = ? - LIMIT 1 - `).get(e)||null}findActiveSDKSession(e){return this.db.prepare(` - SELECT id, sdk_session_id, project, worker_port - FROM sdk_sessions - WHERE claude_session_id = ? AND status = 'active' - LIMIT 1 - `).get(e)||null}findAnySDKSession(e){return this.db.prepare(` - SELECT id - FROM sdk_sessions - WHERE claude_session_id = ? - LIMIT 1 - `).get(e)||null}reactivateSession(e,s){this.db.prepare(` - UPDATE sdk_sessions - SET status = 'active', user_prompt = ?, worker_port = NULL - WHERE id = ? - `).run(s,e)}incrementPromptCounter(e){return this.db.prepare(` - UPDATE sdk_sessions - SET prompt_counter = COALESCE(prompt_counter, 0) + 1 - WHERE id = ? - `).run(e),this.db.prepare(` - SELECT prompt_counter FROM sdk_sessions WHERE id = ? - `).get(e)?.prompt_counter||1}getPromptCounter(e){return this.db.prepare(` - SELECT prompt_counter FROM sdk_sessions WHERE id = ? - `).get(e)?.prompt_counter||0}createSDKSession(e,s,t){let r=new Date,n=r.getTime(),o=this.db.prepare(` - INSERT OR IGNORE INTO sdk_sessions - (claude_session_id, sdk_session_id, project, user_prompt, started_at, started_at_epoch, status) - VALUES (?, ?, ?, ?, ?, ?, 'active') - `).run(e,e,s,t,r.toISOString(),n);return o.lastInsertRowid===0||o.changes===0?(s&&s.trim()!==""&&this.db.prepare(` - UPDATE sdk_sessions - SET project = ?, user_prompt = ? - WHERE claude_session_id = ? - `).run(s,t,e),this.db.prepare(` - SELECT id FROM sdk_sessions WHERE claude_session_id = ? LIMIT 1 - `).get(e).id):o.lastInsertRowid}updateSDKSessionId(e,s){return this.db.prepare(` - UPDATE sdk_sessions - SET sdk_session_id = ? - WHERE id = ? AND sdk_session_id IS NULL - `).run(s,e).changes===0?(S.debug("DB","sdk_session_id already set, skipping update",{sessionId:e,sdkSessionId:s}),!1):!0}setWorkerPort(e,s){this.db.prepare(` - UPDATE sdk_sessions - SET worker_port = ? - WHERE id = ? - `).run(s,e)}getWorkerPort(e){return this.db.prepare(` - SELECT worker_port - FROM sdk_sessions - WHERE id = ? - LIMIT 1 - `).get(e)?.worker_port||null}saveUserPrompt(e,s,t){let r=new Date,n=r.getTime();return this.db.prepare(` - INSERT INTO user_prompts - (claude_session_id, prompt_number, prompt_text, created_at, created_at_epoch) - VALUES (?, ?, ?, ?, ?) - `).run(e,s,t,r.toISOString(),n).lastInsertRowid}getUserPrompt(e,s){return this.db.prepare(` - SELECT prompt_text - FROM user_prompts - WHERE claude_session_id = ? AND prompt_number = ? - LIMIT 1 - `).get(e,s)?.prompt_text??null}storeObservation(e,s,t,r,n=0){let i=new Date,o=i.getTime();this.db.prepare(` - SELECT id FROM sdk_sessions WHERE sdk_session_id = ? - `).get(e)||(this.db.prepare(` - INSERT INTO sdk_sessions - (claude_session_id, sdk_session_id, project, started_at, started_at_epoch, status) - VALUES (?, ?, ?, ?, ?, 'active') - `).run(e,e,s,i.toISOString(),o),console.error(`[SessionStore] Auto-created session record for session_id: ${e}`));let T=this.db.prepare(` - INSERT INTO observations - (sdk_session_id, project, type, title, subtitle, facts, narrative, concepts, - files_read, files_modified, prompt_number, discovery_tokens, created_at, created_at_epoch) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `).run(e,s,t.type,t.title,t.subtitle,JSON.stringify(t.facts),t.narrative,JSON.stringify(t.concepts),JSON.stringify(t.files_read),JSON.stringify(t.files_modified),r||null,n,i.toISOString(),o);return{id:Number(T.lastInsertRowid),createdAtEpoch:o}}storeSummary(e,s,t,r,n=0){let i=new Date,o=i.getTime();this.db.prepare(` - SELECT id FROM sdk_sessions WHERE sdk_session_id = ? - `).get(e)||(this.db.prepare(` - INSERT INTO sdk_sessions - (claude_session_id, sdk_session_id, project, started_at, started_at_epoch, status) - VALUES (?, ?, ?, ?, ?, 'active') - `).run(e,e,s,i.toISOString(),o),console.error(`[SessionStore] Auto-created session record for session_id: ${e}`));let T=this.db.prepare(` - INSERT INTO session_summaries - (sdk_session_id, project, request, investigated, learned, completed, - next_steps, notes, prompt_number, discovery_tokens, created_at, created_at_epoch) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `).run(e,s,t.request,t.investigated,t.learned,t.completed,t.next_steps,t.notes,r||null,n,i.toISOString(),o);return{id:Number(T.lastInsertRowid),createdAtEpoch:o}}markSessionCompleted(e){let s=new Date,t=s.getTime();this.db.prepare(` - UPDATE sdk_sessions - SET status = 'completed', completed_at = ?, completed_at_epoch = ? - WHERE id = ? - `).run(s.toISOString(),t,e)}markSessionFailed(e){let s=new Date,t=s.getTime();this.db.prepare(` - UPDATE sdk_sessions - SET status = 'failed', completed_at = ?, completed_at_epoch = ? - WHERE id = ? - `).run(s.toISOString(),t,e)}getSessionSummariesByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:r}=s,n=t==="date_asc"?"ASC":"DESC",i=r?`LIMIT ${r}`:"",o=e.map(()=>"?").join(",");return this.db.prepare(` - SELECT * FROM session_summaries - WHERE id IN (${o}) - ORDER BY created_at_epoch ${n} - ${i} - `).all(...e)}getUserPromptsByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:r}=s,n=t==="date_asc"?"ASC":"DESC",i=r?`LIMIT ${r}`:"",o=e.map(()=>"?").join(",");return this.db.prepare(` - SELECT - up.*, - s.project, - s.sdk_session_id - FROM user_prompts up - JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - WHERE up.id IN (${o}) - ORDER BY up.created_at_epoch ${n} - ${i} - `).all(...e)}getTimelineAroundTimestamp(e,s=10,t=10,r){return this.getTimelineAroundObservation(null,e,s,t,r)}getTimelineAroundObservation(e,s,t=10,r=10,n){let i=n?"AND project = ?":"",o=n?[n]:[],p,u;if(e!==null){let E=` - SELECT id, created_at_epoch - FROM observations - WHERE id <= ? ${i} - ORDER BY id DESC - LIMIT ? - `,g=` - SELECT id, created_at_epoch - FROM observations - WHERE id >= ? ${i} - ORDER BY id ASC - LIMIT ? - `;try{let c=this.db.prepare(E).all(e,...o,t+1),d=this.db.prepare(g).all(e,...o,r+1);if(c.length===0&&d.length===0)return{observations:[],sessions:[],prompts:[]};p=c.length>0?c[c.length-1].created_at_epoch:s,u=d.length>0?d[d.length-1].created_at_epoch:s}catch(c){return console.error("[SessionStore] Error getting boundary observations:",c.message),{observations:[],sessions:[],prompts:[]}}}else{let E=` - SELECT created_at_epoch - FROM observations - WHERE created_at_epoch <= ? ${i} - ORDER BY created_at_epoch DESC - LIMIT ? - `,g=` - SELECT created_at_epoch - FROM observations - WHERE created_at_epoch >= ? ${i} - ORDER BY created_at_epoch ASC - LIMIT ? - `;try{let c=this.db.prepare(E).all(s,...o,t),d=this.db.prepare(g).all(s,...o,r+1);if(c.length===0&&d.length===0)return{observations:[],sessions:[],prompts:[]};p=c.length>0?c[c.length-1].created_at_epoch:s,u=d.length>0?d[d.length-1].created_at_epoch:s}catch(c){return console.error("[SessionStore] Error getting boundary timestamps:",c.message),{observations:[],sessions:[],prompts:[]}}}let m=` - SELECT * - FROM observations - WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${i} - ORDER BY created_at_epoch ASC - `,T=` - SELECT * - FROM session_summaries - WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${i} - ORDER BY created_at_epoch ASC - `,_=` - SELECT up.*, s.project, s.sdk_session_id - FROM user_prompts up - JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - WHERE up.created_at_epoch >= ? AND up.created_at_epoch <= ? ${i.replace("project","s.project")} - ORDER BY up.created_at_epoch ASC - `;try{let E=this.db.prepare(m).all(p,u,...o),g=this.db.prepare(T).all(p,u,...o),c=this.db.prepare(_).all(p,u,...o);return{observations:E,sessions:g.map(d=>({id:d.id,sdk_session_id:d.sdk_session_id,project:d.project,request:d.request,completed:d.completed,next_steps:d.next_steps,created_at:d.created_at,created_at_epoch:d.created_at_epoch})),prompts:c.map(d=>({id:d.id,claude_session_id:d.claude_session_id,project:d.project,prompt:d.prompt_text,created_at:d.created_at,created_at_epoch:d.created_at_epoch}))}}catch(E){return console.error("[SessionStore] Error querying timeline records:",E.message),{observations:[],sessions:[],prompts:[]}}}close(){this.db.close()}};function K(a,e,s){return a==="PreCompact"?e?{continue:!0,suppressOutput:!0}:{continue:!1,stopReason:s.reason||"Pre-compact operation failed",suppressOutput:!0}:a==="SessionStart"?e&&s.context?{continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"SessionStart",additionalContext:s.context}}:{continue:!0,suppressOutput:!0}:a==="UserPromptSubmit"||a==="PostToolUse"?{continue:!0,suppressOutput:!0}:a==="Stop"?{continue:!0,suppressOutput:!0}:{continue:e,suppressOutput:!0,...s.reason&&!e?{stopReason:s.reason}:{}}}function f(a,e,s={}){let t=K(a,e,s);return JSON.stringify(t)}import v from"path";import{homedir as V}from"os";import{existsSync as y,readFileSync as q}from"fs";import{spawnSync as J}from"child_process";var Q=100,z=500,Z=10;function N(){try{let a=v.join(V(),".claude-mem","settings.json");if(y(a)){let e=JSON.parse(q(a,"utf-8")),s=parseInt(e.env?.CLAUDE_MEM_WORKER_PORT,10);if(!isNaN(s))return s}}catch{}return parseInt(process.env.CLAUDE_MEM_WORKER_PORT||"37777",10)}async function w(){try{let a=N();return(await fetch(`http://127.0.0.1:${a}/health`,{signal:AbortSignal.timeout(Q)})).ok}catch{return!1}}async function ee(){try{let a=I(),e=v.join(a,"ecosystem.config.cjs");if(!y(e))throw new Error(`Ecosystem config not found at ${e}`);let s=v.join(a,"node_modules",".bin","pm2"),t=process.platform==="win32"?s+".cmd":s,r=y(t)?t:"pm2",n=J(r,["start",e],{cwd:a,stdio:"pipe",encoding:"utf-8",windowsHide:!0});if(n.status!==0)throw new Error(n.stderr||"PM2 start failed");for(let i=0;isetTimeout(o,z)),await w())return!0;return!1}catch{return!1}}async function M(){if(await w())return;if(!await ee()){let e=N(),s=I();throw new Error(`Worker service failed to start on port ${e}. +import{stdin as I}from"process";function v(n,t,e){return n==="PreCompact"?t?{continue:!0,suppressOutput:!0}:{continue:!1,stopReason:e.reason||"Pre-compact operation failed",suppressOutput:!0}:n==="SessionStart"?t&&e.context?{continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"SessionStart",additionalContext:e.context}}:{continue:!0,suppressOutput:!0}:n==="UserPromptSubmit"||n==="PostToolUse"?{continue:!0,suppressOutput:!0}:n==="Stop"?{continue:!0,suppressOutput:!0}:{continue:t,suppressOutput:!0,...e.reason&&!t?{stopReason:e.reason}:{}}}function S(n,t,e={}){let o=v(n,t,e);return JSON.stringify(o)}var T=(s=>(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(T||{}),O=class{level;useColor;constructor(){let t=process.env.CLAUDE_MEM_LOG_LEVEL?.toUpperCase()||"INFO";this.level=T[t]??1,this.useColor=process.stdout.isTTY??!1}correlationId(t,e){return`obs-${t}-${e}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.level===0?`${t.message} +${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let e=Object.keys(t);return e.length===0?"{}":e.length<=3?JSON.stringify(t):`{${e.length} keys: ${e.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,e){if(!e)return t;try{let o=typeof e=="string"?JSON.parse(e):e;if(t==="Bash"&&o.command){let r=o.command.length>50?o.command.substring(0,50)+"...":o.command;return`${t}(${r})`}if(t==="Read"&&o.file_path){let r=o.file_path.split("/").pop()||o.file_path;return`${t}(${r})`}if(t==="Edit"&&o.file_path){let r=o.file_path.split("/").pop()||o.file_path;return`${t}(${r})`}if(t==="Write"&&o.file_path){let r=o.file_path.split("/").pop()||o.file_path;return`${t}(${r})`}return t}catch{return t}}log(t,e,o,r,s){if(t0&&(D=` {${Object.entries(y).map(([x,P])=>`${x}=${P}`).join(", ")}}`)}let R=`[${a}] [${_}] [${c}] ${p}${o}${D}${g}`;t===3?console.error(R):console.log(R)}debug(t,e,o,r){this.log(0,t,e,o,r)}info(t,e,o,r){this.log(1,t,e,o,r)}warn(t,e,o,r){this.log(2,t,e,o,r)}error(t,e,o,r){this.log(3,t,e,o,r)}dataIn(t,e,o,r){this.info(t,`\u2192 ${e}`,o,r)}dataOut(t,e,o,r){this.info(t,`\u2190 ${e}`,o,r)}success(t,e,o,r){this.info(t,`\u2713 ${e}`,o,r)}failure(t,e,o,r){this.error(t,`\u2717 ${e}`,o,r)}timing(t,e,o,r){this.info(t,`\u23F1 ${e}`,r,{duration:`${o}ms`})}},E=new O;import C from"path";import{homedir as X}from"os";import{spawnSync as j}from"child_process";import{join as i,dirname as k,basename as nt}from"path";import{homedir as h}from"os";import{fileURLToPath as b}from"url";function w(){return typeof __dirname<"u"?__dirname:k(b(import.meta.url))}var $=w(),u=process.env.CLAUDE_MEM_DATA_DIR||i(h(),".claude-mem"),m=process.env.CLAUDE_CONFIG_DIR||i(h(),".claude"),ct=i(u,"archives"),ut=i(u,"logs"),pt=i(u,"trash"),_t=i(u,"backups"),Et=i(u,"settings.json"),lt=i(u,"claude-mem.db"),ft=i(u,"vector-db"),gt=i(m,"settings.json"),St=i(m,"commands"),Tt=i(m,"CLAUDE.md");function d(){return i($,"..","..")}import{readFileSync as F,existsSync as B}from"fs";var H=["bugfix","feature","refactor","discovery","decision","change"],W=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"];var L=H.join(","),M=W.join(",");var l=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:L,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:M,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(t){return process.env[t]||this.DEFAULTS[t]}static getInt(t){let e=this.get(t);return parseInt(e,10)}static getBool(t){return this.get(t)==="true"}static loadFromFile(t){if(!B(t))return this.getAllDefaults();let e=F(t,"utf-8"),r=JSON.parse(e).env||{},s={...this.DEFAULTS};for(let a of Object.keys(this.DEFAULTS))r[a]!==void 0&&(s[a]=r[a]);return s}};var K=100,V=500,G=10;function f(){let n=C.join(X(),".claude-mem","settings.json"),t=l.loadFromFile(n);return parseInt(t.CLAUDE_MEM_WORKER_PORT,10)}async function N(){try{let n=f();return(await fetch(`http://127.0.0.1:${n}/health`,{signal:AbortSignal.timeout(K)})).ok}catch{return!1}}async function Y(){try{let n=d(),t=C.join(n,"ecosystem.config.cjs");if(!existsSync(t))throw new Error(`Ecosystem config not found at ${t}`);let e=C.join(n,"node_modules",".bin","pm2"),o=process.platform==="win32"?e+".cmd":e,r=existsSync(o)?o:"pm2",s=j(r,["start",t],{cwd:n,stdio:"pipe",encoding:"utf-8",windowsHide:!0});if(s.status!==0)throw new Error(s.stderr||"PM2 start failed");for(let a=0;asetTimeout(_,V)),await N())return!0;return!1}catch{return!1}}async function U(){if(await N())return;if(!await Y()){let t=f(),e=d();throw new Error(`Worker service failed to start on port ${t}. To start manually, run: - cd ${s} + cd ${e} npx pm2 start ecosystem.config.cjs -If already running, try: npx pm2 restart claude-mem-worker`)}}import{appendFileSync as se}from"fs";import{homedir as te}from"os";import{join as re}from"path";var oe=re(te(),".claude-mem","silent.log");function R(a,e,s=""){let t=new Date().toISOString(),o=((new Error().stack||"").split(` -`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),p=o?`${o[1].split("/").pop()}:${o[2]}`:"unknown",u=`[${t}] [${p}] ${a}`;if(e!==void 0)try{u+=` ${JSON.stringify(e)}`}catch(m){u+=` [stringify error: ${m}]`}u+=` -`;try{se(oe,u)}catch(m){console.error("[silent-debug] Failed to write to log:",m)}return s}var F=100;function ne(a){let e=(a.match(//g)||[]).length,s=(a.match(//g)||[]).length;return e+s}function C(a){if(typeof a!="string")return R("[tag-stripping] received non-string for JSON context:",{type:typeof a}),"{}";let e=ne(a);return e>F&&R("[tag-stripping] tag count exceeds limit, truncating:",{tagCount:e,maxAllowed:F,contentLength:a.length}),a.replace(/[\s\S]*?<\/claude-mem-context>/g,"").replace(/[\s\S]*?<\/private>/g,"").trim()}var ie=new Set(["ListMcpResourcesTool","SlashCommand","Skill","TodoWrite","AskUserQuestion"]);async function ae(a){if(!a)throw new Error("saveHook requires input");let{session_id:e,cwd:s,tool_name:t,tool_input:r,tool_response:n}=a;if(ie.has(t)){console.log(f("PostToolUse",!0));return}await M();let i=new h,o=i.createSDKSession(e,"",""),p=i.getPromptCounter(o),u=i.getUserPrompt(e,p);if(!u||u.trim()===""){R("[save-hook] Skipping observation - user prompt was entirely private",{session_id:e,promptNumber:p,tool_name:t}),i.close(),console.log(f("PostToolUse",!0));return}i.close();let m=S.formatTool(t,r),T=N();S.dataIn("HOOK",`PostToolUse: ${m}`,{sessionId:o,workerPort:T});try{let _="{}",E="{}";try{_=r!==void 0?C(JSON.stringify(r)):"{}"}catch(c){R("[save-hook] Failed to stringify tool_input:",{error:c,tool_name:t}),_='{"error": "Failed to serialize tool_input"}'}try{E=n!==void 0?C(JSON.stringify(n)):"{}"}catch(c){R("[save-hook] Failed to stringify tool_response:",{error:c,tool_name:t}),E='{"error": "Failed to serialize tool_response"}'}let g=await fetch(`http://127.0.0.1:${T}/sessions/${o}/observations`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool_name:t,tool_input:_,tool_response:E,prompt_number:p,cwd:s||""}),signal:AbortSignal.timeout(2e3)});if(!g.ok){let c=await g.text();throw S.failure("HOOK","Failed to send observation",{sessionId:o,status:g.status},c),new Error(`Failed to send observation to worker: ${g.status} ${c}`)}S.debug("HOOK","Observation sent successfully",{sessionId:o,toolName:t})}catch(_){throw _.cause?.code==="ECONNREFUSED"||_.name==="TimeoutError"||_.message.includes("fetch failed")?new Error("There's a problem with the worker. If you just updated, type `pm2 restart claude-mem-worker` in your terminal to continue"):_}console.log(f("PostToolUse",!0))}var D="";X.on("data",a=>D+=a);X.on("end",async()=>{let a=D?JSON.parse(D):void 0;await ae(a)}); +If already running, try: npx pm2 restart claude-mem-worker`)}}var J=new Set(["ListMcpResourcesTool","SlashCommand","Skill","TodoWrite","AskUserQuestion"]);async function q(n){if(!n)throw new Error("saveHook requires input");let{session_id:t,cwd:e,tool_name:o,tool_input:r,tool_response:s}=n;if(J.has(o)){console.log(S("PostToolUse",!0));return}await U();let a=f(),_=E.formatTool(o,r);E.dataIn("HOOK",`PostToolUse: ${_}`,{workerPort:a});try{let c=await fetch(`http://127.0.0.1:${a}/api/sessions/observations`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({claudeSessionId:t,tool_name:o,tool_input:r,tool_response:s,cwd:e||""}),signal:AbortSignal.timeout(2e3)});if(!c.ok){let p=await c.text();throw E.failure("HOOK","Failed to send observation",{status:c.status},p),new Error(`Failed to send observation to worker: ${c.status} ${p}`)}E.debug("HOOK","Observation sent successfully",{toolName:o})}catch(c){throw c.cause?.code==="ECONNREFUSED"||c.name==="TimeoutError"||c.message.includes("fetch failed")?new Error("There's a problem with the worker. If you just updated, type `pm2 restart claude-mem-worker` in your terminal to continue"):c}console.log(S("PostToolUse",!0))}var A="";I.on("data",n=>A+=n);I.on("end",async()=>{let n=A?JSON.parse(A):void 0;await q(n)}); diff --git a/plugin/scripts/search-server.cjs b/plugin/scripts/search-server.cjs index 9e1c0749..0c3693f1 100755 --- a/plugin/scripts/search-server.cjs +++ b/plugin/scripts/search-server.cjs @@ -1,11 +1,11 @@ #!/usr/bin/env node -"use strict";var eu=Object.create;var zs=Object.defineProperty;var tu=Object.getOwnPropertyDescriptor;var ru=Object.getOwnPropertyNames;var su=Object.getPrototypeOf,au=Object.prototype.hasOwnProperty;var H=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),nu=(s,e)=>{for(var r in e)zs(s,r,{get:e[r],enumerable:!0})},ou=(s,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of ru(e))!au.call(s,t)&&t!==r&&zs(s,t,{get:()=>e[t],enumerable:!(a=tu(e,t))||a.enumerable});return s};var qt=(s,e,r)=>(r=s!=null?eu(su(s)):{},ou(e||!s||!s.__esModule?zs(r,"default",{value:s,enumerable:!0}):r,s));var Jn=H((ls,Kn)=>{(function(s,e){typeof ls=="object"&&typeof Kn<"u"?e(ls):typeof define=="function"&&define.amd?define(["exports"],e):e(s.URI=s.URI||{})})(ls,(function(s){"use strict";function e(){for(var _=arguments.length,m=Array(_),b=0;b<_;b++)m[b]=arguments[b];if(m.length>1){m[0]=m[0].slice(0,-1);for(var w=m.length-1,O=1;O= 0x80 (not a basic code point)","invalid-input":"Invalid input"},$=p-g,L=Math.floor,C=String.fromCharCode;function k(_){throw new RangeError(D[_])}function N(_,m){for(var b=[],w=_.length;w--;)b[w]=m(_[w]);return b}function A(_,m){var b=_.split("@"),w="";b.length>1&&(w=b[0]+"@",_=b[1]),_=_.replace(I,".");var O=_.split("."),B=N(O,m).join(".");return w+B}function M(_){for(var m=[],b=0,w=_.length;b=55296&&O<=56319&&b>1,m+=L(m/b);m>$*y>>1;O+=p)m=L(m/$);return L(O+($+1)*m/(m+v))},z=function(m){var b=[],w=m.length,O=0,B=E,J=P,ae=m.lastIndexOf(R);ae<0&&(ae=0);for(var le=0;le=128&&k("not-basic"),b.push(m.charCodeAt(le));for(var Se=ae>0?ae+1:0;Se=w&&k("invalid-input");var fe=W(m.charCodeAt(Se++));(fe>=p||fe>L((h-O)/me))&&k("overflow"),O+=fe*me;var ie=xe<=J?g:xe>=J+y?y:xe-J;if(feL(h/ve)&&k("overflow"),me*=ve}var ue=b.length+1;J=Q(O-se,ue,se==0),L(O/ue)>h-B&&k("overflow"),B+=L(O/ue),O%=ue,b.splice(O++,0,B)}return String.fromCodePoint.apply(String,b)},pe=function(m){var b=[];m=M(m);var w=m.length,O=E,B=0,J=P,ae=!0,le=!1,Se=void 0;try{for(var se=m[Symbol.iterator](),me;!(ae=(me=se.next()).done);ae=!0){var xe=me.value;xe<128&&b.push(C(xe))}}catch(Mt){le=!0,Se=Mt}finally{try{!ae&&se.return&&se.return()}finally{if(le)throw Se}}var fe=b.length,ie=fe;for(fe&&b.push(R);ie=O&&HeL((h-B)/Xe)&&k("overflow"),B+=(ve-O)*Xe,O=ve;var it=!0,Ft=!1,mt=void 0;try{for(var Or=m[Symbol.iterator](),zr;!(it=(zr=Or.next()).done);it=!0){var Zr=zr.value;if(Zrh&&k("overflow"),Zr==O){for(var ir=B,cr=p;;cr+=p){var vt=cr<=J?g:cr>=J+y?y:cr-J;if(ir>6|192).toString(16).toUpperCase()+"%"+(m&63|128).toString(16).toUpperCase():b="%"+(m>>12|224).toString(16).toUpperCase()+"%"+(m>>6&63|128).toString(16).toUpperCase()+"%"+(m&63|128).toString(16).toUpperCase(),b}function Ce(_){for(var m="",b=0,w=_.length;b=194&&O<224){if(w-b>=6){var B=parseInt(_.substr(b+4,2),16);m+=String.fromCharCode((O&31)<<6|B&63)}else m+=_.substr(b,6);b+=6}else if(O>=224){if(w-b>=9){var J=parseInt(_.substr(b+4,2),16),ae=parseInt(_.substr(b+7,2),16);m+=String.fromCharCode((O&15)<<12|(J&63)<<6|ae&63)}else m+=_.substr(b,9);b+=9}else m+=_.substr(b,3),b+=3}return m}function xt(_,m){function b(w){var O=Ce(w);return O.match(m.UNRESERVED)?O:w}return _.scheme&&(_.scheme=String(_.scheme).replace(m.PCT_ENCODED,b).toLowerCase().replace(m.NOT_SCHEME,"")),_.userinfo!==void 0&&(_.userinfo=String(_.userinfo).replace(m.PCT_ENCODED,b).replace(m.NOT_USERINFO,Te).replace(m.PCT_ENCODED,t)),_.host!==void 0&&(_.host=String(_.host).replace(m.PCT_ENCODED,b).toLowerCase().replace(m.NOT_HOST,Te).replace(m.PCT_ENCODED,t)),_.path!==void 0&&(_.path=String(_.path).replace(m.PCT_ENCODED,b).replace(_.scheme?m.NOT_PATH:m.NOT_PATH_NOSCHEME,Te).replace(m.PCT_ENCODED,t)),_.query!==void 0&&(_.query=String(_.query).replace(m.PCT_ENCODED,b).replace(m.NOT_QUERY,Te).replace(m.PCT_ENCODED,t)),_.fragment!==void 0&&(_.fragment=String(_.fragment).replace(m.PCT_ENCODED,b).replace(m.NOT_FRAGMENT,Te).replace(m.PCT_ENCODED,t)),_}function ft(_){return _.replace(/^0*(.*)/,"$1")||"0"}function Ee(_,m){var b=_.match(m.IPV4ADDRESS)||[],w=d(b,2),O=w[1];return O?O.split(".").map(ft).join("."):_}function ge(_,m){var b=_.match(m.IPV6ADDRESS)||[],w=d(b,3),O=w[1],B=w[2];if(O){for(var J=O.toLowerCase().split("::").reverse(),ae=d(J,2),le=ae[0],Se=ae[1],se=Se?Se.split(":").map(ft):[],me=le.split(":").map(ft),xe=m.IPV4ADDRESS.test(me[me.length-1]),fe=xe?7:8,ie=me.length-fe,ve=Array(fe),ue=0;ue1){var de=ve.slice(0,Ve.index),He=ve.slice(Ve.index+Ve.length);Ge=de.join(":")+"::"+He.join(":")}else Ge=ve.join(":");return B&&(Ge+="%"+B),Ge}else return _}var Ct=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,Ie="".match(/(){0}/)[1]===void 0;function ce(_){var m=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},b={},w=m.iri!==!1?u:l;m.reference==="suffix"&&(_=(m.scheme?m.scheme+":":"")+"//"+_);var O=_.match(Ct);if(O){Ie?(b.scheme=O[1],b.userinfo=O[3],b.host=O[4],b.port=parseInt(O[5],10),b.path=O[6]||"",b.query=O[7],b.fragment=O[8],isNaN(b.port)&&(b.port=O[5])):(b.scheme=O[1]||void 0,b.userinfo=_.indexOf("@")!==-1?O[3]:void 0,b.host=_.indexOf("//")!==-1?O[4]:void 0,b.port=parseInt(O[5],10),b.path=O[6]||"",b.query=_.indexOf("?")!==-1?O[7]:void 0,b.fragment=_.indexOf("#")!==-1?O[8]:void 0,isNaN(b.port)&&(b.port=_.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?O[4]:void 0)),b.host&&(b.host=ge(Ee(b.host,w),w)),b.scheme===void 0&&b.userinfo===void 0&&b.host===void 0&&b.port===void 0&&!b.path&&b.query===void 0?b.reference="same-document":b.scheme===void 0?b.reference="relative":b.fragment===void 0?b.reference="absolute":b.reference="uri",m.reference&&m.reference!=="suffix"&&m.reference!==b.reference&&(b.error=b.error||"URI is not a "+m.reference+" reference.");var B=be[(m.scheme||b.scheme||"").toLowerCase()];if(!m.unicodeSupport&&(!B||!B.unicodeSupport)){if(b.host&&(m.domainHost||B&&B.domainHost))try{b.host=oe.toASCII(b.host.replace(w.PCT_ENCODED,Ce).toLowerCase())}catch(J){b.error=b.error||"Host's domain name can not be converted to ASCII via punycode: "+J}xt(b,l)}else xt(b,w);B&&B.parse&&B.parse(b,m)}else b.error=b.error||"URI can not be parsed.";return b}function Rt(_,m){var b=m.iri!==!1?u:l,w=[];return _.userinfo!==void 0&&(w.push(_.userinfo),w.push("@")),_.host!==void 0&&w.push(ge(Ee(String(_.host),b),b).replace(b.IPV6ADDRESS,function(O,B,J){return"["+B+(J?"%25"+J:"")+"]"})),(typeof _.port=="number"||typeof _.port=="string")&&(w.push(":"),w.push(String(_.port))),w.length?w.join(""):void 0}var ht=/^\.\.?\//,kt=/^\/\.(\/|$)/,Lt=/^\/\.\.(\/|$)/,Oe=/^\/?(?:.|\n)*?(?=\/|$)/;function Ze(_){for(var m=[];_.length;)if(_.match(ht))_=_.replace(ht,"");else if(_.match(kt))_=_.replace(kt,"/");else if(_.match(Lt))_=_.replace(Lt,"/"),m.pop();else if(_==="."||_==="..")_="";else{var b=_.match(Oe);if(b){var w=b[0];_=_.slice(w.length),m.push(w)}else throw new Error("Unexpected dot segment condition")}return m.join("")}function Fe(_){var m=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},b=m.iri?u:l,w=[],O=be[(m.scheme||_.scheme||"").toLowerCase()];if(O&&O.serialize&&O.serialize(_,m),_.host&&!b.IPV6ADDRESS.test(_.host)){if(m.domainHost||O&&O.domainHost)try{_.host=m.iri?oe.toUnicode(_.host):oe.toASCII(_.host.replace(b.PCT_ENCODED,Ce).toLowerCase())}catch(ae){_.error=_.error||"Host's domain name can not be converted to "+(m.iri?"Unicode":"ASCII")+" via punycode: "+ae}}xt(_,b),m.reference!=="suffix"&&_.scheme&&(w.push(_.scheme),w.push(":"));var B=Rt(_,m);if(B!==void 0&&(m.reference!=="suffix"&&w.push("//"),w.push(B),_.path&&_.path.charAt(0)!=="/"&&w.push("/")),_.path!==void 0){var J=_.path;!m.absolutePath&&(!O||!O.absolutePath)&&(J=Ze(J)),B===void 0&&(J=J.replace(/^\/\//,"/%2F")),w.push(J)}return _.query!==void 0&&(w.push("?"),w.push(_.query)),_.fragment!==void 0&&(w.push("#"),w.push(_.fragment)),w.join("")}function ke(_,m){var b=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},w=arguments[3],O={};return w||(_=ce(Fe(_,b),b),m=ce(Fe(m,b),b)),b=b||{},!b.tolerant&&m.scheme?(O.scheme=m.scheme,O.userinfo=m.userinfo,O.host=m.host,O.port=m.port,O.path=Ze(m.path||""),O.query=m.query):(m.userinfo!==void 0||m.host!==void 0||m.port!==void 0?(O.userinfo=m.userinfo,O.host=m.host,O.port=m.port,O.path=Ze(m.path||""),O.query=m.query):(m.path?(m.path.charAt(0)==="/"?O.path=Ze(m.path):((_.userinfo!==void 0||_.host!==void 0||_.port!==void 0)&&!_.path?O.path="/"+m.path:_.path?O.path=_.path.slice(0,_.path.lastIndexOf("/")+1)+m.path:O.path=m.path,O.path=Ze(O.path)),O.query=m.query):(O.path=_.path,m.query!==void 0?O.query=m.query:O.query=_.query),O.userinfo=_.userinfo,O.host=_.host,O.port=_.port),O.scheme=_.scheme),O.fragment=m.fragment,O}function nt(_,m,b){var w=i({scheme:"null"},b);return Fe(ke(ce(_,w),ce(m,w),w,!0),w)}function Be(_,m){return typeof _=="string"?_=Fe(ce(_,m),m):a(_)==="object"&&(_=ce(Fe(_,m),m)),_}function Hr(_,m,b){return typeof _=="string"?_=Fe(ce(_,b),b):a(_)==="object"&&(_=Fe(_,b)),typeof m=="string"?m=Fe(ce(m,b),b):a(m)==="object"&&(m=Fe(m,b)),_===m}function Us(_,m){return _&&_.toString().replace(!m||!m.iri?l.ESCAPE:u.ESCAPE,Te)}function et(_,m){return _&&_.toString().replace(!m||!m.iri?l.PCT_ENCODED:u.PCT_ENCODED,Ce)}var Tr={scheme:"http",domainHost:!0,parse:function(m,b){return m.host||(m.error=m.error||"HTTP URIs must have a host."),m},serialize:function(m,b){var w=String(m.scheme).toLowerCase()==="https";return(m.port===(w?443:80)||m.port==="")&&(m.port=void 0),m.path||(m.path="/"),m}},pn={scheme:"https",domainHost:Tr.domainHost,parse:Tr.parse,serialize:Tr.serialize};function fn(_){return typeof _.secure=="boolean"?_.secure:String(_.scheme).toLowerCase()==="wss"}var wr={scheme:"ws",domainHost:!0,parse:function(m,b){var w=m;return w.secure=fn(w),w.resourceName=(w.path||"/")+(w.query?"?"+w.query:""),w.path=void 0,w.query=void 0,w},serialize:function(m,b){if((m.port===(fn(m)?443:80)||m.port==="")&&(m.port=void 0),typeof m.secure=="boolean"&&(m.scheme=m.secure?"wss":"ws",m.secure=void 0),m.resourceName){var w=m.resourceName.split("?"),O=d(w,2),B=O[0],J=O[1];m.path=B&&B!=="/"?B:void 0,m.query=J,m.resourceName=void 0}return m.fragment=void 0,m}},hn={scheme:"wss",domainHost:wr.domainHost,parse:wr.parse,serialize:wr.serialize},kl={},Ll=!0,mn="[A-Za-z0-9\\-\\.\\_\\~"+(Ll?"\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF":"")+"]",ot="[0-9A-Fa-f]",jl=r(r("%[EFef]"+ot+"%"+ot+ot+"%"+ot+ot)+"|"+r("%[89A-Fa-f]"+ot+"%"+ot+ot)+"|"+r("%"+ot+ot)),Fl="[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]",Ml="[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",ql=e(Ml,'[\\"\\\\]'),Ul="[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]",Bl=new RegExp(mn,"g"),or=new RegExp(jl,"g"),Vl=new RegExp(e("[^]",Fl,"[\\.]",'[\\"]',ql),"g"),vn=new RegExp(e("[^]",mn,Ul),"g"),Hl=vn;function Bs(_){var m=Ce(_);return m.match(Bl)?m:_}var gn={scheme:"mailto",parse:function(m,b){var w=m,O=w.to=w.path?w.path.split(","):[];if(w.path=void 0,w.query){for(var B=!1,J={},ae=w.query.split("&"),le=0,Se=ae.length;le{"use strict";Yn.exports=function s(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var a,t,n;if(Array.isArray(e)){if(a=e.length,a!=r.length)return!1;for(t=a;t--!==0;)if(!s(e[t],r[t]))return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(n=Object.keys(e),a=n.length,a!==Object.keys(r).length)return!1;for(t=a;t--!==0;)if(!Object.prototype.hasOwnProperty.call(r,n[t]))return!1;for(t=a;t--!==0;){var i=n[t];if(!s(e[i],r[i]))return!1}return!0}return e!==e&&r!==r}});var to=H((Em,eo)=>{"use strict";eo.exports=function(e){for(var r=0,a=e.length,t=0,n;t=55296&&n<=56319&&t{"use strict";ao.exports={copy:np,checkDataType:va,checkDataTypes:op,coerceToTypes:ip,toHash:ya,getProperty:_a,escapeQuotes:ba,equal:us(),ucs2length:to(),varOccurences:up,varReplace:dp,schemaHasRules:pp,schemaHasRulesExcept:fp,schemaUnknownRules:hp,toQuotedString:ga,getPathExpr:mp,getPath:vp,getData:_p,unescapeFragment:bp,unescapeJsonPointer:Sa,escapeFragment:Ep,escapeJsonPointer:Ea};function np(s,e){e=e||{};for(var r in s)e[r]=s[r];return e}function va(s,e,r,a){var t=a?" !== ":" === ",n=a?" || ":" && ",i=a?"!":"",o=a?"":"!";switch(s){case"null":return e+t+"null";case"array":return i+"Array.isArray("+e+")";case"object":return"("+i+e+n+"typeof "+e+t+'"object"'+n+o+"Array.isArray("+e+"))";case"integer":return"(typeof "+e+t+'"number"'+n+o+"("+e+" % 1)"+n+e+t+e+(r?n+i+"isFinite("+e+")":"")+")";case"number":return"(typeof "+e+t+'"'+s+'"'+(r?n+i+"isFinite("+e+")":"")+")";default:return"typeof "+e+t+'"'+s+'"'}}function op(s,e,r){switch(s.length){case 1:return va(s[0],e,r,!0);default:var a="",t=ya(s);t.array&&t.object&&(a=t.null?"(":"(!"+e+" || ",a+="typeof "+e+' !== "object")',delete t.null,delete t.array,delete t.object),t.number&&delete t.integer;for(var n in t)a+=(a?" && ":"")+va(n,e,r,!0);return a}}var ro=ya(["string","number","integer","boolean","null"]);function ip(s,e){if(Array.isArray(e)){for(var r=[],a=0;a=e)throw new Error("Cannot access property/index "+a+" levels up, current level is "+e);return r[e-a]}if(a>e)throw new Error("Cannot access data "+a+" levels up, current level is "+e);if(n="data"+(e-a||""),!t)return n}for(var o=n,l=t.split("/"),u=0;u{"use strict";var Sp=sr();no.exports=xp;function xp(s){Sp.copy(s,this)}});var io=H((Rm,oo)=>{"use strict";var It=oo.exports=function(s,e,r){typeof e=="function"&&(r=e,e={}),r=e.cb||r;var a=typeof r=="function"?r:r.pre||function(){},t=r.post||function(){};ds(e,a,t,s,"",s)};It.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0};It.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};It.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};It.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function ds(s,e,r,a,t,n,i,o,l,u){if(a&&typeof a=="object"&&!Array.isArray(a)){e(a,t,n,i,o,l,u);for(var d in a){var f=a[d];if(Array.isArray(f)){if(d in It.arrayKeywords)for(var h=0;h{"use strict";var qr=Jn(),co=us(),ms=sr(),ps=xa(),Tp=io();po.exports=At;At.normalizeId=Nt;At.fullPath=fs;At.url=hs;At.ids=Np;At.inlineRef=Ra;At.schema=vs;function At(s,e,r){var a=this._refs[r];if(typeof a=="string")if(this._refs[a])a=this._refs[a];else return At.call(this,s,e,a);if(a=a||this._schemas[r],a instanceof ps)return Ra(a.schema,this._opts.inlineRefs)?a.schema:a.validate||this._compile(a);var t=vs.call(this,e,r),n,i,o;return t&&(n=t.schema,e=t.root,o=t.baseId),n instanceof ps?i=n.validate||s.call(this,n.schema,e,void 0,o):n!==void 0&&(i=Ra(n,this._opts.inlineRefs)?n:s.call(this,n,e,void 0,o)),i}function vs(s,e){var r=qr.parse(e),a=uo(r),t=fs(this._getId(s.schema));if(Object.keys(s.schema).length===0||a!==t){var n=Nt(a),i=this._refs[n];if(typeof i=="string")return wp.call(this,s,i,r);if(i instanceof ps)i.validate||this._compile(i),s=i;else if(i=this._schemas[n],i instanceof ps){if(i.validate||this._compile(i),n==Nt(e))return{schema:i,root:s,baseId:t};s=i}else return;if(!s.schema)return;t=fs(this._getId(s.schema))}return lo.call(this,r,t,s.schema,s)}function wp(s,e,r){var a=vs.call(this,s,e);if(a){var t=a.schema,n=a.baseId;s=a.root;var i=this._getId(t);return i&&(n=hs(n,i)),lo.call(this,r,n,t,s)}}var Op=ms.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function lo(s,e,r,a){if(s.fragment=s.fragment||"",s.fragment.slice(0,1)=="/"){for(var t=s.fragment.split("/"),n=1;n{"use strict";var Oa=gs();ho.exports={Validation:fo(Ap),MissingRef:fo(Pa)};function Ap(s){this.message="validation failed",this.errors=s,this.ajv=this.validation=!0}Pa.message=function(s,e){return"can't resolve reference "+e+" from id "+s};function Pa(s,e,r){this.message=r||Pa.message(s,e),this.missingRef=Oa.url(s,e),this.missingSchema=Oa.normalizeId(Oa.fullPath(this.missingRef))}function fo(s){return s.prototype=Object.create(Error.prototype),s.prototype.constructor=s,s}});var Ia=H((Om,mo)=>{"use strict";mo.exports=function(s,e){e||(e={}),typeof e=="function"&&(e={cmp:e});var r=typeof e.cycles=="boolean"?e.cycles:!1,a=e.cmp&&(function(n){return function(i){return function(o,l){var u={key:o,value:i[o]},d={key:l,value:i[l]};return n(u,d)}}})(e.cmp),t=[];return(function n(i){if(i&&i.toJSON&&typeof i.toJSON=="function"&&(i=i.toJSON()),i!==void 0){if(typeof i=="number")return isFinite(i)?""+i:"null";if(typeof i!="object")return JSON.stringify(i);var o,l;if(Array.isArray(i)){for(l="[",o=0;o{"use strict";vo.exports=function(e,r,a){var t="",n=e.schema.$async===!0,i=e.util.schemaHasRulesExcept(e.schema,e.RULES.all,"$ref"),o=e.self._getId(e.schema);if(e.opts.strictKeywords){var l=e.util.schemaUnknownRules(e.schema,e.RULES.keywords);if(l){var u="unknown keyword: "+l;if(e.opts.strictKeywords==="log")e.logger.warn(u);else throw new Error(u)}}if(e.isTop&&(t+=" var validate = ",n&&(e.async=!0,t+="async "),t+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",o&&(e.opts.sourceCode||e.opts.processCode)&&(t+=" "+("/*# sourceURL="+o+" */")+" ")),typeof e.schema=="boolean"||!(i||e.schema.$ref)){var r="false schema",d=e.level,f=e.dataLevel,h=e.schema[r],p=e.schemaPath+e.util.getProperty(r),g=e.errSchemaPath+"/"+r,T=!e.opts.allErrors,D,y="data"+(f||""),R="valid"+d;if(e.schema===!1){e.isTop?T=!0:t+=" var "+R+" = false; ";var v=v||[];v.push(t),t="",e.createErrors!==!1?(t+=" { keyword: '"+(D||"false schema")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(g)+" , params: {} ",e.opts.messages!==!1&&(t+=" , message: 'boolean schema is false' "),e.opts.verbose&&(t+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+y+" "),t+=" } "):t+=" {} ";var x=t;t=v.pop(),!e.compositeRule&&T?e.async?t+=" throw new ValidationError(["+x+"]); ":t+=" validate.errors = ["+x+"]; return false; ":t+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else e.isTop?n?t+=" return data; ":t+=" validate.errors = null; return true; ":t+=" var "+R+" = true; ";return e.isTop&&(t+=" }; return validate; "),t}if(e.isTop){var P=e.isTop,d=e.level=0,f=e.dataLevel=0,y="data";if(e.rootId=e.resolve.fullPath(e.self._getId(e.root.schema)),e.baseId=e.baseId||e.rootId,delete e.isTop,e.dataPathArr=[""],e.schema.default!==void 0&&e.opts.useDefaults&&e.opts.strictDefaults){var E="default is ignored in the schema root";if(e.opts.strictDefaults==="log")e.logger.warn(E);else throw new Error(E)}t+=" var vErrors = null; ",t+=" var errors = 0; ",t+=" if (rootData === undefined) rootData = data; "}else{var d=e.level,f=e.dataLevel,y="data"+(f||"");if(o&&(e.baseId=e.resolve.url(e.baseId,o)),n&&!e.async)throw new Error("async schema in sync schema");t+=" var errs_"+d+" = errors;"}var R="valid"+d,T=!e.opts.allErrors,S="",I="",D,$=e.schema.type,L=Array.isArray($);if($&&e.opts.nullable&&e.schema.nullable===!0&&(L?$.indexOf("null")==-1&&($=$.concat("null")):$!="null"&&($=[$,"null"],L=!0)),L&&$.length==1&&($=$[0],L=!1),e.schema.$ref&&i){if(e.opts.extendRefs=="fail")throw new Error('$ref: validation keywords used in schema at path "'+e.errSchemaPath+'" (see option extendRefs)');e.opts.extendRefs!==!0&&(i=!1,e.logger.warn('$ref: keywords ignored in schema at path "'+e.errSchemaPath+'"'))}if(e.schema.$comment&&e.opts.$comment&&(t+=" "+e.RULES.all.$comment.code(e,"$comment")),$){if(e.opts.coerceTypes)var C=e.util.coerceToTypes(e.opts.coerceTypes,$);var k=e.RULES.types[$];if(C||L||k===!0||k&&!Oe(k)){var p=e.schemaPath+".type",g=e.errSchemaPath+"/type",p=e.schemaPath+".type",g=e.errSchemaPath+"/type",N=L?"checkDataTypes":"checkDataType";if(t+=" if ("+e.util[N]($,y,e.opts.strictNumbers,!0)+") { ",C){var A="dataType"+d,M="coerced"+d;t+=" var "+A+" = typeof "+y+"; var "+M+" = undefined; ",e.opts.coerceTypes=="array"&&(t+=" if ("+A+" == 'object' && Array.isArray("+y+") && "+y+".length == 1) { "+y+" = "+y+"[0]; "+A+" = typeof "+y+"; if ("+e.util.checkDataType(e.schema.type,y,e.opts.strictNumbers)+") "+M+" = "+y+"; } "),t+=" if ("+M+" !== undefined) ; ";var X=C;if(X)for(var W,ee=-1,Q=X.length-1;ee{"use strict";var _s=gs(),Es=sr(),yo=ys(),$p=Ia(),go=Na(),Dp=Es.ucs2length,Cp=us(),kp=yo.Validation;bo.exports=Aa;function Aa(s,e,r,a){var t=this,n=this._opts,i=[void 0],o={},l=[],u={},d=[],f={},h=[];e=e||{schema:s,refVal:i,refs:o};var p=Lp.call(this,s,e,a),g=this._compilations[p.index];if(p.compiling)return g.callValidate=E;var y=this._formats,v=this.RULES;try{var x=R(s,e,r,a);g.validate=x;var P=g.callValidate;return P&&(P.schema=x.schema,P.errors=null,P.refs=x.refs,P.refVal=x.refVal,P.root=x.root,P.$async=x.$async,n.sourceCode&&(P.source=x.source)),x}finally{jp.call(this,s,e,a)}function E(){var N=g.validate,A=N.apply(this,arguments);return E.errors=N.errors,A}function R(N,A,M,X){var W=!A||A&&A.schema==N;if(A.schema!=e.schema)return Aa.call(t,N,A,M,X);var ee=N.$async===!0,Q=go({isTop:!0,schema:N,isRoot:W,baseId:X,root:A,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:yo.MissingRef,RULES:v,validate:go,util:Es,resolve:_s,resolveRef:T,usePattern:L,useDefault:C,useCustomRule:k,opts:n,formats:y,logger:t.logger,self:t});Q=bs(i,qp)+bs(l,Fp)+bs(d,Mp)+bs(h,Up)+Q,n.processCode&&(Q=n.processCode(Q,N));var z;try{var pe=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",Q);z=pe(t,v,y,e,i,d,h,Cp,Dp,kp),i[0]=z}catch(Re){throw t.logger.error("Error compiling schema, function code:",Q),Re}return z.schema=N,z.errors=null,z.refs=o,z.refVal=i,z.root=W?z:A,ee&&(z.$async=!0),n.sourceCode===!0&&(z.source={code:Q,patterns:l,defaults:d}),z}function T(N,A,M){A=_s.url(N,A);var X=o[A],W,ee;if(X!==void 0)return W=i[X],ee="refVal["+X+"]",$(W,ee);if(!M&&e.refs){var Q=e.refs[A];if(Q!==void 0)return W=e.refVal[Q],ee=S(A,W),$(W,ee)}ee=S(A);var z=_s.call(t,R,e,A);if(z===void 0){var pe=r&&r[A];pe&&(z=_s.inlineRef(pe,n.inlineRefs)?pe:Aa.call(t,pe,e,r,N))}if(z===void 0)I(A);else return D(A,z),$(z,ee)}function S(N,A){var M=i.length;return i[M]=A,o[N]=M,"refVal"+M}function I(N){delete o[N]}function D(N,A){var M=o[N];i[M]=A}function $(N,A){return typeof N=="object"||typeof N=="boolean"?{code:A,schema:N,inline:!0}:{code:A,$async:N&&!!N.$async}}function L(N){var A=u[N];return A===void 0&&(A=u[N]=l.length,l[A]=N),"pattern"+A}function C(N){switch(typeof N){case"boolean":case"number":return""+N;case"string":return Es.toQuotedString(N);case"object":if(N===null)return"null";var A=$p(N),M=f[A];return M===void 0&&(M=f[A]=d.length,d[M]=N),"default"+M}}function k(N,A,M,X){if(t._opts.validateSchema!==!1){var W=N.definition.dependencies;if(W&&!W.every(function(Te){return Object.prototype.hasOwnProperty.call(M,Te)}))throw new Error("parent schema must have all required keywords: "+W.join(","));var ee=N.definition.validateSchema;if(ee){var Q=ee(A);if(!Q){var z="keyword schema is invalid: "+t.errorsText(ee.errors);if(t._opts.validateSchema=="log")t.logger.error(z);else throw new Error(z)}}}var pe=N.definition.compile,Re=N.definition.inline,De=N.definition.macro,oe;if(pe)oe=pe.call(t,A,M,X);else if(De)oe=De.call(t,A,M,X),n.validateSchema!==!1&&t.validateSchema(oe,!0);else if(Re)oe=Re.call(t,X,N.keyword,A,M);else if(oe=N.definition.validate,!oe)return;if(oe===void 0)throw new Error('custom keyword "'+N.keyword+'"failed to compile');var be=h.length;return h[be]=oe,{code:"customRule"+be,validate:oe}}}function Lp(s,e,r){var a=_o.call(this,s,e,r);return a>=0?{index:a,compiling:!0}:(a=this._compilations.length,this._compilations[a]={schema:s,root:e,baseId:r},{index:a,compiling:!1})}function jp(s,e,r){var a=_o.call(this,s,e,r);a>=0&&this._compilations.splice(a,1)}function _o(s,e,r){for(var a=0;a{"use strict";var Ss=So.exports=function(){this._cache={}};Ss.prototype.put=function(e,r){this._cache[e]=r};Ss.prototype.get=function(e){return this._cache[e]};Ss.prototype.del=function(e){delete this._cache[e]};Ss.prototype.clear=function(){this._cache={}}});var ko=H((Am,Co)=>{"use strict";var Bp=sr(),Vp=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,Hp=[0,31,28,31,30,31,30,31,31,30,31,30,31],zp=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,Ro=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,Zp=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,Gp=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,To=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,wo=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,Oo=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,Po=/^(?:\/(?:[^~/]|~0|~1)*)*$/,Io=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,No=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;Co.exports=xs;function xs(s){return s=s=="full"?"full":"fast",Bp.copy(xs[s])}xs.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":To,url:wo,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:Ro,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:Do,uuid:Oo,"json-pointer":Po,"json-pointer-uri-fragment":Io,"relative-json-pointer":No};xs.full={date:Ao,time:$o,"date-time":Qp,uri:Jp,"uri-reference":Gp,"uri-template":To,url:wo,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:Ro,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:Do,uuid:Oo,"json-pointer":Po,"json-pointer-uri-fragment":Io,"relative-json-pointer":No};function Xp(s){return s%4===0&&(s%100!==0||s%400===0)}function Ao(s){var e=s.match(Vp);if(!e)return!1;var r=+e[1],a=+e[2],t=+e[3];return a>=1&&a<=12&&t>=1&&t<=(a==2&&Xp(r)?29:Hp[a])}function $o(s,e){var r=s.match(zp);if(!r)return!1;var a=r[1],t=r[2],n=r[3],i=r[5];return(a<=23&&t<=59&&n<=59||a==23&&t==59&&n==60)&&(!e||i)}var Wp=/t|\s/i;function Qp(s){var e=s.split(Wp);return e.length==2&&Ao(e[0])&&$o(e[1],!0)}var Kp=/\/|:/;function Jp(s){return Kp.test(s)&&Zp.test(s)}var Yp=/[^\\]\\Z/;function Do(s){if(Yp.test(s))return!1;try{return new RegExp(s),!0}catch{return!1}}});var jo=H(($m,Lo)=>{"use strict";Lo.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,d="data"+(i||""),f="valid"+n,h,p;if(o=="#"||o=="#/")e.isRoot?(h=e.async,p="validate"):(h=e.root.schema.$async===!0,p="root.refVal[0]");else{var g=e.resolveRef(e.baseId,o,e.isRoot);if(g===void 0){var y=e.MissingRefError.message(e.baseId,o);if(e.opts.missingRefs=="fail"){e.logger.error(y);var v=v||[];v.push(t),t="",e.createErrors!==!1?(t+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { ref: '"+e.util.escapeQuotes(o)+"' } ",e.opts.messages!==!1&&(t+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(o)+"' "),e.opts.verbose&&(t+=" , schema: "+e.util.toQuotedString(o)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),t+=" } "):t+=" {} ";var x=t;t=v.pop(),!e.compositeRule&&u?e.async?t+=" throw new ValidationError(["+x+"]); ":t+=" validate.errors = ["+x+"]; return false; ":t+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u&&(t+=" if (false) { ")}else if(e.opts.missingRefs=="ignore")e.logger.warn(y),u&&(t+=" if (true) { ");else throw new e.MissingRefError(e.baseId,o,y)}else if(g.inline){var P=e.util.copy(e);P.level++;var E="valid"+P.level;P.schema=g.schema,P.schemaPath="",P.errSchemaPath=o;var R=e.validate(P).replace(/validate\.schema/g,g.code);t+=" "+R+" ",u&&(t+=" if ("+E+") { ")}else h=g.$async===!0||e.async&&g.$async!==!1,p=g.code}if(p){var v=v||[];v.push(t),t="",e.opts.passContext?t+=" "+p+".call(this, ":t+=" "+p+"( ",t+=" "+d+", (dataPath || '')",e.errorPath!='""'&&(t+=" + "+e.errorPath);var T=i?"data"+(i-1||""):"parentData",S=i?e.dataPathArr[i]:"parentDataProperty";t+=" , "+T+" , "+S+", rootData) ";var I=t;if(t=v.pop(),h){if(!e.async)throw new Error("async schema referenced by sync schema");u&&(t+=" var "+f+"; "),t+=" try { await "+I+"; ",u&&(t+=" "+f+" = true; "),t+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",u&&(t+=" "+f+" = false; "),t+=" } ",u&&(t+=" if ("+f+") { ")}else t+=" if (!"+I+") { if (vErrors === null) vErrors = "+p+".errors; else vErrors = vErrors.concat("+p+".errors); errors = vErrors.length; } ",u&&(t+=" else { ")}return t}});var Mo=H((Dm,Fo)=>{"use strict";Fo.exports=function(e,r,a){var t=" ",n=e.schema[r],i=e.schemaPath+e.util.getProperty(r),o=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,u=e.util.copy(e),d="";u.level++;var f="valid"+u.level,h=u.baseId,p=!0,g=n;if(g)for(var y,v=-1,x=g.length-1;v0||y===!1:e.util.schemaHasRules(y,e.RULES.all))&&(p=!1,u.schema=y,u.schemaPath=i+"["+v+"]",u.errSchemaPath=o+"/"+v,t+=" "+e.validate(u)+" ",u.baseId=h,l&&(t+=" if ("+f+") { ",d+="}"));return l&&(p?t+=" if (true) { ":t+=" "+d.slice(0,-1)+" "),t}});var Uo=H((Cm,qo)=>{"use strict";qo.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p="errs__"+n,g=e.util.copy(e),y="";g.level++;var v="valid"+g.level,x=o.every(function(D){return e.opts.strictKeywords?typeof D=="object"&&Object.keys(D).length>0||D===!1:e.util.schemaHasRules(D,e.RULES.all)});if(x){var P=g.baseId;t+=" var "+p+" = errors; var "+h+" = false; ";var E=e.compositeRule;e.compositeRule=g.compositeRule=!0;var R=o;if(R)for(var T,S=-1,I=R.length-1;S{"use strict";Bo.exports=function(e,r,a){var t=" ",n=e.schema[r],i=e.errSchemaPath+"/"+r,o=!e.opts.allErrors,l=e.util.toQuotedString(n);return e.opts.$comment===!0?t+=" console.log("+l+");":typeof e.opts.$comment=="function"&&(t+=" self._opts.$comment("+l+", "+e.util.toQuotedString(i)+", validate.root.schema);"),t}});var zo=H((Lm,Ho)=>{"use strict";Ho.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p=e.opts.$data&&o&&o.$data,g;p?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",g="schema"+n):g=o,p||(t+=" var schema"+n+" = validate.schema"+l+";"),t+="var "+h+" = equal("+f+", schema"+n+"); if (!"+h+") { ";var y=y||[];y.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { allowedValue: schema"+n+" } ",e.opts.messages!==!1&&(t+=" , message: 'should be equal to constant' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var v=t;return t=y.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+v+"]); ":t+=" validate.errors = ["+v+"]; return false; ":t+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" }",d&&(t+=" else { "),t}});var Go=H((jm,Zo)=>{"use strict";Zo.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p="errs__"+n,g=e.util.copy(e),y="";g.level++;var v="valid"+g.level,x="i"+n,P=g.dataLevel=e.dataLevel+1,E="data"+P,R=e.baseId,T=e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all);if(t+="var "+p+" = errors;var "+h+";",T){var S=e.compositeRule;e.compositeRule=g.compositeRule=!0,g.schema=o,g.schemaPath=l,g.errSchemaPath=u,t+=" var "+v+" = false; for (var "+x+" = 0; "+x+" < "+f+".length; "+x+"++) { ",g.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0);var I=f+"["+x+"]";g.dataPathArr[P]=x;var D=e.validate(g);g.baseId=R,e.util.varOccurences(D,E)<2?t+=" "+e.util.varReplace(D,E,I)+" ":t+=" var "+E+" = "+I+"; "+D+" ",t+=" if ("+v+") break; } ",e.compositeRule=g.compositeRule=S,t+=" "+y+" if (!"+v+") {"}else t+=" if ("+f+".length == 0) {";var $=$||[];$.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",e.opts.messages!==!1&&(t+=" , message: 'should contain a valid item' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var L=t;return t=$.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+L+"]); ":t+=" validate.errors = ["+L+"]; return false; ":t+=" var err = "+L+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { ",T&&(t+=" errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; } "),e.opts.allErrors&&(t+=" } "),t}});var Wo=H((Fm,Xo)=>{"use strict";Xo.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="errs__"+n,p=e.util.copy(e),g="";p.level++;var y="valid"+p.level,v={},x={},P=e.opts.ownProperties;for(S in o)if(S!="__proto__"){var E=o[S],R=Array.isArray(E)?x:v;R[S]=E}t+="var "+h+" = errors;";var T=e.errorPath;t+="var missing"+n+";";for(var S in x)if(R=x[S],R.length){if(t+=" if ( "+f+e.util.getProperty(S)+" !== undefined ",P&&(t+=" && Object.prototype.hasOwnProperty.call("+f+", '"+e.util.escapeQuotes(S)+"') "),d){t+=" && ( ";var I=R;if(I)for(var D,$=-1,L=I.length-1;$0||E===!1:e.util.schemaHasRules(E,e.RULES.all))&&(t+=" "+y+" = true; if ( "+f+e.util.getProperty(S)+" !== undefined ",P&&(t+=" && Object.prototype.hasOwnProperty.call("+f+", '"+e.util.escapeQuotes(S)+"') "),t+=") { ",p.schema=E,p.schemaPath=l+e.util.getProperty(S),p.errSchemaPath=u+"/"+e.util.escapeFragment(S),t+=" "+e.validate(p)+" ",p.baseId=z,t+=" } ",d&&(t+=" if ("+y+") { ",g+="}"))}return d&&(t+=" "+g+" if ("+h+" == errors) {"),t}});var Ko=H((Mm,Qo)=>{"use strict";Qo.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p=e.opts.$data&&o&&o.$data,g;p?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",g="schema"+n):g=o;var y="i"+n,v="schema"+n;p||(t+=" var "+v+" = validate.schema"+l+";"),t+="var "+h+";",p&&(t+=" if (schema"+n+" === undefined) "+h+" = true; else if (!Array.isArray(schema"+n+")) "+h+" = false; else {"),t+=""+h+" = false;for (var "+y+"=0; "+y+"<"+v+".length; "+y+"++) if (equal("+f+", "+v+"["+y+"])) { "+h+" = true; break; }",p&&(t+=" } "),t+=" if (!"+h+") { ";var x=x||[];x.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { allowedValues: schema"+n+" } ",e.opts.messages!==!1&&(t+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var P=t;return t=x.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+P+"]); ":t+=" validate.errors = ["+P+"]; return false; ":t+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" }",d&&(t+=" else { "),t}});var Yo=H((qm,Jo)=>{"use strict";Jo.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||"");if(e.opts.format===!1)return d&&(t+=" if (true) { "),t;var h=e.opts.$data&&o&&o.$data,p;h?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",p="schema"+n):p=o;var g=e.opts.unknownFormats,y=Array.isArray(g);if(h){var v="format"+n,x="isObject"+n,P="formatType"+n;t+=" var "+v+" = formats["+p+"]; var "+x+" = typeof "+v+" == 'object' && !("+v+" instanceof RegExp) && "+v+".validate; var "+P+" = "+x+" && "+v+".type || 'string'; if ("+x+") { ",e.async&&(t+=" var async"+n+" = "+v+".async; "),t+=" "+v+" = "+v+".validate; } if ( ",h&&(t+=" ("+p+" !== undefined && typeof "+p+" != 'string') || "),t+=" (",g!="ignore"&&(t+=" ("+p+" && !"+v+" ",y&&(t+=" && self._opts.unknownFormats.indexOf("+p+") == -1 "),t+=") || "),t+=" ("+v+" && "+P+" == '"+a+"' && !(typeof "+v+" == 'function' ? ",e.async?t+=" (async"+n+" ? await "+v+"("+f+") : "+v+"("+f+")) ":t+=" "+v+"("+f+") ",t+=" : "+v+".test("+f+"))))) {"}else{var v=e.formats[o];if(!v){if(g=="ignore")return e.logger.warn('unknown format "'+o+'" ignored in schema at path "'+e.errSchemaPath+'"'),d&&(t+=" if (true) { "),t;if(y&&g.indexOf(o)>=0)return d&&(t+=" if (true) { "),t;throw new Error('unknown format "'+o+'" is used in schema at path "'+e.errSchemaPath+'"')}var x=typeof v=="object"&&!(v instanceof RegExp)&&v.validate,P=x&&v.type||"string";if(x){var E=v.async===!0;v=v.validate}if(P!=a)return d&&(t+=" if (true) { "),t;if(E){if(!e.async)throw new Error("async format in sync schema");var R="formats"+e.util.getProperty(o)+".validate";t+=" if (!(await "+R+"("+f+"))) { "}else{t+=" if (! ";var R="formats"+e.util.getProperty(o);x&&(R+=".validate"),typeof v=="function"?t+=" "+R+"("+f+") ":t+=" "+R+".test("+f+") ",t+=") { "}}var T=T||[];T.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { format: ",h?t+=""+p:t+=""+e.util.toQuotedString(o),t+=" } ",e.opts.messages!==!1&&(t+=` , message: 'should match format "`,h?t+="' + "+p+" + '":t+=""+e.util.escapeQuotes(o),t+=`"' `),e.opts.verbose&&(t+=" , schema: ",h?t+="validate.schema"+l:t+=""+e.util.toQuotedString(o),t+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var S=t;return t=T.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+S+"]); ":t+=" validate.errors = ["+S+"]; return false; ":t+=" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } ",d&&(t+=" else { "),t}});var ti=H((Um,ei)=>{"use strict";ei.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p="errs__"+n,g=e.util.copy(e);g.level++;var y="valid"+g.level,v=e.schema.then,x=e.schema.else,P=v!==void 0&&(e.opts.strictKeywords?typeof v=="object"&&Object.keys(v).length>0||v===!1:e.util.schemaHasRules(v,e.RULES.all)),E=x!==void 0&&(e.opts.strictKeywords?typeof x=="object"&&Object.keys(x).length>0||x===!1:e.util.schemaHasRules(x,e.RULES.all)),R=g.baseId;if(P||E){var T;g.createErrors=!1,g.schema=o,g.schemaPath=l,g.errSchemaPath=u,t+=" var "+p+" = errors; var "+h+" = true; ";var S=e.compositeRule;e.compositeRule=g.compositeRule=!0,t+=" "+e.validate(g)+" ",g.baseId=R,g.createErrors=!0,t+=" errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; } ",e.compositeRule=g.compositeRule=S,P?(t+=" if ("+y+") { ",g.schema=e.schema.then,g.schemaPath=e.schemaPath+".then",g.errSchemaPath=e.errSchemaPath+"/then",t+=" "+e.validate(g)+" ",g.baseId=R,t+=" "+h+" = "+y+"; ",P&&E?(T="ifClause"+n,t+=" var "+T+" = 'then'; "):T="'then'",t+=" } ",E&&(t+=" else { ")):t+=" if (!"+y+") { ",E&&(g.schema=e.schema.else,g.schemaPath=e.schemaPath+".else",g.errSchemaPath=e.errSchemaPath+"/else",t+=" "+e.validate(g)+" ",g.baseId=R,t+=" "+h+" = "+y+"; ",P&&E?(T="ifClause"+n,t+=" var "+T+" = 'else'; "):T="'else'",t+=" } "),t+=" if (!"+h+") { var err = ",e.createErrors!==!1?(t+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { failingKeyword: "+T+" } ",e.opts.messages!==!1&&(t+=` , message: 'should match "' + `+T+` + '" schema' `),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&d&&(e.async?t+=" throw new ValidationError(vErrors); ":t+=" validate.errors = vErrors; return false; "),t+=" } ",d&&(t+=" else { ")}else d&&(t+=" if (true) { ");return t}});var si=H((Bm,ri)=>{"use strict";ri.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p="errs__"+n,g=e.util.copy(e),y="";g.level++;var v="valid"+g.level,x="i"+n,P=g.dataLevel=e.dataLevel+1,E="data"+P,R=e.baseId;if(t+="var "+p+" = errors;var "+h+";",Array.isArray(o)){var T=e.schema.additionalItems;if(T===!1){t+=" "+h+" = "+f+".length <= "+o.length+"; ";var S=u;u=e.errSchemaPath+"/additionalItems",t+=" if (!"+h+") { ";var I=I||[];I.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+o.length+" } ",e.opts.messages!==!1&&(t+=" , message: 'should NOT have more than "+o.length+" items' "),e.opts.verbose&&(t+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var D=t;t=I.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+D+"]); ":t+=" validate.errors = ["+D+"]; return false; ":t+=" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } ",u=S,d&&(y+="}",t+=" else { ")}var $=o;if($){for(var L,C=-1,k=$.length-1;C0||L===!1:e.util.schemaHasRules(L,e.RULES.all)){t+=" "+v+" = true; if ("+f+".length > "+C+") { ";var N=f+"["+C+"]";g.schema=L,g.schemaPath=l+"["+C+"]",g.errSchemaPath=u+"/"+C,g.errorPath=e.util.getPathExpr(e.errorPath,C,e.opts.jsonPointers,!0),g.dataPathArr[P]=C;var A=e.validate(g);g.baseId=R,e.util.varOccurences(A,E)<2?t+=" "+e.util.varReplace(A,E,N)+" ":t+=" var "+E+" = "+N+"; "+A+" ",t+=" } ",d&&(t+=" if ("+v+") { ",y+="}")}}if(typeof T=="object"&&(e.opts.strictKeywords?typeof T=="object"&&Object.keys(T).length>0||T===!1:e.util.schemaHasRules(T,e.RULES.all))){g.schema=T,g.schemaPath=e.schemaPath+".additionalItems",g.errSchemaPath=e.errSchemaPath+"/additionalItems",t+=" "+v+" = true; if ("+f+".length > "+o.length+") { for (var "+x+" = "+o.length+"; "+x+" < "+f+".length; "+x+"++) { ",g.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0);var N=f+"["+x+"]";g.dataPathArr[P]=x;var A=e.validate(g);g.baseId=R,e.util.varOccurences(A,E)<2?t+=" "+e.util.varReplace(A,E,N)+" ":t+=" var "+E+" = "+N+"; "+A+" ",d&&(t+=" if (!"+v+") break; "),t+=" } } ",d&&(t+=" if ("+v+") { ",y+="}")}}else if(e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){g.schema=o,g.schemaPath=l,g.errSchemaPath=u,t+=" for (var "+x+" = 0; "+x+" < "+f+".length; "+x+"++) { ",g.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0);var N=f+"["+x+"]";g.dataPathArr[P]=x;var A=e.validate(g);g.baseId=R,e.util.varOccurences(A,E)<2?t+=" "+e.util.varReplace(A,E,N)+" ":t+=" var "+E+" = "+N+"; "+A+" ",d&&(t+=" if (!"+v+") break; "),t+=" }"}return d&&(t+=" "+y+" if ("+p+" == errors) {"),t}});var $a=H((Vm,ai)=>{"use strict";ai.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,R,f="data"+(i||""),h=e.opts.$data&&o&&o.$data,p;h?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",p="schema"+n):p=o;var g=r=="maximum",y=g?"exclusiveMaximum":"exclusiveMinimum",v=e.schema[y],x=e.opts.$data&&v&&v.$data,P=g?"<":">",E=g?">":"<",R=void 0;if(!(h||typeof o=="number"||o===void 0))throw new Error(r+" must be number");if(!(x||v===void 0||typeof v=="number"||typeof v=="boolean"))throw new Error(y+" must be number or boolean");if(x){var T=e.util.getData(v.$data,i,e.dataPathArr),S="exclusive"+n,I="exclType"+n,D="exclIsNumber"+n,$="op"+n,L="' + "+$+" + '";t+=" var schemaExcl"+n+" = "+T+"; ",T="schemaExcl"+n,t+=" var "+S+"; var "+I+" = typeof "+T+"; if ("+I+" != 'boolean' && "+I+" != 'undefined' && "+I+" != 'number') { ";var R=y,C=C||[];C.push(t),t="",e.createErrors!==!1?(t+=" { keyword: '"+(R||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",e.opts.messages!==!1&&(t+=" , message: '"+y+" should be boolean' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var k=t;t=C.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+k+"]); ":t+=" validate.errors = ["+k+"]; return false; ":t+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else if ( ",h&&(t+=" ("+p+" !== undefined && typeof "+p+" != 'number') || "),t+=" "+I+" == 'number' ? ( ("+S+" = "+p+" === undefined || "+T+" "+P+"= "+p+") ? "+f+" "+E+"= "+T+" : "+f+" "+E+" "+p+" ) : ( ("+S+" = "+T+" === true) ? "+f+" "+E+"= "+p+" : "+f+" "+E+" "+p+" ) || "+f+" !== "+f+") { var op"+n+" = "+S+" ? '"+P+"' : '"+P+"='; ",o===void 0&&(R=y,u=e.errSchemaPath+"/"+y,p=T,h=x)}else{var D=typeof v=="number",L=P;if(D&&h){var $="'"+L+"'";t+=" if ( ",h&&(t+=" ("+p+" !== undefined && typeof "+p+" != 'number') || "),t+=" ( "+p+" === undefined || "+v+" "+P+"= "+p+" ? "+f+" "+E+"= "+v+" : "+f+" "+E+" "+p+" ) || "+f+" !== "+f+") { "}else{D&&o===void 0?(S=!0,R=y,u=e.errSchemaPath+"/"+y,p=v,E+="="):(D&&(p=Math[g?"min":"max"](v,o)),v===(D?p:!0)?(S=!0,R=y,u=e.errSchemaPath+"/"+y,E+="="):(S=!1,L+="="));var $="'"+L+"'";t+=" if ( ",h&&(t+=" ("+p+" !== undefined && typeof "+p+" != 'number') || "),t+=" "+f+" "+E+" "+p+" || "+f+" !== "+f+") { "}}R=R||r;var C=C||[];C.push(t),t="",e.createErrors!==!1?(t+=" { keyword: '"+(R||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { comparison: "+$+", limit: "+p+", exclusive: "+S+" } ",e.opts.messages!==!1&&(t+=" , message: 'should be "+L+" ",h?t+="' + "+p:t+=""+p+"'"),e.opts.verbose&&(t+=" , schema: ",h?t+="validate.schema"+l:t+=""+o,t+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var k=t;return t=C.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+k+"]); ":t+=" validate.errors = ["+k+"]; return false; ":t+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } ",d&&(t+=" else { "),t}});var Da=H((Hm,ni)=>{"use strict";ni.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,y,f="data"+(i||""),h=e.opts.$data&&o&&o.$data,p;if(h?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",p="schema"+n):p=o,!(h||typeof o=="number"))throw new Error(r+" must be number");var g=r=="maxItems"?">":"<";t+="if ( ",h&&(t+=" ("+p+" !== undefined && typeof "+p+" != 'number') || "),t+=" "+f+".length "+g+" "+p+") { ";var y=r,v=v||[];v.push(t),t="",e.createErrors!==!1?(t+=" { keyword: '"+(y||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+p+" } ",e.opts.messages!==!1&&(t+=" , message: 'should NOT have ",r=="maxItems"?t+="more":t+="fewer",t+=" than ",h?t+="' + "+p+" + '":t+=""+o,t+=" items' "),e.opts.verbose&&(t+=" , schema: ",h?t+="validate.schema"+l:t+=""+o,t+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var x=t;return t=v.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+x+"]); ":t+=" validate.errors = ["+x+"]; return false; ":t+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+="} ",d&&(t+=" else { "),t}});var Ca=H((zm,oi)=>{"use strict";oi.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,y,f="data"+(i||""),h=e.opts.$data&&o&&o.$data,p;if(h?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",p="schema"+n):p=o,!(h||typeof o=="number"))throw new Error(r+" must be number");var g=r=="maxLength"?">":"<";t+="if ( ",h&&(t+=" ("+p+" !== undefined && typeof "+p+" != 'number') || "),e.opts.unicode===!1?t+=" "+f+".length ":t+=" ucs2length("+f+") ",t+=" "+g+" "+p+") { ";var y=r,v=v||[];v.push(t),t="",e.createErrors!==!1?(t+=" { keyword: '"+(y||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+p+" } ",e.opts.messages!==!1&&(t+=" , message: 'should NOT be ",r=="maxLength"?t+="longer":t+="shorter",t+=" than ",h?t+="' + "+p+" + '":t+=""+o,t+=" characters' "),e.opts.verbose&&(t+=" , schema: ",h?t+="validate.schema"+l:t+=""+o,t+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var x=t;return t=v.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+x+"]); ":t+=" validate.errors = ["+x+"]; return false; ":t+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+="} ",d&&(t+=" else { "),t}});var ka=H((Zm,ii)=>{"use strict";ii.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,y,f="data"+(i||""),h=e.opts.$data&&o&&o.$data,p;if(h?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",p="schema"+n):p=o,!(h||typeof o=="number"))throw new Error(r+" must be number");var g=r=="maxProperties"?">":"<";t+="if ( ",h&&(t+=" ("+p+" !== undefined && typeof "+p+" != 'number') || "),t+=" Object.keys("+f+").length "+g+" "+p+") { ";var y=r,v=v||[];v.push(t),t="",e.createErrors!==!1?(t+=" { keyword: '"+(y||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+p+" } ",e.opts.messages!==!1&&(t+=" , message: 'should NOT have ",r=="maxProperties"?t+="more":t+="fewer",t+=" than ",h?t+="' + "+p+" + '":t+=""+o,t+=" properties' "),e.opts.verbose&&(t+=" , schema: ",h?t+="validate.schema"+l:t+=""+o,t+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var x=t;return t=v.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+x+"]); ":t+=" validate.errors = ["+x+"]; return false; ":t+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+="} ",d&&(t+=" else { "),t}});var li=H((Gm,ci)=>{"use strict";ci.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h=e.opts.$data&&o&&o.$data,p;if(h?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",p="schema"+n):p=o,!(h||typeof o=="number"))throw new Error(r+" must be number");t+="var division"+n+";if (",h&&(t+=" "+p+" !== undefined && ( typeof "+p+" != 'number' || "),t+=" (division"+n+" = "+f+" / "+p+", ",e.opts.multipleOfPrecision?t+=" Math.abs(Math.round(division"+n+") - division"+n+") > 1e-"+e.opts.multipleOfPrecision+" ":t+=" division"+n+" !== parseInt(division"+n+") ",t+=" ) ",h&&(t+=" ) "),t+=" ) { ";var g=g||[];g.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { multipleOf: "+p+" } ",e.opts.messages!==!1&&(t+=" , message: 'should be multiple of ",h?t+="' + "+p:t+=""+p+"'"),e.opts.verbose&&(t+=" , schema: ",h?t+="validate.schema"+l:t+=""+o,t+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var y=t;return t=g.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+y+"]); ":t+=" validate.errors = ["+y+"]; return false; ":t+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+="} ",d&&(t+=" else { "),t}});var di=H((Xm,ui)=>{"use strict";ui.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="errs__"+n,p=e.util.copy(e);p.level++;var g="valid"+p.level;if(e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){p.schema=o,p.schemaPath=l,p.errSchemaPath=u,t+=" var "+h+" = errors; ";var y=e.compositeRule;e.compositeRule=p.compositeRule=!0,p.createErrors=!1;var v;p.opts.allErrors&&(v=p.opts.allErrors,p.opts.allErrors=!1),t+=" "+e.validate(p)+" ",p.createErrors=!0,v&&(p.opts.allErrors=v),e.compositeRule=p.compositeRule=y,t+=" if ("+g+") { ";var x=x||[];x.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",e.opts.messages!==!1&&(t+=" , message: 'should NOT be valid' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var P=t;t=x.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+P+"]); ":t+=" validate.errors = ["+P+"]; return false; ":t+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } ",e.opts.allErrors&&(t+=" } ")}else t+=" var err = ",e.createErrors!==!1?(t+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",e.opts.messages!==!1&&(t+=" , message: 'should NOT be valid' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",d&&(t+=" if (false) { ");return t}});var fi=H((Wm,pi)=>{"use strict";pi.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p="errs__"+n,g=e.util.copy(e),y="";g.level++;var v="valid"+g.level,x=g.baseId,P="prevValid"+n,E="passingSchemas"+n;t+="var "+p+" = errors , "+P+" = false , "+h+" = false , "+E+" = null; ";var R=e.compositeRule;e.compositeRule=g.compositeRule=!0;var T=o;if(T)for(var S,I=-1,D=T.length-1;I0||S===!1:e.util.schemaHasRules(S,e.RULES.all))?(g.schema=S,g.schemaPath=l+"["+I+"]",g.errSchemaPath=u+"/"+I,t+=" "+e.validate(g)+" ",g.baseId=x):t+=" var "+v+" = true; ",I&&(t+=" if ("+v+" && "+P+") { "+h+" = false; "+E+" = ["+E+", "+I+"]; } else { ",y+="}"),t+=" if ("+v+") { "+h+" = "+P+" = true; "+E+" = "+I+"; }";return e.compositeRule=g.compositeRule=R,t+=""+y+"if (!"+h+") { var err = ",e.createErrors!==!1?(t+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { passingSchemas: "+E+" } ",e.opts.messages!==!1&&(t+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&d&&(e.async?t+=" throw new ValidationError(vErrors); ":t+=" validate.errors = vErrors; return false; "),t+="} else { errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; }",e.opts.allErrors&&(t+=" } "),t}});var mi=H((Qm,hi)=>{"use strict";hi.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h=e.opts.$data&&o&&o.$data,p;h?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",p="schema"+n):p=o;var g=h?"(new RegExp("+p+"))":e.usePattern(o);t+="if ( ",h&&(t+=" ("+p+" !== undefined && typeof "+p+" != 'string') || "),t+=" !"+g+".test("+f+") ) { ";var y=y||[];y.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { pattern: ",h?t+=""+p:t+=""+e.util.toQuotedString(o),t+=" } ",e.opts.messages!==!1&&(t+=` , message: 'should match pattern "`,h?t+="' + "+p+" + '":t+=""+e.util.escapeQuotes(o),t+=`"' `),e.opts.verbose&&(t+=" , schema: ",h?t+="validate.schema"+l:t+=""+e.util.toQuotedString(o),t+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var v=t;return t=y.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+v+"]); ":t+=" validate.errors = ["+v+"]; return false; ":t+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+="} ",d&&(t+=" else { "),t}});var gi=H((Km,vi)=>{"use strict";vi.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="errs__"+n,p=e.util.copy(e),g="";p.level++;var y="valid"+p.level,v="key"+n,x="idx"+n,P=p.dataLevel=e.dataLevel+1,E="data"+P,R="dataProperties"+n,T=Object.keys(o||{}).filter(ee),S=e.schema.patternProperties||{},I=Object.keys(S).filter(ee),D=e.schema.additionalProperties,$=T.length||I.length,L=D===!1,C=typeof D=="object"&&Object.keys(D).length,k=e.opts.removeAdditional,N=L||C||k,A=e.opts.ownProperties,M=e.baseId,X=e.schema.required;if(X&&!(e.opts.$data&&X.$data)&&X.length8)t+=" || validate.schema"+l+".hasOwnProperty("+v+") ";else{var Q=T;if(Q)for(var z,pe=-1,Re=Q.length-1;pe0||Oe===!1:e.util.schemaHasRules(Oe,e.RULES.all)){var Ze=e.util.getProperty(z),Ie=f+Ze,Fe=Rt&&Oe.default!==void 0;p.schema=Oe,p.schemaPath=l+Ze,p.errSchemaPath=u+"/"+e.util.escapeFragment(z),p.errorPath=e.util.getPath(e.errorPath,z,e.opts.jsonPointers),p.dataPathArr[P]=e.util.toQuotedString(z);var ce=e.validate(p);if(p.baseId=M,e.util.varOccurences(ce,E)<2){ce=e.util.varReplace(ce,E,Ie);var ke=Ie}else{var ke=E;t+=" var "+E+" = "+Ie+"; "}if(Fe)t+=" "+ce+" ";else{if(W&&W[z]){t+=" if ( "+ke+" === undefined ",A&&(t+=" || ! Object.prototype.hasOwnProperty.call("+f+", '"+e.util.escapeQuotes(z)+"') "),t+=") { "+y+" = false; ";var Ce=e.errorPath,ft=u,nt=e.util.escapeQuotes(z);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(Ce,z,e.opts.jsonPointers)),u=e.errSchemaPath+"/required";var Ee=Ee||[];Ee.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { missingProperty: '"+nt+"' } ",e.opts.messages!==!1&&(t+=" , message: '",e.opts._errorDataPathProperty?t+="is a required property":t+="should have required property \\'"+nt+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var ge=t;t=Ee.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+ge+"]); ":t+=" validate.errors = ["+ge+"]; return false; ":t+=" var err = "+ge+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u=ft,e.errorPath=Ce,t+=" } else { "}else d?(t+=" if ( "+ke+" === undefined ",A&&(t+=" || ! Object.prototype.hasOwnProperty.call("+f+", '"+e.util.escapeQuotes(z)+"') "),t+=") { "+y+" = true; } else { "):(t+=" if ("+ke+" !== undefined ",A&&(t+=" && Object.prototype.hasOwnProperty.call("+f+", '"+e.util.escapeQuotes(z)+"') "),t+=" ) { ");t+=" "+ce+" } "}}d&&(t+=" if ("+y+") { ",g+="}")}}if(I.length){var Be=I;if(Be)for(var oe,Hr=-1,Us=Be.length-1;Hr0||Oe===!1:e.util.schemaHasRules(Oe,e.RULES.all)){p.schema=Oe,p.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(oe),p.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(oe),A?t+=" "+R+" = "+R+" || Object.keys("+f+"); for (var "+x+"=0; "+x+"<"+R+".length; "+x+"++) { var "+v+" = "+R+"["+x+"]; ":t+=" for (var "+v+" in "+f+") { ",t+=" if ("+e.usePattern(oe)+".test("+v+")) { ",p.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers);var Ie=f+"["+v+"]";p.dataPathArr[P]=v;var ce=e.validate(p);p.baseId=M,e.util.varOccurences(ce,E)<2?t+=" "+e.util.varReplace(ce,E,Ie)+" ":t+=" var "+E+" = "+Ie+"; "+ce+" ",d&&(t+=" if (!"+y+") break; "),t+=" } ",d&&(t+=" else "+y+" = true; "),t+=" } ",d&&(t+=" if ("+y+") { ",g+="}")}}}return d&&(t+=" "+g+" if ("+h+" == errors) {"),t}});var _i=H((Jm,yi)=>{"use strict";yi.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="errs__"+n,p=e.util.copy(e),g="";p.level++;var y="valid"+p.level;if(t+="var "+h+" = errors;",e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){p.schema=o,p.schemaPath=l,p.errSchemaPath=u;var v="key"+n,x="idx"+n,P="i"+n,E="' + "+v+" + '",R=p.dataLevel=e.dataLevel+1,T="data"+R,S="dataProperties"+n,I=e.opts.ownProperties,D=e.baseId;I&&(t+=" var "+S+" = undefined; "),I?t+=" "+S+" = "+S+" || Object.keys("+f+"); for (var "+x+"=0; "+x+"<"+S+".length; "+x+"++) { var "+v+" = "+S+"["+x+"]; ":t+=" for (var "+v+" in "+f+") { ",t+=" var startErrs"+n+" = errors; ";var $=v,L=e.compositeRule;e.compositeRule=p.compositeRule=!0;var C=e.validate(p);p.baseId=D,e.util.varOccurences(C,T)<2?t+=" "+e.util.varReplace(C,T,$)+" ":t+=" var "+T+" = "+$+"; "+C+" ",e.compositeRule=p.compositeRule=L,t+=" if (!"+y+") { for (var "+P+"=startErrs"+n+"; "+P+"{"use strict";bi.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p=e.opts.$data&&o&&o.$data,g;p?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",g="schema"+n):g=o;var y="schema"+n;if(!p)if(o.length0||T===!1:e.util.schemaHasRules(T,e.RULES.all))||(v[v.length]=P)}}else var v=o;if(p||v.length){var S=e.errorPath,I=p||v.length>=e.opts.loopRequired,D=e.opts.ownProperties;if(d)if(t+=" var missing"+n+"; ",I){p||(t+=" var "+y+" = validate.schema"+l+"; ");var $="i"+n,L="schema"+n+"["+$+"]",C="' + "+L+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(S,L,e.opts.jsonPointers)),t+=" var "+h+" = true; ",p&&(t+=" if (schema"+n+" === undefined) "+h+" = true; else if (!Array.isArray(schema"+n+")) "+h+" = false; else {"),t+=" for (var "+$+" = 0; "+$+" < "+y+".length; "+$+"++) { "+h+" = "+f+"["+y+"["+$+"]] !== undefined ",D&&(t+=" && Object.prototype.hasOwnProperty.call("+f+", "+y+"["+$+"]) "),t+="; if (!"+h+") break; } ",p&&(t+=" } "),t+=" if (!"+h+") { ";var k=k||[];k.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { missingProperty: '"+C+"' } ",e.opts.messages!==!1&&(t+=" , message: '",e.opts._errorDataPathProperty?t+="is a required property":t+="should have required property \\'"+C+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var N=t;t=k.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+N+"]); ":t+=" validate.errors = ["+N+"]; return false; ":t+=" var err = "+N+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { "}else{t+=" if ( ";var A=v;if(A)for(var M,$=-1,X=A.length-1;${"use strict";Si.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p=e.opts.$data&&o&&o.$data,g;if(p?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",g="schema"+n):g=o,(o||p)&&e.opts.uniqueItems!==!1){p&&(t+=" var "+h+"; if ("+g+" === false || "+g+" === undefined) "+h+" = true; else if (typeof "+g+" != 'boolean') "+h+" = false; else { "),t+=" var i = "+f+".length , "+h+" = true , j; if (i > 1) { ";var y=e.schema.items&&e.schema.items.type,v=Array.isArray(y);if(!y||y=="object"||y=="array"||v&&(y.indexOf("object")>=0||y.indexOf("array")>=0))t+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+f+"[i], "+f+"[j])) { "+h+" = false; break outer; } } } ";else{t+=" var itemIndices = {}, item; for (;i--;) { var item = "+f+"[i]; ";var x="checkDataType"+(v?"s":"");t+=" if ("+e.util[x](y,"item",e.opts.strictNumbers,!0)+") continue; ",v&&(t+=` if (typeof item == 'string') item = '"' + item; `),t+=" if (typeof itemIndices[item] == 'number') { "+h+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}t+=" } ",p&&(t+=" } "),t+=" if (!"+h+") { ";var P=P||[];P.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { i: i, j: j } ",e.opts.messages!==!1&&(t+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(t+=" , schema: ",p?t+="validate.schema"+l:t+=""+o,t+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var E=t;t=P.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+E+"]); ":t+=" validate.errors = ["+E+"]; return false; ":t+=" var err = "+E+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } ",d&&(t+=" else { ")}else d&&(t+=" if (true) { ");return t}});var Ti=H((tv,Ri)=>{"use strict";Ri.exports={$ref:jo(),allOf:Mo(),anyOf:Uo(),$comment:Vo(),const:zo(),contains:Go(),dependencies:Wo(),enum:Ko(),format:Yo(),if:ti(),items:si(),maximum:$a(),minimum:$a(),maxItems:Da(),minItems:Da(),maxLength:Ca(),minLength:Ca(),maxProperties:ka(),minProperties:ka(),multipleOf:li(),not:di(),oneOf:fi(),pattern:mi(),properties:gi(),propertyNames:_i(),required:Ei(),uniqueItems:xi(),validate:Na()}});var Pi=H((rv,Oi)=>{"use strict";var wi=Ti(),La=sr().toHash;Oi.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],r=["type","$comment"],a=["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"],t=["number","integer","string","array","object","boolean","null"];return e.all=La(r),e.types=La(t),e.forEach(function(n){n.rules=n.rules.map(function(i){var o;if(typeof i=="object"){var l=Object.keys(i)[0];o=i[l],i=l,o.forEach(function(d){r.push(d),e.all[d]=!0})}r.push(i);var u=e.all[i]={keyword:i,code:wi[i],implements:o};return u}),e.all.$comment={keyword:"$comment",code:wi.$comment},n.type&&(e.types[n.type]=n)}),e.keywords=La(r.concat(a)),e.custom={},e}});var Ai=H((sv,Ni)=>{"use strict";var Ii=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];Ni.exports=function(s,e){for(var r=0;r{"use strict";var ef=ys().MissingRef;Di.exports=$i;function $i(s,e,r){var a=this;if(typeof this._opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");typeof e=="function"&&(r=e,e=void 0);var t=n(s).then(function(){var o=a._addSchema(s,void 0,e);return o.validate||i(o)});return r&&t.then(function(o){r(null,o)},r),t;function n(o){var l=o.$schema;return l&&!a.getSchema(l)?$i.call(a,{$ref:l},!0):Promise.resolve()}function i(o){try{return a._compile(o)}catch(u){if(u instanceof ef)return l(u);throw u}function l(u){var d=u.missingSchema;if(p(d))throw new Error("Schema "+d+" is loaded but "+u.missingRef+" cannot be resolved");var f=a._loadingSchemas[d];return f||(f=a._loadingSchemas[d]=a._opts.loadSchema(d),f.then(h,h)),f.then(function(g){if(!p(d))return n(g).then(function(){p(d)||a.addSchema(g,d,void 0,e)})}).then(function(){return i(o)});function h(){delete a._loadingSchemas[d]}function p(g){return a._refs[g]||a._schemas[g]}}}}});var Li=H((nv,ki)=>{"use strict";ki.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f,h="data"+(i||""),p="valid"+n,g="errs__"+n,y=e.opts.$data&&o&&o.$data,v;y?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",v="schema"+n):v=o;var x=this,P="definition"+n,E=x.definition,R="",T,S,I,D,$;if(y&&E.$data){$="keywordValidate"+n;var L=E.validateSchema;t+=" var "+P+" = RULES.custom['"+r+"'].definition; var "+$+" = "+P+".validate;"}else{if(D=e.useCustomRule(x,o,e.schema,e),!D)return;v="validate.schema"+l,$=D.code,T=E.compile,S=E.inline,I=E.macro}var C=$+".errors",k="i"+n,N="ruleErr"+n,A=E.async;if(A&&!e.async)throw new Error("async keyword in sync schema");if(S||I||(t+=""+C+" = null;"),t+="var "+g+" = errors;var "+p+";",y&&E.$data&&(R+="}",t+=" if ("+v+" === undefined) { "+p+" = true; } else { ",L&&(R+="}",t+=" "+p+" = "+P+".validateSchema("+v+"); if ("+p+") { ")),S)E.statements?t+=" "+D.validate+" ":t+=" "+p+" = "+D.validate+"; ";else if(I){var M=e.util.copy(e),R="";M.level++;var X="valid"+M.level;M.schema=D.validate,M.schemaPath="";var W=e.compositeRule;e.compositeRule=M.compositeRule=!0;var ee=e.validate(M).replace(/validate\.schema/g,$);e.compositeRule=M.compositeRule=W,t+=" "+ee}else{var Q=Q||[];Q.push(t),t="",t+=" "+$+".call( ",e.opts.passContext?t+="this":t+="self",T||E.schema===!1?t+=" , "+h+" ":t+=" , "+v+" , "+h+" , validate.schema"+e.schemaPath+" ",t+=" , (dataPath || '')",e.errorPath!='""'&&(t+=" + "+e.errorPath);var z=i?"data"+(i-1||""):"parentData",pe=i?e.dataPathArr[i]:"parentDataProperty";t+=" , "+z+" , "+pe+" , rootData ) ";var Re=t;t=Q.pop(),E.errors===!1?(t+=" "+p+" = ",A&&(t+="await "),t+=""+Re+"; "):A?(C="customErrors"+n,t+=" var "+C+" = null; try { "+p+" = await "+Re+"; } catch (e) { "+p+" = false; if (e instanceof ValidationError) "+C+" = e.errors; else throw e; } "):t+=" "+C+" = null; "+p+" = "+Re+"; "}if(E.modifying&&(t+=" if ("+z+") "+h+" = "+z+"["+pe+"];"),t+=""+R,E.valid)d&&(t+=" if (true) { ");else{t+=" if ( ",E.valid===void 0?(t+=" !",I?t+=""+X:t+=""+p):t+=" "+!E.valid+" ",t+=") { ",f=x.keyword;var Q=Q||[];Q.push(t),t="";var Q=Q||[];Q.push(t),t="",e.createErrors!==!1?(t+=" { keyword: '"+(f||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { keyword: '"+x.keyword+"' } ",e.opts.messages!==!1&&(t+=` , message: 'should pass "`+x.keyword+`" keyword validation' `),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),t+=" } "):t+=" {} ";var De=t;t=Q.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+De+"]); ":t+=" validate.errors = ["+De+"]; return false; ":t+=" var err = "+De+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var oe=t;t=Q.pop(),S?E.errors?E.errors!="full"&&(t+=" for (var "+k+"="+g+"; "+k+"{tf.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var Mi=H((iv,Fi)=>{"use strict";var ji=ja();Fi.exports={$id:"https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:ji.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:ji.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}});var Ui=H((cv,qi)=>{"use strict";var rf=/^[a-z_$][a-z0-9_$-]*$/i,sf=Li(),af=Mi();qi.exports={add:nf,get:of,remove:cf,validate:Fa};function nf(s,e){var r=this.RULES;if(r.keywords[s])throw new Error("Keyword "+s+" is already defined");if(!rf.test(s))throw new Error("Keyword "+s+" is not a valid identifier");if(e){this.validateKeyword(e,!0);var a=e.type;if(Array.isArray(a))for(var t=0;t{lf.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON Schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var qa=H((uv,Ki)=>{"use strict";var Hi=Eo(),ar=gs(),uf=xo(),zi=xa(),df=Ia(),pf=ko(),ff=Pi(),Zi=Ai(),Gi=sr();Ki.exports=ye;ye.prototype.validate=mf;ye.prototype.compile=vf;ye.prototype.addSchema=gf;ye.prototype.addMetaSchema=yf;ye.prototype.validateSchema=_f;ye.prototype.getSchema=Ef;ye.prototype.removeSchema=xf;ye.prototype.addFormat=Af;ye.prototype.errorsText=Nf;ye.prototype._addSchema=Rf;ye.prototype._compile=Tf;ye.prototype.compileAsync=Ci();var ws=Ui();ye.prototype.addKeyword=ws.add;ye.prototype.getKeyword=ws.get;ye.prototype.removeKeyword=ws.remove;ye.prototype.validateKeyword=ws.validate;var Xi=ys();ye.ValidationError=Xi.Validation;ye.MissingRefError=Xi.MissingRef;ye.$dataMetaSchema=Zi;var Ts="http://json-schema.org/draft-07/schema",Vi=["removeAdditional","useDefaults","coerceTypes","strictDefaults"],hf=["/properties"];function ye(s){if(!(this instanceof ye))return new ye(s);s=this._opts=Gi.copy(s)||{},jf(this),this._schemas={},this._refs={},this._fragments={},this._formats=pf(s.format),this._cache=s.cache||new uf,this._loadingSchemas={},this._compilations=[],this.RULES=ff(),this._getId=wf(s),s.loopRequired=s.loopRequired||1/0,s.errorDataPath=="property"&&(s._errorDataPathProperty=!0),s.serialize===void 0&&(s.serialize=df),this._metaOpts=Lf(this),s.formats&&Cf(this),s.keywords&&kf(this),$f(this),typeof s.meta=="object"&&this.addMetaSchema(s.meta),s.nullable&&this.addKeyword("nullable",{metaSchema:{type:"boolean"}}),Df(this)}function mf(s,e){var r;if(typeof s=="string"){if(r=this.getSchema(s),!r)throw new Error('no schema with key or ref "'+s+'"')}else{var a=this._addSchema(s);r=a.validate||this._compile(a)}var t=r(e);return r.$async!==!0&&(this.errors=r.errors),t}function vf(s,e){var r=this._addSchema(s,void 0,e);return r.validate||this._compile(r)}function gf(s,e,r,a){if(Array.isArray(s)){for(var t=0;t{sc.exports=rc;rc.sync=qf;var ec=require("fs");function Mf(s,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var a=0;a{cc.exports=oc;oc.sync=Uf;var nc=require("fs");function oc(s,e,r){nc.stat(s,function(a,t){r(a,a?!1:ic(t,e))})}function Uf(s,e){return ic(nc.statSync(s),e)}function ic(s,e){return s.isFile()&&Bf(s,e)}function Bf(s,e){var r=s.mode,a=s.uid,t=s.gid,n=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),i=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),o=parseInt("100",8),l=parseInt("010",8),u=parseInt("001",8),d=o|l,f=r&u||r&l&&t===i||r&o&&a===n||r&d&&n===0;return f}});var dc=H((Rv,uc)=>{var xv=require("fs"),As;process.platform==="win32"||global.TESTING_WINDOWS?As=ac():As=lc();uc.exports=Ba;Ba.sync=Vf;function Ba(s,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(a,t){Ba(s,e||{},function(n,i){n?t(n):a(i)})})}As(s,e||{},function(a,t){a&&(a.code==="EACCES"||e&&e.ignoreErrors)&&(a=null,t=!1),r(a,t)})}function Vf(s,e){try{return As.sync(s,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var yc=H((Tv,gc)=>{var xr=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",pc=require("path"),Hf=xr?";":":",fc=dc(),hc=s=>Object.assign(new Error(`not found: ${s}`),{code:"ENOENT"}),mc=(s,e)=>{let r=e.colon||Hf,a=s.match(/\//)||xr&&s.match(/\\/)?[""]:[...xr?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],t=xr?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=xr?t.split(r):[""];return xr&&s.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:a,pathExt:n,pathExtExe:t}},vc=(s,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:a,pathExt:t,pathExtExe:n}=mc(s,e),i=[],o=u=>new Promise((d,f)=>{if(u===a.length)return e.all&&i.length?d(i):f(hc(s));let h=a[u],p=/^".*"$/.test(h)?h.slice(1,-1):h,g=pc.join(p,s),y=!p&&/^\.[\\\/]/.test(s)?s.slice(0,2)+g:g;d(l(y,u,0))}),l=(u,d,f)=>new Promise((h,p)=>{if(f===t.length)return h(o(d+1));let g=t[f];fc(u+g,{pathExt:n},(y,v)=>{if(!y&&v)if(e.all)i.push(u+g);else return h(u+g);return h(l(u,d,f+1))})});return r?o(0).then(u=>r(null,u),r):o(0)},zf=(s,e)=>{e=e||{};let{pathEnv:r,pathExt:a,pathExtExe:t}=mc(s,e),n=[];for(let i=0;i{"use strict";var _c=(s={})=>{let e=s.env||process.env;return(s.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(a=>a.toUpperCase()==="PATH")||"Path"};Va.exports=_c;Va.exports.default=_c});var Rc=H((Ov,xc)=>{"use strict";var Ec=require("path"),Zf=yc(),Gf=bc();function Sc(s,e){let r=s.options.env||process.env,a=process.cwd(),t=s.options.cwd!=null,n=t&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(s.options.cwd)}catch{}let i;try{i=Zf.sync(s.command,{path:r[Gf({env:r})],pathExt:e?Ec.delimiter:void 0})}catch{}finally{n&&process.chdir(a)}return i&&(i=Ec.resolve(t?s.options.cwd:"",i)),i}function Xf(s){return Sc(s)||Sc(s,!0)}xc.exports=Xf});var Tc=H((Pv,za)=>{"use strict";var Ha=/([()\][%!^"`<>&|;, *?])/g;function Wf(s){return s=s.replace(Ha,"^$1"),s}function Qf(s,e){return s=`${s}`,s=s.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),s=s.replace(/(?=(\\+?)?)\1$/,"$1$1"),s=`"${s}"`,s=s.replace(Ha,"^$1"),e&&(s=s.replace(Ha,"^$1")),s}za.exports.command=Wf;za.exports.argument=Qf});var Oc=H((Iv,wc)=>{"use strict";wc.exports=/^#!(.*)/});var Ic=H((Nv,Pc)=>{"use strict";var Kf=Oc();Pc.exports=(s="")=>{let e=s.match(Kf);if(!e)return null;let[r,a]=e[0].replace(/#! ?/,"").split(" "),t=r.split("/").pop();return t==="env"?a:a?`${t} ${a}`:t}});var Ac=H((Av,Nc)=>{"use strict";var Za=require("fs"),Jf=Ic();function Yf(s){let r=Buffer.alloc(150),a;try{a=Za.openSync(s,"r"),Za.readSync(a,r,0,150,0),Za.closeSync(a)}catch{}return Jf(r.toString())}Nc.exports=Yf});var kc=H(($v,Cc)=>{"use strict";var eh=require("path"),$c=Rc(),Dc=Tc(),th=Ac(),rh=process.platform==="win32",sh=/\.(?:com|exe)$/i,ah=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function nh(s){s.file=$c(s);let e=s.file&&th(s.file);return e?(s.args.unshift(s.file),s.command=e,$c(s)):s.file}function oh(s){if(!rh)return s;let e=nh(s),r=!sh.test(e);if(s.options.forceShell||r){let a=ah.test(e);s.command=eh.normalize(s.command),s.command=Dc.command(s.command),s.args=s.args.map(n=>Dc.argument(n,a));let t=[s.command].concat(s.args).join(" ");s.args=["/d","/s","/c",`"${t}"`],s.command=process.env.comspec||"cmd.exe",s.options.windowsVerbatimArguments=!0}return s}function ih(s,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let a={command:s,args:e,options:r,file:void 0,original:{command:s,args:e}};return r.shell?a:oh(a)}Cc.exports=ih});var Fc=H((Dv,jc)=>{"use strict";var Ga=process.platform==="win32";function Xa(s,e){return Object.assign(new Error(`${e} ${s.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${s.command}`,path:s.command,spawnargs:s.args})}function ch(s,e){if(!Ga)return;let r=s.emit;s.emit=function(a,t){if(a==="exit"){let n=Lc(t,e);if(n)return r.call(s,"error",n)}return r.apply(s,arguments)}}function Lc(s,e){return Ga&&s===1&&!e.file?Xa(e.original,"spawn"):null}function lh(s,e){return Ga&&s===1&&!e.file?Xa(e.original,"spawnSync"):null}jc.exports={hookChildProcess:ch,verifyENOENT:Lc,verifyENOENTSync:lh,notFoundError:Xa}});var Uc=H((Cv,Rr)=>{"use strict";var Mc=require("child_process"),Wa=kc(),Qa=Fc();function qc(s,e,r){let a=Wa(s,e,r),t=Mc.spawn(a.command,a.args,a.options);return Qa.hookChildProcess(t,a),t}function uh(s,e,r){let a=Wa(s,e,r),t=Mc.spawnSync(a.command,a.args,a.options);return t.error=t.error||Qa.verifyENOENTSync(t.status,a),t}Rr.exports=qc;Rr.exports.spawn=qc;Rr.exports.sync=uh;Rr.exports._parse=Wa;Rr.exports._enoent=Qa});var c={};nu(c,{BRAND:()=>$u,DIRTY:()=>Ut,EMPTY_PATH:()=>uu,INVALID:()=>Z,NEVER:()=>vd,OK:()=>Ne,ParseStatus:()=>Pe,Schema:()=>Y,ZodAny:()=>Ot,ZodArray:()=>Et,ZodBigInt:()=>Vt,ZodBoolean:()=>Ht,ZodBranded:()=>Dr,ZodCatch:()=>tr,ZodDate:()=>zt,ZodDefault:()=>er,ZodDiscriminatedUnion:()=>Qr,ZodEffects:()=>Ke,ZodEnum:()=>Jt,ZodError:()=>Me,ZodFirstPartyTypeKind:()=>F,ZodFunction:()=>Jr,ZodIntersection:()=>Wt,ZodIssueCode:()=>j,ZodLazy:()=>Qt,ZodLiteral:()=>Kt,ZodMap:()=>yr,ZodNaN:()=>br,ZodNativeEnum:()=>Yt,ZodNever:()=>tt,ZodNull:()=>Gt,ZodNullable:()=>ut,ZodNumber:()=>Bt,ZodObject:()=>qe,ZodOptional:()=>We,ZodParsedType:()=>U,ZodPipeline:()=>Cr,ZodPromise:()=>Pt,ZodReadonly:()=>rr,ZodRecord:()=>Kr,ZodSchema:()=>Y,ZodSet:()=>_r,ZodString:()=>wt,ZodSymbol:()=>vr,ZodTransformer:()=>Ke,ZodTuple:()=>lt,ZodType:()=>Y,ZodUndefined:()=>Zt,ZodUnion:()=>Xt,ZodUnknown:()=>bt,ZodVoid:()=>gr,addIssueToContext:()=>q,any:()=>Uu,array:()=>zu,bigint:()=>Lu,boolean:()=>Cn,coerce:()=>md,custom:()=>An,date:()=>ju,datetimeRegex:()=>In,defaultErrorMap:()=>yt,discriminatedUnion:()=>Wu,effect:()=>id,enum:()=>ad,function:()=>td,getErrorMap:()=>fr,getParsedType:()=>ct,instanceof:()=>Cu,intersection:()=>Qu,isAborted:()=>Xr,isAsync:()=>hr,isDirty:()=>Wr,isValid:()=>Tt,late:()=>Du,lazy:()=>rd,literal:()=>sd,makeIssue:()=>$r,map:()=>Yu,nan:()=>ku,nativeEnum:()=>nd,never:()=>Vu,null:()=>qu,nullable:()=>ld,number:()=>Dn,object:()=>Zu,objectUtil:()=>Zs,oboolean:()=>hd,onumber:()=>fd,optional:()=>cd,ostring:()=>pd,pipeline:()=>dd,preprocess:()=>ud,promise:()=>od,quotelessJson:()=>iu,record:()=>Ju,set:()=>ed,setErrorMap:()=>lu,strictObject:()=>Gu,string:()=>$n,symbol:()=>Fu,transformer:()=>id,tuple:()=>Ku,undefined:()=>Mu,union:()=>Xu,unknown:()=>Bu,util:()=>te,void:()=>Hu});var te;(function(s){s.assertEqual=t=>{};function e(t){}s.assertIs=e;function r(t){throw new Error}s.assertNever=r,s.arrayToEnum=t=>{let n={};for(let i of t)n[i]=i;return n},s.getValidEnumValues=t=>{let n=s.objectKeys(t).filter(o=>typeof t[t[o]]!="number"),i={};for(let o of n)i[o]=t[o];return s.objectValues(i)},s.objectValues=t=>s.objectKeys(t).map(function(n){return t[n]}),s.objectKeys=typeof Object.keys=="function"?t=>Object.keys(t):t=>{let n=[];for(let i in t)Object.prototype.hasOwnProperty.call(t,i)&&n.push(i);return n},s.find=(t,n)=>{for(let i of t)if(n(i))return i},s.isInteger=typeof Number.isInteger=="function"?t=>Number.isInteger(t):t=>typeof t=="number"&&Number.isFinite(t)&&Math.floor(t)===t;function a(t,n=" | "){return t.map(i=>typeof i=="string"?`'${i}'`:i).join(n)}s.joinValues=a,s.jsonStringifyReplacer=(t,n)=>typeof n=="bigint"?n.toString():n})(te||(te={}));var Zs;(function(s){s.mergeShapes=(e,r)=>({...e,...r})})(Zs||(Zs={}));var U=te.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),ct=s=>{switch(typeof s){case"undefined":return U.undefined;case"string":return U.string;case"number":return Number.isNaN(s)?U.nan:U.number;case"boolean":return U.boolean;case"function":return U.function;case"bigint":return U.bigint;case"symbol":return U.symbol;case"object":return Array.isArray(s)?U.array:s===null?U.null:s.then&&typeof s.then=="function"&&s.catch&&typeof s.catch=="function"?U.promise:typeof Map<"u"&&s instanceof Map?U.map:typeof Set<"u"&&s instanceof Set?U.set:typeof Date<"u"&&s instanceof Date?U.date:U.object;default:return U.unknown}};var j=te.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),iu=s=>JSON.stringify(s,null,2).replace(/"([^"]+)":/g,"$1:"),Me=class s extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=a=>{this.issues=[...this.issues,a]},this.addIssues=(a=[])=>{this.issues=[...this.issues,...a]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=e}format(e){let r=e||function(n){return n.message},a={_errors:[]},t=n=>{for(let i of n.issues)if(i.code==="invalid_union")i.unionErrors.map(t);else if(i.code==="invalid_return_type")t(i.returnTypeError);else if(i.code==="invalid_arguments")t(i.argumentsError);else if(i.path.length===0)a._errors.push(r(i));else{let o=a,l=0;for(;lr.message){let r={},a=[];for(let t of this.issues)if(t.path.length>0){let n=t.path[0];r[n]=r[n]||[],r[n].push(e(t))}else a.push(e(t));return{formErrors:a,fieldErrors:r}}get formErrors(){return this.flatten()}};Me.create=s=>new Me(s);var cu=(s,e)=>{let r;switch(s.code){case j.invalid_type:s.received===U.undefined?r="Required":r=`Expected ${s.expected}, received ${s.received}`;break;case j.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(s.expected,te.jsonStringifyReplacer)}`;break;case j.unrecognized_keys:r=`Unrecognized key(s) in object: ${te.joinValues(s.keys,", ")}`;break;case j.invalid_union:r="Invalid input";break;case j.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${te.joinValues(s.options)}`;break;case j.invalid_enum_value:r=`Invalid enum value. Expected ${te.joinValues(s.options)}, received '${s.received}'`;break;case j.invalid_arguments:r="Invalid function arguments";break;case j.invalid_return_type:r="Invalid function return type";break;case j.invalid_date:r="Invalid date";break;case j.invalid_string:typeof s.validation=="object"?"includes"in s.validation?(r=`Invalid input: must include "${s.validation.includes}"`,typeof s.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${s.validation.position}`)):"startsWith"in s.validation?r=`Invalid input: must start with "${s.validation.startsWith}"`:"endsWith"in s.validation?r=`Invalid input: must end with "${s.validation.endsWith}"`:te.assertNever(s.validation):s.validation!=="regex"?r=`Invalid ${s.validation}`:r="Invalid";break;case j.too_small:s.type==="array"?r=`Array must contain ${s.exact?"exactly":s.inclusive?"at least":"more than"} ${s.minimum} element(s)`:s.type==="string"?r=`String must contain ${s.exact?"exactly":s.inclusive?"at least":"over"} ${s.minimum} character(s)`:s.type==="number"?r=`Number must be ${s.exact?"exactly equal to ":s.inclusive?"greater than or equal to ":"greater than "}${s.minimum}`:s.type==="bigint"?r=`Number must be ${s.exact?"exactly equal to ":s.inclusive?"greater than or equal to ":"greater than "}${s.minimum}`:s.type==="date"?r=`Date must be ${s.exact?"exactly equal to ":s.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(s.minimum))}`:r="Invalid input";break;case j.too_big:s.type==="array"?r=`Array must contain ${s.exact?"exactly":s.inclusive?"at most":"less than"} ${s.maximum} element(s)`:s.type==="string"?r=`String must contain ${s.exact?"exactly":s.inclusive?"at most":"under"} ${s.maximum} character(s)`:s.type==="number"?r=`Number must be ${s.exact?"exactly":s.inclusive?"less than or equal to":"less than"} ${s.maximum}`:s.type==="bigint"?r=`BigInt must be ${s.exact?"exactly":s.inclusive?"less than or equal to":"less than"} ${s.maximum}`:s.type==="date"?r=`Date must be ${s.exact?"exactly":s.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(s.maximum))}`:r="Invalid input";break;case j.custom:r="Invalid input";break;case j.invalid_intersection_types:r="Intersection results could not be merged";break;case j.not_multiple_of:r=`Number must be a multiple of ${s.multipleOf}`;break;case j.not_finite:r="Number must be finite";break;default:r=e.defaultError,te.assertNever(s)}return{message:r}},yt=cu;var Rn=yt;function lu(s){Rn=s}function fr(){return Rn}var $r=s=>{let{data:e,path:r,errorMaps:a,issueData:t}=s,n=[...r,...t.path||[]],i={...t,path:n};if(t.message!==void 0)return{...t,path:n,message:t.message};let o="",l=a.filter(u=>!!u).slice().reverse();for(let u of l)o=u(i,{data:e,defaultError:o}).message;return{...t,path:n,message:o}},uu=[];function q(s,e){let r=fr(),a=$r({issueData:e,data:s.data,path:s.path,errorMaps:[s.common.contextualErrorMap,s.schemaErrorMap,r,r===yt?void 0:yt].filter(t=>!!t)});s.common.issues.push(a)}var Pe=class s{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,r){let a=[];for(let t of r){if(t.status==="aborted")return Z;t.status==="dirty"&&e.dirty(),a.push(t.value)}return{status:e.value,value:a}}static async mergeObjectAsync(e,r){let a=[];for(let t of r){let n=await t.key,i=await t.value;a.push({key:n,value:i})}return s.mergeObjectSync(e,a)}static mergeObjectSync(e,r){let a={};for(let t of r){let{key:n,value:i}=t;if(n.status==="aborted"||i.status==="aborted")return Z;n.status==="dirty"&&e.dirty(),i.status==="dirty"&&e.dirty(),n.value!=="__proto__"&&(typeof i.value<"u"||t.alwaysSet)&&(a[n.value]=i.value)}return{status:e.value,value:a}}},Z=Object.freeze({status:"aborted"}),Ut=s=>({status:"dirty",value:s}),Ne=s=>({status:"valid",value:s}),Xr=s=>s.status==="aborted",Wr=s=>s.status==="dirty",Tt=s=>s.status==="valid",hr=s=>typeof Promise<"u"&&s instanceof Promise;var V;(function(s){s.errToObj=e=>typeof e=="string"?{message:e}:e||{},s.toString=e=>typeof e=="string"?e:e?.message})(V||(V={}));var Qe=class{constructor(e,r,a,t){this._cachedPath=[],this.parent=e,this.data=r,this._path=a,this._key=t}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},Tn=(s,e)=>{if(Tt(e))return{success:!0,data:e.value};if(!s.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let r=new Me(s.common.issues);return this._error=r,this._error}}};function K(s){if(!s)return{};let{errorMap:e,invalid_type_error:r,required_error:a,description:t}=s;if(e&&(r||a))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:t}:{errorMap:(i,o)=>{let{message:l}=s;return i.code==="invalid_enum_value"?{message:l??o.defaultError}:typeof o.data>"u"?{message:l??a??o.defaultError}:i.code!=="invalid_type"?{message:o.defaultError}:{message:l??r??o.defaultError}},description:t}}var Y=class{get description(){return this._def.description}_getType(e){return ct(e.data)}_getOrReturnCtx(e,r){return r||{common:e.parent.common,data:e.data,parsedType:ct(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new Pe,ctx:{common:e.parent.common,data:e.data,parsedType:ct(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let r=this._parse(e);if(hr(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(e){let r=this._parse(e);return Promise.resolve(r)}parse(e,r){let a=this.safeParse(e,r);if(a.success)return a.data;throw a.error}safeParse(e,r){let a={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ct(e)},t=this._parseSync({data:e,path:a.path,parent:a});return Tn(a,t)}"~validate"(e){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ct(e)};if(!this["~standard"].async)try{let a=this._parseSync({data:e,path:[],parent:r});return Tt(a)?{value:a.value}:{issues:r.common.issues}}catch(a){a?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),r.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:r}).then(a=>Tt(a)?{value:a.value}:{issues:r.common.issues})}async parseAsync(e,r){let a=await this.safeParseAsync(e,r);if(a.success)return a.data;throw a.error}async safeParseAsync(e,r){let a={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ct(e)},t=this._parse({data:e,path:a.path,parent:a}),n=await(hr(t)?t:Promise.resolve(t));return Tn(a,n)}refine(e,r){let a=t=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(t):r;return this._refinement((t,n)=>{let i=e(t),o=()=>n.addIssue({code:j.custom,...a(t)});return typeof Promise<"u"&&i instanceof Promise?i.then(l=>l?!0:(o(),!1)):i?!0:(o(),!1)})}refinement(e,r){return this._refinement((a,t)=>e(a)?!0:(t.addIssue(typeof r=="function"?r(a,t):r),!1))}_refinement(e){return new Ke({schema:this,typeName:F.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:r=>this["~validate"](r)}}optional(){return We.create(this,this._def)}nullable(){return ut.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Et.create(this)}promise(){return Pt.create(this,this._def)}or(e){return Xt.create([this,e],this._def)}and(e){return Wt.create(this,e,this._def)}transform(e){return new Ke({...K(this._def),schema:this,typeName:F.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let r=typeof e=="function"?e:()=>e;return new er({...K(this._def),innerType:this,defaultValue:r,typeName:F.ZodDefault})}brand(){return new Dr({typeName:F.ZodBranded,type:this,...K(this._def)})}catch(e){let r=typeof e=="function"?e:()=>e;return new tr({...K(this._def),innerType:this,catchValue:r,typeName:F.ZodCatch})}describe(e){let r=this.constructor;return new r({...this._def,description:e})}pipe(e){return Cr.create(this,e)}readonly(){return rr.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},du=/^c[^\s-]{8,}$/i,pu=/^[0-9a-z]+$/,fu=/^[0-9A-HJKMNP-TV-Z]{26}$/i,hu=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,mu=/^[a-z0-9_-]{21}$/i,vu=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,gu=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,yu=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,_u="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Gs,bu=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Eu=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,Su=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,xu=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Ru=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Tu=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,On="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",wu=new RegExp(`^${On}$`);function Pn(s){let e="[0-5]\\d";s.precision?e=`${e}\\.\\d{${s.precision}}`:s.precision==null&&(e=`${e}(\\.\\d+)?`);let r=s.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${r}`}function Ou(s){return new RegExp(`^${Pn(s)}$`)}function In(s){let e=`${On}T${Pn(s)}`,r=[];return r.push(s.local?"Z?":"Z"),s.offset&&r.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${r.join("|")})`,new RegExp(`^${e}$`)}function Pu(s,e){return!!((e==="v4"||!e)&&bu.test(s)||(e==="v6"||!e)&&Su.test(s))}function Iu(s,e){if(!vu.test(s))return!1;try{let[r]=s.split(".");if(!r)return!1;let a=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),t=JSON.parse(atob(a));return!(typeof t!="object"||t===null||"typ"in t&&t?.typ!=="JWT"||!t.alg||e&&t.alg!==e)}catch{return!1}}function Nu(s,e){return!!((e==="v4"||!e)&&Eu.test(s)||(e==="v6"||!e)&&xu.test(s))}var wt=class s extends Y{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==U.string){let n=this._getOrReturnCtx(e);return q(n,{code:j.invalid_type,expected:U.string,received:n.parsedType}),Z}let a=new Pe,t;for(let n of this._def.checks)if(n.kind==="min")e.data.lengthn.value&&(t=this._getOrReturnCtx(e,t),q(t,{code:j.too_big,maximum:n.value,type:"string",inclusive:!0,exact:!1,message:n.message}),a.dirty());else if(n.kind==="length"){let i=e.data.length>n.value,o=e.data.lengthe.test(t),{validation:r,code:j.invalid_string,...V.errToObj(a)})}_addCheck(e){return new s({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...V.errToObj(e)})}url(e){return this._addCheck({kind:"url",...V.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...V.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...V.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...V.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...V.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...V.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...V.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...V.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...V.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...V.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...V.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...V.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...V.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...V.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...V.errToObj(e)})}regex(e,r){return this._addCheck({kind:"regex",regex:e,...V.errToObj(r)})}includes(e,r){return this._addCheck({kind:"includes",value:e,position:r?.position,...V.errToObj(r?.message)})}startsWith(e,r){return this._addCheck({kind:"startsWith",value:e,...V.errToObj(r)})}endsWith(e,r){return this._addCheck({kind:"endsWith",value:e,...V.errToObj(r)})}min(e,r){return this._addCheck({kind:"min",value:e,...V.errToObj(r)})}max(e,r){return this._addCheck({kind:"max",value:e,...V.errToObj(r)})}length(e,r){return this._addCheck({kind:"length",value:e,...V.errToObj(r)})}nonempty(e){return this.min(1,V.errToObj(e))}trim(){return new s({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new s({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new s({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxLength(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew wt({checks:[],typeName:F.ZodString,coerce:s?.coerce??!1,...K(s)});function Au(s,e){let r=(s.toString().split(".")[1]||"").length,a=(e.toString().split(".")[1]||"").length,t=r>a?r:a,n=Number.parseInt(s.toFixed(t).replace(".","")),i=Number.parseInt(e.toFixed(t).replace(".",""));return n%i/10**t}var Bt=class s extends Y{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==U.number){let n=this._getOrReturnCtx(e);return q(n,{code:j.invalid_type,expected:U.number,received:n.parsedType}),Z}let a,t=new Pe;for(let n of this._def.checks)n.kind==="int"?te.isInteger(e.data)||(a=this._getOrReturnCtx(e,a),q(a,{code:j.invalid_type,expected:"integer",received:"float",message:n.message}),t.dirty()):n.kind==="min"?(n.inclusive?e.datan.value:e.data>=n.value)&&(a=this._getOrReturnCtx(e,a),q(a,{code:j.too_big,maximum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),t.dirty()):n.kind==="multipleOf"?Au(e.data,n.value)!==0&&(a=this._getOrReturnCtx(e,a),q(a,{code:j.not_multiple_of,multipleOf:n.value,message:n.message}),t.dirty()):n.kind==="finite"?Number.isFinite(e.data)||(a=this._getOrReturnCtx(e,a),q(a,{code:j.not_finite,message:n.message}),t.dirty()):te.assertNever(n);return{status:t.value,value:e.data}}gte(e,r){return this.setLimit("min",e,!0,V.toString(r))}gt(e,r){return this.setLimit("min",e,!1,V.toString(r))}lte(e,r){return this.setLimit("max",e,!0,V.toString(r))}lt(e,r){return this.setLimit("max",e,!1,V.toString(r))}setLimit(e,r,a,t){return new s({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:a,message:V.toString(t)}]})}_addCheck(e){return new s({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:V.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:V.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:V.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:V.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:V.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:V.toString(r)})}finite(e){return this._addCheck({kind:"finite",message:V.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:V.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:V.toString(e)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuee.kind==="int"||e.kind==="multipleOf"&&te.isInteger(e.value))}get isFinite(){let e=null,r=null;for(let a of this._def.checks){if(a.kind==="finite"||a.kind==="int"||a.kind==="multipleOf")return!0;a.kind==="min"?(r===null||a.value>r)&&(r=a.value):a.kind==="max"&&(e===null||a.valuenew Bt({checks:[],typeName:F.ZodNumber,coerce:s?.coerce||!1,...K(s)});var Vt=class s extends Y{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==U.bigint)return this._getInvalidInput(e);let a,t=new Pe;for(let n of this._def.checks)n.kind==="min"?(n.inclusive?e.datan.value:e.data>=n.value)&&(a=this._getOrReturnCtx(e,a),q(a,{code:j.too_big,type:"bigint",maximum:n.value,inclusive:n.inclusive,message:n.message}),t.dirty()):n.kind==="multipleOf"?e.data%n.value!==BigInt(0)&&(a=this._getOrReturnCtx(e,a),q(a,{code:j.not_multiple_of,multipleOf:n.value,message:n.message}),t.dirty()):te.assertNever(n);return{status:t.value,value:e.data}}_getInvalidInput(e){let r=this._getOrReturnCtx(e);return q(r,{code:j.invalid_type,expected:U.bigint,received:r.parsedType}),Z}gte(e,r){return this.setLimit("min",e,!0,V.toString(r))}gt(e,r){return this.setLimit("min",e,!1,V.toString(r))}lte(e,r){return this.setLimit("max",e,!0,V.toString(r))}lt(e,r){return this.setLimit("max",e,!1,V.toString(r))}setLimit(e,r,a,t){return new s({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:a,message:V.toString(t)}]})}_addCheck(e){return new s({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:V.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:V.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:V.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:V.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:V.toString(r)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew Vt({checks:[],typeName:F.ZodBigInt,coerce:s?.coerce??!1,...K(s)});var Ht=class extends Y{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==U.boolean){let a=this._getOrReturnCtx(e);return q(a,{code:j.invalid_type,expected:U.boolean,received:a.parsedType}),Z}return Ne(e.data)}};Ht.create=s=>new Ht({typeName:F.ZodBoolean,coerce:s?.coerce||!1,...K(s)});var zt=class s extends Y{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==U.date){let n=this._getOrReturnCtx(e);return q(n,{code:j.invalid_type,expected:U.date,received:n.parsedType}),Z}if(Number.isNaN(e.data.getTime())){let n=this._getOrReturnCtx(e);return q(n,{code:j.invalid_date}),Z}let a=new Pe,t;for(let n of this._def.checks)n.kind==="min"?e.data.getTime()n.value&&(t=this._getOrReturnCtx(e,t),q(t,{code:j.too_big,message:n.message,inclusive:!0,exact:!1,maximum:n.value,type:"date"}),a.dirty()):te.assertNever(n);return{status:a.value,value:new Date(e.data.getTime())}}_addCheck(e){return new s({...this._def,checks:[...this._def.checks,e]})}min(e,r){return this._addCheck({kind:"min",value:e.getTime(),message:V.toString(r)})}max(e,r){return this._addCheck({kind:"max",value:e.getTime(),message:V.toString(r)})}get minDate(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew zt({checks:[],coerce:s?.coerce||!1,typeName:F.ZodDate,...K(s)});var vr=class extends Y{_parse(e){if(this._getType(e)!==U.symbol){let a=this._getOrReturnCtx(e);return q(a,{code:j.invalid_type,expected:U.symbol,received:a.parsedType}),Z}return Ne(e.data)}};vr.create=s=>new vr({typeName:F.ZodSymbol,...K(s)});var Zt=class extends Y{_parse(e){if(this._getType(e)!==U.undefined){let a=this._getOrReturnCtx(e);return q(a,{code:j.invalid_type,expected:U.undefined,received:a.parsedType}),Z}return Ne(e.data)}};Zt.create=s=>new Zt({typeName:F.ZodUndefined,...K(s)});var Gt=class extends Y{_parse(e){if(this._getType(e)!==U.null){let a=this._getOrReturnCtx(e);return q(a,{code:j.invalid_type,expected:U.null,received:a.parsedType}),Z}return Ne(e.data)}};Gt.create=s=>new Gt({typeName:F.ZodNull,...K(s)});var Ot=class extends Y{constructor(){super(...arguments),this._any=!0}_parse(e){return Ne(e.data)}};Ot.create=s=>new Ot({typeName:F.ZodAny,...K(s)});var bt=class extends Y{constructor(){super(...arguments),this._unknown=!0}_parse(e){return Ne(e.data)}};bt.create=s=>new bt({typeName:F.ZodUnknown,...K(s)});var tt=class extends Y{_parse(e){let r=this._getOrReturnCtx(e);return q(r,{code:j.invalid_type,expected:U.never,received:r.parsedType}),Z}};tt.create=s=>new tt({typeName:F.ZodNever,...K(s)});var gr=class extends Y{_parse(e){if(this._getType(e)!==U.undefined){let a=this._getOrReturnCtx(e);return q(a,{code:j.invalid_type,expected:U.void,received:a.parsedType}),Z}return Ne(e.data)}};gr.create=s=>new gr({typeName:F.ZodVoid,...K(s)});var Et=class s extends Y{_parse(e){let{ctx:r,status:a}=this._processInputParams(e),t=this._def;if(r.parsedType!==U.array)return q(r,{code:j.invalid_type,expected:U.array,received:r.parsedType}),Z;if(t.exactLength!==null){let i=r.data.length>t.exactLength.value,o=r.data.lengtht.maxLength.value&&(q(r,{code:j.too_big,maximum:t.maxLength.value,type:"array",inclusive:!0,exact:!1,message:t.maxLength.message}),a.dirty()),r.common.async)return Promise.all([...r.data].map((i,o)=>t.type._parseAsync(new Qe(r,i,r.path,o)))).then(i=>Pe.mergeArray(a,i));let n=[...r.data].map((i,o)=>t.type._parseSync(new Qe(r,i,r.path,o)));return Pe.mergeArray(a,n)}get element(){return this._def.type}min(e,r){return new s({...this._def,minLength:{value:e,message:V.toString(r)}})}max(e,r){return new s({...this._def,maxLength:{value:e,message:V.toString(r)}})}length(e,r){return new s({...this._def,exactLength:{value:e,message:V.toString(r)}})}nonempty(e){return this.min(1,e)}};Et.create=(s,e)=>new Et({type:s,minLength:null,maxLength:null,exactLength:null,typeName:F.ZodArray,...K(e)});function mr(s){if(s instanceof qe){let e={};for(let r in s.shape){let a=s.shape[r];e[r]=We.create(mr(a))}return new qe({...s._def,shape:()=>e})}else return s instanceof Et?new Et({...s._def,type:mr(s.element)}):s instanceof We?We.create(mr(s.unwrap())):s instanceof ut?ut.create(mr(s.unwrap())):s instanceof lt?lt.create(s.items.map(e=>mr(e))):s}var qe=class s extends Y{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),r=te.objectKeys(e);return this._cached={shape:e,keys:r},this._cached}_parse(e){if(this._getType(e)!==U.object){let u=this._getOrReturnCtx(e);return q(u,{code:j.invalid_type,expected:U.object,received:u.parsedType}),Z}let{status:a,ctx:t}=this._processInputParams(e),{shape:n,keys:i}=this._getCached(),o=[];if(!(this._def.catchall instanceof tt&&this._def.unknownKeys==="strip"))for(let u in t.data)i.includes(u)||o.push(u);let l=[];for(let u of i){let d=n[u],f=t.data[u];l.push({key:{status:"valid",value:u},value:d._parse(new Qe(t,f,t.path,u)),alwaysSet:u in t.data})}if(this._def.catchall instanceof tt){let u=this._def.unknownKeys;if(u==="passthrough")for(let d of o)l.push({key:{status:"valid",value:d},value:{status:"valid",value:t.data[d]}});else if(u==="strict")o.length>0&&(q(t,{code:j.unrecognized_keys,keys:o}),a.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let u=this._def.catchall;for(let d of o){let f=t.data[d];l.push({key:{status:"valid",value:d},value:u._parse(new Qe(t,f,t.path,d)),alwaysSet:d in t.data})}}return t.common.async?Promise.resolve().then(async()=>{let u=[];for(let d of l){let f=await d.key,h=await d.value;u.push({key:f,value:h,alwaysSet:d.alwaysSet})}return u}).then(u=>Pe.mergeObjectSync(a,u)):Pe.mergeObjectSync(a,l)}get shape(){return this._def.shape()}strict(e){return V.errToObj,new s({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(r,a)=>{let t=this._def.errorMap?.(r,a).message??a.defaultError;return r.code==="unrecognized_keys"?{message:V.errToObj(e).message??t}:{message:t}}}:{}})}strip(){return new s({...this._def,unknownKeys:"strip"})}passthrough(){return new s({...this._def,unknownKeys:"passthrough"})}extend(e){return new s({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new s({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:F.ZodObject})}setKey(e,r){return this.augment({[e]:r})}catchall(e){return new s({...this._def,catchall:e})}pick(e){let r={};for(let a of te.objectKeys(e))e[a]&&this.shape[a]&&(r[a]=this.shape[a]);return new s({...this._def,shape:()=>r})}omit(e){let r={};for(let a of te.objectKeys(this.shape))e[a]||(r[a]=this.shape[a]);return new s({...this._def,shape:()=>r})}deepPartial(){return mr(this)}partial(e){let r={};for(let a of te.objectKeys(this.shape)){let t=this.shape[a];e&&!e[a]?r[a]=t:r[a]=t.optional()}return new s({...this._def,shape:()=>r})}required(e){let r={};for(let a of te.objectKeys(this.shape))if(e&&!e[a])r[a]=this.shape[a];else{let n=this.shape[a];for(;n instanceof We;)n=n._def.innerType;r[a]=n}return new s({...this._def,shape:()=>r})}keyof(){return Nn(te.objectKeys(this.shape))}};qe.create=(s,e)=>new qe({shape:()=>s,unknownKeys:"strip",catchall:tt.create(),typeName:F.ZodObject,...K(e)});qe.strictCreate=(s,e)=>new qe({shape:()=>s,unknownKeys:"strict",catchall:tt.create(),typeName:F.ZodObject,...K(e)});qe.lazycreate=(s,e)=>new qe({shape:s,unknownKeys:"strip",catchall:tt.create(),typeName:F.ZodObject,...K(e)});var Xt=class extends Y{_parse(e){let{ctx:r}=this._processInputParams(e),a=this._def.options;function t(n){for(let o of n)if(o.result.status==="valid")return o.result;for(let o of n)if(o.result.status==="dirty")return r.common.issues.push(...o.ctx.common.issues),o.result;let i=n.map(o=>new Me(o.ctx.common.issues));return q(r,{code:j.invalid_union,unionErrors:i}),Z}if(r.common.async)return Promise.all(a.map(async n=>{let i={...r,common:{...r.common,issues:[]},parent:null};return{result:await n._parseAsync({data:r.data,path:r.path,parent:i}),ctx:i}})).then(t);{let n,i=[];for(let l of a){let u={...r,common:{...r.common,issues:[]},parent:null},d=l._parseSync({data:r.data,path:r.path,parent:u});if(d.status==="valid")return d;d.status==="dirty"&&!n&&(n={result:d,ctx:u}),u.common.issues.length&&i.push(u.common.issues)}if(n)return r.common.issues.push(...n.ctx.common.issues),n.result;let o=i.map(l=>new Me(l));return q(r,{code:j.invalid_union,unionErrors:o}),Z}}get options(){return this._def.options}};Xt.create=(s,e)=>new Xt({options:s,typeName:F.ZodUnion,...K(e)});var _t=s=>s instanceof Qt?_t(s.schema):s instanceof Ke?_t(s.innerType()):s instanceof Kt?[s.value]:s instanceof Jt?s.options:s instanceof Yt?te.objectValues(s.enum):s instanceof er?_t(s._def.innerType):s instanceof Zt?[void 0]:s instanceof Gt?[null]:s instanceof We?[void 0,..._t(s.unwrap())]:s instanceof ut?[null,..._t(s.unwrap())]:s instanceof Dr||s instanceof rr?_t(s.unwrap()):s instanceof tr?_t(s._def.innerType):[],Qr=class s extends Y{_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==U.object)return q(r,{code:j.invalid_type,expected:U.object,received:r.parsedType}),Z;let a=this.discriminator,t=r.data[a],n=this.optionsMap.get(t);return n?r.common.async?n._parseAsync({data:r.data,path:r.path,parent:r}):n._parseSync({data:r.data,path:r.path,parent:r}):(q(r,{code:j.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[a]}),Z)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,r,a){let t=new Map;for(let n of r){let i=_t(n.shape[e]);if(!i.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let o of i){if(t.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);t.set(o,n)}}return new s({typeName:F.ZodDiscriminatedUnion,discriminator:e,options:r,optionsMap:t,...K(a)})}};function Xs(s,e){let r=ct(s),a=ct(e);if(s===e)return{valid:!0,data:s};if(r===U.object&&a===U.object){let t=te.objectKeys(e),n=te.objectKeys(s).filter(o=>t.indexOf(o)!==-1),i={...s,...e};for(let o of n){let l=Xs(s[o],e[o]);if(!l.valid)return{valid:!1};i[o]=l.data}return{valid:!0,data:i}}else if(r===U.array&&a===U.array){if(s.length!==e.length)return{valid:!1};let t=[];for(let n=0;n{if(Xr(n)||Xr(i))return Z;let o=Xs(n.value,i.value);return o.valid?((Wr(n)||Wr(i))&&r.dirty(),{status:r.value,value:o.data}):(q(a,{code:j.invalid_intersection_types}),Z)};return a.common.async?Promise.all([this._def.left._parseAsync({data:a.data,path:a.path,parent:a}),this._def.right._parseAsync({data:a.data,path:a.path,parent:a})]).then(([n,i])=>t(n,i)):t(this._def.left._parseSync({data:a.data,path:a.path,parent:a}),this._def.right._parseSync({data:a.data,path:a.path,parent:a}))}};Wt.create=(s,e,r)=>new Wt({left:s,right:e,typeName:F.ZodIntersection,...K(r)});var lt=class s extends Y{_parse(e){let{status:r,ctx:a}=this._processInputParams(e);if(a.parsedType!==U.array)return q(a,{code:j.invalid_type,expected:U.array,received:a.parsedType}),Z;if(a.data.lengththis._def.items.length&&(q(a,{code:j.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());let n=[...a.data].map((i,o)=>{let l=this._def.items[o]||this._def.rest;return l?l._parse(new Qe(a,i,a.path,o)):null}).filter(i=>!!i);return a.common.async?Promise.all(n).then(i=>Pe.mergeArray(r,i)):Pe.mergeArray(r,n)}get items(){return this._def.items}rest(e){return new s({...this._def,rest:e})}};lt.create=(s,e)=>{if(!Array.isArray(s))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new lt({items:s,typeName:F.ZodTuple,rest:null,...K(e)})};var Kr=class s extends Y{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:a}=this._processInputParams(e);if(a.parsedType!==U.object)return q(a,{code:j.invalid_type,expected:U.object,received:a.parsedType}),Z;let t=[],n=this._def.keyType,i=this._def.valueType;for(let o in a.data)t.push({key:n._parse(new Qe(a,o,a.path,o)),value:i._parse(new Qe(a,a.data[o],a.path,o)),alwaysSet:o in a.data});return a.common.async?Pe.mergeObjectAsync(r,t):Pe.mergeObjectSync(r,t)}get element(){return this._def.valueType}static create(e,r,a){return r instanceof Y?new s({keyType:e,valueType:r,typeName:F.ZodRecord,...K(a)}):new s({keyType:wt.create(),valueType:e,typeName:F.ZodRecord,...K(r)})}},yr=class extends Y{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:a}=this._processInputParams(e);if(a.parsedType!==U.map)return q(a,{code:j.invalid_type,expected:U.map,received:a.parsedType}),Z;let t=this._def.keyType,n=this._def.valueType,i=[...a.data.entries()].map(([o,l],u)=>({key:t._parse(new Qe(a,o,a.path,[u,"key"])),value:n._parse(new Qe(a,l,a.path,[u,"value"]))}));if(a.common.async){let o=new Map;return Promise.resolve().then(async()=>{for(let l of i){let u=await l.key,d=await l.value;if(u.status==="aborted"||d.status==="aborted")return Z;(u.status==="dirty"||d.status==="dirty")&&r.dirty(),o.set(u.value,d.value)}return{status:r.value,value:o}})}else{let o=new Map;for(let l of i){let u=l.key,d=l.value;if(u.status==="aborted"||d.status==="aborted")return Z;(u.status==="dirty"||d.status==="dirty")&&r.dirty(),o.set(u.value,d.value)}return{status:r.value,value:o}}}};yr.create=(s,e,r)=>new yr({valueType:e,keyType:s,typeName:F.ZodMap,...K(r)});var _r=class s extends Y{_parse(e){let{status:r,ctx:a}=this._processInputParams(e);if(a.parsedType!==U.set)return q(a,{code:j.invalid_type,expected:U.set,received:a.parsedType}),Z;let t=this._def;t.minSize!==null&&a.data.sizet.maxSize.value&&(q(a,{code:j.too_big,maximum:t.maxSize.value,type:"set",inclusive:!0,exact:!1,message:t.maxSize.message}),r.dirty());let n=this._def.valueType;function i(l){let u=new Set;for(let d of l){if(d.status==="aborted")return Z;d.status==="dirty"&&r.dirty(),u.add(d.value)}return{status:r.value,value:u}}let o=[...a.data.values()].map((l,u)=>n._parse(new Qe(a,l,a.path,u)));return a.common.async?Promise.all(o).then(l=>i(l)):i(o)}min(e,r){return new s({...this._def,minSize:{value:e,message:V.toString(r)}})}max(e,r){return new s({...this._def,maxSize:{value:e,message:V.toString(r)}})}size(e,r){return this.min(e,r).max(e,r)}nonempty(e){return this.min(1,e)}};_r.create=(s,e)=>new _r({valueType:s,minSize:null,maxSize:null,typeName:F.ZodSet,...K(e)});var Jr=class s extends Y{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==U.function)return q(r,{code:j.invalid_type,expected:U.function,received:r.parsedType}),Z;function a(o,l){return $r({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,fr(),yt].filter(u=>!!u),issueData:{code:j.invalid_arguments,argumentsError:l}})}function t(o,l){return $r({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,fr(),yt].filter(u=>!!u),issueData:{code:j.invalid_return_type,returnTypeError:l}})}let n={errorMap:r.common.contextualErrorMap},i=r.data;if(this._def.returns instanceof Pt){let o=this;return Ne(async function(...l){let u=new Me([]),d=await o._def.args.parseAsync(l,n).catch(p=>{throw u.addIssue(a(l,p)),u}),f=await Reflect.apply(i,this,d);return await o._def.returns._def.type.parseAsync(f,n).catch(p=>{throw u.addIssue(t(f,p)),u})})}else{let o=this;return Ne(function(...l){let u=o._def.args.safeParse(l,n);if(!u.success)throw new Me([a(l,u.error)]);let d=Reflect.apply(i,this,u.data),f=o._def.returns.safeParse(d,n);if(!f.success)throw new Me([t(d,f.error)]);return f.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new s({...this._def,args:lt.create(e).rest(bt.create())})}returns(e){return new s({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,r,a){return new s({args:e||lt.create([]).rest(bt.create()),returns:r||bt.create(),typeName:F.ZodFunction,...K(a)})}},Qt=class extends Y{get schema(){return this._def.getter()}_parse(e){let{ctx:r}=this._processInputParams(e);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};Qt.create=(s,e)=>new Qt({getter:s,typeName:F.ZodLazy,...K(e)});var Kt=class extends Y{_parse(e){if(e.data!==this._def.value){let r=this._getOrReturnCtx(e);return q(r,{received:r.data,code:j.invalid_literal,expected:this._def.value}),Z}return{status:"valid",value:e.data}}get value(){return this._def.value}};Kt.create=(s,e)=>new Kt({value:s,typeName:F.ZodLiteral,...K(e)});function Nn(s,e){return new Jt({values:s,typeName:F.ZodEnum,...K(e)})}var Jt=class s extends Y{_parse(e){if(typeof e.data!="string"){let r=this._getOrReturnCtx(e),a=this._def.values;return q(r,{expected:te.joinValues(a),received:r.parsedType,code:j.invalid_type}),Z}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let r=this._getOrReturnCtx(e),a=this._def.values;return q(r,{received:r.data,code:j.invalid_enum_value,options:a}),Z}return Ne(e.data)}get options(){return this._def.values}get enum(){let e={};for(let r of this._def.values)e[r]=r;return e}get Values(){let e={};for(let r of this._def.values)e[r]=r;return e}get Enum(){let e={};for(let r of this._def.values)e[r]=r;return e}extract(e,r=this._def){return s.create(e,{...this._def,...r})}exclude(e,r=this._def){return s.create(this.options.filter(a=>!e.includes(a)),{...this._def,...r})}};Jt.create=Nn;var Yt=class extends Y{_parse(e){let r=te.getValidEnumValues(this._def.values),a=this._getOrReturnCtx(e);if(a.parsedType!==U.string&&a.parsedType!==U.number){let t=te.objectValues(r);return q(a,{expected:te.joinValues(t),received:a.parsedType,code:j.invalid_type}),Z}if(this._cache||(this._cache=new Set(te.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let t=te.objectValues(r);return q(a,{received:a.data,code:j.invalid_enum_value,options:t}),Z}return Ne(e.data)}get enum(){return this._def.values}};Yt.create=(s,e)=>new Yt({values:s,typeName:F.ZodNativeEnum,...K(e)});var Pt=class extends Y{unwrap(){return this._def.type}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==U.promise&&r.common.async===!1)return q(r,{code:j.invalid_type,expected:U.promise,received:r.parsedType}),Z;let a=r.parsedType===U.promise?r.data:Promise.resolve(r.data);return Ne(a.then(t=>this._def.type.parseAsync(t,{path:r.path,errorMap:r.common.contextualErrorMap})))}};Pt.create=(s,e)=>new Pt({type:s,typeName:F.ZodPromise,...K(e)});var Ke=class extends Y{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===F.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:r,ctx:a}=this._processInputParams(e),t=this._def.effect||null,n={addIssue:i=>{q(a,i),i.fatal?r.abort():r.dirty()},get path(){return a.path}};if(n.addIssue=n.addIssue.bind(n),t.type==="preprocess"){let i=t.transform(a.data,n);if(a.common.async)return Promise.resolve(i).then(async o=>{if(r.value==="aborted")return Z;let l=await this._def.schema._parseAsync({data:o,path:a.path,parent:a});return l.status==="aborted"?Z:l.status==="dirty"?Ut(l.value):r.value==="dirty"?Ut(l.value):l});{if(r.value==="aborted")return Z;let o=this._def.schema._parseSync({data:i,path:a.path,parent:a});return o.status==="aborted"?Z:o.status==="dirty"?Ut(o.value):r.value==="dirty"?Ut(o.value):o}}if(t.type==="refinement"){let i=o=>{let l=t.refinement(o,n);if(a.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(a.common.async===!1){let o=this._def.schema._parseSync({data:a.data,path:a.path,parent:a});return o.status==="aborted"?Z:(o.status==="dirty"&&r.dirty(),i(o.value),{status:r.value,value:o.value})}else return this._def.schema._parseAsync({data:a.data,path:a.path,parent:a}).then(o=>o.status==="aborted"?Z:(o.status==="dirty"&&r.dirty(),i(o.value).then(()=>({status:r.value,value:o.value}))))}if(t.type==="transform")if(a.common.async===!1){let i=this._def.schema._parseSync({data:a.data,path:a.path,parent:a});if(!Tt(i))return Z;let o=t.transform(i.value,n);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:o}}else return this._def.schema._parseAsync({data:a.data,path:a.path,parent:a}).then(i=>Tt(i)?Promise.resolve(t.transform(i.value,n)).then(o=>({status:r.value,value:o})):Z);te.assertNever(t)}};Ke.create=(s,e,r)=>new Ke({schema:s,typeName:F.ZodEffects,effect:e,...K(r)});Ke.createWithPreprocess=(s,e,r)=>new Ke({schema:e,effect:{type:"preprocess",transform:s},typeName:F.ZodEffects,...K(r)});var We=class extends Y{_parse(e){return this._getType(e)===U.undefined?Ne(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};We.create=(s,e)=>new We({innerType:s,typeName:F.ZodOptional,...K(e)});var ut=class extends Y{_parse(e){return this._getType(e)===U.null?Ne(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};ut.create=(s,e)=>new ut({innerType:s,typeName:F.ZodNullable,...K(e)});var er=class extends Y{_parse(e){let{ctx:r}=this._processInputParams(e),a=r.data;return r.parsedType===U.undefined&&(a=this._def.defaultValue()),this._def.innerType._parse({data:a,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};er.create=(s,e)=>new er({innerType:s,typeName:F.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...K(e)});var tr=class extends Y{_parse(e){let{ctx:r}=this._processInputParams(e),a={...r,common:{...r.common,issues:[]}},t=this._def.innerType._parse({data:a.data,path:a.path,parent:{...a}});return hr(t)?t.then(n=>({status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new Me(a.common.issues)},input:a.data})})):{status:"valid",value:t.status==="valid"?t.value:this._def.catchValue({get error(){return new Me(a.common.issues)},input:a.data})}}removeCatch(){return this._def.innerType}};tr.create=(s,e)=>new tr({innerType:s,typeName:F.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...K(e)});var br=class extends Y{_parse(e){if(this._getType(e)!==U.nan){let a=this._getOrReturnCtx(e);return q(a,{code:j.invalid_type,expected:U.nan,received:a.parsedType}),Z}return{status:"valid",value:e.data}}};br.create=s=>new br({typeName:F.ZodNaN,...K(s)});var $u=Symbol("zod_brand"),Dr=class extends Y{_parse(e){let{ctx:r}=this._processInputParams(e),a=r.data;return this._def.type._parse({data:a,path:r.path,parent:r})}unwrap(){return this._def.type}},Cr=class s extends Y{_parse(e){let{status:r,ctx:a}=this._processInputParams(e);if(a.common.async)return(async()=>{let n=await this._def.in._parseAsync({data:a.data,path:a.path,parent:a});return n.status==="aborted"?Z:n.status==="dirty"?(r.dirty(),Ut(n.value)):this._def.out._parseAsync({data:n.value,path:a.path,parent:a})})();{let t=this._def.in._parseSync({data:a.data,path:a.path,parent:a});return t.status==="aborted"?Z:t.status==="dirty"?(r.dirty(),{status:"dirty",value:t.value}):this._def.out._parseSync({data:t.value,path:a.path,parent:a})}}static create(e,r){return new s({in:e,out:r,typeName:F.ZodPipeline})}},rr=class extends Y{_parse(e){let r=this._def.innerType._parse(e),a=t=>(Tt(t)&&(t.value=Object.freeze(t.value)),t);return hr(r)?r.then(t=>a(t)):a(r)}unwrap(){return this._def.innerType}};rr.create=(s,e)=>new rr({innerType:s,typeName:F.ZodReadonly,...K(e)});function wn(s,e){let r=typeof s=="function"?s(e):typeof s=="string"?{message:s}:s;return typeof r=="string"?{message:r}:r}function An(s,e={},r){return s?Ot.create().superRefine((a,t)=>{let n=s(a);if(n instanceof Promise)return n.then(i=>{if(!i){let o=wn(e,a),l=o.fatal??r??!0;t.addIssue({code:"custom",...o,fatal:l})}});if(!n){let i=wn(e,a),o=i.fatal??r??!0;t.addIssue({code:"custom",...i,fatal:o})}}):Ot.create()}var Du={object:qe.lazycreate},F;(function(s){s.ZodString="ZodString",s.ZodNumber="ZodNumber",s.ZodNaN="ZodNaN",s.ZodBigInt="ZodBigInt",s.ZodBoolean="ZodBoolean",s.ZodDate="ZodDate",s.ZodSymbol="ZodSymbol",s.ZodUndefined="ZodUndefined",s.ZodNull="ZodNull",s.ZodAny="ZodAny",s.ZodUnknown="ZodUnknown",s.ZodNever="ZodNever",s.ZodVoid="ZodVoid",s.ZodArray="ZodArray",s.ZodObject="ZodObject",s.ZodUnion="ZodUnion",s.ZodDiscriminatedUnion="ZodDiscriminatedUnion",s.ZodIntersection="ZodIntersection",s.ZodTuple="ZodTuple",s.ZodRecord="ZodRecord",s.ZodMap="ZodMap",s.ZodSet="ZodSet",s.ZodFunction="ZodFunction",s.ZodLazy="ZodLazy",s.ZodLiteral="ZodLiteral",s.ZodEnum="ZodEnum",s.ZodEffects="ZodEffects",s.ZodNativeEnum="ZodNativeEnum",s.ZodOptional="ZodOptional",s.ZodNullable="ZodNullable",s.ZodDefault="ZodDefault",s.ZodCatch="ZodCatch",s.ZodPromise="ZodPromise",s.ZodBranded="ZodBranded",s.ZodPipeline="ZodPipeline",s.ZodReadonly="ZodReadonly"})(F||(F={}));var Cu=(s,e={message:`Input not instance of ${s.name}`})=>An(r=>r instanceof s,e),$n=wt.create,Dn=Bt.create,ku=br.create,Lu=Vt.create,Cn=Ht.create,ju=zt.create,Fu=vr.create,Mu=Zt.create,qu=Gt.create,Uu=Ot.create,Bu=bt.create,Vu=tt.create,Hu=gr.create,zu=Et.create,Zu=qe.create,Gu=qe.strictCreate,Xu=Xt.create,Wu=Qr.create,Qu=Wt.create,Ku=lt.create,Ju=Kr.create,Yu=yr.create,ed=_r.create,td=Jr.create,rd=Qt.create,sd=Kt.create,ad=Jt.create,nd=Yt.create,od=Pt.create,id=Ke.create,cd=We.create,ld=ut.create,ud=Ke.createWithPreprocess,dd=Cr.create,pd=()=>$n().optional(),fd=()=>Dn().optional(),hd=()=>Cn().optional(),md={string:(s=>wt.create({...s,coerce:!0})),number:(s=>Bt.create({...s,coerce:!0})),boolean:(s=>Ht.create({...s,coerce:!0})),bigint:(s=>Vt.create({...s,coerce:!0})),date:(s=>zt.create({...s,coerce:!0}))};var vd=Z;var kr="2025-06-18";var Yr=[kr,"2025-03-26","2024-11-05","2024-10-07"],es="2.0",kn=c.union([c.string(),c.number().int()]),Ln=c.string(),gd=c.object({progressToken:c.optional(kn)}).passthrough(),Je=c.object({_meta:c.optional(gd)}).passthrough(),Ue=c.object({method:c.string(),params:c.optional(Je)}),Lr=c.object({_meta:c.optional(c.object({}).passthrough())}).passthrough(),dt=c.object({method:c.string(),params:c.optional(Lr)}),Ye=c.object({_meta:c.optional(c.object({}).passthrough())}).passthrough(),ts=c.union([c.string(),c.number().int()]),jn=c.object({jsonrpc:c.literal(es),id:ts}).merge(Ue).strict(),Fn=s=>jn.safeParse(s).success,Mn=c.object({jsonrpc:c.literal(es)}).merge(dt).strict(),qn=s=>Mn.safeParse(s).success,Un=c.object({jsonrpc:c.literal(es),id:ts,result:Ye}).strict(),Ws=s=>Un.safeParse(s).success,Le;(function(s){s[s.ConnectionClosed=-32e3]="ConnectionClosed",s[s.RequestTimeout=-32001]="RequestTimeout",s[s.ParseError=-32700]="ParseError",s[s.InvalidRequest=-32600]="InvalidRequest",s[s.MethodNotFound=-32601]="MethodNotFound",s[s.InvalidParams=-32602]="InvalidParams",s[s.InternalError=-32603]="InternalError"})(Le||(Le={}));var Bn=c.object({jsonrpc:c.literal(es),id:ts,error:c.object({code:c.number().int(),message:c.string(),data:c.optional(c.unknown())})}).strict(),Vn=s=>Bn.safeParse(s).success,Hn=c.union([jn,Mn,Un,Bn]),St=Ye.strict(),rs=dt.extend({method:c.literal("notifications/cancelled"),params:Lr.extend({requestId:ts,reason:c.string().optional()})}),yd=c.object({src:c.string(),mimeType:c.optional(c.string()),sizes:c.optional(c.array(c.string()))}).passthrough(),jr=c.object({icons:c.array(yd).optional()}).passthrough(),Fr=c.object({name:c.string(),title:c.optional(c.string())}).passthrough(),zn=Fr.extend({version:c.string(),websiteUrl:c.optional(c.string())}).merge(jr),_d=c.object({experimental:c.optional(c.object({}).passthrough()),sampling:c.optional(c.object({}).passthrough()),elicitation:c.optional(c.object({}).passthrough()),roots:c.optional(c.object({listChanged:c.optional(c.boolean())}).passthrough())}).passthrough(),Qs=Ue.extend({method:c.literal("initialize"),params:Je.extend({protocolVersion:c.string(),capabilities:_d,clientInfo:zn})});var bd=c.object({experimental:c.optional(c.object({}).passthrough()),logging:c.optional(c.object({}).passthrough()),completions:c.optional(c.object({}).passthrough()),prompts:c.optional(c.object({listChanged:c.optional(c.boolean())}).passthrough()),resources:c.optional(c.object({subscribe:c.optional(c.boolean()),listChanged:c.optional(c.boolean())}).passthrough()),tools:c.optional(c.object({listChanged:c.optional(c.boolean())}).passthrough())}).passthrough(),Ks=Ye.extend({protocolVersion:c.string(),capabilities:bd,serverInfo:zn,instructions:c.optional(c.string())}),Js=dt.extend({method:c.literal("notifications/initialized")});var ss=Ue.extend({method:c.literal("ping")}),Ed=c.object({progress:c.number(),total:c.optional(c.number()),message:c.optional(c.string())}).passthrough(),as=dt.extend({method:c.literal("notifications/progress"),params:Lr.merge(Ed).extend({progressToken:kn})}),ns=Ue.extend({params:Je.extend({cursor:c.optional(Ln)}).optional()}),os=Ye.extend({nextCursor:c.optional(Ln)}),Zn=c.object({uri:c.string(),mimeType:c.optional(c.string()),_meta:c.optional(c.object({}).passthrough())}).passthrough(),Gn=Zn.extend({text:c.string()}),Ys=c.string().refine(s=>{try{return atob(s),!0}catch{return!1}},{message:"Invalid Base64 string"}),Xn=Zn.extend({blob:Ys}),Wn=Fr.extend({uri:c.string(),description:c.optional(c.string()),mimeType:c.optional(c.string()),_meta:c.optional(c.object({}).passthrough())}).merge(jr),Sd=Fr.extend({uriTemplate:c.string(),description:c.optional(c.string()),mimeType:c.optional(c.string()),_meta:c.optional(c.object({}).passthrough())}).merge(jr),xd=ns.extend({method:c.literal("resources/list")}),ea=os.extend({resources:c.array(Wn)}),Rd=ns.extend({method:c.literal("resources/templates/list")}),ta=os.extend({resourceTemplates:c.array(Sd)}),Td=Ue.extend({method:c.literal("resources/read"),params:Je.extend({uri:c.string()})}),ra=Ye.extend({contents:c.array(c.union([Gn,Xn]))}),wd=dt.extend({method:c.literal("notifications/resources/list_changed")}),Od=Ue.extend({method:c.literal("resources/subscribe"),params:Je.extend({uri:c.string()})}),Pd=Ue.extend({method:c.literal("resources/unsubscribe"),params:Je.extend({uri:c.string()})}),Id=dt.extend({method:c.literal("notifications/resources/updated"),params:Lr.extend({uri:c.string()})}),Nd=c.object({name:c.string(),description:c.optional(c.string()),required:c.optional(c.boolean())}).passthrough(),Ad=Fr.extend({description:c.optional(c.string()),arguments:c.optional(c.array(Nd)),_meta:c.optional(c.object({}).passthrough())}).merge(jr),$d=ns.extend({method:c.literal("prompts/list")}),sa=os.extend({prompts:c.array(Ad)}),Dd=Ue.extend({method:c.literal("prompts/get"),params:Je.extend({name:c.string(),arguments:c.optional(c.record(c.string()))})}),aa=c.object({type:c.literal("text"),text:c.string(),_meta:c.optional(c.object({}).passthrough())}).passthrough(),na=c.object({type:c.literal("image"),data:Ys,mimeType:c.string(),_meta:c.optional(c.object({}).passthrough())}).passthrough(),oa=c.object({type:c.literal("audio"),data:Ys,mimeType:c.string(),_meta:c.optional(c.object({}).passthrough())}).passthrough(),Cd=c.object({type:c.literal("resource"),resource:c.union([Gn,Xn]),_meta:c.optional(c.object({}).passthrough())}).passthrough(),kd=Wn.extend({type:c.literal("resource_link")}),Qn=c.union([aa,na,oa,kd,Cd]),Ld=c.object({role:c.enum(["user","assistant"]),content:Qn}).passthrough(),ia=Ye.extend({description:c.optional(c.string()),messages:c.array(Ld)}),jd=dt.extend({method:c.literal("notifications/prompts/list_changed")}),Fd=c.object({title:c.optional(c.string()),readOnlyHint:c.optional(c.boolean()),destructiveHint:c.optional(c.boolean()),idempotentHint:c.optional(c.boolean()),openWorldHint:c.optional(c.boolean())}).passthrough(),Md=Fr.extend({description:c.optional(c.string()),inputSchema:c.object({type:c.literal("object"),properties:c.optional(c.object({}).passthrough()),required:c.optional(c.array(c.string()))}).passthrough(),outputSchema:c.optional(c.object({type:c.literal("object"),properties:c.optional(c.object({}).passthrough()),required:c.optional(c.array(c.string()))}).passthrough()),annotations:c.optional(Fd),_meta:c.optional(c.object({}).passthrough())}).merge(jr),ca=ns.extend({method:c.literal("tools/list")}),la=os.extend({tools:c.array(Md)}),is=Ye.extend({content:c.array(Qn).default([]),structuredContent:c.object({}).passthrough().optional(),isError:c.optional(c.boolean())}),um=is.or(Ye.extend({toolResult:c.unknown()})),ua=Ue.extend({method:c.literal("tools/call"),params:Je.extend({name:c.string(),arguments:c.optional(c.record(c.unknown()))})}),qd=dt.extend({method:c.literal("notifications/tools/list_changed")}),Mr=c.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),da=Ue.extend({method:c.literal("logging/setLevel"),params:Je.extend({level:Mr})}),Ud=dt.extend({method:c.literal("notifications/message"),params:Lr.extend({level:Mr,logger:c.optional(c.string()),data:c.unknown()})}),Bd=c.object({name:c.string().optional()}).passthrough(),Vd=c.object({hints:c.optional(c.array(Bd)),costPriority:c.optional(c.number().min(0).max(1)),speedPriority:c.optional(c.number().min(0).max(1)),intelligencePriority:c.optional(c.number().min(0).max(1))}).passthrough(),Hd=c.object({role:c.enum(["user","assistant"]),content:c.union([aa,na,oa])}).passthrough(),zd=Ue.extend({method:c.literal("sampling/createMessage"),params:Je.extend({messages:c.array(Hd),systemPrompt:c.optional(c.string()),includeContext:c.optional(c.enum(["none","thisServer","allServers"])),temperature:c.optional(c.number()),maxTokens:c.number().int(),stopSequences:c.optional(c.array(c.string())),metadata:c.optional(c.object({}).passthrough()),modelPreferences:c.optional(Vd)})}),pa=Ye.extend({model:c.string(),stopReason:c.optional(c.enum(["endTurn","stopSequence","maxTokens"]).or(c.string())),role:c.enum(["user","assistant"]),content:c.discriminatedUnion("type",[aa,na,oa])}),Zd=c.object({type:c.literal("boolean"),title:c.optional(c.string()),description:c.optional(c.string()),default:c.optional(c.boolean())}).passthrough(),Gd=c.object({type:c.literal("string"),title:c.optional(c.string()),description:c.optional(c.string()),minLength:c.optional(c.number()),maxLength:c.optional(c.number()),format:c.optional(c.enum(["email","uri","date","date-time"]))}).passthrough(),Xd=c.object({type:c.enum(["number","integer"]),title:c.optional(c.string()),description:c.optional(c.string()),minimum:c.optional(c.number()),maximum:c.optional(c.number())}).passthrough(),Wd=c.object({type:c.literal("string"),title:c.optional(c.string()),description:c.optional(c.string()),enum:c.array(c.string()),enumNames:c.optional(c.array(c.string()))}).passthrough(),Qd=c.union([Zd,Gd,Xd,Wd]),Kd=Ue.extend({method:c.literal("elicitation/create"),params:Je.extend({message:c.string(),requestedSchema:c.object({type:c.literal("object"),properties:c.record(c.string(),Qd),required:c.optional(c.array(c.string()))}).passthrough()})}),fa=Ye.extend({action:c.enum(["accept","decline","cancel"]),content:c.optional(c.record(c.string(),c.unknown()))}),Jd=c.object({type:c.literal("ref/resource"),uri:c.string()}).passthrough();var Yd=c.object({type:c.literal("ref/prompt"),name:c.string()}).passthrough(),ep=Ue.extend({method:c.literal("completion/complete"),params:Je.extend({ref:c.union([Yd,Jd]),argument:c.object({name:c.string(),value:c.string()}).passthrough(),context:c.optional(c.object({arguments:c.optional(c.record(c.string(),c.string()))}))})}),ha=Ye.extend({completion:c.object({values:c.array(c.string()).max(100),total:c.optional(c.number().int()),hasMore:c.optional(c.boolean())}).passthrough()}),tp=c.object({uri:c.string().startsWith("file://"),name:c.optional(c.string()),_meta:c.optional(c.object({}).passthrough())}).passthrough(),rp=Ue.extend({method:c.literal("roots/list")}),ma=Ye.extend({roots:c.array(tp)}),sp=dt.extend({method:c.literal("notifications/roots/list_changed")}),dm=c.union([ss,Qs,ep,da,Dd,$d,xd,Rd,Td,Od,Pd,ua,ca]),pm=c.union([rs,as,Js,sp]),fm=c.union([St,pa,fa,ma]),hm=c.union([ss,zd,Kd,rp]),mm=c.union([rs,as,Ud,Id,wd,qd,jd]),vm=c.union([St,Ks,ha,ia,sa,ea,ta,ra,is,la]),Ae=class extends Error{constructor(e,r,a){super(`MCP error ${e}: ${r}`),this.code=e,this.data=a,this.name="McpError"}};var ap=6e4,Er=class{constructor(e){this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this.setNotificationHandler(rs,r=>{let a=this._requestHandlerAbortControllers.get(r.params.requestId);a?.abort(r.params.reason)}),this.setNotificationHandler(as,r=>{this._onprogress(r)}),this.setRequestHandler(ss,r=>({}))}_setupTimeout(e,r,a,t,n=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(t,r),startTime:Date.now(),timeout:r,maxTotalTimeout:a,resetTimeoutOnProgress:n,onTimeout:t})}_resetTimeout(e){let r=this._timeoutInfo.get(e);if(!r)return!1;let a=Date.now()-r.startTime;if(r.maxTotalTimeout&&a>=r.maxTotalTimeout)throw this._timeoutInfo.delete(e),new Ae(Le.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:r.maxTotalTimeout,totalElapsed:a});return clearTimeout(r.timeoutId),r.timeoutId=setTimeout(r.onTimeout,r.timeout),!0}_cleanupTimeout(e){let r=this._timeoutInfo.get(e);r&&(clearTimeout(r.timeoutId),this._timeoutInfo.delete(e))}async connect(e){var r,a,t;this._transport=e;let n=(r=this.transport)===null||r===void 0?void 0:r.onclose;this._transport.onclose=()=>{n?.(),this._onclose()};let i=(a=this.transport)===null||a===void 0?void 0:a.onerror;this._transport.onerror=l=>{i?.(l),this._onerror(l)};let o=(t=this._transport)===null||t===void 0?void 0:t.onmessage;this._transport.onmessage=(l,u)=>{o?.(l,u),Ws(l)||Vn(l)?this._onresponse(l):Fn(l)?this._onrequest(l,u):qn(l)?this._onnotification(l):this._onerror(new Error(`Unknown message type: ${JSON.stringify(l)}`))},await this._transport.start()}_onclose(){var e;let r=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._pendingDebouncedNotifications.clear(),this._transport=void 0,(e=this.onclose)===null||e===void 0||e.call(this);let a=new Ae(Le.ConnectionClosed,"Connection closed");for(let t of r.values())t(a)}_onerror(e){var r;(r=this.onerror)===null||r===void 0||r.call(this,e)}_onnotification(e){var r;let a=(r=this._notificationHandlers.get(e.method))!==null&&r!==void 0?r:this.fallbackNotificationHandler;a!==void 0&&Promise.resolve().then(()=>a(e)).catch(t=>this._onerror(new Error(`Uncaught error in notification handler: ${t}`)))}_onrequest(e,r){var a,t;let n=(a=this._requestHandlers.get(e.method))!==null&&a!==void 0?a:this.fallbackRequestHandler,i=this._transport;if(n===void 0){i?.send({jsonrpc:"2.0",id:e.id,error:{code:Le.MethodNotFound,message:"Method not found"}}).catch(u=>this._onerror(new Error(`Failed to send an error response: ${u}`)));return}let o=new AbortController;this._requestHandlerAbortControllers.set(e.id,o);let l={signal:o.signal,sessionId:i?.sessionId,_meta:(t=e.params)===null||t===void 0?void 0:t._meta,sendNotification:u=>this.notification(u,{relatedRequestId:e.id}),sendRequest:(u,d,f)=>this.request(u,d,{...f,relatedRequestId:e.id}),authInfo:r?.authInfo,requestId:e.id,requestInfo:r?.requestInfo};Promise.resolve().then(()=>n(e,l)).then(u=>{if(!o.signal.aborted)return i?.send({result:u,jsonrpc:"2.0",id:e.id})},u=>{var d;if(!o.signal.aborted)return i?.send({jsonrpc:"2.0",id:e.id,error:{code:Number.isSafeInteger(u.code)?u.code:Le.InternalError,message:(d=u.message)!==null&&d!==void 0?d:"Internal error"}})}).catch(u=>this._onerror(new Error(`Failed to send response: ${u}`))).finally(()=>{this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:r,...a}=e.params,t=Number(r),n=this._progressHandlers.get(t);if(!n){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let i=this._responseHandlers.get(t),o=this._timeoutInfo.get(t);if(o&&i&&o.resetTimeoutOnProgress)try{this._resetTimeout(t)}catch(l){i(l);return}n(a)}_onresponse(e){let r=Number(e.id),a=this._responseHandlers.get(r);if(a===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}if(this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),Ws(e))a(e);else{let t=new Ae(e.error.code,e.error.message,e.error.data);a(t)}}get transport(){return this._transport}async close(){var e;await((e=this._transport)===null||e===void 0?void 0:e.close())}request(e,r,a){let{relatedRequestId:t,resumptionToken:n,onresumptiontoken:i}=a??{};return new Promise((o,l)=>{var u,d,f,h,p,g;if(!this._transport){l(new Error("Not connected"));return}((u=this._options)===null||u===void 0?void 0:u.enforceStrictCapabilities)===!0&&this.assertCapabilityForMethod(e.method),(d=a?.signal)===null||d===void 0||d.throwIfAborted();let y=this._requestMessageId++,v={...e,jsonrpc:"2.0",id:y};a?.onprogress&&(this._progressHandlers.set(y,a.onprogress),v.params={...e.params,_meta:{...((f=e.params)===null||f===void 0?void 0:f._meta)||{},progressToken:y}});let x=R=>{var T;this._responseHandlers.delete(y),this._progressHandlers.delete(y),this._cleanupTimeout(y),(T=this._transport)===null||T===void 0||T.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:y,reason:String(R)}},{relatedRequestId:t,resumptionToken:n,onresumptiontoken:i}).catch(S=>this._onerror(new Error(`Failed to send cancellation: ${S}`))),l(R)};this._responseHandlers.set(y,R=>{var T;if(!(!((T=a?.signal)===null||T===void 0)&&T.aborted)){if(R instanceof Error)return l(R);try{let S=r.parse(R.result);o(S)}catch(S){l(S)}}}),(h=a?.signal)===null||h===void 0||h.addEventListener("abort",()=>{var R;x((R=a?.signal)===null||R===void 0?void 0:R.reason)});let P=(p=a?.timeout)!==null&&p!==void 0?p:ap,E=()=>x(new Ae(Le.RequestTimeout,"Request timed out",{timeout:P}));this._setupTimeout(y,P,a?.maxTotalTimeout,E,(g=a?.resetTimeoutOnProgress)!==null&&g!==void 0?g:!1),this._transport.send(v,{relatedRequestId:t,resumptionToken:n,onresumptiontoken:i}).catch(R=>{this._cleanupTimeout(y),l(R)})})}async notification(e,r){var a,t;if(!this._transport)throw new Error("Not connected");if(this.assertNotificationCapability(e.method),((t=(a=this._options)===null||a===void 0?void 0:a.debouncedNotificationMethods)!==null&&t!==void 0?t:[]).includes(e.method)&&!e.params&&!r?.relatedRequestId){if(this._pendingDebouncedNotifications.has(e.method))return;this._pendingDebouncedNotifications.add(e.method),Promise.resolve().then(()=>{var l;if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let u={...e,jsonrpc:"2.0"};(l=this._transport)===null||l===void 0||l.send(u,r).catch(d=>this._onerror(d))});return}let o={...e,jsonrpc:"2.0"};await this._transport.send(o,r)}setRequestHandler(e,r){let a=e.shape.method.value;this.assertRequestHandlerCapability(a),this._requestHandlers.set(a,(t,n)=>Promise.resolve(r(e.parse(t),n)))}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw new Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,r){this._notificationHandlers.set(e.shape.method.value,a=>Promise.resolve(r(e.parse(a))))}removeNotificationHandler(e){this._notificationHandlers.delete(e)}};function cs(s,e){return Object.entries(e).reduce((r,[a,t])=>(t&&typeof t=="object"?r[a]=r[a]?{...r[a],...t}:t:r[a]=t,r),{...s})}var Ji=qt(qa(),1),Os=class extends Er{constructor(e,r){var a;super(r),this._serverInfo=e,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(Mr.options.map((t,n)=>[t,n])),this.isMessageIgnored=(t,n)=>{let i=this._loggingLevels.get(n);return i?this.LOG_LEVEL_SEVERITY.get(t)this._oninitialize(t)),this.setNotificationHandler(Js,()=>{var t;return(t=this.oninitialized)===null||t===void 0?void 0:t.call(this)}),this._capabilities.logging&&this.setRequestHandler(da,async(t,n)=>{var i;let o=n.sessionId||((i=n.requestInfo)===null||i===void 0?void 0:i.headers["mcp-session-id"])||void 0,{level:l}=t.params,u=Mr.safeParse(l);return u.success&&this._loggingLevels.set(o,u.data),{}})}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=cs(this._capabilities,e)}assertCapabilityForMethod(e){var r,a,t;switch(e){case"sampling/createMessage":if(!(!((r=this._clientCapabilities)===null||r===void 0)&&r.sampling))throw new Error(`Client does not support sampling (required for ${e})`);break;case"elicitation/create":if(!(!((a=this._clientCapabilities)===null||a===void 0)&&a.elicitation))throw new Error(`Client does not support elicitation (required for ${e})`);break;case"roots/list":if(!(!((t=this._clientCapabilities)===null||t===void 0)&&t.roots))throw new Error(`Client does not support listing roots (required for ${e})`);break;case"ping":break}}assertNotificationCapability(e){switch(e){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${e})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${e})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${e})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){switch(e){case"sampling/createMessage":if(!this._capabilities.sampling)throw new Error(`Server does not support sampling (required for ${e})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${e})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${e})`);break;case"ping":case"initialize":break}}async _oninitialize(e){let r=e.params.protocolVersion;return this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,{protocolVersion:Yr.includes(r)?r:kr,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},St)}async createMessage(e,r){return this.request({method:"sampling/createMessage",params:e},pa,r)}async elicitInput(e,r){let a=await this.request({method:"elicitation/create",params:e},fa,r);if(a.action==="accept"&&a.content)try{let t=new Ji.default,n=t.compile(e.requestedSchema);if(!n(a.content))throw new Ae(Le.InvalidParams,`Elicitation response content does not match requested schema: ${t.errorsText(n.errors)}`)}catch(t){throw t instanceof Ae?t:new Ae(Le.InternalError,`Error validating elicitation response: ${t}`)}return a}async listRoots(e,r){return this.request({method:"roots/list",params:e},ma,r)}async sendLoggingMessage(e,r){if(this._capabilities.logging&&!this.isMessageIgnored(e.level,r))return this.notification({method:"notifications/message",params:e})}async sendResourceUpdated(e){return this.notification({method:"notifications/resources/updated",params:e})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}};var Ua=qt(require("node:process"),1);var Sr=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(` +"use strict";var eu=Object.create;var zs=Object.defineProperty;var tu=Object.getOwnPropertyDescriptor;var ru=Object.getOwnPropertyNames;var su=Object.getPrototypeOf,au=Object.prototype.hasOwnProperty;var z=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),nu=(s,e)=>{for(var r in e)zs(s,r,{get:e[r],enumerable:!0})},ou=(s,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of ru(e))!au.call(s,t)&&t!==r&&zs(s,t,{get:()=>e[t],enumerable:!(a=tu(e,t))||a.enumerable});return s};var Ut=(s,e,r)=>(r=s!=null?eu(su(s)):{},ou(e||!s||!s.__esModule?zs(r,"default",{value:s,enumerable:!0}):r,s));var Jn=z((ls,Kn)=>{(function(s,e){typeof ls=="object"&&typeof Kn<"u"?e(ls):typeof define=="function"&&define.amd?define(["exports"],e):e(s.URI=s.URI||{})})(ls,(function(s){"use strict";function e(){for(var _=arguments.length,m=Array(_),b=0;b<_;b++)m[b]=arguments[b];if(m.length>1){m[0]=m[0].slice(0,-1);for(var w=m.length-1,O=1;O= 0x80 (not a basic code point)","invalid-input":"Invalid input"},$=p-g,L=Math.floor,C=String.fromCharCode;function k(_){throw new RangeError(D[_])}function N(_,m){for(var b=[],w=_.length;w--;)b[w]=m(_[w]);return b}function A(_,m){var b=_.split("@"),w="";b.length>1&&(w=b[0]+"@",_=b[1]),_=_.replace(I,".");var O=_.split("."),V=N(O,m).join(".");return w+V}function M(_){for(var m=[],b=0,w=_.length;b=55296&&O<=56319&&b>1,m+=L(m/b);m>$*y>>1;O+=p)m=L(m/$);return L(O+($+1)*m/(m+v))},Z=function(m){var b=[],w=m.length,O=0,V=E,Y=P,ne=m.lastIndexOf(R);ne<0&&(ne=0);for(var ue=0;ue=128&&k("not-basic"),b.push(m.charCodeAt(ue));for(var xe=ne>0?ne+1:0;xe=w&&k("invalid-input");var he=Q(m.charCodeAt(xe++));(he>=p||he>L((h-O)/ve))&&k("overflow"),O+=he*ve;var ce=Re<=Y?g:Re>=Y+y?y:Re-Y;if(heL(h/ge)&&k("overflow"),ve*=ge}var de=b.length+1;Y=K(O-ae,de,ae==0),L(O/de)>h-V&&k("overflow"),V+=L(O/de),O%=de,b.splice(O++,0,V)}return String.fromCodePoint.apply(String,b)},fe=function(m){var b=[];m=M(m);var w=m.length,O=E,V=0,Y=P,ne=!0,ue=!1,xe=void 0;try{for(var ae=m[Symbol.iterator](),ve;!(ne=(ve=ae.next()).done);ne=!0){var Re=ve.value;Re<128&&b.push(C(Re))}}catch(qt){ue=!0,xe=qt}finally{try{!ne&&ae.return&&ae.return()}finally{if(ue)throw xe}}var he=b.length,ce=he;for(he&&b.push(R);ce=O&&zeL((h-V)/We)&&k("overflow"),V+=(ge-O)*We,O=ge;var ct=!0,Mt=!1,vt=void 0;try{for(var Pr=m[Symbol.iterator](),zr;!(ct=(zr=Pr.next()).done);ct=!0){var Zr=zr.value;if(Zrh&&k("overflow"),Zr==O){for(var cr=V,lr=p;;lr+=p){var gt=lr<=Y?g:lr>=Y+y?y:lr-Y;if(cr>6|192).toString(16).toUpperCase()+"%"+(m&63|128).toString(16).toUpperCase():b="%"+(m>>12|224).toString(16).toUpperCase()+"%"+(m>>6&63|128).toString(16).toUpperCase()+"%"+(m&63|128).toString(16).toUpperCase(),b}function ke(_){for(var m="",b=0,w=_.length;b=194&&O<224){if(w-b>=6){var V=parseInt(_.substr(b+4,2),16);m+=String.fromCharCode((O&31)<<6|V&63)}else m+=_.substr(b,6);b+=6}else if(O>=224){if(w-b>=9){var Y=parseInt(_.substr(b+4,2),16),ne=parseInt(_.substr(b+7,2),16);m+=String.fromCharCode((O&15)<<12|(Y&63)<<6|ne&63)}else m+=_.substr(b,9);b+=9}else m+=_.substr(b,3),b+=3}return m}function Rt(_,m){function b(w){var O=ke(w);return O.match(m.UNRESERVED)?O:w}return _.scheme&&(_.scheme=String(_.scheme).replace(m.PCT_ENCODED,b).toLowerCase().replace(m.NOT_SCHEME,"")),_.userinfo!==void 0&&(_.userinfo=String(_.userinfo).replace(m.PCT_ENCODED,b).replace(m.NOT_USERINFO,we).replace(m.PCT_ENCODED,t)),_.host!==void 0&&(_.host=String(_.host).replace(m.PCT_ENCODED,b).toLowerCase().replace(m.NOT_HOST,we).replace(m.PCT_ENCODED,t)),_.path!==void 0&&(_.path=String(_.path).replace(m.PCT_ENCODED,b).replace(_.scheme?m.NOT_PATH:m.NOT_PATH_NOSCHEME,we).replace(m.PCT_ENCODED,t)),_.query!==void 0&&(_.query=String(_.query).replace(m.PCT_ENCODED,b).replace(m.NOT_QUERY,we).replace(m.PCT_ENCODED,t)),_.fragment!==void 0&&(_.fragment=String(_.fragment).replace(m.PCT_ENCODED,b).replace(m.NOT_FRAGMENT,we).replace(m.PCT_ENCODED,t)),_}function ht(_){return _.replace(/^0*(.*)/,"$1")||"0"}function Se(_,m){var b=_.match(m.IPV4ADDRESS)||[],w=d(b,2),O=w[1];return O?O.split(".").map(ht).join("."):_}function ye(_,m){var b=_.match(m.IPV6ADDRESS)||[],w=d(b,3),O=w[1],V=w[2];if(O){for(var Y=O.toLowerCase().split("::").reverse(),ne=d(Y,2),ue=ne[0],xe=ne[1],ae=xe?xe.split(":").map(ht):[],ve=ue.split(":").map(ht),Re=m.IPV4ADDRESS.test(ve[ve.length-1]),he=Re?7:8,ce=ve.length-he,ge=Array(he),de=0;de1){var pe=ge.slice(0,He.index),ze=ge.slice(He.index+He.length);Xe=pe.join(":")+"::"+ze.join(":")}else Xe=ge.join(":");return V&&(Xe+="%"+V),Xe}else return _}var kt=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,Ne="".match(/(){0}/)[1]===void 0;function le(_){var m=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},b={},w=m.iri!==!1?u:l;m.reference==="suffix"&&(_=(m.scheme?m.scheme+":":"")+"//"+_);var O=_.match(kt);if(O){Ne?(b.scheme=O[1],b.userinfo=O[3],b.host=O[4],b.port=parseInt(O[5],10),b.path=O[6]||"",b.query=O[7],b.fragment=O[8],isNaN(b.port)&&(b.port=O[5])):(b.scheme=O[1]||void 0,b.userinfo=_.indexOf("@")!==-1?O[3]:void 0,b.host=_.indexOf("//")!==-1?O[4]:void 0,b.port=parseInt(O[5],10),b.path=O[6]||"",b.query=_.indexOf("?")!==-1?O[7]:void 0,b.fragment=_.indexOf("#")!==-1?O[8]:void 0,isNaN(b.port)&&(b.port=_.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?O[4]:void 0)),b.host&&(b.host=ye(Se(b.host,w),w)),b.scheme===void 0&&b.userinfo===void 0&&b.host===void 0&&b.port===void 0&&!b.path&&b.query===void 0?b.reference="same-document":b.scheme===void 0?b.reference="relative":b.fragment===void 0?b.reference="absolute":b.reference="uri",m.reference&&m.reference!=="suffix"&&m.reference!==b.reference&&(b.error=b.error||"URI is not a "+m.reference+" reference.");var V=Ee[(m.scheme||b.scheme||"").toLowerCase()];if(!m.unicodeSupport&&(!V||!V.unicodeSupport)){if(b.host&&(m.domainHost||V&&V.domainHost))try{b.host=ie.toASCII(b.host.replace(w.PCT_ENCODED,ke).toLowerCase())}catch(Y){b.error=b.error||"Host's domain name can not be converted to ASCII via punycode: "+Y}Rt(b,l)}else Rt(b,w);V&&V.parse&&V.parse(b,m)}else b.error=b.error||"URI can not be parsed.";return b}function Tt(_,m){var b=m.iri!==!1?u:l,w=[];return _.userinfo!==void 0&&(w.push(_.userinfo),w.push("@")),_.host!==void 0&&w.push(ye(Se(String(_.host),b),b).replace(b.IPV6ADDRESS,function(O,V,Y){return"["+V+(Y?"%25"+Y:"")+"]"})),(typeof _.port=="number"||typeof _.port=="string")&&(w.push(":"),w.push(String(_.port))),w.length?w.join(""):void 0}var mt=/^\.\.?\//,Lt=/^\/\.(\/|$)/,jt=/^\/\.\.(\/|$)/,Pe=/^\/?(?:.|\n)*?(?=\/|$)/;function Ge(_){for(var m=[];_.length;)if(_.match(mt))_=_.replace(mt,"");else if(_.match(Lt))_=_.replace(Lt,"/");else if(_.match(jt))_=_.replace(jt,"/"),m.pop();else if(_==="."||_==="..")_="";else{var b=_.match(Pe);if(b){var w=b[0];_=_.slice(w.length),m.push(w)}else throw new Error("Unexpected dot segment condition")}return m.join("")}function Me(_){var m=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},b=m.iri?u:l,w=[],O=Ee[(m.scheme||_.scheme||"").toLowerCase()];if(O&&O.serialize&&O.serialize(_,m),_.host&&!b.IPV6ADDRESS.test(_.host)){if(m.domainHost||O&&O.domainHost)try{_.host=m.iri?ie.toUnicode(_.host):ie.toASCII(_.host.replace(b.PCT_ENCODED,ke).toLowerCase())}catch(ne){_.error=_.error||"Host's domain name can not be converted to "+(m.iri?"Unicode":"ASCII")+" via punycode: "+ne}}Rt(_,b),m.reference!=="suffix"&&_.scheme&&(w.push(_.scheme),w.push(":"));var V=Tt(_,m);if(V!==void 0&&(m.reference!=="suffix"&&w.push("//"),w.push(V),_.path&&_.path.charAt(0)!=="/"&&w.push("/")),_.path!==void 0){var Y=_.path;!m.absolutePath&&(!O||!O.absolutePath)&&(Y=Ge(Y)),V===void 0&&(Y=Y.replace(/^\/\//,"/%2F")),w.push(Y)}return _.query!==void 0&&(w.push("?"),w.push(_.query)),_.fragment!==void 0&&(w.push("#"),w.push(_.fragment)),w.join("")}function Le(_,m){var b=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},w=arguments[3],O={};return w||(_=le(Me(_,b),b),m=le(Me(m,b),b)),b=b||{},!b.tolerant&&m.scheme?(O.scheme=m.scheme,O.userinfo=m.userinfo,O.host=m.host,O.port=m.port,O.path=Ge(m.path||""),O.query=m.query):(m.userinfo!==void 0||m.host!==void 0||m.port!==void 0?(O.userinfo=m.userinfo,O.host=m.host,O.port=m.port,O.path=Ge(m.path||""),O.query=m.query):(m.path?(m.path.charAt(0)==="/"?O.path=Ge(m.path):((_.userinfo!==void 0||_.host!==void 0||_.port!==void 0)&&!_.path?O.path="/"+m.path:_.path?O.path=_.path.slice(0,_.path.lastIndexOf("/")+1)+m.path:O.path=m.path,O.path=Ge(O.path)),O.query=m.query):(O.path=_.path,m.query!==void 0?O.query=m.query:O.query=_.query),O.userinfo=_.userinfo,O.host=_.host,O.port=_.port),O.scheme=_.scheme),O.fragment=m.fragment,O}function ot(_,m,b){var w=i({scheme:"null"},b);return Me(Le(le(_,w),le(m,w),w,!0),w)}function Ve(_,m){return typeof _=="string"?_=Me(le(_,m),m):a(_)==="object"&&(_=le(Me(_,m),m)),_}function Hr(_,m,b){return typeof _=="string"?_=Me(le(_,b),b):a(_)==="object"&&(_=Me(_,b)),typeof m=="string"?m=Me(le(m,b),b):a(m)==="object"&&(m=Me(m,b)),_===m}function Us(_,m){return _&&_.toString().replace(!m||!m.iri?l.ESCAPE:u.ESCAPE,we)}function tt(_,m){return _&&_.toString().replace(!m||!m.iri?l.PCT_ENCODED:u.PCT_ENCODED,ke)}var wr={scheme:"http",domainHost:!0,parse:function(m,b){return m.host||(m.error=m.error||"HTTP URIs must have a host."),m},serialize:function(m,b){var w=String(m.scheme).toLowerCase()==="https";return(m.port===(w?443:80)||m.port==="")&&(m.port=void 0),m.path||(m.path="/"),m}},pn={scheme:"https",domainHost:wr.domainHost,parse:wr.parse,serialize:wr.serialize};function fn(_){return typeof _.secure=="boolean"?_.secure:String(_.scheme).toLowerCase()==="wss"}var Or={scheme:"ws",domainHost:!0,parse:function(m,b){var w=m;return w.secure=fn(w),w.resourceName=(w.path||"/")+(w.query?"?"+w.query:""),w.path=void 0,w.query=void 0,w},serialize:function(m,b){if((m.port===(fn(m)?443:80)||m.port==="")&&(m.port=void 0),typeof m.secure=="boolean"&&(m.scheme=m.secure?"wss":"ws",m.secure=void 0),m.resourceName){var w=m.resourceName.split("?"),O=d(w,2),V=O[0],Y=O[1];m.path=V&&V!=="/"?V:void 0,m.query=Y,m.resourceName=void 0}return m.fragment=void 0,m}},hn={scheme:"wss",domainHost:Or.domainHost,parse:Or.parse,serialize:Or.serialize},kl={},Ll=!0,mn="[A-Za-z0-9\\-\\.\\_\\~"+(Ll?"\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF":"")+"]",it="[0-9A-Fa-f]",jl=r(r("%[EFef]"+it+"%"+it+it+"%"+it+it)+"|"+r("%[89A-Fa-f]"+it+"%"+it+it)+"|"+r("%"+it+it)),Fl="[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]",Ml="[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",ql=e(Ml,'[\\"\\\\]'),Ul="[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]",Bl=new RegExp(mn,"g"),ir=new RegExp(jl,"g"),Vl=new RegExp(e("[^]",Fl,"[\\.]",'[\\"]',ql),"g"),vn=new RegExp(e("[^]",mn,Ul),"g"),Hl=vn;function Bs(_){var m=ke(_);return m.match(Bl)?m:_}var gn={scheme:"mailto",parse:function(m,b){var w=m,O=w.to=w.path?w.path.split(","):[];if(w.path=void 0,w.query){for(var V=!1,Y={},ne=w.query.split("&"),ue=0,xe=ne.length;ue{"use strict";Yn.exports=function s(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var a,t,n;if(Array.isArray(e)){if(a=e.length,a!=r.length)return!1;for(t=a;t--!==0;)if(!s(e[t],r[t]))return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(n=Object.keys(e),a=n.length,a!==Object.keys(r).length)return!1;for(t=a;t--!==0;)if(!Object.prototype.hasOwnProperty.call(r,n[t]))return!1;for(t=a;t--!==0;){var i=n[t];if(!s(e[i],r[i]))return!1}return!0}return e!==e&&r!==r}});var to=z((Em,eo)=>{"use strict";eo.exports=function(e){for(var r=0,a=e.length,t=0,n;t=55296&&n<=56319&&t{"use strict";ao.exports={copy:np,checkDataType:va,checkDataTypes:op,coerceToTypes:ip,toHash:ya,getProperty:_a,escapeQuotes:ba,equal:us(),ucs2length:to(),varOccurences:up,varReplace:dp,schemaHasRules:pp,schemaHasRulesExcept:fp,schemaUnknownRules:hp,toQuotedString:ga,getPathExpr:mp,getPath:vp,getData:_p,unescapeFragment:bp,unescapeJsonPointer:Sa,escapeFragment:Ep,escapeJsonPointer:Ea};function np(s,e){e=e||{};for(var r in s)e[r]=s[r];return e}function va(s,e,r,a){var t=a?" !== ":" === ",n=a?" || ":" && ",i=a?"!":"",o=a?"":"!";switch(s){case"null":return e+t+"null";case"array":return i+"Array.isArray("+e+")";case"object":return"("+i+e+n+"typeof "+e+t+'"object"'+n+o+"Array.isArray("+e+"))";case"integer":return"(typeof "+e+t+'"number"'+n+o+"("+e+" % 1)"+n+e+t+e+(r?n+i+"isFinite("+e+")":"")+")";case"number":return"(typeof "+e+t+'"'+s+'"'+(r?n+i+"isFinite("+e+")":"")+")";default:return"typeof "+e+t+'"'+s+'"'}}function op(s,e,r){switch(s.length){case 1:return va(s[0],e,r,!0);default:var a="",t=ya(s);t.array&&t.object&&(a=t.null?"(":"(!"+e+" || ",a+="typeof "+e+' !== "object")',delete t.null,delete t.array,delete t.object),t.number&&delete t.integer;for(var n in t)a+=(a?" && ":"")+va(n,e,r,!0);return a}}var ro=ya(["string","number","integer","boolean","null"]);function ip(s,e){if(Array.isArray(e)){for(var r=[],a=0;a=e)throw new Error("Cannot access property/index "+a+" levels up, current level is "+e);return r[e-a]}if(a>e)throw new Error("Cannot access data "+a+" levels up, current level is "+e);if(n="data"+(e-a||""),!t)return n}for(var o=n,l=t.split("/"),u=0;u{"use strict";var Sp=ar();no.exports=xp;function xp(s){Sp.copy(s,this)}});var io=z((Rm,oo)=>{"use strict";var Nt=oo.exports=function(s,e,r){typeof e=="function"&&(r=e,e={}),r=e.cb||r;var a=typeof r=="function"?r:r.pre||function(){},t=r.post||function(){};ds(e,a,t,s,"",s)};Nt.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0};Nt.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};Nt.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};Nt.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function ds(s,e,r,a,t,n,i,o,l,u){if(a&&typeof a=="object"&&!Array.isArray(a)){e(a,t,n,i,o,l,u);for(var d in a){var f=a[d];if(Array.isArray(f)){if(d in Nt.arrayKeywords)for(var h=0;h{"use strict";var Ur=Jn(),co=us(),ms=ar(),ps=xa(),Tp=io();po.exports=$t;$t.normalizeId=At;$t.fullPath=fs;$t.url=hs;$t.ids=Np;$t.inlineRef=Ra;$t.schema=vs;function $t(s,e,r){var a=this._refs[r];if(typeof a=="string")if(this._refs[a])a=this._refs[a];else return $t.call(this,s,e,a);if(a=a||this._schemas[r],a instanceof ps)return Ra(a.schema,this._opts.inlineRefs)?a.schema:a.validate||this._compile(a);var t=vs.call(this,e,r),n,i,o;return t&&(n=t.schema,e=t.root,o=t.baseId),n instanceof ps?i=n.validate||s.call(this,n.schema,e,void 0,o):n!==void 0&&(i=Ra(n,this._opts.inlineRefs)?n:s.call(this,n,e,void 0,o)),i}function vs(s,e){var r=Ur.parse(e),a=uo(r),t=fs(this._getId(s.schema));if(Object.keys(s.schema).length===0||a!==t){var n=At(a),i=this._refs[n];if(typeof i=="string")return wp.call(this,s,i,r);if(i instanceof ps)i.validate||this._compile(i),s=i;else if(i=this._schemas[n],i instanceof ps){if(i.validate||this._compile(i),n==At(e))return{schema:i,root:s,baseId:t};s=i}else return;if(!s.schema)return;t=fs(this._getId(s.schema))}return lo.call(this,r,t,s.schema,s)}function wp(s,e,r){var a=vs.call(this,s,e);if(a){var t=a.schema,n=a.baseId;s=a.root;var i=this._getId(t);return i&&(n=hs(n,i)),lo.call(this,r,n,t,s)}}var Op=ms.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function lo(s,e,r,a){if(s.fragment=s.fragment||"",s.fragment.slice(0,1)=="/"){for(var t=s.fragment.split("/"),n=1;n{"use strict";var Oa=gs();ho.exports={Validation:fo(Ap),MissingRef:fo(Pa)};function Ap(s){this.message="validation failed",this.errors=s,this.ajv=this.validation=!0}Pa.message=function(s,e){return"can't resolve reference "+e+" from id "+s};function Pa(s,e,r){this.message=r||Pa.message(s,e),this.missingRef=Oa.url(s,e),this.missingSchema=Oa.normalizeId(Oa.fullPath(this.missingRef))}function fo(s){return s.prototype=Object.create(Error.prototype),s.prototype.constructor=s,s}});var Ia=z((Om,mo)=>{"use strict";mo.exports=function(s,e){e||(e={}),typeof e=="function"&&(e={cmp:e});var r=typeof e.cycles=="boolean"?e.cycles:!1,a=e.cmp&&(function(n){return function(i){return function(o,l){var u={key:o,value:i[o]},d={key:l,value:i[l]};return n(u,d)}}})(e.cmp),t=[];return(function n(i){if(i&&i.toJSON&&typeof i.toJSON=="function"&&(i=i.toJSON()),i!==void 0){if(typeof i=="number")return isFinite(i)?""+i:"null";if(typeof i!="object")return JSON.stringify(i);var o,l;if(Array.isArray(i)){for(l="[",o=0;o{"use strict";vo.exports=function(e,r,a){var t="",n=e.schema.$async===!0,i=e.util.schemaHasRulesExcept(e.schema,e.RULES.all,"$ref"),o=e.self._getId(e.schema);if(e.opts.strictKeywords){var l=e.util.schemaUnknownRules(e.schema,e.RULES.keywords);if(l){var u="unknown keyword: "+l;if(e.opts.strictKeywords==="log")e.logger.warn(u);else throw new Error(u)}}if(e.isTop&&(t+=" var validate = ",n&&(e.async=!0,t+="async "),t+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",o&&(e.opts.sourceCode||e.opts.processCode)&&(t+=" "+("/*# sourceURL="+o+" */")+" ")),typeof e.schema=="boolean"||!(i||e.schema.$ref)){var r="false schema",d=e.level,f=e.dataLevel,h=e.schema[r],p=e.schemaPath+e.util.getProperty(r),g=e.errSchemaPath+"/"+r,T=!e.opts.allErrors,D,y="data"+(f||""),R="valid"+d;if(e.schema===!1){e.isTop?T=!0:t+=" var "+R+" = false; ";var v=v||[];v.push(t),t="",e.createErrors!==!1?(t+=" { keyword: '"+(D||"false schema")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(g)+" , params: {} ",e.opts.messages!==!1&&(t+=" , message: 'boolean schema is false' "),e.opts.verbose&&(t+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+y+" "),t+=" } "):t+=" {} ";var x=t;t=v.pop(),!e.compositeRule&&T?e.async?t+=" throw new ValidationError(["+x+"]); ":t+=" validate.errors = ["+x+"]; return false; ":t+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else e.isTop?n?t+=" return data; ":t+=" validate.errors = null; return true; ":t+=" var "+R+" = true; ";return e.isTop&&(t+=" }; return validate; "),t}if(e.isTop){var P=e.isTop,d=e.level=0,f=e.dataLevel=0,y="data";if(e.rootId=e.resolve.fullPath(e.self._getId(e.root.schema)),e.baseId=e.baseId||e.rootId,delete e.isTop,e.dataPathArr=[""],e.schema.default!==void 0&&e.opts.useDefaults&&e.opts.strictDefaults){var E="default is ignored in the schema root";if(e.opts.strictDefaults==="log")e.logger.warn(E);else throw new Error(E)}t+=" var vErrors = null; ",t+=" var errors = 0; ",t+=" if (rootData === undefined) rootData = data; "}else{var d=e.level,f=e.dataLevel,y="data"+(f||"");if(o&&(e.baseId=e.resolve.url(e.baseId,o)),n&&!e.async)throw new Error("async schema in sync schema");t+=" var errs_"+d+" = errors;"}var R="valid"+d,T=!e.opts.allErrors,S="",I="",D,$=e.schema.type,L=Array.isArray($);if($&&e.opts.nullable&&e.schema.nullable===!0&&(L?$.indexOf("null")==-1&&($=$.concat("null")):$!="null"&&($=[$,"null"],L=!0)),L&&$.length==1&&($=$[0],L=!1),e.schema.$ref&&i){if(e.opts.extendRefs=="fail")throw new Error('$ref: validation keywords used in schema at path "'+e.errSchemaPath+'" (see option extendRefs)');e.opts.extendRefs!==!0&&(i=!1,e.logger.warn('$ref: keywords ignored in schema at path "'+e.errSchemaPath+'"'))}if(e.schema.$comment&&e.opts.$comment&&(t+=" "+e.RULES.all.$comment.code(e,"$comment")),$){if(e.opts.coerceTypes)var C=e.util.coerceToTypes(e.opts.coerceTypes,$);var k=e.RULES.types[$];if(C||L||k===!0||k&&!Pe(k)){var p=e.schemaPath+".type",g=e.errSchemaPath+"/type",p=e.schemaPath+".type",g=e.errSchemaPath+"/type",N=L?"checkDataTypes":"checkDataType";if(t+=" if ("+e.util[N]($,y,e.opts.strictNumbers,!0)+") { ",C){var A="dataType"+d,M="coerced"+d;t+=" var "+A+" = typeof "+y+"; var "+M+" = undefined; ",e.opts.coerceTypes=="array"&&(t+=" if ("+A+" == 'object' && Array.isArray("+y+") && "+y+".length == 1) { "+y+" = "+y+"[0]; "+A+" = typeof "+y+"; if ("+e.util.checkDataType(e.schema.type,y,e.opts.strictNumbers)+") "+M+" = "+y+"; } "),t+=" if ("+M+" !== undefined) ; ";var W=C;if(W)for(var Q,te=-1,K=W.length-1;te{"use strict";var _s=gs(),Es=ar(),yo=ys(),$p=Ia(),go=Na(),Dp=Es.ucs2length,Cp=us(),kp=yo.Validation;bo.exports=Aa;function Aa(s,e,r,a){var t=this,n=this._opts,i=[void 0],o={},l=[],u={},d=[],f={},h=[];e=e||{schema:s,refVal:i,refs:o};var p=Lp.call(this,s,e,a),g=this._compilations[p.index];if(p.compiling)return g.callValidate=E;var y=this._formats,v=this.RULES;try{var x=R(s,e,r,a);g.validate=x;var P=g.callValidate;return P&&(P.schema=x.schema,P.errors=null,P.refs=x.refs,P.refVal=x.refVal,P.root=x.root,P.$async=x.$async,n.sourceCode&&(P.source=x.source)),x}finally{jp.call(this,s,e,a)}function E(){var N=g.validate,A=N.apply(this,arguments);return E.errors=N.errors,A}function R(N,A,M,W){var Q=!A||A&&A.schema==N;if(A.schema!=e.schema)return Aa.call(t,N,A,M,W);var te=N.$async===!0,K=go({isTop:!0,schema:N,isRoot:Q,baseId:W,root:A,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:yo.MissingRef,RULES:v,validate:go,util:Es,resolve:_s,resolveRef:T,usePattern:L,useDefault:C,useCustomRule:k,opts:n,formats:y,logger:t.logger,self:t});K=bs(i,qp)+bs(l,Fp)+bs(d,Mp)+bs(h,Up)+K,n.processCode&&(K=n.processCode(K,N));var Z;try{var fe=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",K);Z=fe(t,v,y,e,i,d,h,Cp,Dp,kp),i[0]=Z}catch(Te){throw t.logger.error("Error compiling schema, function code:",K),Te}return Z.schema=N,Z.errors=null,Z.refs=o,Z.refVal=i,Z.root=Q?Z:A,te&&(Z.$async=!0),n.sourceCode===!0&&(Z.source={code:K,patterns:l,defaults:d}),Z}function T(N,A,M){A=_s.url(N,A);var W=o[A],Q,te;if(W!==void 0)return Q=i[W],te="refVal["+W+"]",$(Q,te);if(!M&&e.refs){var K=e.refs[A];if(K!==void 0)return Q=e.refVal[K],te=S(A,Q),$(Q,te)}te=S(A);var Z=_s.call(t,R,e,A);if(Z===void 0){var fe=r&&r[A];fe&&(Z=_s.inlineRef(fe,n.inlineRefs)?fe:Aa.call(t,fe,e,r,N))}if(Z===void 0)I(A);else return D(A,Z),$(Z,te)}function S(N,A){var M=i.length;return i[M]=A,o[N]=M,"refVal"+M}function I(N){delete o[N]}function D(N,A){var M=o[N];i[M]=A}function $(N,A){return typeof N=="object"||typeof N=="boolean"?{code:A,schema:N,inline:!0}:{code:A,$async:N&&!!N.$async}}function L(N){var A=u[N];return A===void 0&&(A=u[N]=l.length,l[A]=N),"pattern"+A}function C(N){switch(typeof N){case"boolean":case"number":return""+N;case"string":return Es.toQuotedString(N);case"object":if(N===null)return"null";var A=$p(N),M=f[A];return M===void 0&&(M=f[A]=d.length,d[M]=N),"default"+M}}function k(N,A,M,W){if(t._opts.validateSchema!==!1){var Q=N.definition.dependencies;if(Q&&!Q.every(function(we){return Object.prototype.hasOwnProperty.call(M,we)}))throw new Error("parent schema must have all required keywords: "+Q.join(","));var te=N.definition.validateSchema;if(te){var K=te(A);if(!K){var Z="keyword schema is invalid: "+t.errorsText(te.errors);if(t._opts.validateSchema=="log")t.logger.error(Z);else throw new Error(Z)}}}var fe=N.definition.compile,Te=N.definition.inline,Ce=N.definition.macro,ie;if(fe)ie=fe.call(t,A,M,W);else if(Ce)ie=Ce.call(t,A,M,W),n.validateSchema!==!1&&t.validateSchema(ie,!0);else if(Te)ie=Te.call(t,W,N.keyword,A,M);else if(ie=N.definition.validate,!ie)return;if(ie===void 0)throw new Error('custom keyword "'+N.keyword+'"failed to compile');var Ee=h.length;return h[Ee]=ie,{code:"customRule"+Ee,validate:ie}}}function Lp(s,e,r){var a=_o.call(this,s,e,r);return a>=0?{index:a,compiling:!0}:(a=this._compilations.length,this._compilations[a]={schema:s,root:e,baseId:r},{index:a,compiling:!1})}function jp(s,e,r){var a=_o.call(this,s,e,r);a>=0&&this._compilations.splice(a,1)}function _o(s,e,r){for(var a=0;a{"use strict";var Ss=So.exports=function(){this._cache={}};Ss.prototype.put=function(e,r){this._cache[e]=r};Ss.prototype.get=function(e){return this._cache[e]};Ss.prototype.del=function(e){delete this._cache[e]};Ss.prototype.clear=function(){this._cache={}}});var ko=z((Am,Co)=>{"use strict";var Bp=ar(),Vp=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,Hp=[0,31,28,31,30,31,30,31,31,30,31,30,31],zp=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,Ro=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,Zp=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,Gp=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,To=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,wo=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,Oo=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,Po=/^(?:\/(?:[^~/]|~0|~1)*)*$/,Io=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,No=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;Co.exports=xs;function xs(s){return s=s=="full"?"full":"fast",Bp.copy(xs[s])}xs.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":To,url:wo,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:Ro,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:Do,uuid:Oo,"json-pointer":Po,"json-pointer-uri-fragment":Io,"relative-json-pointer":No};xs.full={date:Ao,time:$o,"date-time":Qp,uri:Jp,"uri-reference":Gp,"uri-template":To,url:wo,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:Ro,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:Do,uuid:Oo,"json-pointer":Po,"json-pointer-uri-fragment":Io,"relative-json-pointer":No};function Xp(s){return s%4===0&&(s%100!==0||s%400===0)}function Ao(s){var e=s.match(Vp);if(!e)return!1;var r=+e[1],a=+e[2],t=+e[3];return a>=1&&a<=12&&t>=1&&t<=(a==2&&Xp(r)?29:Hp[a])}function $o(s,e){var r=s.match(zp);if(!r)return!1;var a=r[1],t=r[2],n=r[3],i=r[5];return(a<=23&&t<=59&&n<=59||a==23&&t==59&&n==60)&&(!e||i)}var Wp=/t|\s/i;function Qp(s){var e=s.split(Wp);return e.length==2&&Ao(e[0])&&$o(e[1],!0)}var Kp=/\/|:/;function Jp(s){return Kp.test(s)&&Zp.test(s)}var Yp=/[^\\]\\Z/;function Do(s){if(Yp.test(s))return!1;try{return new RegExp(s),!0}catch{return!1}}});var jo=z(($m,Lo)=>{"use strict";Lo.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,d="data"+(i||""),f="valid"+n,h,p;if(o=="#"||o=="#/")e.isRoot?(h=e.async,p="validate"):(h=e.root.schema.$async===!0,p="root.refVal[0]");else{var g=e.resolveRef(e.baseId,o,e.isRoot);if(g===void 0){var y=e.MissingRefError.message(e.baseId,o);if(e.opts.missingRefs=="fail"){e.logger.error(y);var v=v||[];v.push(t),t="",e.createErrors!==!1?(t+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { ref: '"+e.util.escapeQuotes(o)+"' } ",e.opts.messages!==!1&&(t+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(o)+"' "),e.opts.verbose&&(t+=" , schema: "+e.util.toQuotedString(o)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),t+=" } "):t+=" {} ";var x=t;t=v.pop(),!e.compositeRule&&u?e.async?t+=" throw new ValidationError(["+x+"]); ":t+=" validate.errors = ["+x+"]; return false; ":t+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u&&(t+=" if (false) { ")}else if(e.opts.missingRefs=="ignore")e.logger.warn(y),u&&(t+=" if (true) { ");else throw new e.MissingRefError(e.baseId,o,y)}else if(g.inline){var P=e.util.copy(e);P.level++;var E="valid"+P.level;P.schema=g.schema,P.schemaPath="",P.errSchemaPath=o;var R=e.validate(P).replace(/validate\.schema/g,g.code);t+=" "+R+" ",u&&(t+=" if ("+E+") { ")}else h=g.$async===!0||e.async&&g.$async!==!1,p=g.code}if(p){var v=v||[];v.push(t),t="",e.opts.passContext?t+=" "+p+".call(this, ":t+=" "+p+"( ",t+=" "+d+", (dataPath || '')",e.errorPath!='""'&&(t+=" + "+e.errorPath);var T=i?"data"+(i-1||""):"parentData",S=i?e.dataPathArr[i]:"parentDataProperty";t+=" , "+T+" , "+S+", rootData) ";var I=t;if(t=v.pop(),h){if(!e.async)throw new Error("async schema referenced by sync schema");u&&(t+=" var "+f+"; "),t+=" try { await "+I+"; ",u&&(t+=" "+f+" = true; "),t+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",u&&(t+=" "+f+" = false; "),t+=" } ",u&&(t+=" if ("+f+") { ")}else t+=" if (!"+I+") { if (vErrors === null) vErrors = "+p+".errors; else vErrors = vErrors.concat("+p+".errors); errors = vErrors.length; } ",u&&(t+=" else { ")}return t}});var Mo=z((Dm,Fo)=>{"use strict";Fo.exports=function(e,r,a){var t=" ",n=e.schema[r],i=e.schemaPath+e.util.getProperty(r),o=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,u=e.util.copy(e),d="";u.level++;var f="valid"+u.level,h=u.baseId,p=!0,g=n;if(g)for(var y,v=-1,x=g.length-1;v0||y===!1:e.util.schemaHasRules(y,e.RULES.all))&&(p=!1,u.schema=y,u.schemaPath=i+"["+v+"]",u.errSchemaPath=o+"/"+v,t+=" "+e.validate(u)+" ",u.baseId=h,l&&(t+=" if ("+f+") { ",d+="}"));return l&&(p?t+=" if (true) { ":t+=" "+d.slice(0,-1)+" "),t}});var Uo=z((Cm,qo)=>{"use strict";qo.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p="errs__"+n,g=e.util.copy(e),y="";g.level++;var v="valid"+g.level,x=o.every(function(D){return e.opts.strictKeywords?typeof D=="object"&&Object.keys(D).length>0||D===!1:e.util.schemaHasRules(D,e.RULES.all)});if(x){var P=g.baseId;t+=" var "+p+" = errors; var "+h+" = false; ";var E=e.compositeRule;e.compositeRule=g.compositeRule=!0;var R=o;if(R)for(var T,S=-1,I=R.length-1;S{"use strict";Bo.exports=function(e,r,a){var t=" ",n=e.schema[r],i=e.errSchemaPath+"/"+r,o=!e.opts.allErrors,l=e.util.toQuotedString(n);return e.opts.$comment===!0?t+=" console.log("+l+");":typeof e.opts.$comment=="function"&&(t+=" self._opts.$comment("+l+", "+e.util.toQuotedString(i)+", validate.root.schema);"),t}});var zo=z((Lm,Ho)=>{"use strict";Ho.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p=e.opts.$data&&o&&o.$data,g;p?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",g="schema"+n):g=o,p||(t+=" var schema"+n+" = validate.schema"+l+";"),t+="var "+h+" = equal("+f+", schema"+n+"); if (!"+h+") { ";var y=y||[];y.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { allowedValue: schema"+n+" } ",e.opts.messages!==!1&&(t+=" , message: 'should be equal to constant' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var v=t;return t=y.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+v+"]); ":t+=" validate.errors = ["+v+"]; return false; ":t+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" }",d&&(t+=" else { "),t}});var Go=z((jm,Zo)=>{"use strict";Zo.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p="errs__"+n,g=e.util.copy(e),y="";g.level++;var v="valid"+g.level,x="i"+n,P=g.dataLevel=e.dataLevel+1,E="data"+P,R=e.baseId,T=e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all);if(t+="var "+p+" = errors;var "+h+";",T){var S=e.compositeRule;e.compositeRule=g.compositeRule=!0,g.schema=o,g.schemaPath=l,g.errSchemaPath=u,t+=" var "+v+" = false; for (var "+x+" = 0; "+x+" < "+f+".length; "+x+"++) { ",g.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0);var I=f+"["+x+"]";g.dataPathArr[P]=x;var D=e.validate(g);g.baseId=R,e.util.varOccurences(D,E)<2?t+=" "+e.util.varReplace(D,E,I)+" ":t+=" var "+E+" = "+I+"; "+D+" ",t+=" if ("+v+") break; } ",e.compositeRule=g.compositeRule=S,t+=" "+y+" if (!"+v+") {"}else t+=" if ("+f+".length == 0) {";var $=$||[];$.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",e.opts.messages!==!1&&(t+=" , message: 'should contain a valid item' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var L=t;return t=$.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+L+"]); ":t+=" validate.errors = ["+L+"]; return false; ":t+=" var err = "+L+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { ",T&&(t+=" errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; } "),e.opts.allErrors&&(t+=" } "),t}});var Wo=z((Fm,Xo)=>{"use strict";Xo.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="errs__"+n,p=e.util.copy(e),g="";p.level++;var y="valid"+p.level,v={},x={},P=e.opts.ownProperties;for(S in o)if(S!="__proto__"){var E=o[S],R=Array.isArray(E)?x:v;R[S]=E}t+="var "+h+" = errors;";var T=e.errorPath;t+="var missing"+n+";";for(var S in x)if(R=x[S],R.length){if(t+=" if ( "+f+e.util.getProperty(S)+" !== undefined ",P&&(t+=" && Object.prototype.hasOwnProperty.call("+f+", '"+e.util.escapeQuotes(S)+"') "),d){t+=" && ( ";var I=R;if(I)for(var D,$=-1,L=I.length-1;$0||E===!1:e.util.schemaHasRules(E,e.RULES.all))&&(t+=" "+y+" = true; if ( "+f+e.util.getProperty(S)+" !== undefined ",P&&(t+=" && Object.prototype.hasOwnProperty.call("+f+", '"+e.util.escapeQuotes(S)+"') "),t+=") { ",p.schema=E,p.schemaPath=l+e.util.getProperty(S),p.errSchemaPath=u+"/"+e.util.escapeFragment(S),t+=" "+e.validate(p)+" ",p.baseId=Z,t+=" } ",d&&(t+=" if ("+y+") { ",g+="}"))}return d&&(t+=" "+g+" if ("+h+" == errors) {"),t}});var Ko=z((Mm,Qo)=>{"use strict";Qo.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p=e.opts.$data&&o&&o.$data,g;p?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",g="schema"+n):g=o;var y="i"+n,v="schema"+n;p||(t+=" var "+v+" = validate.schema"+l+";"),t+="var "+h+";",p&&(t+=" if (schema"+n+" === undefined) "+h+" = true; else if (!Array.isArray(schema"+n+")) "+h+" = false; else {"),t+=""+h+" = false;for (var "+y+"=0; "+y+"<"+v+".length; "+y+"++) if (equal("+f+", "+v+"["+y+"])) { "+h+" = true; break; }",p&&(t+=" } "),t+=" if (!"+h+") { ";var x=x||[];x.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { allowedValues: schema"+n+" } ",e.opts.messages!==!1&&(t+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var P=t;return t=x.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+P+"]); ":t+=" validate.errors = ["+P+"]; return false; ":t+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" }",d&&(t+=" else { "),t}});var Yo=z((qm,Jo)=>{"use strict";Jo.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||"");if(e.opts.format===!1)return d&&(t+=" if (true) { "),t;var h=e.opts.$data&&o&&o.$data,p;h?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",p="schema"+n):p=o;var g=e.opts.unknownFormats,y=Array.isArray(g);if(h){var v="format"+n,x="isObject"+n,P="formatType"+n;t+=" var "+v+" = formats["+p+"]; var "+x+" = typeof "+v+" == 'object' && !("+v+" instanceof RegExp) && "+v+".validate; var "+P+" = "+x+" && "+v+".type || 'string'; if ("+x+") { ",e.async&&(t+=" var async"+n+" = "+v+".async; "),t+=" "+v+" = "+v+".validate; } if ( ",h&&(t+=" ("+p+" !== undefined && typeof "+p+" != 'string') || "),t+=" (",g!="ignore"&&(t+=" ("+p+" && !"+v+" ",y&&(t+=" && self._opts.unknownFormats.indexOf("+p+") == -1 "),t+=") || "),t+=" ("+v+" && "+P+" == '"+a+"' && !(typeof "+v+" == 'function' ? ",e.async?t+=" (async"+n+" ? await "+v+"("+f+") : "+v+"("+f+")) ":t+=" "+v+"("+f+") ",t+=" : "+v+".test("+f+"))))) {"}else{var v=e.formats[o];if(!v){if(g=="ignore")return e.logger.warn('unknown format "'+o+'" ignored in schema at path "'+e.errSchemaPath+'"'),d&&(t+=" if (true) { "),t;if(y&&g.indexOf(o)>=0)return d&&(t+=" if (true) { "),t;throw new Error('unknown format "'+o+'" is used in schema at path "'+e.errSchemaPath+'"')}var x=typeof v=="object"&&!(v instanceof RegExp)&&v.validate,P=x&&v.type||"string";if(x){var E=v.async===!0;v=v.validate}if(P!=a)return d&&(t+=" if (true) { "),t;if(E){if(!e.async)throw new Error("async format in sync schema");var R="formats"+e.util.getProperty(o)+".validate";t+=" if (!(await "+R+"("+f+"))) { "}else{t+=" if (! ";var R="formats"+e.util.getProperty(o);x&&(R+=".validate"),typeof v=="function"?t+=" "+R+"("+f+") ":t+=" "+R+".test("+f+") ",t+=") { "}}var T=T||[];T.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { format: ",h?t+=""+p:t+=""+e.util.toQuotedString(o),t+=" } ",e.opts.messages!==!1&&(t+=` , message: 'should match format "`,h?t+="' + "+p+" + '":t+=""+e.util.escapeQuotes(o),t+=`"' `),e.opts.verbose&&(t+=" , schema: ",h?t+="validate.schema"+l:t+=""+e.util.toQuotedString(o),t+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var S=t;return t=T.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+S+"]); ":t+=" validate.errors = ["+S+"]; return false; ":t+=" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } ",d&&(t+=" else { "),t}});var ti=z((Um,ei)=>{"use strict";ei.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p="errs__"+n,g=e.util.copy(e);g.level++;var y="valid"+g.level,v=e.schema.then,x=e.schema.else,P=v!==void 0&&(e.opts.strictKeywords?typeof v=="object"&&Object.keys(v).length>0||v===!1:e.util.schemaHasRules(v,e.RULES.all)),E=x!==void 0&&(e.opts.strictKeywords?typeof x=="object"&&Object.keys(x).length>0||x===!1:e.util.schemaHasRules(x,e.RULES.all)),R=g.baseId;if(P||E){var T;g.createErrors=!1,g.schema=o,g.schemaPath=l,g.errSchemaPath=u,t+=" var "+p+" = errors; var "+h+" = true; ";var S=e.compositeRule;e.compositeRule=g.compositeRule=!0,t+=" "+e.validate(g)+" ",g.baseId=R,g.createErrors=!0,t+=" errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; } ",e.compositeRule=g.compositeRule=S,P?(t+=" if ("+y+") { ",g.schema=e.schema.then,g.schemaPath=e.schemaPath+".then",g.errSchemaPath=e.errSchemaPath+"/then",t+=" "+e.validate(g)+" ",g.baseId=R,t+=" "+h+" = "+y+"; ",P&&E?(T="ifClause"+n,t+=" var "+T+" = 'then'; "):T="'then'",t+=" } ",E&&(t+=" else { ")):t+=" if (!"+y+") { ",E&&(g.schema=e.schema.else,g.schemaPath=e.schemaPath+".else",g.errSchemaPath=e.errSchemaPath+"/else",t+=" "+e.validate(g)+" ",g.baseId=R,t+=" "+h+" = "+y+"; ",P&&E?(T="ifClause"+n,t+=" var "+T+" = 'else'; "):T="'else'",t+=" } "),t+=" if (!"+h+") { var err = ",e.createErrors!==!1?(t+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { failingKeyword: "+T+" } ",e.opts.messages!==!1&&(t+=` , message: 'should match "' + `+T+` + '" schema' `),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&d&&(e.async?t+=" throw new ValidationError(vErrors); ":t+=" validate.errors = vErrors; return false; "),t+=" } ",d&&(t+=" else { ")}else d&&(t+=" if (true) { ");return t}});var si=z((Bm,ri)=>{"use strict";ri.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p="errs__"+n,g=e.util.copy(e),y="";g.level++;var v="valid"+g.level,x="i"+n,P=g.dataLevel=e.dataLevel+1,E="data"+P,R=e.baseId;if(t+="var "+p+" = errors;var "+h+";",Array.isArray(o)){var T=e.schema.additionalItems;if(T===!1){t+=" "+h+" = "+f+".length <= "+o.length+"; ";var S=u;u=e.errSchemaPath+"/additionalItems",t+=" if (!"+h+") { ";var I=I||[];I.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+o.length+" } ",e.opts.messages!==!1&&(t+=" , message: 'should NOT have more than "+o.length+" items' "),e.opts.verbose&&(t+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var D=t;t=I.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+D+"]); ":t+=" validate.errors = ["+D+"]; return false; ":t+=" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } ",u=S,d&&(y+="}",t+=" else { ")}var $=o;if($){for(var L,C=-1,k=$.length-1;C0||L===!1:e.util.schemaHasRules(L,e.RULES.all)){t+=" "+v+" = true; if ("+f+".length > "+C+") { ";var N=f+"["+C+"]";g.schema=L,g.schemaPath=l+"["+C+"]",g.errSchemaPath=u+"/"+C,g.errorPath=e.util.getPathExpr(e.errorPath,C,e.opts.jsonPointers,!0),g.dataPathArr[P]=C;var A=e.validate(g);g.baseId=R,e.util.varOccurences(A,E)<2?t+=" "+e.util.varReplace(A,E,N)+" ":t+=" var "+E+" = "+N+"; "+A+" ",t+=" } ",d&&(t+=" if ("+v+") { ",y+="}")}}if(typeof T=="object"&&(e.opts.strictKeywords?typeof T=="object"&&Object.keys(T).length>0||T===!1:e.util.schemaHasRules(T,e.RULES.all))){g.schema=T,g.schemaPath=e.schemaPath+".additionalItems",g.errSchemaPath=e.errSchemaPath+"/additionalItems",t+=" "+v+" = true; if ("+f+".length > "+o.length+") { for (var "+x+" = "+o.length+"; "+x+" < "+f+".length; "+x+"++) { ",g.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0);var N=f+"["+x+"]";g.dataPathArr[P]=x;var A=e.validate(g);g.baseId=R,e.util.varOccurences(A,E)<2?t+=" "+e.util.varReplace(A,E,N)+" ":t+=" var "+E+" = "+N+"; "+A+" ",d&&(t+=" if (!"+v+") break; "),t+=" } } ",d&&(t+=" if ("+v+") { ",y+="}")}}else if(e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){g.schema=o,g.schemaPath=l,g.errSchemaPath=u,t+=" for (var "+x+" = 0; "+x+" < "+f+".length; "+x+"++) { ",g.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0);var N=f+"["+x+"]";g.dataPathArr[P]=x;var A=e.validate(g);g.baseId=R,e.util.varOccurences(A,E)<2?t+=" "+e.util.varReplace(A,E,N)+" ":t+=" var "+E+" = "+N+"; "+A+" ",d&&(t+=" if (!"+v+") break; "),t+=" }"}return d&&(t+=" "+y+" if ("+p+" == errors) {"),t}});var $a=z((Vm,ai)=>{"use strict";ai.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,R,f="data"+(i||""),h=e.opts.$data&&o&&o.$data,p;h?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",p="schema"+n):p=o;var g=r=="maximum",y=g?"exclusiveMaximum":"exclusiveMinimum",v=e.schema[y],x=e.opts.$data&&v&&v.$data,P=g?"<":">",E=g?">":"<",R=void 0;if(!(h||typeof o=="number"||o===void 0))throw new Error(r+" must be number");if(!(x||v===void 0||typeof v=="number"||typeof v=="boolean"))throw new Error(y+" must be number or boolean");if(x){var T=e.util.getData(v.$data,i,e.dataPathArr),S="exclusive"+n,I="exclType"+n,D="exclIsNumber"+n,$="op"+n,L="' + "+$+" + '";t+=" var schemaExcl"+n+" = "+T+"; ",T="schemaExcl"+n,t+=" var "+S+"; var "+I+" = typeof "+T+"; if ("+I+" != 'boolean' && "+I+" != 'undefined' && "+I+" != 'number') { ";var R=y,C=C||[];C.push(t),t="",e.createErrors!==!1?(t+=" { keyword: '"+(R||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",e.opts.messages!==!1&&(t+=" , message: '"+y+" should be boolean' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var k=t;t=C.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+k+"]); ":t+=" validate.errors = ["+k+"]; return false; ":t+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else if ( ",h&&(t+=" ("+p+" !== undefined && typeof "+p+" != 'number') || "),t+=" "+I+" == 'number' ? ( ("+S+" = "+p+" === undefined || "+T+" "+P+"= "+p+") ? "+f+" "+E+"= "+T+" : "+f+" "+E+" "+p+" ) : ( ("+S+" = "+T+" === true) ? "+f+" "+E+"= "+p+" : "+f+" "+E+" "+p+" ) || "+f+" !== "+f+") { var op"+n+" = "+S+" ? '"+P+"' : '"+P+"='; ",o===void 0&&(R=y,u=e.errSchemaPath+"/"+y,p=T,h=x)}else{var D=typeof v=="number",L=P;if(D&&h){var $="'"+L+"'";t+=" if ( ",h&&(t+=" ("+p+" !== undefined && typeof "+p+" != 'number') || "),t+=" ( "+p+" === undefined || "+v+" "+P+"= "+p+" ? "+f+" "+E+"= "+v+" : "+f+" "+E+" "+p+" ) || "+f+" !== "+f+") { "}else{D&&o===void 0?(S=!0,R=y,u=e.errSchemaPath+"/"+y,p=v,E+="="):(D&&(p=Math[g?"min":"max"](v,o)),v===(D?p:!0)?(S=!0,R=y,u=e.errSchemaPath+"/"+y,E+="="):(S=!1,L+="="));var $="'"+L+"'";t+=" if ( ",h&&(t+=" ("+p+" !== undefined && typeof "+p+" != 'number') || "),t+=" "+f+" "+E+" "+p+" || "+f+" !== "+f+") { "}}R=R||r;var C=C||[];C.push(t),t="",e.createErrors!==!1?(t+=" { keyword: '"+(R||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { comparison: "+$+", limit: "+p+", exclusive: "+S+" } ",e.opts.messages!==!1&&(t+=" , message: 'should be "+L+" ",h?t+="' + "+p:t+=""+p+"'"),e.opts.verbose&&(t+=" , schema: ",h?t+="validate.schema"+l:t+=""+o,t+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var k=t;return t=C.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+k+"]); ":t+=" validate.errors = ["+k+"]; return false; ":t+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } ",d&&(t+=" else { "),t}});var Da=z((Hm,ni)=>{"use strict";ni.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,y,f="data"+(i||""),h=e.opts.$data&&o&&o.$data,p;if(h?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",p="schema"+n):p=o,!(h||typeof o=="number"))throw new Error(r+" must be number");var g=r=="maxItems"?">":"<";t+="if ( ",h&&(t+=" ("+p+" !== undefined && typeof "+p+" != 'number') || "),t+=" "+f+".length "+g+" "+p+") { ";var y=r,v=v||[];v.push(t),t="",e.createErrors!==!1?(t+=" { keyword: '"+(y||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+p+" } ",e.opts.messages!==!1&&(t+=" , message: 'should NOT have ",r=="maxItems"?t+="more":t+="fewer",t+=" than ",h?t+="' + "+p+" + '":t+=""+o,t+=" items' "),e.opts.verbose&&(t+=" , schema: ",h?t+="validate.schema"+l:t+=""+o,t+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var x=t;return t=v.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+x+"]); ":t+=" validate.errors = ["+x+"]; return false; ":t+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+="} ",d&&(t+=" else { "),t}});var Ca=z((zm,oi)=>{"use strict";oi.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,y,f="data"+(i||""),h=e.opts.$data&&o&&o.$data,p;if(h?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",p="schema"+n):p=o,!(h||typeof o=="number"))throw new Error(r+" must be number");var g=r=="maxLength"?">":"<";t+="if ( ",h&&(t+=" ("+p+" !== undefined && typeof "+p+" != 'number') || "),e.opts.unicode===!1?t+=" "+f+".length ":t+=" ucs2length("+f+") ",t+=" "+g+" "+p+") { ";var y=r,v=v||[];v.push(t),t="",e.createErrors!==!1?(t+=" { keyword: '"+(y||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+p+" } ",e.opts.messages!==!1&&(t+=" , message: 'should NOT be ",r=="maxLength"?t+="longer":t+="shorter",t+=" than ",h?t+="' + "+p+" + '":t+=""+o,t+=" characters' "),e.opts.verbose&&(t+=" , schema: ",h?t+="validate.schema"+l:t+=""+o,t+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var x=t;return t=v.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+x+"]); ":t+=" validate.errors = ["+x+"]; return false; ":t+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+="} ",d&&(t+=" else { "),t}});var ka=z((Zm,ii)=>{"use strict";ii.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,y,f="data"+(i||""),h=e.opts.$data&&o&&o.$data,p;if(h?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",p="schema"+n):p=o,!(h||typeof o=="number"))throw new Error(r+" must be number");var g=r=="maxProperties"?">":"<";t+="if ( ",h&&(t+=" ("+p+" !== undefined && typeof "+p+" != 'number') || "),t+=" Object.keys("+f+").length "+g+" "+p+") { ";var y=r,v=v||[];v.push(t),t="",e.createErrors!==!1?(t+=" { keyword: '"+(y||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+p+" } ",e.opts.messages!==!1&&(t+=" , message: 'should NOT have ",r=="maxProperties"?t+="more":t+="fewer",t+=" than ",h?t+="' + "+p+" + '":t+=""+o,t+=" properties' "),e.opts.verbose&&(t+=" , schema: ",h?t+="validate.schema"+l:t+=""+o,t+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var x=t;return t=v.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+x+"]); ":t+=" validate.errors = ["+x+"]; return false; ":t+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+="} ",d&&(t+=" else { "),t}});var li=z((Gm,ci)=>{"use strict";ci.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h=e.opts.$data&&o&&o.$data,p;if(h?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",p="schema"+n):p=o,!(h||typeof o=="number"))throw new Error(r+" must be number");t+="var division"+n+";if (",h&&(t+=" "+p+" !== undefined && ( typeof "+p+" != 'number' || "),t+=" (division"+n+" = "+f+" / "+p+", ",e.opts.multipleOfPrecision?t+=" Math.abs(Math.round(division"+n+") - division"+n+") > 1e-"+e.opts.multipleOfPrecision+" ":t+=" division"+n+" !== parseInt(division"+n+") ",t+=" ) ",h&&(t+=" ) "),t+=" ) { ";var g=g||[];g.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { multipleOf: "+p+" } ",e.opts.messages!==!1&&(t+=" , message: 'should be multiple of ",h?t+="' + "+p:t+=""+p+"'"),e.opts.verbose&&(t+=" , schema: ",h?t+="validate.schema"+l:t+=""+o,t+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var y=t;return t=g.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+y+"]); ":t+=" validate.errors = ["+y+"]; return false; ":t+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+="} ",d&&(t+=" else { "),t}});var di=z((Xm,ui)=>{"use strict";ui.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="errs__"+n,p=e.util.copy(e);p.level++;var g="valid"+p.level;if(e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){p.schema=o,p.schemaPath=l,p.errSchemaPath=u,t+=" var "+h+" = errors; ";var y=e.compositeRule;e.compositeRule=p.compositeRule=!0,p.createErrors=!1;var v;p.opts.allErrors&&(v=p.opts.allErrors,p.opts.allErrors=!1),t+=" "+e.validate(p)+" ",p.createErrors=!0,v&&(p.opts.allErrors=v),e.compositeRule=p.compositeRule=y,t+=" if ("+g+") { ";var x=x||[];x.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",e.opts.messages!==!1&&(t+=" , message: 'should NOT be valid' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var P=t;t=x.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+P+"]); ":t+=" validate.errors = ["+P+"]; return false; ":t+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } ",e.opts.allErrors&&(t+=" } ")}else t+=" var err = ",e.createErrors!==!1?(t+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",e.opts.messages!==!1&&(t+=" , message: 'should NOT be valid' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",d&&(t+=" if (false) { ");return t}});var fi=z((Wm,pi)=>{"use strict";pi.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p="errs__"+n,g=e.util.copy(e),y="";g.level++;var v="valid"+g.level,x=g.baseId,P="prevValid"+n,E="passingSchemas"+n;t+="var "+p+" = errors , "+P+" = false , "+h+" = false , "+E+" = null; ";var R=e.compositeRule;e.compositeRule=g.compositeRule=!0;var T=o;if(T)for(var S,I=-1,D=T.length-1;I0||S===!1:e.util.schemaHasRules(S,e.RULES.all))?(g.schema=S,g.schemaPath=l+"["+I+"]",g.errSchemaPath=u+"/"+I,t+=" "+e.validate(g)+" ",g.baseId=x):t+=" var "+v+" = true; ",I&&(t+=" if ("+v+" && "+P+") { "+h+" = false; "+E+" = ["+E+", "+I+"]; } else { ",y+="}"),t+=" if ("+v+") { "+h+" = "+P+" = true; "+E+" = "+I+"; }";return e.compositeRule=g.compositeRule=R,t+=""+y+"if (!"+h+") { var err = ",e.createErrors!==!1?(t+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { passingSchemas: "+E+" } ",e.opts.messages!==!1&&(t+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ",t+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&d&&(e.async?t+=" throw new ValidationError(vErrors); ":t+=" validate.errors = vErrors; return false; "),t+="} else { errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; }",e.opts.allErrors&&(t+=" } "),t}});var mi=z((Qm,hi)=>{"use strict";hi.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h=e.opts.$data&&o&&o.$data,p;h?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",p="schema"+n):p=o;var g=h?"(new RegExp("+p+"))":e.usePattern(o);t+="if ( ",h&&(t+=" ("+p+" !== undefined && typeof "+p+" != 'string') || "),t+=" !"+g+".test("+f+") ) { ";var y=y||[];y.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { pattern: ",h?t+=""+p:t+=""+e.util.toQuotedString(o),t+=" } ",e.opts.messages!==!1&&(t+=` , message: 'should match pattern "`,h?t+="' + "+p+" + '":t+=""+e.util.escapeQuotes(o),t+=`"' `),e.opts.verbose&&(t+=" , schema: ",h?t+="validate.schema"+l:t+=""+e.util.toQuotedString(o),t+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var v=t;return t=y.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+v+"]); ":t+=" validate.errors = ["+v+"]; return false; ":t+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+="} ",d&&(t+=" else { "),t}});var gi=z((Km,vi)=>{"use strict";vi.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="errs__"+n,p=e.util.copy(e),g="";p.level++;var y="valid"+p.level,v="key"+n,x="idx"+n,P=p.dataLevel=e.dataLevel+1,E="data"+P,R="dataProperties"+n,T=Object.keys(o||{}).filter(te),S=e.schema.patternProperties||{},I=Object.keys(S).filter(te),D=e.schema.additionalProperties,$=T.length||I.length,L=D===!1,C=typeof D=="object"&&Object.keys(D).length,k=e.opts.removeAdditional,N=L||C||k,A=e.opts.ownProperties,M=e.baseId,W=e.schema.required;if(W&&!(e.opts.$data&&W.$data)&&W.length8)t+=" || validate.schema"+l+".hasOwnProperty("+v+") ";else{var K=T;if(K)for(var Z,fe=-1,Te=K.length-1;fe0||Pe===!1:e.util.schemaHasRules(Pe,e.RULES.all)){var Ge=e.util.getProperty(Z),Ne=f+Ge,Me=Tt&&Pe.default!==void 0;p.schema=Pe,p.schemaPath=l+Ge,p.errSchemaPath=u+"/"+e.util.escapeFragment(Z),p.errorPath=e.util.getPath(e.errorPath,Z,e.opts.jsonPointers),p.dataPathArr[P]=e.util.toQuotedString(Z);var le=e.validate(p);if(p.baseId=M,e.util.varOccurences(le,E)<2){le=e.util.varReplace(le,E,Ne);var Le=Ne}else{var Le=E;t+=" var "+E+" = "+Ne+"; "}if(Me)t+=" "+le+" ";else{if(Q&&Q[Z]){t+=" if ( "+Le+" === undefined ",A&&(t+=" || ! Object.prototype.hasOwnProperty.call("+f+", '"+e.util.escapeQuotes(Z)+"') "),t+=") { "+y+" = false; ";var ke=e.errorPath,ht=u,ot=e.util.escapeQuotes(Z);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(ke,Z,e.opts.jsonPointers)),u=e.errSchemaPath+"/required";var Se=Se||[];Se.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { missingProperty: '"+ot+"' } ",e.opts.messages!==!1&&(t+=" , message: '",e.opts._errorDataPathProperty?t+="is a required property":t+="should have required property \\'"+ot+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var ye=t;t=Se.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+ye+"]); ":t+=" validate.errors = ["+ye+"]; return false; ":t+=" var err = "+ye+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u=ht,e.errorPath=ke,t+=" } else { "}else d?(t+=" if ( "+Le+" === undefined ",A&&(t+=" || ! Object.prototype.hasOwnProperty.call("+f+", '"+e.util.escapeQuotes(Z)+"') "),t+=") { "+y+" = true; } else { "):(t+=" if ("+Le+" !== undefined ",A&&(t+=" && Object.prototype.hasOwnProperty.call("+f+", '"+e.util.escapeQuotes(Z)+"') "),t+=" ) { ");t+=" "+le+" } "}}d&&(t+=" if ("+y+") { ",g+="}")}}if(I.length){var Ve=I;if(Ve)for(var ie,Hr=-1,Us=Ve.length-1;Hr0||Pe===!1:e.util.schemaHasRules(Pe,e.RULES.all)){p.schema=Pe,p.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(ie),p.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(ie),A?t+=" "+R+" = "+R+" || Object.keys("+f+"); for (var "+x+"=0; "+x+"<"+R+".length; "+x+"++) { var "+v+" = "+R+"["+x+"]; ":t+=" for (var "+v+" in "+f+") { ",t+=" if ("+e.usePattern(ie)+".test("+v+")) { ",p.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers);var Ne=f+"["+v+"]";p.dataPathArr[P]=v;var le=e.validate(p);p.baseId=M,e.util.varOccurences(le,E)<2?t+=" "+e.util.varReplace(le,E,Ne)+" ":t+=" var "+E+" = "+Ne+"; "+le+" ",d&&(t+=" if (!"+y+") break; "),t+=" } ",d&&(t+=" else "+y+" = true; "),t+=" } ",d&&(t+=" if ("+y+") { ",g+="}")}}}return d&&(t+=" "+g+" if ("+h+" == errors) {"),t}});var _i=z((Jm,yi)=>{"use strict";yi.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="errs__"+n,p=e.util.copy(e),g="";p.level++;var y="valid"+p.level;if(t+="var "+h+" = errors;",e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){p.schema=o,p.schemaPath=l,p.errSchemaPath=u;var v="key"+n,x="idx"+n,P="i"+n,E="' + "+v+" + '",R=p.dataLevel=e.dataLevel+1,T="data"+R,S="dataProperties"+n,I=e.opts.ownProperties,D=e.baseId;I&&(t+=" var "+S+" = undefined; "),I?t+=" "+S+" = "+S+" || Object.keys("+f+"); for (var "+x+"=0; "+x+"<"+S+".length; "+x+"++) { var "+v+" = "+S+"["+x+"]; ":t+=" for (var "+v+" in "+f+") { ",t+=" var startErrs"+n+" = errors; ";var $=v,L=e.compositeRule;e.compositeRule=p.compositeRule=!0;var C=e.validate(p);p.baseId=D,e.util.varOccurences(C,T)<2?t+=" "+e.util.varReplace(C,T,$)+" ":t+=" var "+T+" = "+$+"; "+C+" ",e.compositeRule=p.compositeRule=L,t+=" if (!"+y+") { for (var "+P+"=startErrs"+n+"; "+P+"{"use strict";bi.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p=e.opts.$data&&o&&o.$data,g;p?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",g="schema"+n):g=o;var y="schema"+n;if(!p)if(o.length0||T===!1:e.util.schemaHasRules(T,e.RULES.all))||(v[v.length]=P)}}else var v=o;if(p||v.length){var S=e.errorPath,I=p||v.length>=e.opts.loopRequired,D=e.opts.ownProperties;if(d)if(t+=" var missing"+n+"; ",I){p||(t+=" var "+y+" = validate.schema"+l+"; ");var $="i"+n,L="schema"+n+"["+$+"]",C="' + "+L+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(S,L,e.opts.jsonPointers)),t+=" var "+h+" = true; ",p&&(t+=" if (schema"+n+" === undefined) "+h+" = true; else if (!Array.isArray(schema"+n+")) "+h+" = false; else {"),t+=" for (var "+$+" = 0; "+$+" < "+y+".length; "+$+"++) { "+h+" = "+f+"["+y+"["+$+"]] !== undefined ",D&&(t+=" && Object.prototype.hasOwnProperty.call("+f+", "+y+"["+$+"]) "),t+="; if (!"+h+") break; } ",p&&(t+=" } "),t+=" if (!"+h+") { ";var k=k||[];k.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { missingProperty: '"+C+"' } ",e.opts.messages!==!1&&(t+=" , message: '",e.opts._errorDataPathProperty?t+="is a required property":t+="should have required property \\'"+C+"\\'",t+="' "),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var N=t;t=k.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+N+"]); ":t+=" validate.errors = ["+N+"]; return false; ":t+=" var err = "+N+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { "}else{t+=" if ( ";var A=v;if(A)for(var M,$=-1,W=A.length-1;${"use strict";Si.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f="data"+(i||""),h="valid"+n,p=e.opts.$data&&o&&o.$data,g;if(p?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",g="schema"+n):g=o,(o||p)&&e.opts.uniqueItems!==!1){p&&(t+=" var "+h+"; if ("+g+" === false || "+g+" === undefined) "+h+" = true; else if (typeof "+g+" != 'boolean') "+h+" = false; else { "),t+=" var i = "+f+".length , "+h+" = true , j; if (i > 1) { ";var y=e.schema.items&&e.schema.items.type,v=Array.isArray(y);if(!y||y=="object"||y=="array"||v&&(y.indexOf("object")>=0||y.indexOf("array")>=0))t+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+f+"[i], "+f+"[j])) { "+h+" = false; break outer; } } } ";else{t+=" var itemIndices = {}, item; for (;i--;) { var item = "+f+"[i]; ";var x="checkDataType"+(v?"s":"");t+=" if ("+e.util[x](y,"item",e.opts.strictNumbers,!0)+") continue; ",v&&(t+=` if (typeof item == 'string') item = '"' + item; `),t+=" if (typeof itemIndices[item] == 'number') { "+h+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}t+=" } ",p&&(t+=" } "),t+=" if (!"+h+") { ";var P=P||[];P.push(t),t="",e.createErrors!==!1?(t+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { i: i, j: j } ",e.opts.messages!==!1&&(t+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(t+=" , schema: ",p?t+="validate.schema"+l:t+=""+o,t+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var E=t;t=P.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+E+"]); ":t+=" validate.errors = ["+E+"]; return false; ":t+=" var err = "+E+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } ",d&&(t+=" else { ")}else d&&(t+=" if (true) { ");return t}});var Ti=z((tv,Ri)=>{"use strict";Ri.exports={$ref:jo(),allOf:Mo(),anyOf:Uo(),$comment:Vo(),const:zo(),contains:Go(),dependencies:Wo(),enum:Ko(),format:Yo(),if:ti(),items:si(),maximum:$a(),minimum:$a(),maxItems:Da(),minItems:Da(),maxLength:Ca(),minLength:Ca(),maxProperties:ka(),minProperties:ka(),multipleOf:li(),not:di(),oneOf:fi(),pattern:mi(),properties:gi(),propertyNames:_i(),required:Ei(),uniqueItems:xi(),validate:Na()}});var Pi=z((rv,Oi)=>{"use strict";var wi=Ti(),La=ar().toHash;Oi.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],r=["type","$comment"],a=["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"],t=["number","integer","string","array","object","boolean","null"];return e.all=La(r),e.types=La(t),e.forEach(function(n){n.rules=n.rules.map(function(i){var o;if(typeof i=="object"){var l=Object.keys(i)[0];o=i[l],i=l,o.forEach(function(d){r.push(d),e.all[d]=!0})}r.push(i);var u=e.all[i]={keyword:i,code:wi[i],implements:o};return u}),e.all.$comment={keyword:"$comment",code:wi.$comment},n.type&&(e.types[n.type]=n)}),e.keywords=La(r.concat(a)),e.custom={},e}});var Ai=z((sv,Ni)=>{"use strict";var Ii=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];Ni.exports=function(s,e){for(var r=0;r{"use strict";var ef=ys().MissingRef;Di.exports=$i;function $i(s,e,r){var a=this;if(typeof this._opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");typeof e=="function"&&(r=e,e=void 0);var t=n(s).then(function(){var o=a._addSchema(s,void 0,e);return o.validate||i(o)});return r&&t.then(function(o){r(null,o)},r),t;function n(o){var l=o.$schema;return l&&!a.getSchema(l)?$i.call(a,{$ref:l},!0):Promise.resolve()}function i(o){try{return a._compile(o)}catch(u){if(u instanceof ef)return l(u);throw u}function l(u){var d=u.missingSchema;if(p(d))throw new Error("Schema "+d+" is loaded but "+u.missingRef+" cannot be resolved");var f=a._loadingSchemas[d];return f||(f=a._loadingSchemas[d]=a._opts.loadSchema(d),f.then(h,h)),f.then(function(g){if(!p(d))return n(g).then(function(){p(d)||a.addSchema(g,d,void 0,e)})}).then(function(){return i(o)});function h(){delete a._loadingSchemas[d]}function p(g){return a._refs[g]||a._schemas[g]}}}}});var Li=z((nv,ki)=>{"use strict";ki.exports=function(e,r,a){var t=" ",n=e.level,i=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,d=!e.opts.allErrors,f,h="data"+(i||""),p="valid"+n,g="errs__"+n,y=e.opts.$data&&o&&o.$data,v;y?(t+=" var schema"+n+" = "+e.util.getData(o.$data,i,e.dataPathArr)+"; ",v="schema"+n):v=o;var x=this,P="definition"+n,E=x.definition,R="",T,S,I,D,$;if(y&&E.$data){$="keywordValidate"+n;var L=E.validateSchema;t+=" var "+P+" = RULES.custom['"+r+"'].definition; var "+$+" = "+P+".validate;"}else{if(D=e.useCustomRule(x,o,e.schema,e),!D)return;v="validate.schema"+l,$=D.code,T=E.compile,S=E.inline,I=E.macro}var C=$+".errors",k="i"+n,N="ruleErr"+n,A=E.async;if(A&&!e.async)throw new Error("async keyword in sync schema");if(S||I||(t+=""+C+" = null;"),t+="var "+g+" = errors;var "+p+";",y&&E.$data&&(R+="}",t+=" if ("+v+" === undefined) { "+p+" = true; } else { ",L&&(R+="}",t+=" "+p+" = "+P+".validateSchema("+v+"); if ("+p+") { ")),S)E.statements?t+=" "+D.validate+" ":t+=" "+p+" = "+D.validate+"; ";else if(I){var M=e.util.copy(e),R="";M.level++;var W="valid"+M.level;M.schema=D.validate,M.schemaPath="";var Q=e.compositeRule;e.compositeRule=M.compositeRule=!0;var te=e.validate(M).replace(/validate\.schema/g,$);e.compositeRule=M.compositeRule=Q,t+=" "+te}else{var K=K||[];K.push(t),t="",t+=" "+$+".call( ",e.opts.passContext?t+="this":t+="self",T||E.schema===!1?t+=" , "+h+" ":t+=" , "+v+" , "+h+" , validate.schema"+e.schemaPath+" ",t+=" , (dataPath || '')",e.errorPath!='""'&&(t+=" + "+e.errorPath);var Z=i?"data"+(i-1||""):"parentData",fe=i?e.dataPathArr[i]:"parentDataProperty";t+=" , "+Z+" , "+fe+" , rootData ) ";var Te=t;t=K.pop(),E.errors===!1?(t+=" "+p+" = ",A&&(t+="await "),t+=""+Te+"; "):A?(C="customErrors"+n,t+=" var "+C+" = null; try { "+p+" = await "+Te+"; } catch (e) { "+p+" = false; if (e instanceof ValidationError) "+C+" = e.errors; else throw e; } "):t+=" "+C+" = null; "+p+" = "+Te+"; "}if(E.modifying&&(t+=" if ("+Z+") "+h+" = "+Z+"["+fe+"];"),t+=""+R,E.valid)d&&(t+=" if (true) { ");else{t+=" if ( ",E.valid===void 0?(t+=" !",I?t+=""+W:t+=""+p):t+=" "+!E.valid+" ",t+=") { ",f=x.keyword;var K=K||[];K.push(t),t="";var K=K||[];K.push(t),t="",e.createErrors!==!1?(t+=" { keyword: '"+(f||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { keyword: '"+x.keyword+"' } ",e.opts.messages!==!1&&(t+=` , message: 'should pass "`+x.keyword+`" keyword validation' `),e.opts.verbose&&(t+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),t+=" } "):t+=" {} ";var Ce=t;t=K.pop(),!e.compositeRule&&d?e.async?t+=" throw new ValidationError(["+Ce+"]); ":t+=" validate.errors = ["+Ce+"]; return false; ":t+=" var err = "+Ce+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var ie=t;t=K.pop(),S?E.errors?E.errors!="full"&&(t+=" for (var "+k+"="+g+"; "+k+"{tf.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var Mi=z((iv,Fi)=>{"use strict";var ji=ja();Fi.exports={$id:"https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:ji.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:ji.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}});var Ui=z((cv,qi)=>{"use strict";var rf=/^[a-z_$][a-z0-9_$-]*$/i,sf=Li(),af=Mi();qi.exports={add:nf,get:of,remove:cf,validate:Fa};function nf(s,e){var r=this.RULES;if(r.keywords[s])throw new Error("Keyword "+s+" is already defined");if(!rf.test(s))throw new Error("Keyword "+s+" is not a valid identifier");if(e){this.validateKeyword(e,!0);var a=e.type;if(Array.isArray(a))for(var t=0;t{lf.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON Schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var qa=z((uv,Ki)=>{"use strict";var Hi=Eo(),nr=gs(),uf=xo(),zi=xa(),df=Ia(),pf=ko(),ff=Pi(),Zi=Ai(),Gi=ar();Ki.exports=_e;_e.prototype.validate=mf;_e.prototype.compile=vf;_e.prototype.addSchema=gf;_e.prototype.addMetaSchema=yf;_e.prototype.validateSchema=_f;_e.prototype.getSchema=Ef;_e.prototype.removeSchema=xf;_e.prototype.addFormat=Af;_e.prototype.errorsText=Nf;_e.prototype._addSchema=Rf;_e.prototype._compile=Tf;_e.prototype.compileAsync=Ci();var ws=Ui();_e.prototype.addKeyword=ws.add;_e.prototype.getKeyword=ws.get;_e.prototype.removeKeyword=ws.remove;_e.prototype.validateKeyword=ws.validate;var Xi=ys();_e.ValidationError=Xi.Validation;_e.MissingRefError=Xi.MissingRef;_e.$dataMetaSchema=Zi;var Ts="http://json-schema.org/draft-07/schema",Vi=["removeAdditional","useDefaults","coerceTypes","strictDefaults"],hf=["/properties"];function _e(s){if(!(this instanceof _e))return new _e(s);s=this._opts=Gi.copy(s)||{},jf(this),this._schemas={},this._refs={},this._fragments={},this._formats=pf(s.format),this._cache=s.cache||new uf,this._loadingSchemas={},this._compilations=[],this.RULES=ff(),this._getId=wf(s),s.loopRequired=s.loopRequired||1/0,s.errorDataPath=="property"&&(s._errorDataPathProperty=!0),s.serialize===void 0&&(s.serialize=df),this._metaOpts=Lf(this),s.formats&&Cf(this),s.keywords&&kf(this),$f(this),typeof s.meta=="object"&&this.addMetaSchema(s.meta),s.nullable&&this.addKeyword("nullable",{metaSchema:{type:"boolean"}}),Df(this)}function mf(s,e){var r;if(typeof s=="string"){if(r=this.getSchema(s),!r)throw new Error('no schema with key or ref "'+s+'"')}else{var a=this._addSchema(s);r=a.validate||this._compile(a)}var t=r(e);return r.$async!==!0&&(this.errors=r.errors),t}function vf(s,e){var r=this._addSchema(s,void 0,e);return r.validate||this._compile(r)}function gf(s,e,r,a){if(Array.isArray(s)){for(var t=0;t{sc.exports=rc;rc.sync=qf;var ec=require("fs");function Mf(s,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var a=0;a{cc.exports=oc;oc.sync=Uf;var nc=require("fs");function oc(s,e,r){nc.stat(s,function(a,t){r(a,a?!1:ic(t,e))})}function Uf(s,e){return ic(nc.statSync(s),e)}function ic(s,e){return s.isFile()&&Bf(s,e)}function Bf(s,e){var r=s.mode,a=s.uid,t=s.gid,n=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),i=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),o=parseInt("100",8),l=parseInt("010",8),u=parseInt("001",8),d=o|l,f=r&u||r&l&&t===i||r&o&&a===n||r&d&&n===0;return f}});var dc=z((Rv,uc)=>{var xv=require("fs"),As;process.platform==="win32"||global.TESTING_WINDOWS?As=ac():As=lc();uc.exports=Ba;Ba.sync=Vf;function Ba(s,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(a,t){Ba(s,e||{},function(n,i){n?t(n):a(i)})})}As(s,e||{},function(a,t){a&&(a.code==="EACCES"||e&&e.ignoreErrors)&&(a=null,t=!1),r(a,t)})}function Vf(s,e){try{return As.sync(s,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var yc=z((Tv,gc)=>{var Rr=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",pc=require("path"),Hf=Rr?";":":",fc=dc(),hc=s=>Object.assign(new Error(`not found: ${s}`),{code:"ENOENT"}),mc=(s,e)=>{let r=e.colon||Hf,a=s.match(/\//)||Rr&&s.match(/\\/)?[""]:[...Rr?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],t=Rr?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=Rr?t.split(r):[""];return Rr&&s.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:a,pathExt:n,pathExtExe:t}},vc=(s,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:a,pathExt:t,pathExtExe:n}=mc(s,e),i=[],o=u=>new Promise((d,f)=>{if(u===a.length)return e.all&&i.length?d(i):f(hc(s));let h=a[u],p=/^".*"$/.test(h)?h.slice(1,-1):h,g=pc.join(p,s),y=!p&&/^\.[\\\/]/.test(s)?s.slice(0,2)+g:g;d(l(y,u,0))}),l=(u,d,f)=>new Promise((h,p)=>{if(f===t.length)return h(o(d+1));let g=t[f];fc(u+g,{pathExt:n},(y,v)=>{if(!y&&v)if(e.all)i.push(u+g);else return h(u+g);return h(l(u,d,f+1))})});return r?o(0).then(u=>r(null,u),r):o(0)},zf=(s,e)=>{e=e||{};let{pathEnv:r,pathExt:a,pathExtExe:t}=mc(s,e),n=[];for(let i=0;i{"use strict";var _c=(s={})=>{let e=s.env||process.env;return(s.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(a=>a.toUpperCase()==="PATH")||"Path"};Va.exports=_c;Va.exports.default=_c});var Rc=z((Ov,xc)=>{"use strict";var Ec=require("path"),Zf=yc(),Gf=bc();function Sc(s,e){let r=s.options.env||process.env,a=process.cwd(),t=s.options.cwd!=null,n=t&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(s.options.cwd)}catch{}let i;try{i=Zf.sync(s.command,{path:r[Gf({env:r})],pathExt:e?Ec.delimiter:void 0})}catch{}finally{n&&process.chdir(a)}return i&&(i=Ec.resolve(t?s.options.cwd:"",i)),i}function Xf(s){return Sc(s)||Sc(s,!0)}xc.exports=Xf});var Tc=z((Pv,za)=>{"use strict";var Ha=/([()\][%!^"`<>&|;, *?])/g;function Wf(s){return s=s.replace(Ha,"^$1"),s}function Qf(s,e){return s=`${s}`,s=s.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),s=s.replace(/(?=(\\+?)?)\1$/,"$1$1"),s=`"${s}"`,s=s.replace(Ha,"^$1"),e&&(s=s.replace(Ha,"^$1")),s}za.exports.command=Wf;za.exports.argument=Qf});var Oc=z((Iv,wc)=>{"use strict";wc.exports=/^#!(.*)/});var Ic=z((Nv,Pc)=>{"use strict";var Kf=Oc();Pc.exports=(s="")=>{let e=s.match(Kf);if(!e)return null;let[r,a]=e[0].replace(/#! ?/,"").split(" "),t=r.split("/").pop();return t==="env"?a:a?`${t} ${a}`:t}});var Ac=z((Av,Nc)=>{"use strict";var Za=require("fs"),Jf=Ic();function Yf(s){let r=Buffer.alloc(150),a;try{a=Za.openSync(s,"r"),Za.readSync(a,r,0,150,0),Za.closeSync(a)}catch{}return Jf(r.toString())}Nc.exports=Yf});var kc=z(($v,Cc)=>{"use strict";var eh=require("path"),$c=Rc(),Dc=Tc(),th=Ac(),rh=process.platform==="win32",sh=/\.(?:com|exe)$/i,ah=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function nh(s){s.file=$c(s);let e=s.file&&th(s.file);return e?(s.args.unshift(s.file),s.command=e,$c(s)):s.file}function oh(s){if(!rh)return s;let e=nh(s),r=!sh.test(e);if(s.options.forceShell||r){let a=ah.test(e);s.command=eh.normalize(s.command),s.command=Dc.command(s.command),s.args=s.args.map(n=>Dc.argument(n,a));let t=[s.command].concat(s.args).join(" ");s.args=["/d","/s","/c",`"${t}"`],s.command=process.env.comspec||"cmd.exe",s.options.windowsVerbatimArguments=!0}return s}function ih(s,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let a={command:s,args:e,options:r,file:void 0,original:{command:s,args:e}};return r.shell?a:oh(a)}Cc.exports=ih});var Fc=z((Dv,jc)=>{"use strict";var Ga=process.platform==="win32";function Xa(s,e){return Object.assign(new Error(`${e} ${s.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${s.command}`,path:s.command,spawnargs:s.args})}function ch(s,e){if(!Ga)return;let r=s.emit;s.emit=function(a,t){if(a==="exit"){let n=Lc(t,e);if(n)return r.call(s,"error",n)}return r.apply(s,arguments)}}function Lc(s,e){return Ga&&s===1&&!e.file?Xa(e.original,"spawn"):null}function lh(s,e){return Ga&&s===1&&!e.file?Xa(e.original,"spawnSync"):null}jc.exports={hookChildProcess:ch,verifyENOENT:Lc,verifyENOENTSync:lh,notFoundError:Xa}});var Uc=z((Cv,Tr)=>{"use strict";var Mc=require("child_process"),Wa=kc(),Qa=Fc();function qc(s,e,r){let a=Wa(s,e,r),t=Mc.spawn(a.command,a.args,a.options);return Qa.hookChildProcess(t,a),t}function uh(s,e,r){let a=Wa(s,e,r),t=Mc.spawnSync(a.command,a.args,a.options);return t.error=t.error||Qa.verifyENOENTSync(t.status,a),t}Tr.exports=qc;Tr.exports.spawn=qc;Tr.exports.sync=uh;Tr.exports._parse=Wa;Tr.exports._enoent=Qa});var c={};nu(c,{BRAND:()=>$u,DIRTY:()=>Bt,EMPTY_PATH:()=>uu,INVALID:()=>G,NEVER:()=>vd,OK:()=>Ae,ParseStatus:()=>Ie,Schema:()=>ee,ZodAny:()=>Pt,ZodArray:()=>St,ZodBigInt:()=>Ht,ZodBoolean:()=>zt,ZodBranded:()=>Cr,ZodCatch:()=>rr,ZodDate:()=>Zt,ZodDefault:()=>tr,ZodDiscriminatedUnion:()=>Qr,ZodEffects:()=>Je,ZodEnum:()=>Yt,ZodError:()=>qe,ZodFirstPartyTypeKind:()=>F,ZodFunction:()=>Jr,ZodIntersection:()=>Qt,ZodIssueCode:()=>j,ZodLazy:()=>Kt,ZodLiteral:()=>Jt,ZodMap:()=>_r,ZodNaN:()=>Er,ZodNativeEnum:()=>er,ZodNever:()=>rt,ZodNull:()=>Xt,ZodNullable:()=>dt,ZodNumber:()=>Vt,ZodObject:()=>Ue,ZodOptional:()=>Qe,ZodParsedType:()=>B,ZodPipeline:()=>kr,ZodPromise:()=>It,ZodReadonly:()=>sr,ZodRecord:()=>Kr,ZodSchema:()=>ee,ZodSet:()=>br,ZodString:()=>Ot,ZodSymbol:()=>gr,ZodTransformer:()=>Je,ZodTuple:()=>ut,ZodType:()=>ee,ZodUndefined:()=>Gt,ZodUnion:()=>Wt,ZodUnknown:()=>Et,ZodVoid:()=>yr,addIssueToContext:()=>U,any:()=>Uu,array:()=>zu,bigint:()=>Lu,boolean:()=>Cn,coerce:()=>md,custom:()=>An,date:()=>ju,datetimeRegex:()=>In,defaultErrorMap:()=>_t,discriminatedUnion:()=>Wu,effect:()=>id,enum:()=>ad,function:()=>td,getErrorMap:()=>hr,getParsedType:()=>lt,instanceof:()=>Cu,intersection:()=>Qu,isAborted:()=>Xr,isAsync:()=>mr,isDirty:()=>Wr,isValid:()=>wt,late:()=>Du,lazy:()=>rd,literal:()=>sd,makeIssue:()=>Dr,map:()=>Yu,nan:()=>ku,nativeEnum:()=>nd,never:()=>Vu,null:()=>qu,nullable:()=>ld,number:()=>Dn,object:()=>Zu,objectUtil:()=>Zs,oboolean:()=>hd,onumber:()=>fd,optional:()=>cd,ostring:()=>pd,pipeline:()=>dd,preprocess:()=>ud,promise:()=>od,quotelessJson:()=>iu,record:()=>Ju,set:()=>ed,setErrorMap:()=>lu,strictObject:()=>Gu,string:()=>$n,symbol:()=>Fu,transformer:()=>id,tuple:()=>Ku,undefined:()=>Mu,union:()=>Xu,unknown:()=>Bu,util:()=>re,void:()=>Hu});var re;(function(s){s.assertEqual=t=>{};function e(t){}s.assertIs=e;function r(t){throw new Error}s.assertNever=r,s.arrayToEnum=t=>{let n={};for(let i of t)n[i]=i;return n},s.getValidEnumValues=t=>{let n=s.objectKeys(t).filter(o=>typeof t[t[o]]!="number"),i={};for(let o of n)i[o]=t[o];return s.objectValues(i)},s.objectValues=t=>s.objectKeys(t).map(function(n){return t[n]}),s.objectKeys=typeof Object.keys=="function"?t=>Object.keys(t):t=>{let n=[];for(let i in t)Object.prototype.hasOwnProperty.call(t,i)&&n.push(i);return n},s.find=(t,n)=>{for(let i of t)if(n(i))return i},s.isInteger=typeof Number.isInteger=="function"?t=>Number.isInteger(t):t=>typeof t=="number"&&Number.isFinite(t)&&Math.floor(t)===t;function a(t,n=" | "){return t.map(i=>typeof i=="string"?`'${i}'`:i).join(n)}s.joinValues=a,s.jsonStringifyReplacer=(t,n)=>typeof n=="bigint"?n.toString():n})(re||(re={}));var Zs;(function(s){s.mergeShapes=(e,r)=>({...e,...r})})(Zs||(Zs={}));var B=re.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),lt=s=>{switch(typeof s){case"undefined":return B.undefined;case"string":return B.string;case"number":return Number.isNaN(s)?B.nan:B.number;case"boolean":return B.boolean;case"function":return B.function;case"bigint":return B.bigint;case"symbol":return B.symbol;case"object":return Array.isArray(s)?B.array:s===null?B.null:s.then&&typeof s.then=="function"&&s.catch&&typeof s.catch=="function"?B.promise:typeof Map<"u"&&s instanceof Map?B.map:typeof Set<"u"&&s instanceof Set?B.set:typeof Date<"u"&&s instanceof Date?B.date:B.object;default:return B.unknown}};var j=re.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),iu=s=>JSON.stringify(s,null,2).replace(/"([^"]+)":/g,"$1:"),qe=class s extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=a=>{this.issues=[...this.issues,a]},this.addIssues=(a=[])=>{this.issues=[...this.issues,...a]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=e}format(e){let r=e||function(n){return n.message},a={_errors:[]},t=n=>{for(let i of n.issues)if(i.code==="invalid_union")i.unionErrors.map(t);else if(i.code==="invalid_return_type")t(i.returnTypeError);else if(i.code==="invalid_arguments")t(i.argumentsError);else if(i.path.length===0)a._errors.push(r(i));else{let o=a,l=0;for(;lr.message){let r={},a=[];for(let t of this.issues)if(t.path.length>0){let n=t.path[0];r[n]=r[n]||[],r[n].push(e(t))}else a.push(e(t));return{formErrors:a,fieldErrors:r}}get formErrors(){return this.flatten()}};qe.create=s=>new qe(s);var cu=(s,e)=>{let r;switch(s.code){case j.invalid_type:s.received===B.undefined?r="Required":r=`Expected ${s.expected}, received ${s.received}`;break;case j.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(s.expected,re.jsonStringifyReplacer)}`;break;case j.unrecognized_keys:r=`Unrecognized key(s) in object: ${re.joinValues(s.keys,", ")}`;break;case j.invalid_union:r="Invalid input";break;case j.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${re.joinValues(s.options)}`;break;case j.invalid_enum_value:r=`Invalid enum value. Expected ${re.joinValues(s.options)}, received '${s.received}'`;break;case j.invalid_arguments:r="Invalid function arguments";break;case j.invalid_return_type:r="Invalid function return type";break;case j.invalid_date:r="Invalid date";break;case j.invalid_string:typeof s.validation=="object"?"includes"in s.validation?(r=`Invalid input: must include "${s.validation.includes}"`,typeof s.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${s.validation.position}`)):"startsWith"in s.validation?r=`Invalid input: must start with "${s.validation.startsWith}"`:"endsWith"in s.validation?r=`Invalid input: must end with "${s.validation.endsWith}"`:re.assertNever(s.validation):s.validation!=="regex"?r=`Invalid ${s.validation}`:r="Invalid";break;case j.too_small:s.type==="array"?r=`Array must contain ${s.exact?"exactly":s.inclusive?"at least":"more than"} ${s.minimum} element(s)`:s.type==="string"?r=`String must contain ${s.exact?"exactly":s.inclusive?"at least":"over"} ${s.minimum} character(s)`:s.type==="number"?r=`Number must be ${s.exact?"exactly equal to ":s.inclusive?"greater than or equal to ":"greater than "}${s.minimum}`:s.type==="bigint"?r=`Number must be ${s.exact?"exactly equal to ":s.inclusive?"greater than or equal to ":"greater than "}${s.minimum}`:s.type==="date"?r=`Date must be ${s.exact?"exactly equal to ":s.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(s.minimum))}`:r="Invalid input";break;case j.too_big:s.type==="array"?r=`Array must contain ${s.exact?"exactly":s.inclusive?"at most":"less than"} ${s.maximum} element(s)`:s.type==="string"?r=`String must contain ${s.exact?"exactly":s.inclusive?"at most":"under"} ${s.maximum} character(s)`:s.type==="number"?r=`Number must be ${s.exact?"exactly":s.inclusive?"less than or equal to":"less than"} ${s.maximum}`:s.type==="bigint"?r=`BigInt must be ${s.exact?"exactly":s.inclusive?"less than or equal to":"less than"} ${s.maximum}`:s.type==="date"?r=`Date must be ${s.exact?"exactly":s.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(s.maximum))}`:r="Invalid input";break;case j.custom:r="Invalid input";break;case j.invalid_intersection_types:r="Intersection results could not be merged";break;case j.not_multiple_of:r=`Number must be a multiple of ${s.multipleOf}`;break;case j.not_finite:r="Number must be finite";break;default:r=e.defaultError,re.assertNever(s)}return{message:r}},_t=cu;var Rn=_t;function lu(s){Rn=s}function hr(){return Rn}var Dr=s=>{let{data:e,path:r,errorMaps:a,issueData:t}=s,n=[...r,...t.path||[]],i={...t,path:n};if(t.message!==void 0)return{...t,path:n,message:t.message};let o="",l=a.filter(u=>!!u).slice().reverse();for(let u of l)o=u(i,{data:e,defaultError:o}).message;return{...t,path:n,message:o}},uu=[];function U(s,e){let r=hr(),a=Dr({issueData:e,data:s.data,path:s.path,errorMaps:[s.common.contextualErrorMap,s.schemaErrorMap,r,r===_t?void 0:_t].filter(t=>!!t)});s.common.issues.push(a)}var Ie=class s{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,r){let a=[];for(let t of r){if(t.status==="aborted")return G;t.status==="dirty"&&e.dirty(),a.push(t.value)}return{status:e.value,value:a}}static async mergeObjectAsync(e,r){let a=[];for(let t of r){let n=await t.key,i=await t.value;a.push({key:n,value:i})}return s.mergeObjectSync(e,a)}static mergeObjectSync(e,r){let a={};for(let t of r){let{key:n,value:i}=t;if(n.status==="aborted"||i.status==="aborted")return G;n.status==="dirty"&&e.dirty(),i.status==="dirty"&&e.dirty(),n.value!=="__proto__"&&(typeof i.value<"u"||t.alwaysSet)&&(a[n.value]=i.value)}return{status:e.value,value:a}}},G=Object.freeze({status:"aborted"}),Bt=s=>({status:"dirty",value:s}),Ae=s=>({status:"valid",value:s}),Xr=s=>s.status==="aborted",Wr=s=>s.status==="dirty",wt=s=>s.status==="valid",mr=s=>typeof Promise<"u"&&s instanceof Promise;var H;(function(s){s.errToObj=e=>typeof e=="string"?{message:e}:e||{},s.toString=e=>typeof e=="string"?e:e?.message})(H||(H={}));var Ke=class{constructor(e,r,a,t){this._cachedPath=[],this.parent=e,this.data=r,this._path=a,this._key=t}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},Tn=(s,e)=>{if(wt(e))return{success:!0,data:e.value};if(!s.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let r=new qe(s.common.issues);return this._error=r,this._error}}};function J(s){if(!s)return{};let{errorMap:e,invalid_type_error:r,required_error:a,description:t}=s;if(e&&(r||a))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:t}:{errorMap:(i,o)=>{let{message:l}=s;return i.code==="invalid_enum_value"?{message:l??o.defaultError}:typeof o.data>"u"?{message:l??a??o.defaultError}:i.code!=="invalid_type"?{message:o.defaultError}:{message:l??r??o.defaultError}},description:t}}var ee=class{get description(){return this._def.description}_getType(e){return lt(e.data)}_getOrReturnCtx(e,r){return r||{common:e.parent.common,data:e.data,parsedType:lt(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new Ie,ctx:{common:e.parent.common,data:e.data,parsedType:lt(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let r=this._parse(e);if(mr(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(e){let r=this._parse(e);return Promise.resolve(r)}parse(e,r){let a=this.safeParse(e,r);if(a.success)return a.data;throw a.error}safeParse(e,r){let a={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:lt(e)},t=this._parseSync({data:e,path:a.path,parent:a});return Tn(a,t)}"~validate"(e){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:lt(e)};if(!this["~standard"].async)try{let a=this._parseSync({data:e,path:[],parent:r});return wt(a)?{value:a.value}:{issues:r.common.issues}}catch(a){a?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),r.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:r}).then(a=>wt(a)?{value:a.value}:{issues:r.common.issues})}async parseAsync(e,r){let a=await this.safeParseAsync(e,r);if(a.success)return a.data;throw a.error}async safeParseAsync(e,r){let a={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:lt(e)},t=this._parse({data:e,path:a.path,parent:a}),n=await(mr(t)?t:Promise.resolve(t));return Tn(a,n)}refine(e,r){let a=t=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(t):r;return this._refinement((t,n)=>{let i=e(t),o=()=>n.addIssue({code:j.custom,...a(t)});return typeof Promise<"u"&&i instanceof Promise?i.then(l=>l?!0:(o(),!1)):i?!0:(o(),!1)})}refinement(e,r){return this._refinement((a,t)=>e(a)?!0:(t.addIssue(typeof r=="function"?r(a,t):r),!1))}_refinement(e){return new Je({schema:this,typeName:F.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:r=>this["~validate"](r)}}optional(){return Qe.create(this,this._def)}nullable(){return dt.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return St.create(this)}promise(){return It.create(this,this._def)}or(e){return Wt.create([this,e],this._def)}and(e){return Qt.create(this,e,this._def)}transform(e){return new Je({...J(this._def),schema:this,typeName:F.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let r=typeof e=="function"?e:()=>e;return new tr({...J(this._def),innerType:this,defaultValue:r,typeName:F.ZodDefault})}brand(){return new Cr({typeName:F.ZodBranded,type:this,...J(this._def)})}catch(e){let r=typeof e=="function"?e:()=>e;return new rr({...J(this._def),innerType:this,catchValue:r,typeName:F.ZodCatch})}describe(e){let r=this.constructor;return new r({...this._def,description:e})}pipe(e){return kr.create(this,e)}readonly(){return sr.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},du=/^c[^\s-]{8,}$/i,pu=/^[0-9a-z]+$/,fu=/^[0-9A-HJKMNP-TV-Z]{26}$/i,hu=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,mu=/^[a-z0-9_-]{21}$/i,vu=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,gu=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,yu=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,_u="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Gs,bu=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Eu=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,Su=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,xu=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Ru=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Tu=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,On="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",wu=new RegExp(`^${On}$`);function Pn(s){let e="[0-5]\\d";s.precision?e=`${e}\\.\\d{${s.precision}}`:s.precision==null&&(e=`${e}(\\.\\d+)?`);let r=s.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${r}`}function Ou(s){return new RegExp(`^${Pn(s)}$`)}function In(s){let e=`${On}T${Pn(s)}`,r=[];return r.push(s.local?"Z?":"Z"),s.offset&&r.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${r.join("|")})`,new RegExp(`^${e}$`)}function Pu(s,e){return!!((e==="v4"||!e)&&bu.test(s)||(e==="v6"||!e)&&Su.test(s))}function Iu(s,e){if(!vu.test(s))return!1;try{let[r]=s.split(".");if(!r)return!1;let a=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),t=JSON.parse(atob(a));return!(typeof t!="object"||t===null||"typ"in t&&t?.typ!=="JWT"||!t.alg||e&&t.alg!==e)}catch{return!1}}function Nu(s,e){return!!((e==="v4"||!e)&&Eu.test(s)||(e==="v6"||!e)&&xu.test(s))}var Ot=class s extends ee{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==B.string){let n=this._getOrReturnCtx(e);return U(n,{code:j.invalid_type,expected:B.string,received:n.parsedType}),G}let a=new Ie,t;for(let n of this._def.checks)if(n.kind==="min")e.data.lengthn.value&&(t=this._getOrReturnCtx(e,t),U(t,{code:j.too_big,maximum:n.value,type:"string",inclusive:!0,exact:!1,message:n.message}),a.dirty());else if(n.kind==="length"){let i=e.data.length>n.value,o=e.data.lengthe.test(t),{validation:r,code:j.invalid_string,...H.errToObj(a)})}_addCheck(e){return new s({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...H.errToObj(e)})}url(e){return this._addCheck({kind:"url",...H.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...H.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...H.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...H.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...H.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...H.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...H.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...H.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...H.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...H.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...H.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...H.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...H.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...H.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...H.errToObj(e)})}regex(e,r){return this._addCheck({kind:"regex",regex:e,...H.errToObj(r)})}includes(e,r){return this._addCheck({kind:"includes",value:e,position:r?.position,...H.errToObj(r?.message)})}startsWith(e,r){return this._addCheck({kind:"startsWith",value:e,...H.errToObj(r)})}endsWith(e,r){return this._addCheck({kind:"endsWith",value:e,...H.errToObj(r)})}min(e,r){return this._addCheck({kind:"min",value:e,...H.errToObj(r)})}max(e,r){return this._addCheck({kind:"max",value:e,...H.errToObj(r)})}length(e,r){return this._addCheck({kind:"length",value:e,...H.errToObj(r)})}nonempty(e){return this.min(1,H.errToObj(e))}trim(){return new s({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new s({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new s({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxLength(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew Ot({checks:[],typeName:F.ZodString,coerce:s?.coerce??!1,...J(s)});function Au(s,e){let r=(s.toString().split(".")[1]||"").length,a=(e.toString().split(".")[1]||"").length,t=r>a?r:a,n=Number.parseInt(s.toFixed(t).replace(".","")),i=Number.parseInt(e.toFixed(t).replace(".",""));return n%i/10**t}var Vt=class s extends ee{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==B.number){let n=this._getOrReturnCtx(e);return U(n,{code:j.invalid_type,expected:B.number,received:n.parsedType}),G}let a,t=new Ie;for(let n of this._def.checks)n.kind==="int"?re.isInteger(e.data)||(a=this._getOrReturnCtx(e,a),U(a,{code:j.invalid_type,expected:"integer",received:"float",message:n.message}),t.dirty()):n.kind==="min"?(n.inclusive?e.datan.value:e.data>=n.value)&&(a=this._getOrReturnCtx(e,a),U(a,{code:j.too_big,maximum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),t.dirty()):n.kind==="multipleOf"?Au(e.data,n.value)!==0&&(a=this._getOrReturnCtx(e,a),U(a,{code:j.not_multiple_of,multipleOf:n.value,message:n.message}),t.dirty()):n.kind==="finite"?Number.isFinite(e.data)||(a=this._getOrReturnCtx(e,a),U(a,{code:j.not_finite,message:n.message}),t.dirty()):re.assertNever(n);return{status:t.value,value:e.data}}gte(e,r){return this.setLimit("min",e,!0,H.toString(r))}gt(e,r){return this.setLimit("min",e,!1,H.toString(r))}lte(e,r){return this.setLimit("max",e,!0,H.toString(r))}lt(e,r){return this.setLimit("max",e,!1,H.toString(r))}setLimit(e,r,a,t){return new s({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:a,message:H.toString(t)}]})}_addCheck(e){return new s({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:H.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:H.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:H.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:H.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:H.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:H.toString(r)})}finite(e){return this._addCheck({kind:"finite",message:H.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:H.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:H.toString(e)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuee.kind==="int"||e.kind==="multipleOf"&&re.isInteger(e.value))}get isFinite(){let e=null,r=null;for(let a of this._def.checks){if(a.kind==="finite"||a.kind==="int"||a.kind==="multipleOf")return!0;a.kind==="min"?(r===null||a.value>r)&&(r=a.value):a.kind==="max"&&(e===null||a.valuenew Vt({checks:[],typeName:F.ZodNumber,coerce:s?.coerce||!1,...J(s)});var Ht=class s extends ee{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==B.bigint)return this._getInvalidInput(e);let a,t=new Ie;for(let n of this._def.checks)n.kind==="min"?(n.inclusive?e.datan.value:e.data>=n.value)&&(a=this._getOrReturnCtx(e,a),U(a,{code:j.too_big,type:"bigint",maximum:n.value,inclusive:n.inclusive,message:n.message}),t.dirty()):n.kind==="multipleOf"?e.data%n.value!==BigInt(0)&&(a=this._getOrReturnCtx(e,a),U(a,{code:j.not_multiple_of,multipleOf:n.value,message:n.message}),t.dirty()):re.assertNever(n);return{status:t.value,value:e.data}}_getInvalidInput(e){let r=this._getOrReturnCtx(e);return U(r,{code:j.invalid_type,expected:B.bigint,received:r.parsedType}),G}gte(e,r){return this.setLimit("min",e,!0,H.toString(r))}gt(e,r){return this.setLimit("min",e,!1,H.toString(r))}lte(e,r){return this.setLimit("max",e,!0,H.toString(r))}lt(e,r){return this.setLimit("max",e,!1,H.toString(r))}setLimit(e,r,a,t){return new s({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:a,message:H.toString(t)}]})}_addCheck(e){return new s({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:H.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:H.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:H.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:H.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:H.toString(r)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew Ht({checks:[],typeName:F.ZodBigInt,coerce:s?.coerce??!1,...J(s)});var zt=class extends ee{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==B.boolean){let a=this._getOrReturnCtx(e);return U(a,{code:j.invalid_type,expected:B.boolean,received:a.parsedType}),G}return Ae(e.data)}};zt.create=s=>new zt({typeName:F.ZodBoolean,coerce:s?.coerce||!1,...J(s)});var Zt=class s extends ee{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==B.date){let n=this._getOrReturnCtx(e);return U(n,{code:j.invalid_type,expected:B.date,received:n.parsedType}),G}if(Number.isNaN(e.data.getTime())){let n=this._getOrReturnCtx(e);return U(n,{code:j.invalid_date}),G}let a=new Ie,t;for(let n of this._def.checks)n.kind==="min"?e.data.getTime()n.value&&(t=this._getOrReturnCtx(e,t),U(t,{code:j.too_big,message:n.message,inclusive:!0,exact:!1,maximum:n.value,type:"date"}),a.dirty()):re.assertNever(n);return{status:a.value,value:new Date(e.data.getTime())}}_addCheck(e){return new s({...this._def,checks:[...this._def.checks,e]})}min(e,r){return this._addCheck({kind:"min",value:e.getTime(),message:H.toString(r)})}max(e,r){return this._addCheck({kind:"max",value:e.getTime(),message:H.toString(r)})}get minDate(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew Zt({checks:[],coerce:s?.coerce||!1,typeName:F.ZodDate,...J(s)});var gr=class extends ee{_parse(e){if(this._getType(e)!==B.symbol){let a=this._getOrReturnCtx(e);return U(a,{code:j.invalid_type,expected:B.symbol,received:a.parsedType}),G}return Ae(e.data)}};gr.create=s=>new gr({typeName:F.ZodSymbol,...J(s)});var Gt=class extends ee{_parse(e){if(this._getType(e)!==B.undefined){let a=this._getOrReturnCtx(e);return U(a,{code:j.invalid_type,expected:B.undefined,received:a.parsedType}),G}return Ae(e.data)}};Gt.create=s=>new Gt({typeName:F.ZodUndefined,...J(s)});var Xt=class extends ee{_parse(e){if(this._getType(e)!==B.null){let a=this._getOrReturnCtx(e);return U(a,{code:j.invalid_type,expected:B.null,received:a.parsedType}),G}return Ae(e.data)}};Xt.create=s=>new Xt({typeName:F.ZodNull,...J(s)});var Pt=class extends ee{constructor(){super(...arguments),this._any=!0}_parse(e){return Ae(e.data)}};Pt.create=s=>new Pt({typeName:F.ZodAny,...J(s)});var Et=class extends ee{constructor(){super(...arguments),this._unknown=!0}_parse(e){return Ae(e.data)}};Et.create=s=>new Et({typeName:F.ZodUnknown,...J(s)});var rt=class extends ee{_parse(e){let r=this._getOrReturnCtx(e);return U(r,{code:j.invalid_type,expected:B.never,received:r.parsedType}),G}};rt.create=s=>new rt({typeName:F.ZodNever,...J(s)});var yr=class extends ee{_parse(e){if(this._getType(e)!==B.undefined){let a=this._getOrReturnCtx(e);return U(a,{code:j.invalid_type,expected:B.void,received:a.parsedType}),G}return Ae(e.data)}};yr.create=s=>new yr({typeName:F.ZodVoid,...J(s)});var St=class s extends ee{_parse(e){let{ctx:r,status:a}=this._processInputParams(e),t=this._def;if(r.parsedType!==B.array)return U(r,{code:j.invalid_type,expected:B.array,received:r.parsedType}),G;if(t.exactLength!==null){let i=r.data.length>t.exactLength.value,o=r.data.lengtht.maxLength.value&&(U(r,{code:j.too_big,maximum:t.maxLength.value,type:"array",inclusive:!0,exact:!1,message:t.maxLength.message}),a.dirty()),r.common.async)return Promise.all([...r.data].map((i,o)=>t.type._parseAsync(new Ke(r,i,r.path,o)))).then(i=>Ie.mergeArray(a,i));let n=[...r.data].map((i,o)=>t.type._parseSync(new Ke(r,i,r.path,o)));return Ie.mergeArray(a,n)}get element(){return this._def.type}min(e,r){return new s({...this._def,minLength:{value:e,message:H.toString(r)}})}max(e,r){return new s({...this._def,maxLength:{value:e,message:H.toString(r)}})}length(e,r){return new s({...this._def,exactLength:{value:e,message:H.toString(r)}})}nonempty(e){return this.min(1,e)}};St.create=(s,e)=>new St({type:s,minLength:null,maxLength:null,exactLength:null,typeName:F.ZodArray,...J(e)});function vr(s){if(s instanceof Ue){let e={};for(let r in s.shape){let a=s.shape[r];e[r]=Qe.create(vr(a))}return new Ue({...s._def,shape:()=>e})}else return s instanceof St?new St({...s._def,type:vr(s.element)}):s instanceof Qe?Qe.create(vr(s.unwrap())):s instanceof dt?dt.create(vr(s.unwrap())):s instanceof ut?ut.create(s.items.map(e=>vr(e))):s}var Ue=class s extends ee{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),r=re.objectKeys(e);return this._cached={shape:e,keys:r},this._cached}_parse(e){if(this._getType(e)!==B.object){let u=this._getOrReturnCtx(e);return U(u,{code:j.invalid_type,expected:B.object,received:u.parsedType}),G}let{status:a,ctx:t}=this._processInputParams(e),{shape:n,keys:i}=this._getCached(),o=[];if(!(this._def.catchall instanceof rt&&this._def.unknownKeys==="strip"))for(let u in t.data)i.includes(u)||o.push(u);let l=[];for(let u of i){let d=n[u],f=t.data[u];l.push({key:{status:"valid",value:u},value:d._parse(new Ke(t,f,t.path,u)),alwaysSet:u in t.data})}if(this._def.catchall instanceof rt){let u=this._def.unknownKeys;if(u==="passthrough")for(let d of o)l.push({key:{status:"valid",value:d},value:{status:"valid",value:t.data[d]}});else if(u==="strict")o.length>0&&(U(t,{code:j.unrecognized_keys,keys:o}),a.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let u=this._def.catchall;for(let d of o){let f=t.data[d];l.push({key:{status:"valid",value:d},value:u._parse(new Ke(t,f,t.path,d)),alwaysSet:d in t.data})}}return t.common.async?Promise.resolve().then(async()=>{let u=[];for(let d of l){let f=await d.key,h=await d.value;u.push({key:f,value:h,alwaysSet:d.alwaysSet})}return u}).then(u=>Ie.mergeObjectSync(a,u)):Ie.mergeObjectSync(a,l)}get shape(){return this._def.shape()}strict(e){return H.errToObj,new s({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(r,a)=>{let t=this._def.errorMap?.(r,a).message??a.defaultError;return r.code==="unrecognized_keys"?{message:H.errToObj(e).message??t}:{message:t}}}:{}})}strip(){return new s({...this._def,unknownKeys:"strip"})}passthrough(){return new s({...this._def,unknownKeys:"passthrough"})}extend(e){return new s({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new s({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:F.ZodObject})}setKey(e,r){return this.augment({[e]:r})}catchall(e){return new s({...this._def,catchall:e})}pick(e){let r={};for(let a of re.objectKeys(e))e[a]&&this.shape[a]&&(r[a]=this.shape[a]);return new s({...this._def,shape:()=>r})}omit(e){let r={};for(let a of re.objectKeys(this.shape))e[a]||(r[a]=this.shape[a]);return new s({...this._def,shape:()=>r})}deepPartial(){return vr(this)}partial(e){let r={};for(let a of re.objectKeys(this.shape)){let t=this.shape[a];e&&!e[a]?r[a]=t:r[a]=t.optional()}return new s({...this._def,shape:()=>r})}required(e){let r={};for(let a of re.objectKeys(this.shape))if(e&&!e[a])r[a]=this.shape[a];else{let n=this.shape[a];for(;n instanceof Qe;)n=n._def.innerType;r[a]=n}return new s({...this._def,shape:()=>r})}keyof(){return Nn(re.objectKeys(this.shape))}};Ue.create=(s,e)=>new Ue({shape:()=>s,unknownKeys:"strip",catchall:rt.create(),typeName:F.ZodObject,...J(e)});Ue.strictCreate=(s,e)=>new Ue({shape:()=>s,unknownKeys:"strict",catchall:rt.create(),typeName:F.ZodObject,...J(e)});Ue.lazycreate=(s,e)=>new Ue({shape:s,unknownKeys:"strip",catchall:rt.create(),typeName:F.ZodObject,...J(e)});var Wt=class extends ee{_parse(e){let{ctx:r}=this._processInputParams(e),a=this._def.options;function t(n){for(let o of n)if(o.result.status==="valid")return o.result;for(let o of n)if(o.result.status==="dirty")return r.common.issues.push(...o.ctx.common.issues),o.result;let i=n.map(o=>new qe(o.ctx.common.issues));return U(r,{code:j.invalid_union,unionErrors:i}),G}if(r.common.async)return Promise.all(a.map(async n=>{let i={...r,common:{...r.common,issues:[]},parent:null};return{result:await n._parseAsync({data:r.data,path:r.path,parent:i}),ctx:i}})).then(t);{let n,i=[];for(let l of a){let u={...r,common:{...r.common,issues:[]},parent:null},d=l._parseSync({data:r.data,path:r.path,parent:u});if(d.status==="valid")return d;d.status==="dirty"&&!n&&(n={result:d,ctx:u}),u.common.issues.length&&i.push(u.common.issues)}if(n)return r.common.issues.push(...n.ctx.common.issues),n.result;let o=i.map(l=>new qe(l));return U(r,{code:j.invalid_union,unionErrors:o}),G}}get options(){return this._def.options}};Wt.create=(s,e)=>new Wt({options:s,typeName:F.ZodUnion,...J(e)});var bt=s=>s instanceof Kt?bt(s.schema):s instanceof Je?bt(s.innerType()):s instanceof Jt?[s.value]:s instanceof Yt?s.options:s instanceof er?re.objectValues(s.enum):s instanceof tr?bt(s._def.innerType):s instanceof Gt?[void 0]:s instanceof Xt?[null]:s instanceof Qe?[void 0,...bt(s.unwrap())]:s instanceof dt?[null,...bt(s.unwrap())]:s instanceof Cr||s instanceof sr?bt(s.unwrap()):s instanceof rr?bt(s._def.innerType):[],Qr=class s extends ee{_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==B.object)return U(r,{code:j.invalid_type,expected:B.object,received:r.parsedType}),G;let a=this.discriminator,t=r.data[a],n=this.optionsMap.get(t);return n?r.common.async?n._parseAsync({data:r.data,path:r.path,parent:r}):n._parseSync({data:r.data,path:r.path,parent:r}):(U(r,{code:j.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[a]}),G)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,r,a){let t=new Map;for(let n of r){let i=bt(n.shape[e]);if(!i.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let o of i){if(t.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);t.set(o,n)}}return new s({typeName:F.ZodDiscriminatedUnion,discriminator:e,options:r,optionsMap:t,...J(a)})}};function Xs(s,e){let r=lt(s),a=lt(e);if(s===e)return{valid:!0,data:s};if(r===B.object&&a===B.object){let t=re.objectKeys(e),n=re.objectKeys(s).filter(o=>t.indexOf(o)!==-1),i={...s,...e};for(let o of n){let l=Xs(s[o],e[o]);if(!l.valid)return{valid:!1};i[o]=l.data}return{valid:!0,data:i}}else if(r===B.array&&a===B.array){if(s.length!==e.length)return{valid:!1};let t=[];for(let n=0;n{if(Xr(n)||Xr(i))return G;let o=Xs(n.value,i.value);return o.valid?((Wr(n)||Wr(i))&&r.dirty(),{status:r.value,value:o.data}):(U(a,{code:j.invalid_intersection_types}),G)};return a.common.async?Promise.all([this._def.left._parseAsync({data:a.data,path:a.path,parent:a}),this._def.right._parseAsync({data:a.data,path:a.path,parent:a})]).then(([n,i])=>t(n,i)):t(this._def.left._parseSync({data:a.data,path:a.path,parent:a}),this._def.right._parseSync({data:a.data,path:a.path,parent:a}))}};Qt.create=(s,e,r)=>new Qt({left:s,right:e,typeName:F.ZodIntersection,...J(r)});var ut=class s extends ee{_parse(e){let{status:r,ctx:a}=this._processInputParams(e);if(a.parsedType!==B.array)return U(a,{code:j.invalid_type,expected:B.array,received:a.parsedType}),G;if(a.data.lengththis._def.items.length&&(U(a,{code:j.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());let n=[...a.data].map((i,o)=>{let l=this._def.items[o]||this._def.rest;return l?l._parse(new Ke(a,i,a.path,o)):null}).filter(i=>!!i);return a.common.async?Promise.all(n).then(i=>Ie.mergeArray(r,i)):Ie.mergeArray(r,n)}get items(){return this._def.items}rest(e){return new s({...this._def,rest:e})}};ut.create=(s,e)=>{if(!Array.isArray(s))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new ut({items:s,typeName:F.ZodTuple,rest:null,...J(e)})};var Kr=class s extends ee{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:a}=this._processInputParams(e);if(a.parsedType!==B.object)return U(a,{code:j.invalid_type,expected:B.object,received:a.parsedType}),G;let t=[],n=this._def.keyType,i=this._def.valueType;for(let o in a.data)t.push({key:n._parse(new Ke(a,o,a.path,o)),value:i._parse(new Ke(a,a.data[o],a.path,o)),alwaysSet:o in a.data});return a.common.async?Ie.mergeObjectAsync(r,t):Ie.mergeObjectSync(r,t)}get element(){return this._def.valueType}static create(e,r,a){return r instanceof ee?new s({keyType:e,valueType:r,typeName:F.ZodRecord,...J(a)}):new s({keyType:Ot.create(),valueType:e,typeName:F.ZodRecord,...J(r)})}},_r=class extends ee{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:a}=this._processInputParams(e);if(a.parsedType!==B.map)return U(a,{code:j.invalid_type,expected:B.map,received:a.parsedType}),G;let t=this._def.keyType,n=this._def.valueType,i=[...a.data.entries()].map(([o,l],u)=>({key:t._parse(new Ke(a,o,a.path,[u,"key"])),value:n._parse(new Ke(a,l,a.path,[u,"value"]))}));if(a.common.async){let o=new Map;return Promise.resolve().then(async()=>{for(let l of i){let u=await l.key,d=await l.value;if(u.status==="aborted"||d.status==="aborted")return G;(u.status==="dirty"||d.status==="dirty")&&r.dirty(),o.set(u.value,d.value)}return{status:r.value,value:o}})}else{let o=new Map;for(let l of i){let u=l.key,d=l.value;if(u.status==="aborted"||d.status==="aborted")return G;(u.status==="dirty"||d.status==="dirty")&&r.dirty(),o.set(u.value,d.value)}return{status:r.value,value:o}}}};_r.create=(s,e,r)=>new _r({valueType:e,keyType:s,typeName:F.ZodMap,...J(r)});var br=class s extends ee{_parse(e){let{status:r,ctx:a}=this._processInputParams(e);if(a.parsedType!==B.set)return U(a,{code:j.invalid_type,expected:B.set,received:a.parsedType}),G;let t=this._def;t.minSize!==null&&a.data.sizet.maxSize.value&&(U(a,{code:j.too_big,maximum:t.maxSize.value,type:"set",inclusive:!0,exact:!1,message:t.maxSize.message}),r.dirty());let n=this._def.valueType;function i(l){let u=new Set;for(let d of l){if(d.status==="aborted")return G;d.status==="dirty"&&r.dirty(),u.add(d.value)}return{status:r.value,value:u}}let o=[...a.data.values()].map((l,u)=>n._parse(new Ke(a,l,a.path,u)));return a.common.async?Promise.all(o).then(l=>i(l)):i(o)}min(e,r){return new s({...this._def,minSize:{value:e,message:H.toString(r)}})}max(e,r){return new s({...this._def,maxSize:{value:e,message:H.toString(r)}})}size(e,r){return this.min(e,r).max(e,r)}nonempty(e){return this.min(1,e)}};br.create=(s,e)=>new br({valueType:s,minSize:null,maxSize:null,typeName:F.ZodSet,...J(e)});var Jr=class s extends ee{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==B.function)return U(r,{code:j.invalid_type,expected:B.function,received:r.parsedType}),G;function a(o,l){return Dr({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,hr(),_t].filter(u=>!!u),issueData:{code:j.invalid_arguments,argumentsError:l}})}function t(o,l){return Dr({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,hr(),_t].filter(u=>!!u),issueData:{code:j.invalid_return_type,returnTypeError:l}})}let n={errorMap:r.common.contextualErrorMap},i=r.data;if(this._def.returns instanceof It){let o=this;return Ae(async function(...l){let u=new qe([]),d=await o._def.args.parseAsync(l,n).catch(p=>{throw u.addIssue(a(l,p)),u}),f=await Reflect.apply(i,this,d);return await o._def.returns._def.type.parseAsync(f,n).catch(p=>{throw u.addIssue(t(f,p)),u})})}else{let o=this;return Ae(function(...l){let u=o._def.args.safeParse(l,n);if(!u.success)throw new qe([a(l,u.error)]);let d=Reflect.apply(i,this,u.data),f=o._def.returns.safeParse(d,n);if(!f.success)throw new qe([t(d,f.error)]);return f.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new s({...this._def,args:ut.create(e).rest(Et.create())})}returns(e){return new s({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,r,a){return new s({args:e||ut.create([]).rest(Et.create()),returns:r||Et.create(),typeName:F.ZodFunction,...J(a)})}},Kt=class extends ee{get schema(){return this._def.getter()}_parse(e){let{ctx:r}=this._processInputParams(e);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};Kt.create=(s,e)=>new Kt({getter:s,typeName:F.ZodLazy,...J(e)});var Jt=class extends ee{_parse(e){if(e.data!==this._def.value){let r=this._getOrReturnCtx(e);return U(r,{received:r.data,code:j.invalid_literal,expected:this._def.value}),G}return{status:"valid",value:e.data}}get value(){return this._def.value}};Jt.create=(s,e)=>new Jt({value:s,typeName:F.ZodLiteral,...J(e)});function Nn(s,e){return new Yt({values:s,typeName:F.ZodEnum,...J(e)})}var Yt=class s extends ee{_parse(e){if(typeof e.data!="string"){let r=this._getOrReturnCtx(e),a=this._def.values;return U(r,{expected:re.joinValues(a),received:r.parsedType,code:j.invalid_type}),G}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let r=this._getOrReturnCtx(e),a=this._def.values;return U(r,{received:r.data,code:j.invalid_enum_value,options:a}),G}return Ae(e.data)}get options(){return this._def.values}get enum(){let e={};for(let r of this._def.values)e[r]=r;return e}get Values(){let e={};for(let r of this._def.values)e[r]=r;return e}get Enum(){let e={};for(let r of this._def.values)e[r]=r;return e}extract(e,r=this._def){return s.create(e,{...this._def,...r})}exclude(e,r=this._def){return s.create(this.options.filter(a=>!e.includes(a)),{...this._def,...r})}};Yt.create=Nn;var er=class extends ee{_parse(e){let r=re.getValidEnumValues(this._def.values),a=this._getOrReturnCtx(e);if(a.parsedType!==B.string&&a.parsedType!==B.number){let t=re.objectValues(r);return U(a,{expected:re.joinValues(t),received:a.parsedType,code:j.invalid_type}),G}if(this._cache||(this._cache=new Set(re.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let t=re.objectValues(r);return U(a,{received:a.data,code:j.invalid_enum_value,options:t}),G}return Ae(e.data)}get enum(){return this._def.values}};er.create=(s,e)=>new er({values:s,typeName:F.ZodNativeEnum,...J(e)});var It=class extends ee{unwrap(){return this._def.type}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==B.promise&&r.common.async===!1)return U(r,{code:j.invalid_type,expected:B.promise,received:r.parsedType}),G;let a=r.parsedType===B.promise?r.data:Promise.resolve(r.data);return Ae(a.then(t=>this._def.type.parseAsync(t,{path:r.path,errorMap:r.common.contextualErrorMap})))}};It.create=(s,e)=>new It({type:s,typeName:F.ZodPromise,...J(e)});var Je=class extends ee{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===F.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:r,ctx:a}=this._processInputParams(e),t=this._def.effect||null,n={addIssue:i=>{U(a,i),i.fatal?r.abort():r.dirty()},get path(){return a.path}};if(n.addIssue=n.addIssue.bind(n),t.type==="preprocess"){let i=t.transform(a.data,n);if(a.common.async)return Promise.resolve(i).then(async o=>{if(r.value==="aborted")return G;let l=await this._def.schema._parseAsync({data:o,path:a.path,parent:a});return l.status==="aborted"?G:l.status==="dirty"?Bt(l.value):r.value==="dirty"?Bt(l.value):l});{if(r.value==="aborted")return G;let o=this._def.schema._parseSync({data:i,path:a.path,parent:a});return o.status==="aborted"?G:o.status==="dirty"?Bt(o.value):r.value==="dirty"?Bt(o.value):o}}if(t.type==="refinement"){let i=o=>{let l=t.refinement(o,n);if(a.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(a.common.async===!1){let o=this._def.schema._parseSync({data:a.data,path:a.path,parent:a});return o.status==="aborted"?G:(o.status==="dirty"&&r.dirty(),i(o.value),{status:r.value,value:o.value})}else return this._def.schema._parseAsync({data:a.data,path:a.path,parent:a}).then(o=>o.status==="aborted"?G:(o.status==="dirty"&&r.dirty(),i(o.value).then(()=>({status:r.value,value:o.value}))))}if(t.type==="transform")if(a.common.async===!1){let i=this._def.schema._parseSync({data:a.data,path:a.path,parent:a});if(!wt(i))return G;let o=t.transform(i.value,n);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:o}}else return this._def.schema._parseAsync({data:a.data,path:a.path,parent:a}).then(i=>wt(i)?Promise.resolve(t.transform(i.value,n)).then(o=>({status:r.value,value:o})):G);re.assertNever(t)}};Je.create=(s,e,r)=>new Je({schema:s,typeName:F.ZodEffects,effect:e,...J(r)});Je.createWithPreprocess=(s,e,r)=>new Je({schema:e,effect:{type:"preprocess",transform:s},typeName:F.ZodEffects,...J(r)});var Qe=class extends ee{_parse(e){return this._getType(e)===B.undefined?Ae(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Qe.create=(s,e)=>new Qe({innerType:s,typeName:F.ZodOptional,...J(e)});var dt=class extends ee{_parse(e){return this._getType(e)===B.null?Ae(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};dt.create=(s,e)=>new dt({innerType:s,typeName:F.ZodNullable,...J(e)});var tr=class extends ee{_parse(e){let{ctx:r}=this._processInputParams(e),a=r.data;return r.parsedType===B.undefined&&(a=this._def.defaultValue()),this._def.innerType._parse({data:a,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};tr.create=(s,e)=>new tr({innerType:s,typeName:F.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...J(e)});var rr=class extends ee{_parse(e){let{ctx:r}=this._processInputParams(e),a={...r,common:{...r.common,issues:[]}},t=this._def.innerType._parse({data:a.data,path:a.path,parent:{...a}});return mr(t)?t.then(n=>({status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new qe(a.common.issues)},input:a.data})})):{status:"valid",value:t.status==="valid"?t.value:this._def.catchValue({get error(){return new qe(a.common.issues)},input:a.data})}}removeCatch(){return this._def.innerType}};rr.create=(s,e)=>new rr({innerType:s,typeName:F.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...J(e)});var Er=class extends ee{_parse(e){if(this._getType(e)!==B.nan){let a=this._getOrReturnCtx(e);return U(a,{code:j.invalid_type,expected:B.nan,received:a.parsedType}),G}return{status:"valid",value:e.data}}};Er.create=s=>new Er({typeName:F.ZodNaN,...J(s)});var $u=Symbol("zod_brand"),Cr=class extends ee{_parse(e){let{ctx:r}=this._processInputParams(e),a=r.data;return this._def.type._parse({data:a,path:r.path,parent:r})}unwrap(){return this._def.type}},kr=class s extends ee{_parse(e){let{status:r,ctx:a}=this._processInputParams(e);if(a.common.async)return(async()=>{let n=await this._def.in._parseAsync({data:a.data,path:a.path,parent:a});return n.status==="aborted"?G:n.status==="dirty"?(r.dirty(),Bt(n.value)):this._def.out._parseAsync({data:n.value,path:a.path,parent:a})})();{let t=this._def.in._parseSync({data:a.data,path:a.path,parent:a});return t.status==="aborted"?G:t.status==="dirty"?(r.dirty(),{status:"dirty",value:t.value}):this._def.out._parseSync({data:t.value,path:a.path,parent:a})}}static create(e,r){return new s({in:e,out:r,typeName:F.ZodPipeline})}},sr=class extends ee{_parse(e){let r=this._def.innerType._parse(e),a=t=>(wt(t)&&(t.value=Object.freeze(t.value)),t);return mr(r)?r.then(t=>a(t)):a(r)}unwrap(){return this._def.innerType}};sr.create=(s,e)=>new sr({innerType:s,typeName:F.ZodReadonly,...J(e)});function wn(s,e){let r=typeof s=="function"?s(e):typeof s=="string"?{message:s}:s;return typeof r=="string"?{message:r}:r}function An(s,e={},r){return s?Pt.create().superRefine((a,t)=>{let n=s(a);if(n instanceof Promise)return n.then(i=>{if(!i){let o=wn(e,a),l=o.fatal??r??!0;t.addIssue({code:"custom",...o,fatal:l})}});if(!n){let i=wn(e,a),o=i.fatal??r??!0;t.addIssue({code:"custom",...i,fatal:o})}}):Pt.create()}var Du={object:Ue.lazycreate},F;(function(s){s.ZodString="ZodString",s.ZodNumber="ZodNumber",s.ZodNaN="ZodNaN",s.ZodBigInt="ZodBigInt",s.ZodBoolean="ZodBoolean",s.ZodDate="ZodDate",s.ZodSymbol="ZodSymbol",s.ZodUndefined="ZodUndefined",s.ZodNull="ZodNull",s.ZodAny="ZodAny",s.ZodUnknown="ZodUnknown",s.ZodNever="ZodNever",s.ZodVoid="ZodVoid",s.ZodArray="ZodArray",s.ZodObject="ZodObject",s.ZodUnion="ZodUnion",s.ZodDiscriminatedUnion="ZodDiscriminatedUnion",s.ZodIntersection="ZodIntersection",s.ZodTuple="ZodTuple",s.ZodRecord="ZodRecord",s.ZodMap="ZodMap",s.ZodSet="ZodSet",s.ZodFunction="ZodFunction",s.ZodLazy="ZodLazy",s.ZodLiteral="ZodLiteral",s.ZodEnum="ZodEnum",s.ZodEffects="ZodEffects",s.ZodNativeEnum="ZodNativeEnum",s.ZodOptional="ZodOptional",s.ZodNullable="ZodNullable",s.ZodDefault="ZodDefault",s.ZodCatch="ZodCatch",s.ZodPromise="ZodPromise",s.ZodBranded="ZodBranded",s.ZodPipeline="ZodPipeline",s.ZodReadonly="ZodReadonly"})(F||(F={}));var Cu=(s,e={message:`Input not instance of ${s.name}`})=>An(r=>r instanceof s,e),$n=Ot.create,Dn=Vt.create,ku=Er.create,Lu=Ht.create,Cn=zt.create,ju=Zt.create,Fu=gr.create,Mu=Gt.create,qu=Xt.create,Uu=Pt.create,Bu=Et.create,Vu=rt.create,Hu=yr.create,zu=St.create,Zu=Ue.create,Gu=Ue.strictCreate,Xu=Wt.create,Wu=Qr.create,Qu=Qt.create,Ku=ut.create,Ju=Kr.create,Yu=_r.create,ed=br.create,td=Jr.create,rd=Kt.create,sd=Jt.create,ad=Yt.create,nd=er.create,od=It.create,id=Je.create,cd=Qe.create,ld=dt.create,ud=Je.createWithPreprocess,dd=kr.create,pd=()=>$n().optional(),fd=()=>Dn().optional(),hd=()=>Cn().optional(),md={string:(s=>Ot.create({...s,coerce:!0})),number:(s=>Vt.create({...s,coerce:!0})),boolean:(s=>zt.create({...s,coerce:!0})),bigint:(s=>Ht.create({...s,coerce:!0})),date:(s=>Zt.create({...s,coerce:!0}))};var vd=G;var Lr="2025-06-18";var Yr=[Lr,"2025-03-26","2024-11-05","2024-10-07"],es="2.0",kn=c.union([c.string(),c.number().int()]),Ln=c.string(),gd=c.object({progressToken:c.optional(kn)}).passthrough(),Ye=c.object({_meta:c.optional(gd)}).passthrough(),Be=c.object({method:c.string(),params:c.optional(Ye)}),jr=c.object({_meta:c.optional(c.object({}).passthrough())}).passthrough(),pt=c.object({method:c.string(),params:c.optional(jr)}),et=c.object({_meta:c.optional(c.object({}).passthrough())}).passthrough(),ts=c.union([c.string(),c.number().int()]),jn=c.object({jsonrpc:c.literal(es),id:ts}).merge(Be).strict(),Fn=s=>jn.safeParse(s).success,Mn=c.object({jsonrpc:c.literal(es)}).merge(pt).strict(),qn=s=>Mn.safeParse(s).success,Un=c.object({jsonrpc:c.literal(es),id:ts,result:et}).strict(),Ws=s=>Un.safeParse(s).success,je;(function(s){s[s.ConnectionClosed=-32e3]="ConnectionClosed",s[s.RequestTimeout=-32001]="RequestTimeout",s[s.ParseError=-32700]="ParseError",s[s.InvalidRequest=-32600]="InvalidRequest",s[s.MethodNotFound=-32601]="MethodNotFound",s[s.InvalidParams=-32602]="InvalidParams",s[s.InternalError=-32603]="InternalError"})(je||(je={}));var Bn=c.object({jsonrpc:c.literal(es),id:ts,error:c.object({code:c.number().int(),message:c.string(),data:c.optional(c.unknown())})}).strict(),Vn=s=>Bn.safeParse(s).success,Hn=c.union([jn,Mn,Un,Bn]),xt=et.strict(),rs=pt.extend({method:c.literal("notifications/cancelled"),params:jr.extend({requestId:ts,reason:c.string().optional()})}),yd=c.object({src:c.string(),mimeType:c.optional(c.string()),sizes:c.optional(c.array(c.string()))}).passthrough(),Fr=c.object({icons:c.array(yd).optional()}).passthrough(),Mr=c.object({name:c.string(),title:c.optional(c.string())}).passthrough(),zn=Mr.extend({version:c.string(),websiteUrl:c.optional(c.string())}).merge(Fr),_d=c.object({experimental:c.optional(c.object({}).passthrough()),sampling:c.optional(c.object({}).passthrough()),elicitation:c.optional(c.object({}).passthrough()),roots:c.optional(c.object({listChanged:c.optional(c.boolean())}).passthrough())}).passthrough(),Qs=Be.extend({method:c.literal("initialize"),params:Ye.extend({protocolVersion:c.string(),capabilities:_d,clientInfo:zn})});var bd=c.object({experimental:c.optional(c.object({}).passthrough()),logging:c.optional(c.object({}).passthrough()),completions:c.optional(c.object({}).passthrough()),prompts:c.optional(c.object({listChanged:c.optional(c.boolean())}).passthrough()),resources:c.optional(c.object({subscribe:c.optional(c.boolean()),listChanged:c.optional(c.boolean())}).passthrough()),tools:c.optional(c.object({listChanged:c.optional(c.boolean())}).passthrough())}).passthrough(),Ks=et.extend({protocolVersion:c.string(),capabilities:bd,serverInfo:zn,instructions:c.optional(c.string())}),Js=pt.extend({method:c.literal("notifications/initialized")});var ss=Be.extend({method:c.literal("ping")}),Ed=c.object({progress:c.number(),total:c.optional(c.number()),message:c.optional(c.string())}).passthrough(),as=pt.extend({method:c.literal("notifications/progress"),params:jr.merge(Ed).extend({progressToken:kn})}),ns=Be.extend({params:Ye.extend({cursor:c.optional(Ln)}).optional()}),os=et.extend({nextCursor:c.optional(Ln)}),Zn=c.object({uri:c.string(),mimeType:c.optional(c.string()),_meta:c.optional(c.object({}).passthrough())}).passthrough(),Gn=Zn.extend({text:c.string()}),Ys=c.string().refine(s=>{try{return atob(s),!0}catch{return!1}},{message:"Invalid Base64 string"}),Xn=Zn.extend({blob:Ys}),Wn=Mr.extend({uri:c.string(),description:c.optional(c.string()),mimeType:c.optional(c.string()),_meta:c.optional(c.object({}).passthrough())}).merge(Fr),Sd=Mr.extend({uriTemplate:c.string(),description:c.optional(c.string()),mimeType:c.optional(c.string()),_meta:c.optional(c.object({}).passthrough())}).merge(Fr),xd=ns.extend({method:c.literal("resources/list")}),ea=os.extend({resources:c.array(Wn)}),Rd=ns.extend({method:c.literal("resources/templates/list")}),ta=os.extend({resourceTemplates:c.array(Sd)}),Td=Be.extend({method:c.literal("resources/read"),params:Ye.extend({uri:c.string()})}),ra=et.extend({contents:c.array(c.union([Gn,Xn]))}),wd=pt.extend({method:c.literal("notifications/resources/list_changed")}),Od=Be.extend({method:c.literal("resources/subscribe"),params:Ye.extend({uri:c.string()})}),Pd=Be.extend({method:c.literal("resources/unsubscribe"),params:Ye.extend({uri:c.string()})}),Id=pt.extend({method:c.literal("notifications/resources/updated"),params:jr.extend({uri:c.string()})}),Nd=c.object({name:c.string(),description:c.optional(c.string()),required:c.optional(c.boolean())}).passthrough(),Ad=Mr.extend({description:c.optional(c.string()),arguments:c.optional(c.array(Nd)),_meta:c.optional(c.object({}).passthrough())}).merge(Fr),$d=ns.extend({method:c.literal("prompts/list")}),sa=os.extend({prompts:c.array(Ad)}),Dd=Be.extend({method:c.literal("prompts/get"),params:Ye.extend({name:c.string(),arguments:c.optional(c.record(c.string()))})}),aa=c.object({type:c.literal("text"),text:c.string(),_meta:c.optional(c.object({}).passthrough())}).passthrough(),na=c.object({type:c.literal("image"),data:Ys,mimeType:c.string(),_meta:c.optional(c.object({}).passthrough())}).passthrough(),oa=c.object({type:c.literal("audio"),data:Ys,mimeType:c.string(),_meta:c.optional(c.object({}).passthrough())}).passthrough(),Cd=c.object({type:c.literal("resource"),resource:c.union([Gn,Xn]),_meta:c.optional(c.object({}).passthrough())}).passthrough(),kd=Wn.extend({type:c.literal("resource_link")}),Qn=c.union([aa,na,oa,kd,Cd]),Ld=c.object({role:c.enum(["user","assistant"]),content:Qn}).passthrough(),ia=et.extend({description:c.optional(c.string()),messages:c.array(Ld)}),jd=pt.extend({method:c.literal("notifications/prompts/list_changed")}),Fd=c.object({title:c.optional(c.string()),readOnlyHint:c.optional(c.boolean()),destructiveHint:c.optional(c.boolean()),idempotentHint:c.optional(c.boolean()),openWorldHint:c.optional(c.boolean())}).passthrough(),Md=Mr.extend({description:c.optional(c.string()),inputSchema:c.object({type:c.literal("object"),properties:c.optional(c.object({}).passthrough()),required:c.optional(c.array(c.string()))}).passthrough(),outputSchema:c.optional(c.object({type:c.literal("object"),properties:c.optional(c.object({}).passthrough()),required:c.optional(c.array(c.string()))}).passthrough()),annotations:c.optional(Fd),_meta:c.optional(c.object({}).passthrough())}).merge(Fr),ca=ns.extend({method:c.literal("tools/list")}),la=os.extend({tools:c.array(Md)}),is=et.extend({content:c.array(Qn).default([]),structuredContent:c.object({}).passthrough().optional(),isError:c.optional(c.boolean())}),um=is.or(et.extend({toolResult:c.unknown()})),ua=Be.extend({method:c.literal("tools/call"),params:Ye.extend({name:c.string(),arguments:c.optional(c.record(c.unknown()))})}),qd=pt.extend({method:c.literal("notifications/tools/list_changed")}),qr=c.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),da=Be.extend({method:c.literal("logging/setLevel"),params:Ye.extend({level:qr})}),Ud=pt.extend({method:c.literal("notifications/message"),params:jr.extend({level:qr,logger:c.optional(c.string()),data:c.unknown()})}),Bd=c.object({name:c.string().optional()}).passthrough(),Vd=c.object({hints:c.optional(c.array(Bd)),costPriority:c.optional(c.number().min(0).max(1)),speedPriority:c.optional(c.number().min(0).max(1)),intelligencePriority:c.optional(c.number().min(0).max(1))}).passthrough(),Hd=c.object({role:c.enum(["user","assistant"]),content:c.union([aa,na,oa])}).passthrough(),zd=Be.extend({method:c.literal("sampling/createMessage"),params:Ye.extend({messages:c.array(Hd),systemPrompt:c.optional(c.string()),includeContext:c.optional(c.enum(["none","thisServer","allServers"])),temperature:c.optional(c.number()),maxTokens:c.number().int(),stopSequences:c.optional(c.array(c.string())),metadata:c.optional(c.object({}).passthrough()),modelPreferences:c.optional(Vd)})}),pa=et.extend({model:c.string(),stopReason:c.optional(c.enum(["endTurn","stopSequence","maxTokens"]).or(c.string())),role:c.enum(["user","assistant"]),content:c.discriminatedUnion("type",[aa,na,oa])}),Zd=c.object({type:c.literal("boolean"),title:c.optional(c.string()),description:c.optional(c.string()),default:c.optional(c.boolean())}).passthrough(),Gd=c.object({type:c.literal("string"),title:c.optional(c.string()),description:c.optional(c.string()),minLength:c.optional(c.number()),maxLength:c.optional(c.number()),format:c.optional(c.enum(["email","uri","date","date-time"]))}).passthrough(),Xd=c.object({type:c.enum(["number","integer"]),title:c.optional(c.string()),description:c.optional(c.string()),minimum:c.optional(c.number()),maximum:c.optional(c.number())}).passthrough(),Wd=c.object({type:c.literal("string"),title:c.optional(c.string()),description:c.optional(c.string()),enum:c.array(c.string()),enumNames:c.optional(c.array(c.string()))}).passthrough(),Qd=c.union([Zd,Gd,Xd,Wd]),Kd=Be.extend({method:c.literal("elicitation/create"),params:Ye.extend({message:c.string(),requestedSchema:c.object({type:c.literal("object"),properties:c.record(c.string(),Qd),required:c.optional(c.array(c.string()))}).passthrough()})}),fa=et.extend({action:c.enum(["accept","decline","cancel"]),content:c.optional(c.record(c.string(),c.unknown()))}),Jd=c.object({type:c.literal("ref/resource"),uri:c.string()}).passthrough();var Yd=c.object({type:c.literal("ref/prompt"),name:c.string()}).passthrough(),ep=Be.extend({method:c.literal("completion/complete"),params:Ye.extend({ref:c.union([Yd,Jd]),argument:c.object({name:c.string(),value:c.string()}).passthrough(),context:c.optional(c.object({arguments:c.optional(c.record(c.string(),c.string()))}))})}),ha=et.extend({completion:c.object({values:c.array(c.string()).max(100),total:c.optional(c.number().int()),hasMore:c.optional(c.boolean())}).passthrough()}),tp=c.object({uri:c.string().startsWith("file://"),name:c.optional(c.string()),_meta:c.optional(c.object({}).passthrough())}).passthrough(),rp=Be.extend({method:c.literal("roots/list")}),ma=et.extend({roots:c.array(tp)}),sp=pt.extend({method:c.literal("notifications/roots/list_changed")}),dm=c.union([ss,Qs,ep,da,Dd,$d,xd,Rd,Td,Od,Pd,ua,ca]),pm=c.union([rs,as,Js,sp]),fm=c.union([xt,pa,fa,ma]),hm=c.union([ss,zd,Kd,rp]),mm=c.union([rs,as,Ud,Id,wd,qd,jd]),vm=c.union([xt,Ks,ha,ia,sa,ea,ta,ra,is,la]),$e=class extends Error{constructor(e,r,a){super(`MCP error ${e}: ${r}`),this.code=e,this.data=a,this.name="McpError"}};var ap=6e4,Sr=class{constructor(e){this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this.setNotificationHandler(rs,r=>{let a=this._requestHandlerAbortControllers.get(r.params.requestId);a?.abort(r.params.reason)}),this.setNotificationHandler(as,r=>{this._onprogress(r)}),this.setRequestHandler(ss,r=>({}))}_setupTimeout(e,r,a,t,n=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(t,r),startTime:Date.now(),timeout:r,maxTotalTimeout:a,resetTimeoutOnProgress:n,onTimeout:t})}_resetTimeout(e){let r=this._timeoutInfo.get(e);if(!r)return!1;let a=Date.now()-r.startTime;if(r.maxTotalTimeout&&a>=r.maxTotalTimeout)throw this._timeoutInfo.delete(e),new $e(je.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:r.maxTotalTimeout,totalElapsed:a});return clearTimeout(r.timeoutId),r.timeoutId=setTimeout(r.onTimeout,r.timeout),!0}_cleanupTimeout(e){let r=this._timeoutInfo.get(e);r&&(clearTimeout(r.timeoutId),this._timeoutInfo.delete(e))}async connect(e){var r,a,t;this._transport=e;let n=(r=this.transport)===null||r===void 0?void 0:r.onclose;this._transport.onclose=()=>{n?.(),this._onclose()};let i=(a=this.transport)===null||a===void 0?void 0:a.onerror;this._transport.onerror=l=>{i?.(l),this._onerror(l)};let o=(t=this._transport)===null||t===void 0?void 0:t.onmessage;this._transport.onmessage=(l,u)=>{o?.(l,u),Ws(l)||Vn(l)?this._onresponse(l):Fn(l)?this._onrequest(l,u):qn(l)?this._onnotification(l):this._onerror(new Error(`Unknown message type: ${JSON.stringify(l)}`))},await this._transport.start()}_onclose(){var e;let r=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._pendingDebouncedNotifications.clear(),this._transport=void 0,(e=this.onclose)===null||e===void 0||e.call(this);let a=new $e(je.ConnectionClosed,"Connection closed");for(let t of r.values())t(a)}_onerror(e){var r;(r=this.onerror)===null||r===void 0||r.call(this,e)}_onnotification(e){var r;let a=(r=this._notificationHandlers.get(e.method))!==null&&r!==void 0?r:this.fallbackNotificationHandler;a!==void 0&&Promise.resolve().then(()=>a(e)).catch(t=>this._onerror(new Error(`Uncaught error in notification handler: ${t}`)))}_onrequest(e,r){var a,t;let n=(a=this._requestHandlers.get(e.method))!==null&&a!==void 0?a:this.fallbackRequestHandler,i=this._transport;if(n===void 0){i?.send({jsonrpc:"2.0",id:e.id,error:{code:je.MethodNotFound,message:"Method not found"}}).catch(u=>this._onerror(new Error(`Failed to send an error response: ${u}`)));return}let o=new AbortController;this._requestHandlerAbortControllers.set(e.id,o);let l={signal:o.signal,sessionId:i?.sessionId,_meta:(t=e.params)===null||t===void 0?void 0:t._meta,sendNotification:u=>this.notification(u,{relatedRequestId:e.id}),sendRequest:(u,d,f)=>this.request(u,d,{...f,relatedRequestId:e.id}),authInfo:r?.authInfo,requestId:e.id,requestInfo:r?.requestInfo};Promise.resolve().then(()=>n(e,l)).then(u=>{if(!o.signal.aborted)return i?.send({result:u,jsonrpc:"2.0",id:e.id})},u=>{var d;if(!o.signal.aborted)return i?.send({jsonrpc:"2.0",id:e.id,error:{code:Number.isSafeInteger(u.code)?u.code:je.InternalError,message:(d=u.message)!==null&&d!==void 0?d:"Internal error"}})}).catch(u=>this._onerror(new Error(`Failed to send response: ${u}`))).finally(()=>{this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:r,...a}=e.params,t=Number(r),n=this._progressHandlers.get(t);if(!n){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let i=this._responseHandlers.get(t),o=this._timeoutInfo.get(t);if(o&&i&&o.resetTimeoutOnProgress)try{this._resetTimeout(t)}catch(l){i(l);return}n(a)}_onresponse(e){let r=Number(e.id),a=this._responseHandlers.get(r);if(a===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}if(this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),Ws(e))a(e);else{let t=new $e(e.error.code,e.error.message,e.error.data);a(t)}}get transport(){return this._transport}async close(){var e;await((e=this._transport)===null||e===void 0?void 0:e.close())}request(e,r,a){let{relatedRequestId:t,resumptionToken:n,onresumptiontoken:i}=a??{};return new Promise((o,l)=>{var u,d,f,h,p,g;if(!this._transport){l(new Error("Not connected"));return}((u=this._options)===null||u===void 0?void 0:u.enforceStrictCapabilities)===!0&&this.assertCapabilityForMethod(e.method),(d=a?.signal)===null||d===void 0||d.throwIfAborted();let y=this._requestMessageId++,v={...e,jsonrpc:"2.0",id:y};a?.onprogress&&(this._progressHandlers.set(y,a.onprogress),v.params={...e.params,_meta:{...((f=e.params)===null||f===void 0?void 0:f._meta)||{},progressToken:y}});let x=R=>{var T;this._responseHandlers.delete(y),this._progressHandlers.delete(y),this._cleanupTimeout(y),(T=this._transport)===null||T===void 0||T.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:y,reason:String(R)}},{relatedRequestId:t,resumptionToken:n,onresumptiontoken:i}).catch(S=>this._onerror(new Error(`Failed to send cancellation: ${S}`))),l(R)};this._responseHandlers.set(y,R=>{var T;if(!(!((T=a?.signal)===null||T===void 0)&&T.aborted)){if(R instanceof Error)return l(R);try{let S=r.parse(R.result);o(S)}catch(S){l(S)}}}),(h=a?.signal)===null||h===void 0||h.addEventListener("abort",()=>{var R;x((R=a?.signal)===null||R===void 0?void 0:R.reason)});let P=(p=a?.timeout)!==null&&p!==void 0?p:ap,E=()=>x(new $e(je.RequestTimeout,"Request timed out",{timeout:P}));this._setupTimeout(y,P,a?.maxTotalTimeout,E,(g=a?.resetTimeoutOnProgress)!==null&&g!==void 0?g:!1),this._transport.send(v,{relatedRequestId:t,resumptionToken:n,onresumptiontoken:i}).catch(R=>{this._cleanupTimeout(y),l(R)})})}async notification(e,r){var a,t;if(!this._transport)throw new Error("Not connected");if(this.assertNotificationCapability(e.method),((t=(a=this._options)===null||a===void 0?void 0:a.debouncedNotificationMethods)!==null&&t!==void 0?t:[]).includes(e.method)&&!e.params&&!r?.relatedRequestId){if(this._pendingDebouncedNotifications.has(e.method))return;this._pendingDebouncedNotifications.add(e.method),Promise.resolve().then(()=>{var l;if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let u={...e,jsonrpc:"2.0"};(l=this._transport)===null||l===void 0||l.send(u,r).catch(d=>this._onerror(d))});return}let o={...e,jsonrpc:"2.0"};await this._transport.send(o,r)}setRequestHandler(e,r){let a=e.shape.method.value;this.assertRequestHandlerCapability(a),this._requestHandlers.set(a,(t,n)=>Promise.resolve(r(e.parse(t),n)))}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw new Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,r){this._notificationHandlers.set(e.shape.method.value,a=>Promise.resolve(r(e.parse(a))))}removeNotificationHandler(e){this._notificationHandlers.delete(e)}};function cs(s,e){return Object.entries(e).reduce((r,[a,t])=>(t&&typeof t=="object"?r[a]=r[a]?{...r[a],...t}:t:r[a]=t,r),{...s})}var Ji=Ut(qa(),1),Os=class extends Sr{constructor(e,r){var a;super(r),this._serverInfo=e,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(qr.options.map((t,n)=>[t,n])),this.isMessageIgnored=(t,n)=>{let i=this._loggingLevels.get(n);return i?this.LOG_LEVEL_SEVERITY.get(t)this._oninitialize(t)),this.setNotificationHandler(Js,()=>{var t;return(t=this.oninitialized)===null||t===void 0?void 0:t.call(this)}),this._capabilities.logging&&this.setRequestHandler(da,async(t,n)=>{var i;let o=n.sessionId||((i=n.requestInfo)===null||i===void 0?void 0:i.headers["mcp-session-id"])||void 0,{level:l}=t.params,u=qr.safeParse(l);return u.success&&this._loggingLevels.set(o,u.data),{}})}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=cs(this._capabilities,e)}assertCapabilityForMethod(e){var r,a,t;switch(e){case"sampling/createMessage":if(!(!((r=this._clientCapabilities)===null||r===void 0)&&r.sampling))throw new Error(`Client does not support sampling (required for ${e})`);break;case"elicitation/create":if(!(!((a=this._clientCapabilities)===null||a===void 0)&&a.elicitation))throw new Error(`Client does not support elicitation (required for ${e})`);break;case"roots/list":if(!(!((t=this._clientCapabilities)===null||t===void 0)&&t.roots))throw new Error(`Client does not support listing roots (required for ${e})`);break;case"ping":break}}assertNotificationCapability(e){switch(e){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${e})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${e})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${e})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){switch(e){case"sampling/createMessage":if(!this._capabilities.sampling)throw new Error(`Server does not support sampling (required for ${e})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${e})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${e})`);break;case"ping":case"initialize":break}}async _oninitialize(e){let r=e.params.protocolVersion;return this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,{protocolVersion:Yr.includes(r)?r:Lr,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},xt)}async createMessage(e,r){return this.request({method:"sampling/createMessage",params:e},pa,r)}async elicitInput(e,r){let a=await this.request({method:"elicitation/create",params:e},fa,r);if(a.action==="accept"&&a.content)try{let t=new Ji.default,n=t.compile(e.requestedSchema);if(!n(a.content))throw new $e(je.InvalidParams,`Elicitation response content does not match requested schema: ${t.errorsText(n.errors)}`)}catch(t){throw t instanceof $e?t:new $e(je.InternalError,`Error validating elicitation response: ${t}`)}return a}async listRoots(e,r){return this.request({method:"roots/list",params:e},ma,r)}async sendLoggingMessage(e,r){if(this._capabilities.logging&&!this.isMessageIgnored(e.level,r))return this.notification({method:"notifications/message",params:e})}async sendResourceUpdated(e){return this.notification({method:"notifications/resources/updated",params:e})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}};var Ua=Ut(require("node:process"),1);var xr=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(` `);if(e===-1)return null;let r=this._buffer.toString("utf8",0,e).replace(/\r$/,"");return this._buffer=this._buffer.subarray(e+1),Ff(r)}clear(){this._buffer=void 0}};function Ff(s){return Hn.parse(JSON.parse(s))}function Ps(s){return JSON.stringify(s)+` -`}var Is=class{constructor(e=Ua.default.stdin,r=Ua.default.stdout){this._stdin=e,this._stdout=r,this._readBuffer=new Sr,this._started=!1,this._ondata=a=>{this._readBuffer.append(a),this.processReadBuffer()},this._onerror=a=>{var t;(t=this.onerror)===null||t===void 0||t.call(this,a)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(var e,r;;)try{let a=this._readBuffer.readMessage();if(a===null)break;(e=this.onmessage)===null||e===void 0||e.call(this,a)}catch(a){(r=this.onerror)===null||r===void 0||r.call(this,a)}}async close(){var e;this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),(e=this.onclose)===null||e===void 0||e.call(this)}send(e){return new Promise(r=>{let a=Ps(e);this._stdout.write(a)?r():this._stdout.once("drain",r)})}};var Yi=qt(qa(),1),Ns=class extends Er{constructor(e,r){var a;super(r),this._clientInfo=e,this._cachedToolOutputValidators=new Map,this._capabilities=(a=r?.capabilities)!==null&&a!==void 0?a:{},this._ajv=new Yi.default}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=cs(this._capabilities,e)}assertCapability(e,r){var a;if(!(!((a=this._serverCapabilities)===null||a===void 0)&&a[e]))throw new Error(`Server does not support ${e} (required for ${r})`)}async connect(e,r){if(await super.connect(e),e.sessionId===void 0)try{let a=await this.request({method:"initialize",params:{protocolVersion:kr,capabilities:this._capabilities,clientInfo:this._clientInfo}},Ks,r);if(a===void 0)throw new Error(`Server sent invalid initialize result: ${a}`);if(!Yr.includes(a.protocolVersion))throw new Error(`Server's protocol version is not supported: ${a.protocolVersion}`);this._serverCapabilities=a.capabilities,this._serverVersion=a.serverInfo,e.setProtocolVersion&&e.setProtocolVersion(a.protocolVersion),this._instructions=a.instructions,await this.notification({method:"notifications/initialized"})}catch(a){throw this.close(),a}}getServerCapabilities(){return this._serverCapabilities}getServerVersion(){return this._serverVersion}getInstructions(){return this._instructions}assertCapabilityForMethod(e){var r,a,t,n,i;switch(e){case"logging/setLevel":if(!(!((r=this._serverCapabilities)===null||r===void 0)&&r.logging))throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!(!((a=this._serverCapabilities)===null||a===void 0)&&a.prompts))throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":case"resources/subscribe":case"resources/unsubscribe":if(!(!((t=this._serverCapabilities)===null||t===void 0)&&t.resources))throw new Error(`Server does not support resources (required for ${e})`);if(e==="resources/subscribe"&&!this._serverCapabilities.resources.subscribe)throw new Error(`Server does not support resource subscriptions (required for ${e})`);break;case"tools/call":case"tools/list":if(!(!((n=this._serverCapabilities)===null||n===void 0)&&n.tools))throw new Error(`Server does not support tools (required for ${e})`);break;case"completion/complete":if(!(!((i=this._serverCapabilities)===null||i===void 0)&&i.completions))throw new Error(`Server does not support completions (required for ${e})`);break;case"initialize":break;case"ping":break}}assertNotificationCapability(e){var r;switch(e){case"notifications/roots/list_changed":if(!(!((r=this._capabilities.roots)===null||r===void 0)&&r.listChanged))throw new Error(`Client does not support roots list changed notifications (required for ${e})`);break;case"notifications/initialized":break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){switch(e){case"sampling/createMessage":if(!this._capabilities.sampling)throw new Error(`Client does not support sampling capability (required for ${e})`);break;case"elicitation/create":if(!this._capabilities.elicitation)throw new Error(`Client does not support elicitation capability (required for ${e})`);break;case"roots/list":if(!this._capabilities.roots)throw new Error(`Client does not support roots capability (required for ${e})`);break;case"ping":break}}async ping(e){return this.request({method:"ping"},St,e)}async complete(e,r){return this.request({method:"completion/complete",params:e},ha,r)}async setLoggingLevel(e,r){return this.request({method:"logging/setLevel",params:{level:e}},St,r)}async getPrompt(e,r){return this.request({method:"prompts/get",params:e},ia,r)}async listPrompts(e,r){return this.request({method:"prompts/list",params:e},sa,r)}async listResources(e,r){return this.request({method:"resources/list",params:e},ea,r)}async listResourceTemplates(e,r){return this.request({method:"resources/templates/list",params:e},ta,r)}async readResource(e,r){return this.request({method:"resources/read",params:e},ra,r)}async subscribeResource(e,r){return this.request({method:"resources/subscribe",params:e},St,r)}async unsubscribeResource(e,r){return this.request({method:"resources/unsubscribe",params:e},St,r)}async callTool(e,r=is,a){let t=await this.request({method:"tools/call",params:e},r,a),n=this.getToolOutputValidator(e.name);if(n){if(!t.structuredContent&&!t.isError)throw new Ae(Le.InvalidRequest,`Tool ${e.name} has an output schema but did not return structured content`);if(t.structuredContent)try{if(!n(t.structuredContent))throw new Ae(Le.InvalidParams,`Structured content does not match the tool's output schema: ${this._ajv.errorsText(n.errors)}`)}catch(i){throw i instanceof Ae?i:new Ae(Le.InvalidParams,`Failed to validate structured content: ${i instanceof Error?i.message:String(i)}`)}}return t}cacheToolOutputSchemas(e){this._cachedToolOutputValidators.clear();for(let r of e)if(r.outputSchema)try{let a=this._ajv.compile(r.outputSchema);this._cachedToolOutputValidators.set(r.name,a)}catch{}}getToolOutputValidator(e){return this._cachedToolOutputValidators.get(e)}async listTools(e,r){let a=await this.request({method:"tools/list",params:e},la,r);return this.cacheToolOutputSchemas(a.tools),a}async sendRootsListChanged(){return this.notification({method:"notifications/roots/list_changed"})}};var Bc=qt(Uc(),1),Ur=qt(require("node:process"),1),Vc=require("node:stream");var dh=Ur.default.platform==="win32"?["APPDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PROCESSOR_ARCHITECTURE","SYSTEMDRIVE","SYSTEMROOT","TEMP","USERNAME","USERPROFILE","PROGRAMFILES"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER"];function ph(){let s={};for(let e of dh){let r=Ur.default.env[e];r!==void 0&&(r.startsWith("()")||(s[e]=r))}return s}var $s=class{constructor(e){this._abortController=new AbortController,this._readBuffer=new Sr,this._stderrStream=null,this._serverParams=e,(e.stderr==="pipe"||e.stderr==="overlapped")&&(this._stderrStream=new Vc.PassThrough)}async start(){if(this._process)throw new Error("StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((e,r)=>{var a,t,n,i,o;this._process=(0,Bc.default)(this._serverParams.command,(a=this._serverParams.args)!==null&&a!==void 0?a:[],{env:{...ph(),...this._serverParams.env},stdio:["pipe","pipe",(t=this._serverParams.stderr)!==null&&t!==void 0?t:"inherit"],shell:!1,signal:this._abortController.signal,windowsHide:Ur.default.platform==="win32"&&fh(),cwd:this._serverParams.cwd}),this._process.on("error",l=>{var u,d;if(l.name==="AbortError"){(u=this.onclose)===null||u===void 0||u.call(this);return}r(l),(d=this.onerror)===null||d===void 0||d.call(this,l)}),this._process.on("spawn",()=>{e()}),this._process.on("close",l=>{var u;this._process=void 0,(u=this.onclose)===null||u===void 0||u.call(this)}),(n=this._process.stdin)===null||n===void 0||n.on("error",l=>{var u;(u=this.onerror)===null||u===void 0||u.call(this,l)}),(i=this._process.stdout)===null||i===void 0||i.on("data",l=>{this._readBuffer.append(l),this.processReadBuffer()}),(o=this._process.stdout)===null||o===void 0||o.on("error",l=>{var u;(u=this.onerror)===null||u===void 0||u.call(this,l)}),this._stderrStream&&this._process.stderr&&this._process.stderr.pipe(this._stderrStream)})}get stderr(){var e,r;return this._stderrStream?this._stderrStream:(r=(e=this._process)===null||e===void 0?void 0:e.stderr)!==null&&r!==void 0?r:null}get pid(){var e,r;return(r=(e=this._process)===null||e===void 0?void 0:e.pid)!==null&&r!==void 0?r:null}processReadBuffer(){for(var e,r;;)try{let a=this._readBuffer.readMessage();if(a===null)break;(e=this.onmessage)===null||e===void 0||e.call(this,a)}catch(a){(r=this.onerror)===null||r===void 0||r.call(this,a)}}async close(){this._abortController.abort(),this._process=void 0,this._readBuffer.clear()}send(e){return new Promise(r=>{var a;if(!(!((a=this._process)===null||a===void 0)&&a.stdin))throw new Error("Not connected");let t=Ps(e);this._process.stdin.write(t)?r():this._process.stdin.once("drain",r)})}};function fh(){return"type"in Ur.default}var zc=Symbol("Let zodToJsonSchema decide on which parser to use");var Hc={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:"definitions",target:"jsonSchema7",strictUnions:!1,definitions:{},errorMessages:!1,markdownDescription:!1,patternStrategy:"escape",applyRegexFlags:!1,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref",openAiAnyTypeName:"OpenAiAnyType"},Zc=s=>typeof s=="string"?{...Hc,name:s}:{...Hc,...s};var Gc=s=>{let e=Zc(s),r=e.name!==void 0?[...e.basePath,e.definitionPath,e.name]:e.basePath;return{...e,flags:{hasReferencedOpenAiAnyType:!1},currentPath:r,propertyPath:void 0,seen:new Map(Object.entries(e.definitions).map(([a,t])=>[t._def,{def:t._def,path:[...e.basePath,e.definitionPath,a],jsonSchema:void 0}]))}};function Ka(s,e,r,a){a?.errorMessages&&r&&(s.errorMessage={...s.errorMessage,[e]:r})}function re(s,e,r,a,t){s[e]=r,Ka(s,e,a,t)}var Ds=(s,e)=>{let r=0;for(;rG(s.innerType._def,e);function Ja(s,e,r){let a=r??e.dateStrategy;if(Array.isArray(a))return{anyOf:a.map((t,n)=>Ja(s,e,t))};switch(a){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return hh(s,e)}}var hh=(s,e)=>{let r={type:"integer",format:"unix-time"};if(e.target==="openApi3")return r;for(let a of s.checks)switch(a.kind){case"min":re(r,"minimum",a.value,a.message,e);break;case"max":re(r,"maximum",a.value,a.message,e);break}return r};function Jc(s,e){return{...G(s.innerType._def,e),default:s.defaultValue()}}function Yc(s,e){return e.effectStrategy==="input"?G(s.schema._def,e):he(e)}function el(s){return{type:"string",enum:Array.from(s.values)}}var mh=s=>"type"in s&&s.type==="string"?!1:"allOf"in s;function tl(s,e){let r=[G(s.left._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),G(s.right._def,{...e,currentPath:[...e.currentPath,"allOf","1"]})].filter(n=>!!n),a=e.target==="jsonSchema2019-09"?{unevaluatedProperties:!1}:void 0,t=[];return r.forEach(n=>{if(mh(n))t.push(...n.allOf),n.unevaluatedProperties===void 0&&(a=void 0);else{let i=n;if("additionalProperties"in n&&n.additionalProperties===!1){let{additionalProperties:o,...l}=n;i=l}else a=void 0;t.push(i)}}),t.length?{allOf:t,...a}:void 0}function rl(s,e){let r=typeof s.value;return r!=="bigint"&&r!=="number"&&r!=="boolean"&&r!=="string"?{type:Array.isArray(s.value)?"array":"object"}:e.target==="openApi3"?{type:r==="bigint"?"integer":r,enum:[s.value]}:{type:r==="bigint"?"integer":r,const:s.value}}var Ya,rt={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(Ya===void 0&&(Ya=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),Ya),uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function ks(s,e){let r={type:"string"};if(s.checks)for(let a of s.checks)switch(a.kind){case"min":re(r,"minLength",typeof r.minLength=="number"?Math.max(r.minLength,a.value):a.value,a.message,e);break;case"max":re(r,"maxLength",typeof r.maxLength=="number"?Math.min(r.maxLength,a.value):a.value,a.message,e);break;case"email":switch(e.emailStrategy){case"format:email":st(r,"email",a.message,e);break;case"format:idn-email":st(r,"idn-email",a.message,e);break;case"pattern:zod":je(r,rt.email,a.message,e);break}break;case"url":st(r,"uri",a.message,e);break;case"uuid":st(r,"uuid",a.message,e);break;case"regex":je(r,a.regex,a.message,e);break;case"cuid":je(r,rt.cuid,a.message,e);break;case"cuid2":je(r,rt.cuid2,a.message,e);break;case"startsWith":je(r,RegExp(`^${en(a.value,e)}`),a.message,e);break;case"endsWith":je(r,RegExp(`${en(a.value,e)}$`),a.message,e);break;case"datetime":st(r,"date-time",a.message,e);break;case"date":st(r,"date",a.message,e);break;case"time":st(r,"time",a.message,e);break;case"duration":st(r,"duration",a.message,e);break;case"length":re(r,"minLength",typeof r.minLength=="number"?Math.max(r.minLength,a.value):a.value,a.message,e),re(r,"maxLength",typeof r.maxLength=="number"?Math.min(r.maxLength,a.value):a.value,a.message,e);break;case"includes":{je(r,RegExp(en(a.value,e)),a.message,e);break}case"ip":{a.version!=="v6"&&st(r,"ipv4",a.message,e),a.version!=="v4"&&st(r,"ipv6",a.message,e);break}case"base64url":je(r,rt.base64url,a.message,e);break;case"jwt":je(r,rt.jwt,a.message,e);break;case"cidr":{a.version!=="v6"&&je(r,rt.ipv4Cidr,a.message,e),a.version!=="v4"&&je(r,rt.ipv6Cidr,a.message,e);break}case"emoji":je(r,rt.emoji(),a.message,e);break;case"ulid":{je(r,rt.ulid,a.message,e);break}case"base64":{switch(e.base64Strategy){case"format:binary":{st(r,"binary",a.message,e);break}case"contentEncoding:base64":{re(r,"contentEncoding","base64",a.message,e);break}case"pattern:zod":{je(r,rt.base64,a.message,e);break}}break}case"nanoid":je(r,rt.nanoid,a.message,e);case"toLowerCase":case"toUpperCase":case"trim":break;default:}return r}function en(s,e){return e.patternStrategy==="escape"?gh(s):s}var vh=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function gh(s){let e="";for(let r=0;rt.format)?(s.anyOf||(s.anyOf=[]),s.format&&(s.anyOf.push({format:s.format,...s.errorMessage&&a.errorMessages&&{errorMessage:{format:s.errorMessage.format}}}),delete s.format,s.errorMessage&&(delete s.errorMessage.format,Object.keys(s.errorMessage).length===0&&delete s.errorMessage)),s.anyOf.push({format:e,...r&&a.errorMessages&&{errorMessage:{format:r}}})):re(s,"format",e,r,a)}function je(s,e,r,a){s.pattern||s.allOf?.some(t=>t.pattern)?(s.allOf||(s.allOf=[]),s.pattern&&(s.allOf.push({pattern:s.pattern,...s.errorMessage&&a.errorMessages&&{errorMessage:{pattern:s.errorMessage.pattern}}}),delete s.pattern,s.errorMessage&&(delete s.errorMessage.pattern,Object.keys(s.errorMessage).length===0&&delete s.errorMessage)),s.allOf.push({pattern:sl(e,a),...r&&a.errorMessages&&{errorMessage:{pattern:r}}})):re(s,"pattern",sl(e,a),r,a)}function sl(s,e){if(!e.applyRegexFlags||!s.flags)return s.source;let r={i:s.flags.includes("i"),m:s.flags.includes("m"),s:s.flags.includes("s")},a=r.i?s.source.toLowerCase():s.source,t="",n=!1,i=!1,o=!1;for(let l=0;l{this._readBuffer.append(a),this.processReadBuffer()},this._onerror=a=>{var t;(t=this.onerror)===null||t===void 0||t.call(this,a)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(var e,r;;)try{let a=this._readBuffer.readMessage();if(a===null)break;(e=this.onmessage)===null||e===void 0||e.call(this,a)}catch(a){(r=this.onerror)===null||r===void 0||r.call(this,a)}}async close(){var e;this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),(e=this.onclose)===null||e===void 0||e.call(this)}send(e){return new Promise(r=>{let a=Ps(e);this._stdout.write(a)?r():this._stdout.once("drain",r)})}};var Yi=Ut(qa(),1),Ns=class extends Sr{constructor(e,r){var a;super(r),this._clientInfo=e,this._cachedToolOutputValidators=new Map,this._capabilities=(a=r?.capabilities)!==null&&a!==void 0?a:{},this._ajv=new Yi.default}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=cs(this._capabilities,e)}assertCapability(e,r){var a;if(!(!((a=this._serverCapabilities)===null||a===void 0)&&a[e]))throw new Error(`Server does not support ${e} (required for ${r})`)}async connect(e,r){if(await super.connect(e),e.sessionId===void 0)try{let a=await this.request({method:"initialize",params:{protocolVersion:Lr,capabilities:this._capabilities,clientInfo:this._clientInfo}},Ks,r);if(a===void 0)throw new Error(`Server sent invalid initialize result: ${a}`);if(!Yr.includes(a.protocolVersion))throw new Error(`Server's protocol version is not supported: ${a.protocolVersion}`);this._serverCapabilities=a.capabilities,this._serverVersion=a.serverInfo,e.setProtocolVersion&&e.setProtocolVersion(a.protocolVersion),this._instructions=a.instructions,await this.notification({method:"notifications/initialized"})}catch(a){throw this.close(),a}}getServerCapabilities(){return this._serverCapabilities}getServerVersion(){return this._serverVersion}getInstructions(){return this._instructions}assertCapabilityForMethod(e){var r,a,t,n,i;switch(e){case"logging/setLevel":if(!(!((r=this._serverCapabilities)===null||r===void 0)&&r.logging))throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!(!((a=this._serverCapabilities)===null||a===void 0)&&a.prompts))throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":case"resources/subscribe":case"resources/unsubscribe":if(!(!((t=this._serverCapabilities)===null||t===void 0)&&t.resources))throw new Error(`Server does not support resources (required for ${e})`);if(e==="resources/subscribe"&&!this._serverCapabilities.resources.subscribe)throw new Error(`Server does not support resource subscriptions (required for ${e})`);break;case"tools/call":case"tools/list":if(!(!((n=this._serverCapabilities)===null||n===void 0)&&n.tools))throw new Error(`Server does not support tools (required for ${e})`);break;case"completion/complete":if(!(!((i=this._serverCapabilities)===null||i===void 0)&&i.completions))throw new Error(`Server does not support completions (required for ${e})`);break;case"initialize":break;case"ping":break}}assertNotificationCapability(e){var r;switch(e){case"notifications/roots/list_changed":if(!(!((r=this._capabilities.roots)===null||r===void 0)&&r.listChanged))throw new Error(`Client does not support roots list changed notifications (required for ${e})`);break;case"notifications/initialized":break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){switch(e){case"sampling/createMessage":if(!this._capabilities.sampling)throw new Error(`Client does not support sampling capability (required for ${e})`);break;case"elicitation/create":if(!this._capabilities.elicitation)throw new Error(`Client does not support elicitation capability (required for ${e})`);break;case"roots/list":if(!this._capabilities.roots)throw new Error(`Client does not support roots capability (required for ${e})`);break;case"ping":break}}async ping(e){return this.request({method:"ping"},xt,e)}async complete(e,r){return this.request({method:"completion/complete",params:e},ha,r)}async setLoggingLevel(e,r){return this.request({method:"logging/setLevel",params:{level:e}},xt,r)}async getPrompt(e,r){return this.request({method:"prompts/get",params:e},ia,r)}async listPrompts(e,r){return this.request({method:"prompts/list",params:e},sa,r)}async listResources(e,r){return this.request({method:"resources/list",params:e},ea,r)}async listResourceTemplates(e,r){return this.request({method:"resources/templates/list",params:e},ta,r)}async readResource(e,r){return this.request({method:"resources/read",params:e},ra,r)}async subscribeResource(e,r){return this.request({method:"resources/subscribe",params:e},xt,r)}async unsubscribeResource(e,r){return this.request({method:"resources/unsubscribe",params:e},xt,r)}async callTool(e,r=is,a){let t=await this.request({method:"tools/call",params:e},r,a),n=this.getToolOutputValidator(e.name);if(n){if(!t.structuredContent&&!t.isError)throw new $e(je.InvalidRequest,`Tool ${e.name} has an output schema but did not return structured content`);if(t.structuredContent)try{if(!n(t.structuredContent))throw new $e(je.InvalidParams,`Structured content does not match the tool's output schema: ${this._ajv.errorsText(n.errors)}`)}catch(i){throw i instanceof $e?i:new $e(je.InvalidParams,`Failed to validate structured content: ${i instanceof Error?i.message:String(i)}`)}}return t}cacheToolOutputSchemas(e){this._cachedToolOutputValidators.clear();for(let r of e)if(r.outputSchema)try{let a=this._ajv.compile(r.outputSchema);this._cachedToolOutputValidators.set(r.name,a)}catch{}}getToolOutputValidator(e){return this._cachedToolOutputValidators.get(e)}async listTools(e,r){let a=await this.request({method:"tools/list",params:e},la,r);return this.cacheToolOutputSchemas(a.tools),a}async sendRootsListChanged(){return this.notification({method:"notifications/roots/list_changed"})}};var Bc=Ut(Uc(),1),Br=Ut(require("node:process"),1),Vc=require("node:stream");var dh=Br.default.platform==="win32"?["APPDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PROCESSOR_ARCHITECTURE","SYSTEMDRIVE","SYSTEMROOT","TEMP","USERNAME","USERPROFILE","PROGRAMFILES"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER"];function ph(){let s={};for(let e of dh){let r=Br.default.env[e];r!==void 0&&(r.startsWith("()")||(s[e]=r))}return s}var $s=class{constructor(e){this._abortController=new AbortController,this._readBuffer=new xr,this._stderrStream=null,this._serverParams=e,(e.stderr==="pipe"||e.stderr==="overlapped")&&(this._stderrStream=new Vc.PassThrough)}async start(){if(this._process)throw new Error("StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((e,r)=>{var a,t,n,i,o;this._process=(0,Bc.default)(this._serverParams.command,(a=this._serverParams.args)!==null&&a!==void 0?a:[],{env:{...ph(),...this._serverParams.env},stdio:["pipe","pipe",(t=this._serverParams.stderr)!==null&&t!==void 0?t:"inherit"],shell:!1,signal:this._abortController.signal,windowsHide:Br.default.platform==="win32"&&fh(),cwd:this._serverParams.cwd}),this._process.on("error",l=>{var u,d;if(l.name==="AbortError"){(u=this.onclose)===null||u===void 0||u.call(this);return}r(l),(d=this.onerror)===null||d===void 0||d.call(this,l)}),this._process.on("spawn",()=>{e()}),this._process.on("close",l=>{var u;this._process=void 0,(u=this.onclose)===null||u===void 0||u.call(this)}),(n=this._process.stdin)===null||n===void 0||n.on("error",l=>{var u;(u=this.onerror)===null||u===void 0||u.call(this,l)}),(i=this._process.stdout)===null||i===void 0||i.on("data",l=>{this._readBuffer.append(l),this.processReadBuffer()}),(o=this._process.stdout)===null||o===void 0||o.on("error",l=>{var u;(u=this.onerror)===null||u===void 0||u.call(this,l)}),this._stderrStream&&this._process.stderr&&this._process.stderr.pipe(this._stderrStream)})}get stderr(){var e,r;return this._stderrStream?this._stderrStream:(r=(e=this._process)===null||e===void 0?void 0:e.stderr)!==null&&r!==void 0?r:null}get pid(){var e,r;return(r=(e=this._process)===null||e===void 0?void 0:e.pid)!==null&&r!==void 0?r:null}processReadBuffer(){for(var e,r;;)try{let a=this._readBuffer.readMessage();if(a===null)break;(e=this.onmessage)===null||e===void 0||e.call(this,a)}catch(a){(r=this.onerror)===null||r===void 0||r.call(this,a)}}async close(){this._abortController.abort(),this._process=void 0,this._readBuffer.clear()}send(e){return new Promise(r=>{var a;if(!(!((a=this._process)===null||a===void 0)&&a.stdin))throw new Error("Not connected");let t=Ps(e);this._process.stdin.write(t)?r():this._process.stdin.once("drain",r)})}};function fh(){return"type"in Br.default}var zc=Symbol("Let zodToJsonSchema decide on which parser to use");var Hc={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:"definitions",target:"jsonSchema7",strictUnions:!1,definitions:{},errorMessages:!1,markdownDescription:!1,patternStrategy:"escape",applyRegexFlags:!1,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref",openAiAnyTypeName:"OpenAiAnyType"},Zc=s=>typeof s=="string"?{...Hc,name:s}:{...Hc,...s};var Gc=s=>{let e=Zc(s),r=e.name!==void 0?[...e.basePath,e.definitionPath,e.name]:e.basePath;return{...e,flags:{hasReferencedOpenAiAnyType:!1},currentPath:r,propertyPath:void 0,seen:new Map(Object.entries(e.definitions).map(([a,t])=>[t._def,{def:t._def,path:[...e.basePath,e.definitionPath,a],jsonSchema:void 0}]))}};function Ka(s,e,r,a){a?.errorMessages&&r&&(s.errorMessage={...s.errorMessage,[e]:r})}function se(s,e,r,a,t){s[e]=r,Ka(s,e,a,t)}var Ds=(s,e)=>{let r=0;for(;rX(s.innerType._def,e);function Ja(s,e,r){let a=r??e.dateStrategy;if(Array.isArray(a))return{anyOf:a.map((t,n)=>Ja(s,e,t))};switch(a){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return hh(s,e)}}var hh=(s,e)=>{let r={type:"integer",format:"unix-time"};if(e.target==="openApi3")return r;for(let a of s.checks)switch(a.kind){case"min":se(r,"minimum",a.value,a.message,e);break;case"max":se(r,"maximum",a.value,a.message,e);break}return r};function Jc(s,e){return{...X(s.innerType._def,e),default:s.defaultValue()}}function Yc(s,e){return e.effectStrategy==="input"?X(s.schema._def,e):me(e)}function el(s){return{type:"string",enum:Array.from(s.values)}}var mh=s=>"type"in s&&s.type==="string"?!1:"allOf"in s;function tl(s,e){let r=[X(s.left._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),X(s.right._def,{...e,currentPath:[...e.currentPath,"allOf","1"]})].filter(n=>!!n),a=e.target==="jsonSchema2019-09"?{unevaluatedProperties:!1}:void 0,t=[];return r.forEach(n=>{if(mh(n))t.push(...n.allOf),n.unevaluatedProperties===void 0&&(a=void 0);else{let i=n;if("additionalProperties"in n&&n.additionalProperties===!1){let{additionalProperties:o,...l}=n;i=l}else a=void 0;t.push(i)}}),t.length?{allOf:t,...a}:void 0}function rl(s,e){let r=typeof s.value;return r!=="bigint"&&r!=="number"&&r!=="boolean"&&r!=="string"?{type:Array.isArray(s.value)?"array":"object"}:e.target==="openApi3"?{type:r==="bigint"?"integer":r,enum:[s.value]}:{type:r==="bigint"?"integer":r,const:s.value}}var Ya,st={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(Ya===void 0&&(Ya=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),Ya),uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function ks(s,e){let r={type:"string"};if(s.checks)for(let a of s.checks)switch(a.kind){case"min":se(r,"minLength",typeof r.minLength=="number"?Math.max(r.minLength,a.value):a.value,a.message,e);break;case"max":se(r,"maxLength",typeof r.maxLength=="number"?Math.min(r.maxLength,a.value):a.value,a.message,e);break;case"email":switch(e.emailStrategy){case"format:email":at(r,"email",a.message,e);break;case"format:idn-email":at(r,"idn-email",a.message,e);break;case"pattern:zod":Fe(r,st.email,a.message,e);break}break;case"url":at(r,"uri",a.message,e);break;case"uuid":at(r,"uuid",a.message,e);break;case"regex":Fe(r,a.regex,a.message,e);break;case"cuid":Fe(r,st.cuid,a.message,e);break;case"cuid2":Fe(r,st.cuid2,a.message,e);break;case"startsWith":Fe(r,RegExp(`^${en(a.value,e)}`),a.message,e);break;case"endsWith":Fe(r,RegExp(`${en(a.value,e)}$`),a.message,e);break;case"datetime":at(r,"date-time",a.message,e);break;case"date":at(r,"date",a.message,e);break;case"time":at(r,"time",a.message,e);break;case"duration":at(r,"duration",a.message,e);break;case"length":se(r,"minLength",typeof r.minLength=="number"?Math.max(r.minLength,a.value):a.value,a.message,e),se(r,"maxLength",typeof r.maxLength=="number"?Math.min(r.maxLength,a.value):a.value,a.message,e);break;case"includes":{Fe(r,RegExp(en(a.value,e)),a.message,e);break}case"ip":{a.version!=="v6"&&at(r,"ipv4",a.message,e),a.version!=="v4"&&at(r,"ipv6",a.message,e);break}case"base64url":Fe(r,st.base64url,a.message,e);break;case"jwt":Fe(r,st.jwt,a.message,e);break;case"cidr":{a.version!=="v6"&&Fe(r,st.ipv4Cidr,a.message,e),a.version!=="v4"&&Fe(r,st.ipv6Cidr,a.message,e);break}case"emoji":Fe(r,st.emoji(),a.message,e);break;case"ulid":{Fe(r,st.ulid,a.message,e);break}case"base64":{switch(e.base64Strategy){case"format:binary":{at(r,"binary",a.message,e);break}case"contentEncoding:base64":{se(r,"contentEncoding","base64",a.message,e);break}case"pattern:zod":{Fe(r,st.base64,a.message,e);break}}break}case"nanoid":Fe(r,st.nanoid,a.message,e);case"toLowerCase":case"toUpperCase":case"trim":break;default:}return r}function en(s,e){return e.patternStrategy==="escape"?gh(s):s}var vh=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function gh(s){let e="";for(let r=0;rt.format)?(s.anyOf||(s.anyOf=[]),s.format&&(s.anyOf.push({format:s.format,...s.errorMessage&&a.errorMessages&&{errorMessage:{format:s.errorMessage.format}}}),delete s.format,s.errorMessage&&(delete s.errorMessage.format,Object.keys(s.errorMessage).length===0&&delete s.errorMessage)),s.anyOf.push({format:e,...r&&a.errorMessages&&{errorMessage:{format:r}}})):se(s,"format",e,r,a)}function Fe(s,e,r,a){s.pattern||s.allOf?.some(t=>t.pattern)?(s.allOf||(s.allOf=[]),s.pattern&&(s.allOf.push({pattern:s.pattern,...s.errorMessage&&a.errorMessages&&{errorMessage:{pattern:s.errorMessage.pattern}}}),delete s.pattern,s.errorMessage&&(delete s.errorMessage.pattern,Object.keys(s.errorMessage).length===0&&delete s.errorMessage)),s.allOf.push({pattern:sl(e,a),...r&&a.errorMessages&&{errorMessage:{pattern:r}}})):se(s,"pattern",sl(e,a),r,a)}function sl(s,e){if(!e.applyRegexFlags||!s.flags)return s.source;let r={i:s.flags.includes("i"),m:s.flags.includes("m"),s:s.flags.includes("s")},a=r.i?s.source.toLowerCase():s.source,t="",n=!1,i=!1,o=!1;for(let l=0;l({...a,[t]:G(s.valueType._def,{...e,currentPath:[...e.currentPath,"properties",t]})??he(e)}),{}),additionalProperties:e.rejectedAdditionalProperties};let r={type:"object",additionalProperties:G(s.valueType._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]})??e.allowedAdditionalProperties};if(e.target==="openApi3")return r;if(s.keyType?._def.typeName===F.ZodString&&s.keyType._def.checks?.length){let{type:a,...t}=ks(s.keyType._def,e);return{...r,propertyNames:t}}else{if(s.keyType?._def.typeName===F.ZodEnum)return{...r,propertyNames:{enum:s.keyType._def.values}};if(s.keyType?._def.typeName===F.ZodBranded&&s.keyType._def.type._def.typeName===F.ZodString&&s.keyType._def.type._def.checks?.length){let{type:a,...t}=Cs(s.keyType._def,e);return{...r,propertyNames:t}}}return r}function al(s,e){if(e.mapStrategy==="record")return Ls(s,e);let r=G(s.keyType._def,{...e,currentPath:[...e.currentPath,"items","items","0"]})||he(e),a=G(s.valueType._def,{...e,currentPath:[...e.currentPath,"items","items","1"]})||he(e);return{type:"array",maxItems:125,items:{type:"array",items:[r,a],minItems:2,maxItems:2}}}function nl(s){let e=s.values,a=Object.keys(s.values).filter(n=>typeof e[e[n]]!="number").map(n=>e[n]),t=Array.from(new Set(a.map(n=>typeof n)));return{type:t.length===1?t[0]==="string"?"string":"number":["string","number"],enum:a}}function ol(s){return s.target==="openAi"?void 0:{not:he({...s,currentPath:[...s.currentPath,"not"]})}}function il(s){return s.target==="openApi3"?{enum:["null"],nullable:!0}:{type:"null"}}var Br={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function ll(s,e){if(e.target==="openApi3")return cl(s,e);let r=s.options instanceof Map?Array.from(s.options.values()):s.options;if(r.every(a=>a._def.typeName in Br&&(!a._def.checks||!a._def.checks.length))){let a=r.reduce((t,n)=>{let i=Br[n._def.typeName];return i&&!t.includes(i)?[...t,i]:t},[]);return{type:a.length>1?a:a[0]}}else if(r.every(a=>a._def.typeName==="ZodLiteral"&&!a.description)){let a=r.reduce((t,n)=>{let i=typeof n._def.value;switch(i){case"string":case"number":case"boolean":return[...t,i];case"bigint":return[...t,"integer"];case"object":if(n._def.value===null)return[...t,"null"];case"symbol":case"undefined":case"function":default:return t}},[]);if(a.length===r.length){let t=a.filter((n,i,o)=>o.indexOf(n)===i);return{type:t.length>1?t:t[0],enum:r.reduce((n,i)=>n.includes(i._def.value)?n:[...n,i._def.value],[])}}}else if(r.every(a=>a._def.typeName==="ZodEnum"))return{type:"string",enum:r.reduce((a,t)=>[...a,...t._def.values.filter(n=>!a.includes(n))],[])};return cl(s,e)}var cl=(s,e)=>{let r=(s.options instanceof Map?Array.from(s.options.values()):s.options).map((a,t)=>G(a._def,{...e,currentPath:[...e.currentPath,"anyOf",`${t}`]})).filter(a=>!!a&&(!e.strictUnions||typeof a=="object"&&Object.keys(a).length>0));return r.length?{anyOf:r}:void 0};function ul(s,e){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(s.innerType._def.typeName)&&(!s.innerType._def.checks||!s.innerType._def.checks.length))return e.target==="openApi3"?{type:Br[s.innerType._def.typeName],nullable:!0}:{type:[Br[s.innerType._def.typeName],"null"]};if(e.target==="openApi3"){let a=G(s.innerType._def,{...e,currentPath:[...e.currentPath]});return a&&"$ref"in a?{allOf:[a],nullable:!0}:a&&{...a,nullable:!0}}let r=G(s.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","0"]});return r&&{anyOf:[r,{type:"null"}]}}function dl(s,e){let r={type:"number"};if(!s.checks)return r;for(let a of s.checks)switch(a.kind){case"int":r.type="integer",Ka(r,"type",a.message,e);break;case"min":e.target==="jsonSchema7"?a.inclusive?re(r,"minimum",a.value,a.message,e):re(r,"exclusiveMinimum",a.value,a.message,e):(a.inclusive||(r.exclusiveMinimum=!0),re(r,"minimum",a.value,a.message,e));break;case"max":e.target==="jsonSchema7"?a.inclusive?re(r,"maximum",a.value,a.message,e):re(r,"exclusiveMaximum",a.value,a.message,e):(a.inclusive||(r.exclusiveMaximum=!0),re(r,"maximum",a.value,a.message,e));break;case"multipleOf":re(r,"multipleOf",a.value,a.message,e);break}return r}function pl(s,e){let r=e.target==="openAi",a={type:"object",properties:{}},t=[],n=s.shape();for(let o in n){let l=n[o];if(l===void 0||l._def===void 0)continue;let u=_h(l);u&&r&&(l._def.typeName==="ZodOptional"&&(l=l._def.innerType),l.isNullable()||(l=l.nullable()),u=!1);let d=G(l._def,{...e,currentPath:[...e.currentPath,"properties",o],propertyPath:[...e.currentPath,"properties",o]});d!==void 0&&(a.properties[o]=d,u||t.push(o))}t.length&&(a.required=t);let i=yh(s,e);return i!==void 0&&(a.additionalProperties=i),a}function yh(s,e){if(s.catchall._def.typeName!=="ZodNever")return G(s.catchall._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]});switch(s.unknownKeys){case"passthrough":return e.allowedAdditionalProperties;case"strict":return e.rejectedAdditionalProperties;case"strip":return e.removeAdditionalStrategy==="strict"?e.allowedAdditionalProperties:e.rejectedAdditionalProperties}}function _h(s){try{return s.isOptional()}catch{return!0}}var fl=(s,e)=>{if(e.currentPath.toString()===e.propertyPath?.toString())return G(s.innerType._def,e);let r=G(s.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","1"]});return r?{anyOf:[{not:he(e)},r]}:he(e)};var hl=(s,e)=>{if(e.pipeStrategy==="input")return G(s.in._def,e);if(e.pipeStrategy==="output")return G(s.out._def,e);let r=G(s.in._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),a=G(s.out._def,{...e,currentPath:[...e.currentPath,"allOf",r?"1":"0"]});return{allOf:[r,a].filter(t=>t!==void 0)}};function ml(s,e){return G(s.type._def,e)}function vl(s,e){let a={type:"array",uniqueItems:!0,items:G(s.valueType._def,{...e,currentPath:[...e.currentPath,"items"]})};return s.minSize&&re(a,"minItems",s.minSize.value,s.minSize.message,e),s.maxSize&&re(a,"maxItems",s.maxSize.value,s.maxSize.message,e),a}function gl(s,e){return s.rest?{type:"array",minItems:s.items.length,items:s.items.map((r,a)=>G(r._def,{...e,currentPath:[...e.currentPath,"items",`${a}`]})).reduce((r,a)=>a===void 0?r:[...r,a],[]),additionalItems:G(s.rest._def,{...e,currentPath:[...e.currentPath,"additionalItems"]})}:{type:"array",minItems:s.items.length,maxItems:s.items.length,items:s.items.map((r,a)=>G(r._def,{...e,currentPath:[...e.currentPath,"items",`${a}`]})).reduce((r,a)=>a===void 0?r:[...r,a],[])}}function yl(s){return{not:he(s)}}function _l(s){return he(s)}var bl=(s,e)=>G(s.innerType._def,e);var El=(s,e,r)=>{switch(e){case F.ZodString:return ks(s,r);case F.ZodNumber:return dl(s,r);case F.ZodObject:return pl(s,r);case F.ZodBigInt:return Wc(s,r);case F.ZodBoolean:return Qc();case F.ZodDate:return Ja(s,r);case F.ZodUndefined:return yl(r);case F.ZodNull:return il(r);case F.ZodArray:return Xc(s,r);case F.ZodUnion:case F.ZodDiscriminatedUnion:return ll(s,r);case F.ZodIntersection:return tl(s,r);case F.ZodTuple:return gl(s,r);case F.ZodRecord:return Ls(s,r);case F.ZodLiteral:return rl(s,r);case F.ZodEnum:return el(s);case F.ZodNativeEnum:return nl(s);case F.ZodNullable:return ul(s,r);case F.ZodOptional:return fl(s,r);case F.ZodMap:return al(s,r);case F.ZodSet:return vl(s,r);case F.ZodLazy:return()=>s.getter()._def;case F.ZodPromise:return ml(s,r);case F.ZodNaN:case F.ZodNever:return ol(r);case F.ZodEffects:return Yc(s,r);case F.ZodAny:return he(r);case F.ZodUnknown:return _l(r);case F.ZodDefault:return Jc(s,r);case F.ZodBranded:return Cs(s,r);case F.ZodReadonly:return bl(s,r);case F.ZodCatch:return Kc(s,r);case F.ZodPipeline:return hl(s,r);case F.ZodFunction:case F.ZodVoid:case F.ZodSymbol:return;default:return(a=>{})(e)}};function G(s,e,r=!1){let a=e.seen.get(s);if(e.override){let o=e.override?.(s,e,a,r);if(o!==zc)return o}if(a&&!r){let o=bh(a,e);if(o!==void 0)return o}let t={def:s,path:e.currentPath,jsonSchema:void 0};e.seen.set(s,t);let n=El(s,s.typeName,e),i=typeof n=="function"?G(n(),e):n;if(i&&Eh(s,e,i),e.postProcess){let o=e.postProcess(i,s,e);return t.jsonSchema=i,o}return t.jsonSchema=i,i}var bh=(s,e)=>{switch(e.$refStrategy){case"root":return{$ref:s.path.join("/")};case"relative":return{$ref:Ds(e.currentPath,s.path)};case"none":case"seen":return s.path.lengthe.currentPath[a]===r)?(console.warn(`Recursive reference detected at ${e.currentPath.join("/")}! Defaulting to any`),he(e)):e.$refStrategy==="seen"?he(e):void 0}},Eh=(s,e,r)=>(s.description&&(r.description=s.description,e.markdownDescription&&(r.markdownDescription=s.description)),r);var tn=(s,e)=>{let r=Gc(e),a=typeof e=="object"&&e.definitions?Object.entries(e.definitions).reduce((l,[u,d])=>({...l,[u]:G(d._def,{...r,currentPath:[...r.basePath,r.definitionPath,u]},!0)??he(r)}),{}):void 0,t=typeof e=="string"?e:e?.nameStrategy==="title"?void 0:e?.name,n=G(s._def,t===void 0?r:{...r,currentPath:[...r.basePath,r.definitionPath,t]},!1)??he(r),i=typeof e=="object"&&e.name!==void 0&&e.nameStrategy==="title"?e.name:void 0;i!==void 0&&(n.title=i),r.flags.hasReferencedOpenAiAnyType&&(a||(a={}),a[r.openAiAnyTypeName]||(a[r.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:r.$refStrategy==="relative"?"1":[...r.basePath,r.definitionPath,r.openAiAnyTypeName].join("/")}}));let o=t===void 0?a?{...n,[r.definitionPath]:a}:n:{$ref:[...r.$refStrategy==="relative"?[]:r.basePath,r.definitionPath,t].join("/"),[r.definitionPath]:{...a,[t]:n}};return r.target==="jsonSchema7"?o.$schema="http://json-schema.org/draft-07/schema#":(r.target==="jsonSchema2019-09"||r.target==="openAi")&&(o.$schema="https://json-schema.org/draft/2019-09/schema#"),r.target==="openAi"&&("anyOf"in o||"oneOf"in o||"allOf"in o||"type"in o&&Array.isArray(o.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),o};var $l=require("path");var Rl=qt(require("better-sqlite3"),1);var $e=require("path"),rn=require("os"),sn=require("fs");var Sl=require("url"),xh={};function Sh(){return typeof __dirname<"u"?__dirname:(0,$e.dirname)((0,Sl.fileURLToPath)(xh.url))}var I_=Sh(),at=process.env.CLAUDE_MEM_DATA_DIR||(0,$e.join)((0,rn.homedir)(),".claude-mem"),an=process.env.CLAUDE_CONFIG_DIR||(0,$e.join)((0,rn.homedir)(),".claude"),N_=(0,$e.join)(at,"archives"),A_=(0,$e.join)(at,"logs"),$_=(0,$e.join)(at,"trash"),D_=(0,$e.join)(at,"backups"),C_=(0,$e.join)(at,"settings.json"),js=(0,$e.join)(at,"claude-mem.db"),xl=(0,$e.join)(at,"vector-db"),k_=(0,$e.join)(an,"settings.json"),L_=(0,$e.join)(an,"commands"),j_=(0,$e.join)(an,"CLAUDE.md");function Fs(s){(0,sn.mkdirSync)(s,{recursive:!0})}var Ms=class{db;constructor(e){e||(Fs(at),e=js),this.db=new Rl.default(e),this.db.pragma("journal_mode = WAL"),this.ensureFTSTables()}ensureFTSTables(){try{if(this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name LIKE '%_fts'").all().some(a=>a.name==="observations_fts"||a.name==="session_summaries_fts"))return;console.error("[SessionSearch] Creating FTS5 tables..."),this.db.exec(` +]`;continue}t+=a[l],a[l]==="\\"?n=!0:i&&a[l]==="]"?i=!1:!i&&a[l]==="["&&(i=!0)}try{new RegExp(t)}catch{return console.warn(`Could not convert regex pattern at ${e.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),s.source}return t}function Ls(s,e){if(e.target==="openAi"&&console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."),e.target==="openApi3"&&s.keyType?._def.typeName===F.ZodEnum)return{type:"object",required:s.keyType._def.values,properties:s.keyType._def.values.reduce((a,t)=>({...a,[t]:X(s.valueType._def,{...e,currentPath:[...e.currentPath,"properties",t]})??me(e)}),{}),additionalProperties:e.rejectedAdditionalProperties};let r={type:"object",additionalProperties:X(s.valueType._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]})??e.allowedAdditionalProperties};if(e.target==="openApi3")return r;if(s.keyType?._def.typeName===F.ZodString&&s.keyType._def.checks?.length){let{type:a,...t}=ks(s.keyType._def,e);return{...r,propertyNames:t}}else{if(s.keyType?._def.typeName===F.ZodEnum)return{...r,propertyNames:{enum:s.keyType._def.values}};if(s.keyType?._def.typeName===F.ZodBranded&&s.keyType._def.type._def.typeName===F.ZodString&&s.keyType._def.type._def.checks?.length){let{type:a,...t}=Cs(s.keyType._def,e);return{...r,propertyNames:t}}}return r}function al(s,e){if(e.mapStrategy==="record")return Ls(s,e);let r=X(s.keyType._def,{...e,currentPath:[...e.currentPath,"items","items","0"]})||me(e),a=X(s.valueType._def,{...e,currentPath:[...e.currentPath,"items","items","1"]})||me(e);return{type:"array",maxItems:125,items:{type:"array",items:[r,a],minItems:2,maxItems:2}}}function nl(s){let e=s.values,a=Object.keys(s.values).filter(n=>typeof e[e[n]]!="number").map(n=>e[n]),t=Array.from(new Set(a.map(n=>typeof n)));return{type:t.length===1?t[0]==="string"?"string":"number":["string","number"],enum:a}}function ol(s){return s.target==="openAi"?void 0:{not:me({...s,currentPath:[...s.currentPath,"not"]})}}function il(s){return s.target==="openApi3"?{enum:["null"],nullable:!0}:{type:"null"}}var Vr={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function ll(s,e){if(e.target==="openApi3")return cl(s,e);let r=s.options instanceof Map?Array.from(s.options.values()):s.options;if(r.every(a=>a._def.typeName in Vr&&(!a._def.checks||!a._def.checks.length))){let a=r.reduce((t,n)=>{let i=Vr[n._def.typeName];return i&&!t.includes(i)?[...t,i]:t},[]);return{type:a.length>1?a:a[0]}}else if(r.every(a=>a._def.typeName==="ZodLiteral"&&!a.description)){let a=r.reduce((t,n)=>{let i=typeof n._def.value;switch(i){case"string":case"number":case"boolean":return[...t,i];case"bigint":return[...t,"integer"];case"object":if(n._def.value===null)return[...t,"null"];case"symbol":case"undefined":case"function":default:return t}},[]);if(a.length===r.length){let t=a.filter((n,i,o)=>o.indexOf(n)===i);return{type:t.length>1?t:t[0],enum:r.reduce((n,i)=>n.includes(i._def.value)?n:[...n,i._def.value],[])}}}else if(r.every(a=>a._def.typeName==="ZodEnum"))return{type:"string",enum:r.reduce((a,t)=>[...a,...t._def.values.filter(n=>!a.includes(n))],[])};return cl(s,e)}var cl=(s,e)=>{let r=(s.options instanceof Map?Array.from(s.options.values()):s.options).map((a,t)=>X(a._def,{...e,currentPath:[...e.currentPath,"anyOf",`${t}`]})).filter(a=>!!a&&(!e.strictUnions||typeof a=="object"&&Object.keys(a).length>0));return r.length?{anyOf:r}:void 0};function ul(s,e){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(s.innerType._def.typeName)&&(!s.innerType._def.checks||!s.innerType._def.checks.length))return e.target==="openApi3"?{type:Vr[s.innerType._def.typeName],nullable:!0}:{type:[Vr[s.innerType._def.typeName],"null"]};if(e.target==="openApi3"){let a=X(s.innerType._def,{...e,currentPath:[...e.currentPath]});return a&&"$ref"in a?{allOf:[a],nullable:!0}:a&&{...a,nullable:!0}}let r=X(s.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","0"]});return r&&{anyOf:[r,{type:"null"}]}}function dl(s,e){let r={type:"number"};if(!s.checks)return r;for(let a of s.checks)switch(a.kind){case"int":r.type="integer",Ka(r,"type",a.message,e);break;case"min":e.target==="jsonSchema7"?a.inclusive?se(r,"minimum",a.value,a.message,e):se(r,"exclusiveMinimum",a.value,a.message,e):(a.inclusive||(r.exclusiveMinimum=!0),se(r,"minimum",a.value,a.message,e));break;case"max":e.target==="jsonSchema7"?a.inclusive?se(r,"maximum",a.value,a.message,e):se(r,"exclusiveMaximum",a.value,a.message,e):(a.inclusive||(r.exclusiveMaximum=!0),se(r,"maximum",a.value,a.message,e));break;case"multipleOf":se(r,"multipleOf",a.value,a.message,e);break}return r}function pl(s,e){let r=e.target==="openAi",a={type:"object",properties:{}},t=[],n=s.shape();for(let o in n){let l=n[o];if(l===void 0||l._def===void 0)continue;let u=_h(l);u&&r&&(l._def.typeName==="ZodOptional"&&(l=l._def.innerType),l.isNullable()||(l=l.nullable()),u=!1);let d=X(l._def,{...e,currentPath:[...e.currentPath,"properties",o],propertyPath:[...e.currentPath,"properties",o]});d!==void 0&&(a.properties[o]=d,u||t.push(o))}t.length&&(a.required=t);let i=yh(s,e);return i!==void 0&&(a.additionalProperties=i),a}function yh(s,e){if(s.catchall._def.typeName!=="ZodNever")return X(s.catchall._def,{...e,currentPath:[...e.currentPath,"additionalProperties"]});switch(s.unknownKeys){case"passthrough":return e.allowedAdditionalProperties;case"strict":return e.rejectedAdditionalProperties;case"strip":return e.removeAdditionalStrategy==="strict"?e.allowedAdditionalProperties:e.rejectedAdditionalProperties}}function _h(s){try{return s.isOptional()}catch{return!0}}var fl=(s,e)=>{if(e.currentPath.toString()===e.propertyPath?.toString())return X(s.innerType._def,e);let r=X(s.innerType._def,{...e,currentPath:[...e.currentPath,"anyOf","1"]});return r?{anyOf:[{not:me(e)},r]}:me(e)};var hl=(s,e)=>{if(e.pipeStrategy==="input")return X(s.in._def,e);if(e.pipeStrategy==="output")return X(s.out._def,e);let r=X(s.in._def,{...e,currentPath:[...e.currentPath,"allOf","0"]}),a=X(s.out._def,{...e,currentPath:[...e.currentPath,"allOf",r?"1":"0"]});return{allOf:[r,a].filter(t=>t!==void 0)}};function ml(s,e){return X(s.type._def,e)}function vl(s,e){let a={type:"array",uniqueItems:!0,items:X(s.valueType._def,{...e,currentPath:[...e.currentPath,"items"]})};return s.minSize&&se(a,"minItems",s.minSize.value,s.minSize.message,e),s.maxSize&&se(a,"maxItems",s.maxSize.value,s.maxSize.message,e),a}function gl(s,e){return s.rest?{type:"array",minItems:s.items.length,items:s.items.map((r,a)=>X(r._def,{...e,currentPath:[...e.currentPath,"items",`${a}`]})).reduce((r,a)=>a===void 0?r:[...r,a],[]),additionalItems:X(s.rest._def,{...e,currentPath:[...e.currentPath,"additionalItems"]})}:{type:"array",minItems:s.items.length,maxItems:s.items.length,items:s.items.map((r,a)=>X(r._def,{...e,currentPath:[...e.currentPath,"items",`${a}`]})).reduce((r,a)=>a===void 0?r:[...r,a],[])}}function yl(s){return{not:me(s)}}function _l(s){return me(s)}var bl=(s,e)=>X(s.innerType._def,e);var El=(s,e,r)=>{switch(e){case F.ZodString:return ks(s,r);case F.ZodNumber:return dl(s,r);case F.ZodObject:return pl(s,r);case F.ZodBigInt:return Wc(s,r);case F.ZodBoolean:return Qc();case F.ZodDate:return Ja(s,r);case F.ZodUndefined:return yl(r);case F.ZodNull:return il(r);case F.ZodArray:return Xc(s,r);case F.ZodUnion:case F.ZodDiscriminatedUnion:return ll(s,r);case F.ZodIntersection:return tl(s,r);case F.ZodTuple:return gl(s,r);case F.ZodRecord:return Ls(s,r);case F.ZodLiteral:return rl(s,r);case F.ZodEnum:return el(s);case F.ZodNativeEnum:return nl(s);case F.ZodNullable:return ul(s,r);case F.ZodOptional:return fl(s,r);case F.ZodMap:return al(s,r);case F.ZodSet:return vl(s,r);case F.ZodLazy:return()=>s.getter()._def;case F.ZodPromise:return ml(s,r);case F.ZodNaN:case F.ZodNever:return ol(r);case F.ZodEffects:return Yc(s,r);case F.ZodAny:return me(r);case F.ZodUnknown:return _l(r);case F.ZodDefault:return Jc(s,r);case F.ZodBranded:return Cs(s,r);case F.ZodReadonly:return bl(s,r);case F.ZodCatch:return Kc(s,r);case F.ZodPipeline:return hl(s,r);case F.ZodFunction:case F.ZodVoid:case F.ZodSymbol:return;default:return(a=>{})(e)}};function X(s,e,r=!1){let a=e.seen.get(s);if(e.override){let o=e.override?.(s,e,a,r);if(o!==zc)return o}if(a&&!r){let o=bh(a,e);if(o!==void 0)return o}let t={def:s,path:e.currentPath,jsonSchema:void 0};e.seen.set(s,t);let n=El(s,s.typeName,e),i=typeof n=="function"?X(n(),e):n;if(i&&Eh(s,e,i),e.postProcess){let o=e.postProcess(i,s,e);return t.jsonSchema=i,o}return t.jsonSchema=i,i}var bh=(s,e)=>{switch(e.$refStrategy){case"root":return{$ref:s.path.join("/")};case"relative":return{$ref:Ds(e.currentPath,s.path)};case"none":case"seen":return s.path.lengthe.currentPath[a]===r)?(console.warn(`Recursive reference detected at ${e.currentPath.join("/")}! Defaulting to any`),me(e)):e.$refStrategy==="seen"?me(e):void 0}},Eh=(s,e,r)=>(s.description&&(r.description=s.description,e.markdownDescription&&(r.markdownDescription=s.description)),r);var tn=(s,e)=>{let r=Gc(e),a=typeof e=="object"&&e.definitions?Object.entries(e.definitions).reduce((l,[u,d])=>({...l,[u]:X(d._def,{...r,currentPath:[...r.basePath,r.definitionPath,u]},!0)??me(r)}),{}):void 0,t=typeof e=="string"?e:e?.nameStrategy==="title"?void 0:e?.name,n=X(s._def,t===void 0?r:{...r,currentPath:[...r.basePath,r.definitionPath,t]},!1)??me(r),i=typeof e=="object"&&e.name!==void 0&&e.nameStrategy==="title"?e.name:void 0;i!==void 0&&(n.title=i),r.flags.hasReferencedOpenAiAnyType&&(a||(a={}),a[r.openAiAnyTypeName]||(a[r.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:r.$refStrategy==="relative"?"1":[...r.basePath,r.definitionPath,r.openAiAnyTypeName].join("/")}}));let o=t===void 0?a?{...n,[r.definitionPath]:a}:n:{$ref:[...r.$refStrategy==="relative"?[]:r.basePath,r.definitionPath,t].join("/"),[r.definitionPath]:{...a,[t]:n}};return r.target==="jsonSchema7"?o.$schema="http://json-schema.org/draft-07/schema#":(r.target==="jsonSchema2019-09"||r.target==="openAi")&&(o.$schema="https://json-schema.org/draft/2019-09/schema#"),r.target==="openAi"&&("anyOf"in o||"oneOf"in o||"allOf"in o||"type"in o&&Array.isArray(o.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),o};var $l=require("path");var Rl=Ut(require("better-sqlite3"),1);var De=require("path"),rn=require("os"),sn=require("fs");var Sl=require("url"),xh={};function Sh(){return typeof __dirname<"u"?__dirname:(0,De.dirname)((0,Sl.fileURLToPath)(xh.url))}var I_=Sh(),nt=process.env.CLAUDE_MEM_DATA_DIR||(0,De.join)((0,rn.homedir)(),".claude-mem"),an=process.env.CLAUDE_CONFIG_DIR||(0,De.join)((0,rn.homedir)(),".claude"),N_=(0,De.join)(nt,"archives"),A_=(0,De.join)(nt,"logs"),$_=(0,De.join)(nt,"trash"),D_=(0,De.join)(nt,"backups"),C_=(0,De.join)(nt,"settings.json"),js=(0,De.join)(nt,"claude-mem.db"),xl=(0,De.join)(nt,"vector-db"),k_=(0,De.join)(an,"settings.json"),L_=(0,De.join)(an,"commands"),j_=(0,De.join)(an,"CLAUDE.md");function Fs(s){(0,sn.mkdirSync)(s,{recursive:!0})}var Ms=class{db;constructor(e){e||(Fs(nt),e=js),this.db=new Rl.default(e),this.db.pragma("journal_mode = WAL"),this.ensureFTSTables()}ensureFTSTables(){try{if(this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name LIKE '%_fts'").all().some(a=>a.name==="observations_fts"||a.name==="session_summaries_fts"))return;console.error("[SessionSearch] Creating FTS5 tables..."),this.db.exec(` CREATE VIRTUAL TABLE IF NOT EXISTS observations_fts USING fts5( title, subtitle, @@ -129,9 +129,9 @@ FROM user_prompts WHERE claude_session_id = ? ORDER BY prompt_number ASC - `).all(e)}close(){this.db.close()}};var wl=qt(require("better-sqlite3"),1);var nn=(n=>(n[n.DEBUG=0]="DEBUG",n[n.INFO=1]="INFO",n[n.WARN=2]="WARN",n[n.ERROR=3]="ERROR",n[n.SILENT=4]="SILENT",n))(nn||{}),on=class{level;useColor;constructor(){let e=process.env.CLAUDE_MEM_LOG_LEVEL?.toUpperCase()||"INFO";this.level=nn[e]??1,this.useColor=process.stdout.isTTY??!1}correlationId(e,r){return`obs-${e}-${r}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.level===0?`${e.message} + `).all(e)}close(){this.db.close()}};var wl=Ut(require("better-sqlite3"),1);var nn=(n=>(n[n.DEBUG=0]="DEBUG",n[n.INFO=1]="INFO",n[n.WARN=2]="WARN",n[n.ERROR=3]="ERROR",n[n.SILENT=4]="SILENT",n))(nn||{}),on=class{level;useColor;constructor(){let e=process.env.CLAUDE_MEM_LOG_LEVEL?.toUpperCase()||"INFO";this.level=nn[e]??1,this.useColor=process.stdout.isTTY??!1}correlationId(e,r){return`obs-${e}-${r}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.level===0?`${e.message} ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Object.keys(e);return r.length===0?"{}":r.length<=3?JSON.stringify(e):`{${r.length} keys: ${r.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,r){if(!r)return e;try{let a=typeof r=="string"?JSON.parse(r):r;if(e==="Bash"&&a.command){let t=a.command.length>50?a.command.substring(0,50)+"...":a.command;return`${e}(${t})`}if(e==="Read"&&a.file_path){let t=a.file_path.split("/").pop()||a.file_path;return`${e}(${t})`}if(e==="Edit"&&a.file_path){let t=a.file_path.split("/").pop()||a.file_path;return`${e}(${t})`}if(e==="Write"&&a.file_path){let t=a.file_path.split("/").pop()||a.file_path;return`${e}(${t})`}return e}catch{return e}}log(e,r,a,t,n){if(e0&&(f=` {${Object.entries(v).map(([P,E])=>`${P}=${E}`).join(", ")}}`)}let h=`[${i}] [${o}] [${l}] ${u}${a}${f}${d}`;e===3?console.error(h):console.log(h)}debug(e,r,a,t){this.log(0,e,r,a,t)}info(e,r,a,t){this.log(1,e,r,a,t)}warn(e,r,a,t){this.log(2,e,r,a,t)}error(e,r,a,t){this.log(3,e,r,a,t)}dataIn(e,r,a,t){this.info(e,`\u2192 ${r}`,a,t)}dataOut(e,r,a,t){this.info(e,`\u2190 ${r}`,a,t)}success(e,r,a,t){this.info(e,`\u2713 ${r}`,a,t)}failure(e,r,a,t){this.error(e,`\u2717 ${r}`,a,t)}timing(e,r,a,t){this.info(e,`\u23F1 ${r}`,t,{duration:`${a}ms`})}},Tl=new on;var qs=class{db;constructor(){Fs(at),this.db=new wl.default(js),this.db.pragma("journal_mode = WAL"),this.db.pragma("synchronous = NORMAL"),this.db.pragma("foreign_keys = ON"),this.initializeSchema(),this.ensureWorkerPortColumn(),this.ensurePromptTrackingColumns(),this.removeSessionSummariesUniqueConstraint(),this.addObservationHierarchicalFields(),this.makeObservationsTextNullable(),this.createUserPromptsTable(),this.ensureDiscoveryTokensColumn()}initializeSchema(){try{this.db.exec(` +`+JSON.stringify(n,null,2):d=" "+this.formatData(n));let f="";if(t){let{sessionId:p,sdkSessionId:g,correlationId:y,...v}=t;Object.keys(v).length>0&&(f=` {${Object.entries(v).map(([P,E])=>`${P}=${E}`).join(", ")}}`)}let h=`[${i}] [${o}] [${l}] ${u}${a}${f}${d}`;e===3?console.error(h):console.log(h)}debug(e,r,a,t){this.log(0,e,r,a,t)}info(e,r,a,t){this.log(1,e,r,a,t)}warn(e,r,a,t){this.log(2,e,r,a,t)}error(e,r,a,t){this.log(3,e,r,a,t)}dataIn(e,r,a,t){this.info(e,`\u2192 ${r}`,a,t)}dataOut(e,r,a,t){this.info(e,`\u2190 ${r}`,a,t)}success(e,r,a,t){this.info(e,`\u2713 ${r}`,a,t)}failure(e,r,a,t){this.error(e,`\u2717 ${r}`,a,t)}timing(e,r,a,t){this.info(e,`\u23F1 ${r}`,t,{duration:`${a}ms`})}},Tl=new on;var qs=class{db;constructor(){Fs(nt),this.db=new wl.default(js),this.db.pragma("journal_mode = WAL"),this.db.pragma("synchronous = NORMAL"),this.db.pragma("foreign_keys = ON"),this.initializeSchema(),this.ensureWorkerPortColumn(),this.ensurePromptTrackingColumns(),this.removeSessionSummariesUniqueConstraint(),this.addObservationHierarchicalFields(),this.makeObservationsTextNullable(),this.createUserPromptsTable(),this.ensureDiscoveryTokensColumn()}initializeSchema(){try{this.db.exec(` CREATE TABLE IF NOT EXISTS schema_versions ( id INTEGER PRIMARY KEY, version INTEGER UNIQUE NOT NULL, @@ -537,9 +537,9 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Obje JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id WHERE up.created_at_epoch >= ? AND up.created_at_epoch <= ? ${i.replace("project","s.project")} ORDER BY up.created_at_epoch ASC - `;try{let p=this.db.prepare(d).all(l,u,...o),g=this.db.prepare(f).all(l,u,...o),y=this.db.prepare(h).all(l,u,...o);return{observations:p,sessions:g.map(v=>({id:v.id,sdk_session_id:v.sdk_session_id,project:v.project,request:v.request,completed:v.completed,next_steps:v.next_steps,created_at:v.created_at,created_at_epoch:v.created_at_epoch})),prompts:y.map(v=>({id:v.id,claude_session_id:v.claude_session_id,project:v.project,prompt:v.prompt_text,created_at:v.created_at,created_at_epoch:v.created_at_epoch}))}}catch(p){return console.error("[SessionStore] Error querying timeline records:",p.message),{observations:[],sessions:[],prompts:[]}}}close(){this.db.close()}};var Ol=require("fs"),Pl=require("os"),Il=require("path"),Rh=(0,Il.join)((0,Pl.homedir)(),".claude-mem","silent.log");function Vr(s,e,r=""){let a=new Date().toISOString(),o=((new Error().stack||"").split(` + `;try{let p=this.db.prepare(d).all(l,u,...o),g=this.db.prepare(f).all(l,u,...o),y=this.db.prepare(h).all(l,u,...o);return{observations:p,sessions:g.map(v=>({id:v.id,sdk_session_id:v.sdk_session_id,project:v.project,request:v.request,completed:v.completed,next_steps:v.next_steps,created_at:v.created_at,created_at_epoch:v.created_at_epoch})),prompts:y.map(v=>({id:v.id,claude_session_id:v.claude_session_id,project:v.project,prompt:v.prompt_text,created_at:v.created_at,created_at_epoch:v.created_at_epoch}))}}catch(p){return console.error("[SessionStore] Error querying timeline records:",p.message),{observations:[],sessions:[],prompts:[]}}}close(){this.db.close()}};var Ol=require("fs"),Pl=require("os"),Il=require("path"),Rh=(0,Il.join)((0,Pl.homedir)(),".claude-mem","silent.log");function q(s,e,r=""){let a=new Date().toISOString(),o=((new Error().stack||"").split(` `)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),l=o?`${o[1].split("/").pop()}:${o[2]}`:"unknown",u=`[${a}] [${l}] ${s}`;if(e!==void 0)try{u+=` ${JSON.stringify(e)}`}catch(d){u+=` [stringify error: ${d}]`}u+=` -`;try{(0,Ol.appendFileSync)(Rh,u)}catch(d){console.error("[silent-debug] Failed to write to log:",d)}return r}var _e,ne,we=null,Th="cm__claude-mem";try{_e=new Ms,ne=new qs}catch(s){console.error("[search-server] Failed to initialize search:",s.message),process.exit(1)}async function ze(s,e,r){if(!we)throw new Error("Chroma client not initialized");Vr("queryChroma called",{query:s,limit:e,whereFilter:r});let a=r?JSON.stringify(r):void 0;Vr("where filter stringified",{whereFilter:r,whereStringified:a});let t={collection_name:Th,query_texts:[s],n_results:e,include:["documents","metadatas","distances"],where:a};Vr("calling chroma_query_documents",t);let n=await we.callTool({name:"chroma_query_documents",arguments:t}),i=n.content[0]?.text||"";Vr("chroma response received",{hasContent:!!n.content[0]?.text,textLength:i.length,textPreview:i.substring(0,200)});let o;try{o=JSON.parse(i)}catch(h){return console.error("[search-server] Failed to parse Chroma response as JSON:",h),console.error("[search-server] Raw Chroma response:",i),{ids:[],distances:[],metadatas:[]}}let l=[],u=o.ids?.[0]||[];for(let h of u){let p=h.match(/obs_(\d+)_/),g=h.match(/summary_(\d+)_/),y=h.match(/prompt_(\d+)/),v=null;p?v=parseInt(p[1],10):g?v=parseInt(g[1],10):y&&(v=parseInt(y[1],10)),v!==null&&!l.includes(v)&&l.push(v)}let d=o.distances?.[0]||[],f=o.metadatas?.[0]||[];return{ids:l,distances:d,metadatas:f}}function nr(){return` +`;try{(0,Ol.appendFileSync)(Rh,u)}catch(d){console.error("[silent-debug] Failed to write to log:",d)}return r}var be,oe,Oe=null,Th="cm__claude-mem";try{be=new Ms,oe=new qs}catch(s){q("[search-server] Failed to initialize search:",s.message),process.exit(1)}async function Ze(s,e,r){if(!Oe)throw new Error("Chroma client not initialized");q("queryChroma called",{query:s,limit:e,whereFilter:r});let a=r?JSON.stringify(r):void 0;q("where filter stringified",{whereFilter:r,whereStringified:a});let t={collection_name:Th,query_texts:[s],n_results:e,include:["documents","metadatas","distances"],where:a};q("calling chroma_query_documents",t);let n=await Oe.callTool({name:"chroma_query_documents",arguments:t}),i=n.content[0]?.text||"";q("chroma response received",{hasContent:!!n.content[0]?.text,textLength:i.length,textPreview:i.substring(0,200)});let o;try{o=JSON.parse(i)}catch(h){return q("[search-server] Failed to parse Chroma response as JSON:",h),q("[search-server] Raw Chroma response:",i),{ids:[],distances:[],metadatas:[]}}let l=[],u=o.ids?.[0]||[];for(let h of u){let p=h.match(/obs_(\d+)_/),g=h.match(/summary_(\d+)_/),y=h.match(/prompt_(\d+)/),v=null;p?v=parseInt(p[1],10):g?v=parseInt(g[1],10):y&&(v=parseInt(y[1],10)),v!==null&&!l.includes(v)&&l.push(v)}let d=o.distances?.[0]||[],f=o.metadatas?.[0]||[];return{ids:l,distances:d,metadatas:f}}function or(){return` --- \u{1F4A1} Search Strategy: ALWAYS search with index format FIRST to get an overview and identify relevant results. @@ -554,103 +554,103 @@ Search workflow: Other tips: \u2022 To search by concept: Use find_by_concept tool \u2022 To browse by type: Use find_by_type with ["decision", "feature", etc.] -\u2022 To sort by date: Use orderBy: "date_desc" or "date_asc"`}function cn(s,e,r,a,t){if(s.length===0)return s;let n=-1;if(typeof e=="number")n=s.findIndex(l=>l.type==="observation"&&l.data.id===e);else if(typeof e=="string"&&e.startsWith("S")){let l=parseInt(e.slice(1),10);n=s.findIndex(u=>u.type==="session"&&u.data.id===l)}else n=s.findIndex(l=>l.epoch>=r),n===-1&&(n=s.length-1);if(n===-1)return s;let i=Math.max(0,n-a),o=Math.min(s.length,n+t+1);return s.slice(i,o)}function $t(s,e){let r=s.title||`Observation #${s.id}`,a=new Date(s.created_at_epoch).toLocaleString(),t=s.type?`[${s.type}]`:"";return`${e+1}. ${t} ${r} +\u2022 To sort by date: Use orderBy: "date_desc" or "date_asc"`}function cn(s,e,r,a,t){if(s.length===0)return s;let n=-1;if(typeof e=="number")n=s.findIndex(l=>l.type==="observation"&&l.data.id===e);else if(typeof e=="string"&&e.startsWith("S")){let l=parseInt(e.slice(1),10);n=s.findIndex(u=>u.type==="session"&&u.data.id===l)}else n=s.findIndex(l=>l.epoch>=r),n===-1&&(n=s.length-1);if(n===-1)return s;let i=Math.max(0,n-a),o=Math.min(s.length,n+t+1);return s.slice(i,o)}function Dt(s,e){let r=s.title||`Observation #${s.id}`,a=new Date(s.created_at_epoch).toLocaleString(),t=s.type?`[${s.type}]`:"";return`${e+1}. ${t} ${r} Date: ${a} Source: claude-mem://observation/${s.id}`}function ln(s,e){let r=s.request||`Session ${s.sdk_session_id?.substring(0,8)||"unknown"}`,a=new Date(s.created_at_epoch).toLocaleString();return`${e+1}. ${r} Date: ${a} - Source: claude-mem://session/${s.sdk_session_id}`}function Dt(s){let e=s.title||`Observation #${s.id}`,r=[];r.push(`## ${e}`),r.push(`*Source: claude-mem://observation/${s.id}*`),r.push(""),s.subtitle&&(r.push(`**${s.subtitle}**`),r.push("")),s.narrative&&(r.push(s.narrative),r.push("")),s.text&&(r.push(s.text),r.push(""));let a=[];if(a.push(`Type: ${s.type}`),s.facts)try{let n=JSON.parse(s.facts);n.length>0&&a.push(`Facts: ${n.join("; ")}`)}catch{}if(s.concepts)try{let n=JSON.parse(s.concepts);n.length>0&&a.push(`Concepts: ${n.join(", ")}`)}catch{}if(s.files_read||s.files_modified){let n=[];if(s.files_read)try{n.push(...JSON.parse(s.files_read))}catch{}if(s.files_modified)try{n.push(...JSON.parse(s.files_modified))}catch{}n.length>0&&a.push(`Files: ${[...new Set(n)].join(", ")}`)}a.length>0&&(r.push("---"),r.push(a.join(" | ")));let t=new Date(s.created_at_epoch).toLocaleString();return r.push(""),r.push("---"),r.push(`Date: ${t}`),r.join(` + Source: claude-mem://session/${s.sdk_session_id}`}function Ct(s){let e=s.title||`Observation #${s.id}`,r=[];r.push(`## ${e}`),r.push(`*Source: claude-mem://observation/${s.id}*`),r.push(""),s.subtitle&&(r.push(`**${s.subtitle}**`),r.push("")),s.narrative&&(r.push(s.narrative),r.push("")),s.text&&(r.push(s.text),r.push(""));let a=[];if(a.push(`Type: ${s.type}`),s.facts)try{let n=JSON.parse(s.facts);n.length>0&&a.push(`Facts: ${n.join("; ")}`)}catch{}if(s.concepts)try{let n=JSON.parse(s.concepts);n.length>0&&a.push(`Concepts: ${n.join(", ")}`)}catch{}if(s.files_read||s.files_modified){let n=[];if(s.files_read)try{n.push(...JSON.parse(s.files_read))}catch{}if(s.files_modified)try{n.push(...JSON.parse(s.files_modified))}catch{}n.length>0&&a.push(`Files: ${[...new Set(n)].join(", ")}`)}a.length>0&&(r.push("---"),r.push(a.join(" | ")));let t=new Date(s.created_at_epoch).toLocaleString();return r.push(""),r.push("---"),r.push(`Date: ${t}`),r.join(` `)}function un(s){let e=s.request||`Session ${s.sdk_session_id?.substring(0,8)||"unknown"}`,r=[];r.push(`## ${e}`),r.push(`*Source: claude-mem://session/${s.sdk_session_id}*`),r.push(""),s.completed&&(r.push(`**Completed:** ${s.completed}`),r.push("")),s.learned&&(r.push(`**Learned:** ${s.learned}`),r.push("")),s.investigated&&(r.push(`**Investigated:** ${s.investigated}`),r.push("")),s.next_steps&&(r.push(`**Next Steps:** ${s.next_steps}`),r.push("")),s.notes&&(r.push(`**Notes:** ${s.notes}`),r.push(""));let a=[];if(s.files_read||s.files_edited){let n=[];if(s.files_read)try{n.push(...JSON.parse(s.files_read))}catch{}if(s.files_edited)try{n.push(...JSON.parse(s.files_edited))}catch{}n.length>0&&a.push(`Files: ${[...new Set(n)].join(", ")}`)}let t=new Date(s.created_at_epoch).toLocaleDateString();return a.push(`Date: ${t}`),a.length>0&&(r.push("---"),r.push(a.join(" | "))),r.join(` `)}function Nl(s,e){let r=new Date(s.created_at_epoch).toLocaleString();return`${e+1}. "${s.prompt_text}" Date: ${r} | Prompt #${s.prompt_number} Source: claude-mem://user-prompt/${s.id}`}function Al(s){let e=[];e.push(`## User Prompt #${s.prompt_number}`),e.push(`*Source: claude-mem://user-prompt/${s.id}*`),e.push(""),e.push(s.prompt_text),e.push(""),e.push("---");let r=new Date(s.created_at_epoch).toLocaleString();return e.push(`Date: ${r}`),e.join(` -`)}function pt(s){let e={...s};return e.concepts&&typeof e.concepts=="string"&&(e.concepts=e.concepts.split(",").map(r=>r.trim()).filter(Boolean)),e.files&&typeof e.files=="string"&&(e.files=e.files.split(",").map(r=>r.trim()).filter(Boolean)),e.obs_type&&typeof e.obs_type=="string"&&(e.obs_type=e.obs_type.split(",").map(r=>r.trim()).filter(Boolean)),e.type&&typeof e.type=="string"&&e.type.includes(",")&&(e.type=e.type.split(",").map(r=>r.trim()).filter(Boolean)),(e.dateStart||e.dateEnd)&&(e.dateRange={start:e.dateStart,end:e.dateEnd},delete e.dateStart,delete e.dateEnd),e}var wh=c.object({project:c.string().optional().describe("Filter by project name"),type:c.union([c.enum(["decision","bugfix","feature","refactor","discovery","change"]),c.array(c.enum(["decision","bugfix","feature","refactor","discovery","change"]))]).optional().describe("Filter by observation type (single value or comma-separated list)"),concepts:c.union([c.string(),c.array(c.string())]).optional().describe("Filter by concept tags (single value or comma-separated list)"),files:c.union([c.string(),c.array(c.string())]).optional().describe("Filter by file paths (single value or comma-separated list for partial match)"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date (ISO string or epoch)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date (ISO string or epoch)"),dateRange:c.object({start:c.union([c.string(),c.number()]).optional().describe("Start date (ISO string or epoch)"),end:c.union([c.string(),c.number()]).optional().describe("End date (ISO string or epoch)")}).optional().describe("Filter by date range (use dateStart/dateEnd instead for simpler URLs)"),limit:c.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),Dl=[{name:"search",description:'Unified search across all memory types (observations, sessions, and user prompts) using vector-first semantic search (ChromaDB). Returns combined results from all document types. IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.',inputSchema:c.object({query:c.string().optional().describe("Natural language search query for semantic ranking via ChromaDB vector search. Optional - omit for date-filtered queries only (Chroma cannot filter by date, requires direct SQLite)."),format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'),type:c.enum(["observations","sessions","prompts"]).optional().describe("Filter by document type (observations, sessions, or prompts). Omit to search all types."),obs_type:c.string().optional().describe('Filter observations by type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change). Only applies when type="observations"'),concepts:c.string().optional().describe('Filter by concept tags (single value or comma-separated list). Only applies when type="observations"'),files:c.string().optional().describe('Filter by file paths (single value or comma-separated list for partial match). Only applies when type="observations"'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=pt(s),{query:r,format:a="index",type:t,obs_type:n,concepts:i,files:o,...l}=e,u=[],d=[],f=[],h=!t||t==="observations",p=!t||t==="sessions",g=!t||t==="prompts";if(r)if(we){let E=!1;try{console.error(`[search-server] Using ChromaDB semantic search (type filter: ${t||"all"})`);let R;t==="observations"?R={doc_type:"observation"}:t==="sessions"?R={doc_type:"session_summary"}:t==="prompts"&&(R={doc_type:"user_prompt"});let T=await ze(r,100,R);if(E=!0,console.error(`[search-server] ChromaDB returned ${T.ids.length} semantic matches`),T.ids.length>0){let S=Date.now()-7776e6,I=T.metadatas.map((C,k)=>({id:T.ids[k],meta:C,isRecent:C&&C.created_at_epoch>S})).filter(C=>C.isRecent);console.error(`[search-server] ${I.length} results within 90-day window`);let D=[],$=[],L=[];for(let C of I){let k=C.meta?.doc_type;k==="observation"&&h?D.push(C.id):k==="session_summary"&&p?$.push(C.id):k==="user_prompt"&&g&&L.push(C.id)}if(console.error(`[search-server] Categorized: ${D.length} obs, ${$.length} sessions, ${L.length} prompts`),D.length>0){let C={...l,type:n,concepts:i,files:o};u=ne.getObservationsByIds(D,C)}$.length>0&&(d=ne.getSessionSummariesByIds($,{orderBy:"date_desc",limit:l.limit})),L.length>0&&(f=ne.getUserPromptsByIds(L,{orderBy:"date_desc",limit:l.limit})),console.error(`[search-server] Hydrated ${u.length} obs, ${d.length} sessions, ${f.length} prompts from SQLite`)}else console.error("[search-server] ChromaDB found no matches (this is final - NOT falling back to FTS5)")}catch(R){console.error("[search-server] ChromaDB failed - returning empty results (FTS5 fallback removed):",R.message),console.error("[search-server] Install UVX/Python to enable vector search: https://docs.astral.sh/uv/getting-started/installation/"),u=[],d=[],f=[]}}else console.error("[search-server] ChromaDB not initialized - returning empty results (FTS5 fallback removed)"),console.error("[search-server] Install UVX/Python to enable vector search: https://docs.astral.sh/uv/getting-started/installation/"),u=[],d=[],f=[];else{console.error("[search-server] Filter-only query (no query text), using direct SQLite filtering (enables date filters)");let E={...l,type:n,concepts:i,files:o};h&&(u=_e.searchObservations(void 0,E)),p&&(d=_e.searchSessions(void 0,l)),g&&(f=_e.searchUserPrompts(void 0,l))}let y=u.length+d.length+f.length;if(y===0)return{content:[{type:"text",text:`No results found matching "${r}"`}]};let v=[...u.map(E=>({type:"observation",data:E,epoch:E.created_at_epoch})),...d.map(E=>({type:"session",data:E,epoch:E.created_at_epoch})),...f.map(E=>({type:"prompt",data:E,epoch:E.created_at_epoch}))];l.orderBy==="date_desc"?v.sort((E,R)=>R.epoch-E.epoch):l.orderBy==="date_asc"&&v.sort((E,R)=>E.epoch-R.epoch);let x=v.slice(0,l.limit||20),P;if(a==="index"){let E=`Found ${y} result(s) matching "${r}" (${u.length} obs, ${d.length} sessions, ${f.length} prompts): +`)}function ft(s){let e={...s};return e.concepts&&typeof e.concepts=="string"&&(e.concepts=e.concepts.split(",").map(r=>r.trim()).filter(Boolean)),e.files&&typeof e.files=="string"&&(e.files=e.files.split(",").map(r=>r.trim()).filter(Boolean)),e.obs_type&&typeof e.obs_type=="string"&&(e.obs_type=e.obs_type.split(",").map(r=>r.trim()).filter(Boolean)),e.type&&typeof e.type=="string"&&e.type.includes(",")&&(e.type=e.type.split(",").map(r=>r.trim()).filter(Boolean)),(e.dateStart||e.dateEnd)&&(e.dateRange={start:e.dateStart,end:e.dateEnd},delete e.dateStart,delete e.dateEnd),e}var wh=c.object({project:c.string().optional().describe("Filter by project name"),type:c.union([c.enum(["decision","bugfix","feature","refactor","discovery","change"]),c.array(c.enum(["decision","bugfix","feature","refactor","discovery","change"]))]).optional().describe("Filter by observation type (single value or comma-separated list)"),concepts:c.union([c.string(),c.array(c.string())]).optional().describe("Filter by concept tags (single value or comma-separated list)"),files:c.union([c.string(),c.array(c.string())]).optional().describe("Filter by file paths (single value or comma-separated list for partial match)"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date (ISO string or epoch)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date (ISO string or epoch)"),dateRange:c.object({start:c.union([c.string(),c.number()]).optional().describe("Start date (ISO string or epoch)"),end:c.union([c.string(),c.number()]).optional().describe("End date (ISO string or epoch)")}).optional().describe("Filter by date range (use dateStart/dateEnd instead for simpler URLs)"),limit:c.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),Dl=[{name:"search",description:'Unified search across all memory types (observations, sessions, and user prompts) using vector-first semantic search (ChromaDB). Returns combined results from all document types. IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.',inputSchema:c.object({query:c.string().optional().describe("Natural language search query for semantic ranking via ChromaDB vector search. Optional - omit for date-filtered queries only (Chroma cannot filter by date, requires direct SQLite)."),format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'),type:c.enum(["observations","sessions","prompts"]).optional().describe("Filter by document type (observations, sessions, or prompts). Omit to search all types."),obs_type:c.string().optional().describe('Filter observations by type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change). Only applies when type="observations"'),concepts:c.string().optional().describe('Filter by concept tags (single value or comma-separated list). Only applies when type="observations"'),files:c.string().optional().describe('Filter by file paths (single value or comma-separated list for partial match). Only applies when type="observations"'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=ft(s),{query:r,format:a="index",type:t,obs_type:n,concepts:i,files:o,...l}=e,u=[],d=[],f=[],h=!t||t==="observations",p=!t||t==="sessions",g=!t||t==="prompts";if(r)if(Oe){let E=!1;try{q(`[search-server] Using ChromaDB semantic search (type filter: ${t||"all"})`);let R;t==="observations"?R={doc_type:"observation"}:t==="sessions"?R={doc_type:"session_summary"}:t==="prompts"&&(R={doc_type:"user_prompt"});let T=await Ze(r,100,R);if(E=!0,q(`[search-server] ChromaDB returned ${T.ids.length} semantic matches`),T.ids.length>0){let S=Date.now()-7776e6,I=T.metadatas.map((C,k)=>({id:T.ids[k],meta:C,isRecent:C&&C.created_at_epoch>S})).filter(C=>C.isRecent);q(`[search-server] ${I.length} results within 90-day window`);let D=[],$=[],L=[];for(let C of I){let k=C.meta?.doc_type;k==="observation"&&h?D.push(C.id):k==="session_summary"&&p?$.push(C.id):k==="user_prompt"&&g&&L.push(C.id)}if(q(`[search-server] Categorized: ${D.length} obs, ${$.length} sessions, ${L.length} prompts`),D.length>0){let C={...l,type:n,concepts:i,files:o};u=oe.getObservationsByIds(D,C)}$.length>0&&(d=oe.getSessionSummariesByIds($,{orderBy:"date_desc",limit:l.limit})),L.length>0&&(f=oe.getUserPromptsByIds(L,{orderBy:"date_desc",limit:l.limit})),q(`[search-server] Hydrated ${u.length} obs, ${d.length} sessions, ${f.length} prompts from SQLite`)}else q("[search-server] ChromaDB found no matches (this is final - NOT falling back to FTS5)")}catch(R){q("[search-server] ChromaDB failed - returning empty results (FTS5 fallback removed):",R.message),q("[search-server] Install UVX/Python to enable vector search: https://docs.astral.sh/uv/getting-started/installation/"),u=[],d=[],f=[]}}else q("[search-server] ChromaDB not initialized - returning empty results (FTS5 fallback removed)"),q("[search-server] Install UVX/Python to enable vector search: https://docs.astral.sh/uv/getting-started/installation/"),u=[],d=[],f=[];else{q("[search-server] Filter-only query (no query text), using direct SQLite filtering (enables date filters)");let E={...l,type:n,concepts:i,files:o};h&&(u=be.searchObservations(void 0,E)),p&&(d=be.searchSessions(void 0,l)),g&&(f=be.searchUserPrompts(void 0,l))}let y=u.length+d.length+f.length;if(y===0)return{content:[{type:"text",text:`No results found matching "${r}"`}]};let v=[...u.map(E=>({type:"observation",data:E,epoch:E.created_at_epoch})),...d.map(E=>({type:"session",data:E,epoch:E.created_at_epoch})),...f.map(E=>({type:"prompt",data:E,epoch:E.created_at_epoch}))];l.orderBy==="date_desc"?v.sort((E,R)=>R.epoch-E.epoch):l.orderBy==="date_asc"&&v.sort((E,R)=>E.epoch-R.epoch);let x=v.slice(0,l.limit||20),P;if(a==="index"){let E=`Found ${y} result(s) matching "${r}" (${u.length} obs, ${d.length} sessions, ${f.length} prompts): -`,R=x.map((T,S)=>T.type==="observation"?$t(T.data,S):T.type==="session"?ln(T.data,S):Nl(T.data,S));P=E+R.join(` +`,R=x.map((T,S)=>T.type==="observation"?Dt(T.data,S):T.type==="session"?ln(T.data,S):Nl(T.data,S));P=E+R.join(` -`)+nr()}else P=x.map(R=>R.type==="observation"?Dt(R.data):R.type==="session"?un(R.data):Al(R.data)).join(` +`)+or()}else P=x.map(R=>R.type==="observation"?Ct(R.data):R.type==="session"?un(R.data):Al(R.data)).join(` --- -`);return{content:[{type:"text",text:P}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"timeline",description:"Get a unified timeline of context around a specific point in time OR search query. Supports two modes: (1) anchor-based: provide observation ID, session ID, or timestamp to center timeline around; (2) query-based: provide natural language query to find relevant observation and center timeline around it. All record types (observations, sessions, prompts) are interleaved chronologically.",inputSchema:c.object({anchor:c.union([c.number(),c.string()]).optional().describe('Anchor point: observation ID (number), session ID (e.g., "S123"), or ISO timestamp. Use this OR query, not both.'),query:c.string().optional().describe("Natural language search query to find relevant observation as anchor. Use this OR anchor, not both."),depth_before:c.number().min(0).max(50).default(10).describe("Number of records to retrieve before anchor (default: 10)"),depth_after:c.number().min(0).max(50).default(10).describe("Number of records to retrieve after anchor (default: 10)"),project:c.string().optional().describe("Filter by project name")}),handler:async s=>{try{let y=function(S){return new Date(S).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric"})},v=function(S){return new Date(S).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0})},x=function(S){return new Date(S).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0})},P=function(S){return S?Math.ceil(S.length/4):0};var e=y,r=v,a=x,t=P;let{anchor:n,query:i,depth_before:o=10,depth_after:l=10,project:u}=s;if(!n&&!i)return{content:[{type:"text",text:'Error: Must provide either "anchor" or "query" parameter'}],isError:!0};if(n&&i)return{content:[{type:"text",text:'Error: Cannot provide both "anchor" and "query" parameters. Use one or the other.'}],isError:!0};let d,f,h;if(i){let S=[];if(we)try{console.error("[search-server] Using hybrid semantic search for timeline query");let D=await ze(i,100);if(console.error(`[search-server] Chroma returned ${D.ids.length} semantic matches`),D.ids.length>0){let $=Date.now()-7776e6,L=D.ids.filter((C,k)=>{let N=D.metadatas[k];return N&&N.created_at_epoch>$});L.length>0&&(S=ne.getObservationsByIds(L,{orderBy:"date_desc",limit:1}))}}catch(D){console.error("[search-server] Chroma query failed - no results (FTS5 fallback removed):",D.message)}if(S.length===0)return{content:[{type:"text",text:`No observations found matching "${i}". Try a different search query.`}]};let I=S[0];d=I.id,f=I.created_at_epoch,console.error(`[search-server] Query mode: Using observation #${I.id} as timeline anchor`),h=ne.getTimelineAroundObservation(I.id,I.created_at_epoch,o,l,u)}else if(typeof n=="number"){let S=ne.getObservationById(n);if(!S)return{content:[{type:"text",text:`Observation #${n} not found`}],isError:!0};d=n,f=S.created_at_epoch,h=ne.getTimelineAroundObservation(n,f,o,l,u)}else if(typeof n=="string")if(n.startsWith("S")||n.startsWith("#S")){let S=n.replace(/^#?S/,""),I=parseInt(S,10),D=ne.getSessionSummariesByIds([I]);if(D.length===0)return{content:[{type:"text",text:`Session #${I} not found`}],isError:!0};f=D[0].created_at_epoch,d=`S${I}`,h=ne.getTimelineAroundTimestamp(f,o,l,u)}else{let S=new Date(n);if(isNaN(S.getTime()))return{content:[{type:"text",text:`Invalid timestamp: ${n}`}],isError:!0};f=S.getTime(),d=n,h=ne.getTimelineAroundTimestamp(f,o,l,u)}else return{content:[{type:"text",text:'Invalid anchor: must be observation ID (number), session ID (e.g., "S123"), or ISO timestamp'}],isError:!0};let p=[...h.observations.map(S=>({type:"observation",data:S,epoch:S.created_at_epoch})),...h.sessions.map(S=>({type:"session",data:S,epoch:S.created_at_epoch})),...h.prompts.map(S=>({type:"prompt",data:S,epoch:S.created_at_epoch}))];p.sort((S,I)=>S.epoch-I.epoch);let g=cn(p,d,f,o,l);if(g.length===0)return{content:[{type:"text",text:i?`Found observation matching "${i}", but no timeline context available (${o} records before, ${l} records after).`:`No context found around anchor (${o} records before, ${l} records after)`}]};let E=[];if(i){let S=g.find(D=>D.type==="observation"&&D.data.id===d),I=S?S.data.title||"Untitled":"Unknown";E.push(`# Timeline for query: "${i}"`),E.push(`**Anchor:** Observation #${d} - ${I}`)}else E.push(`# Timeline around anchor: ${d}`);E.push(`**Window:** ${o} records before \u2192 ${l} records after | **Items:** ${g.length}`),E.push(""),E.push("**Legend:** \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u{1F9E0} decision"),E.push("");let R=new Map;for(let S of g){let I=y(S.epoch);R.has(I)||R.set(I,[]),R.get(I).push(S)}let T=Array.from(R.entries()).sort((S,I)=>{let D=new Date(S[0]).getTime(),$=new Date(I[0]).getTime();return D-$});for(let[S,I]of T){E.push(`### ${S}`),E.push("");let D=null,$="",L=!1;for(let C of I){let k=typeof d=="number"&&C.type==="observation"&&C.data.id===d||typeof d=="string"&&d.startsWith("S")&&C.type==="session"&&`S${C.data.id}`===d;if(C.type==="session"){L&&(E.push(""),L=!1,D=null,$="");let N=C.data,A=N.request||"Session summary",M=`claude-mem://session-summary/${N.id}`,X=k?" \u2190 **ANCHOR**":"";E.push(`**\u{1F3AF} #S${N.id}** ${A} (${x(C.epoch)}) [\u2192](${M})${X}`),E.push("")}else if(C.type==="prompt"){L&&(E.push(""),L=!1,D=null,$="");let N=C.data,A=N.prompt.length>100?N.prompt.substring(0,100)+"...":N.prompt;E.push(`**\u{1F4AC} User Prompt #${N.prompt_number}** (${x(C.epoch)})`),E.push(`> ${A}`),E.push("")}else if(C.type==="observation"){let N=C.data,A="General";A!==D&&(L&&E.push(""),E.push(`**${A}**`),E.push("| ID | Time | T | Title | Tokens |"),E.push("|----|------|---|-------|--------|"),D=A,L=!0,$="");let M="\u2022";switch(N.type){case"bugfix":M="\u{1F534}";break;case"feature":M="\u{1F7E3}";break;case"refactor":M="\u{1F504}";break;case"change":M="\u2705";break;case"discovery":M="\u{1F535}";break;case"decision":M="\u{1F9E0}";break}let X=v(C.epoch),W=N.title||"Untitled",ee=P(N.narrative),z=X!==$?X:"\u2033";$=X;let pe=k?" \u2190 **ANCHOR**":"";E.push(`| #${N.id} | ${z} | ${M} | ${W}${pe} | ~${ee} |`)}}L&&E.push("")}return{content:[{type:"text",text:E.join(` -`)}]}}catch(n){return{content:[{type:"text",text:`Timeline query failed: ${n.message}`}],isError:!0}}}},{name:"decisions",description:"Semantic shortcut to find decision-type observations. Returns observations where important architectural, technical, or process decisions were made. Supports optional semantic search query to filter decisions by relevance.",inputSchema:c.object({query:c.string().optional().describe("Search query to filter decisions semantically"),format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default), "full" for complete details'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=pt(s),{query:r,format:a="index",...t}=e,n=[];if(we)try{if(r){console.error("[search-server] Using Chroma semantic search with type=decision filter");let l=(await ze(r,Math.min((t.limit||20)*2,100),{type:"decision"})).ids;l.length>0&&(n=ne.getObservationsByIds(l,{...t,type:"decision"}),n.sort((u,d)=>l.indexOf(u.id)-l.indexOf(d.id)))}else{console.error("[search-server] Using metadata-first + semantic ranking for decisions");let o=_e.findByType("decision",t);if(o.length>0){let l=o.map(f=>f.id),u=await ze("decision",Math.min(l.length,100)),d=[];for(let f of u.ids)l.includes(f)&&!d.includes(f)&&d.push(f);d.length>0&&(n=ne.getObservationsByIds(d,{limit:t.limit||20}),n.sort((f,h)=>d.indexOf(f.id)-d.indexOf(h.id)))}}}catch(o){console.error("[search-server] Chroma search failed, using SQLite fallback:",o.message)}if(n.length===0&&(n=_e.findByType("decision",t)),n.length===0)return{content:[{type:"text",text:"No decision observations found"}]};let i;if(a==="index"){let o=`Found ${n.length} decision(s): +`);return{content:[{type:"text",text:P}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"timeline",description:"Get a unified timeline of context around a specific point in time OR search query. Supports two modes: (1) anchor-based: provide observation ID, session ID, or timestamp to center timeline around; (2) query-based: provide natural language query to find relevant observation and center timeline around it. All record types (observations, sessions, prompts) are interleaved chronologically.",inputSchema:c.object({anchor:c.union([c.number(),c.string()]).optional().describe('Anchor point: observation ID (number), session ID (e.g., "S123"), or ISO timestamp. Use this OR query, not both.'),query:c.string().optional().describe("Natural language search query to find relevant observation as anchor. Use this OR anchor, not both."),depth_before:c.number().min(0).max(50).default(10).describe("Number of records to retrieve before anchor (default: 10)"),depth_after:c.number().min(0).max(50).default(10).describe("Number of records to retrieve after anchor (default: 10)"),project:c.string().optional().describe("Filter by project name")}),handler:async s=>{try{let y=function(S){return new Date(S).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric"})},v=function(S){return new Date(S).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0})},x=function(S){return new Date(S).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0})},P=function(S){return S?Math.ceil(S.length/4):0};var e=y,r=v,a=x,t=P;let{anchor:n,query:i,depth_before:o=10,depth_after:l=10,project:u}=s;if(!n&&!i)return{content:[{type:"text",text:'Error: Must provide either "anchor" or "query" parameter'}],isError:!0};if(n&&i)return{content:[{type:"text",text:'Error: Cannot provide both "anchor" and "query" parameters. Use one or the other.'}],isError:!0};let d,f,h;if(i){let S=[];if(Oe)try{q("[search-server] Using hybrid semantic search for timeline query");let D=await Ze(i,100);if(q(`[search-server] Chroma returned ${D.ids.length} semantic matches`),D.ids.length>0){let $=Date.now()-7776e6,L=D.ids.filter((C,k)=>{let N=D.metadatas[k];return N&&N.created_at_epoch>$});L.length>0&&(S=oe.getObservationsByIds(L,{orderBy:"date_desc",limit:1}))}}catch(D){q("[search-server] Chroma query failed - no results (FTS5 fallback removed):",D.message)}if(S.length===0)return{content:[{type:"text",text:`No observations found matching "${i}". Try a different search query.`}]};let I=S[0];d=I.id,f=I.created_at_epoch,q(`[search-server] Query mode: Using observation #${I.id} as timeline anchor`),h=oe.getTimelineAroundObservation(I.id,I.created_at_epoch,o,l,u)}else if(typeof n=="number"){let S=oe.getObservationById(n);if(!S)return{content:[{type:"text",text:`Observation #${n} not found`}],isError:!0};d=n,f=S.created_at_epoch,h=oe.getTimelineAroundObservation(n,f,o,l,u)}else if(typeof n=="string")if(n.startsWith("S")||n.startsWith("#S")){let S=n.replace(/^#?S/,""),I=parseInt(S,10),D=oe.getSessionSummariesByIds([I]);if(D.length===0)return{content:[{type:"text",text:`Session #${I} not found`}],isError:!0};f=D[0].created_at_epoch,d=`S${I}`,h=oe.getTimelineAroundTimestamp(f,o,l,u)}else{let S=new Date(n);if(isNaN(S.getTime()))return{content:[{type:"text",text:`Invalid timestamp: ${n}`}],isError:!0};f=S.getTime(),d=n,h=oe.getTimelineAroundTimestamp(f,o,l,u)}else return{content:[{type:"text",text:'Invalid anchor: must be observation ID (number), session ID (e.g., "S123"), or ISO timestamp'}],isError:!0};let p=[...h.observations.map(S=>({type:"observation",data:S,epoch:S.created_at_epoch})),...h.sessions.map(S=>({type:"session",data:S,epoch:S.created_at_epoch})),...h.prompts.map(S=>({type:"prompt",data:S,epoch:S.created_at_epoch}))];p.sort((S,I)=>S.epoch-I.epoch);let g=cn(p,d,f,o,l);if(g.length===0)return{content:[{type:"text",text:i?`Found observation matching "${i}", but no timeline context available (${o} records before, ${l} records after).`:`No context found around anchor (${o} records before, ${l} records after)`}]};let E=[];if(i){let S=g.find(D=>D.type==="observation"&&D.data.id===d),I=S?S.data.title||"Untitled":"Unknown";E.push(`# Timeline for query: "${i}"`),E.push(`**Anchor:** Observation #${d} - ${I}`)}else E.push(`# Timeline around anchor: ${d}`);E.push(`**Window:** ${o} records before \u2192 ${l} records after | **Items:** ${g.length}`),E.push(""),E.push("**Legend:** \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u{1F9E0} decision"),E.push("");let R=new Map;for(let S of g){let I=y(S.epoch);R.has(I)||R.set(I,[]),R.get(I).push(S)}let T=Array.from(R.entries()).sort((S,I)=>{let D=new Date(S[0]).getTime(),$=new Date(I[0]).getTime();return D-$});for(let[S,I]of T){E.push(`### ${S}`),E.push("");let D=null,$="",L=!1;for(let C of I){let k=typeof d=="number"&&C.type==="observation"&&C.data.id===d||typeof d=="string"&&d.startsWith("S")&&C.type==="session"&&`S${C.data.id}`===d;if(C.type==="session"){L&&(E.push(""),L=!1,D=null,$="");let N=C.data,A=N.request||"Session summary",M=`claude-mem://session-summary/${N.id}`,W=k?" \u2190 **ANCHOR**":"";E.push(`**\u{1F3AF} #S${N.id}** ${A} (${x(C.epoch)}) [\u2192](${M})${W}`),E.push("")}else if(C.type==="prompt"){L&&(E.push(""),L=!1,D=null,$="");let N=C.data,A=N.prompt.length>100?N.prompt.substring(0,100)+"...":N.prompt;E.push(`**\u{1F4AC} User Prompt #${N.prompt_number}** (${x(C.epoch)})`),E.push(`> ${A}`),E.push("")}else if(C.type==="observation"){let N=C.data,A="General";A!==D&&(L&&E.push(""),E.push(`**${A}**`),E.push("| ID | Time | T | Title | Tokens |"),E.push("|----|------|---|-------|--------|"),D=A,L=!0,$="");let M="\u2022";switch(N.type){case"bugfix":M="\u{1F534}";break;case"feature":M="\u{1F7E3}";break;case"refactor":M="\u{1F504}";break;case"change":M="\u2705";break;case"discovery":M="\u{1F535}";break;case"decision":M="\u{1F9E0}";break}let W=v(C.epoch),Q=N.title||"Untitled",te=P(N.narrative),Z=W!==$?W:"\u2033";$=W;let fe=k?" \u2190 **ANCHOR**":"";E.push(`| #${N.id} | ${Z} | ${M} | ${Q}${fe} | ~${te} |`)}}L&&E.push("")}return{content:[{type:"text",text:E.join(` +`)}]}}catch(n){return{content:[{type:"text",text:`Timeline query failed: ${n.message}`}],isError:!0}}}},{name:"decisions",description:"Semantic shortcut to find decision-type observations. Returns observations where important architectural, technical, or process decisions were made. Supports optional semantic search query to filter decisions by relevance.",inputSchema:c.object({query:c.string().optional().describe("Search query to filter decisions semantically"),format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default), "full" for complete details'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=ft(s),{query:r,format:a="index",...t}=e,n=[];if(Oe)try{if(r){q("[search-server] Using Chroma semantic search with type=decision filter");let l=(await Ze(r,Math.min((t.limit||20)*2,100),{type:"decision"})).ids;l.length>0&&(n=oe.getObservationsByIds(l,{...t,type:"decision"}),n.sort((u,d)=>l.indexOf(u.id)-l.indexOf(d.id)))}else{q("[search-server] Using metadata-first + semantic ranking for decisions");let o=be.findByType("decision",t);if(o.length>0){let l=o.map(f=>f.id),u=await Ze("decision",Math.min(l.length,100)),d=[];for(let f of u.ids)l.includes(f)&&!d.includes(f)&&d.push(f);d.length>0&&(n=oe.getObservationsByIds(d,{limit:t.limit||20}),n.sort((f,h)=>d.indexOf(f.id)-d.indexOf(h.id)))}}}catch(o){q("[search-server] Chroma search failed, using SQLite fallback:",o.message)}if(n.length===0&&(n=be.findByType("decision",t)),n.length===0)return{content:[{type:"text",text:"No decision observations found"}]};let i;if(a==="index"){let o=`Found ${n.length} decision(s): -`,l=n.map((u,d)=>$t(u,d));i=o+l.join(` +`,l=n.map((u,d)=>Dt(u,d));i=o+l.join(` -`)}else i=n.map(l=>Dt(l)).join(` +`)}else i=n.map(l=>Ct(l)).join(` --- -`);return{content:[{type:"text",text:i}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"changes",description:'Semantic shortcut to find change-related observations. Returns observations documenting what changed in the codebase, system behavior, or project state. Searches for type="change" OR concept="change" OR concept="what-changed".',inputSchema:c.object({format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default), "full" for complete details'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=pt(s),{format:r="index",...a}=e,t=[];if(we)try{console.error("[search-server] Using hybrid search for change-related observations");let i=_e.findByType("change",a),o=_e.findByConcept("change",a),l=_e.findByConcept("what-changed",a),u=new Set;if([...i,...o,...l].forEach(d=>u.add(d.id)),u.size>0){let d=Array.from(u),f=await ze("what changed",Math.min(d.length,100)),h=[];for(let p of f.ids)d.includes(p)&&!h.includes(p)&&h.push(p);h.length>0&&(t=ne.getObservationsByIds(h,{limit:a.limit||20}),t.sort((p,g)=>h.indexOf(p.id)-h.indexOf(g.id)))}}catch(i){console.error("[search-server] Chroma ranking failed, using SQLite order:",i.message)}if(t.length===0){let i=_e.findByType("change",a),o=_e.findByConcept("change",a),l=_e.findByConcept("what-changed",a),u=new Set;[...i,...o,...l].forEach(d=>u.add(d.id)),t=Array.from(u).map(d=>i.find(f=>f.id===d)||o.find(f=>f.id===d)||l.find(f=>f.id===d)).filter(Boolean),t.sort((d,f)=>f.created_at_epoch-d.created_at_epoch),t=t.slice(0,a.limit||20)}if(t.length===0)return{content:[{type:"text",text:"No change-related observations found"}]};let n;if(r==="index"){let i=`Found ${t.length} change-related observation(s): +`);return{content:[{type:"text",text:i}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"changes",description:'Semantic shortcut to find change-related observations. Returns observations documenting what changed in the codebase, system behavior, or project state. Searches for type="change" OR concept="change" OR concept="what-changed".',inputSchema:c.object({format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default), "full" for complete details'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=ft(s),{format:r="index",...a}=e,t=[];if(Oe)try{q("[search-server] Using hybrid search for change-related observations");let i=be.findByType("change",a),o=be.findByConcept("change",a),l=be.findByConcept("what-changed",a),u=new Set;if([...i,...o,...l].forEach(d=>u.add(d.id)),u.size>0){let d=Array.from(u),f=await Ze("what changed",Math.min(d.length,100)),h=[];for(let p of f.ids)d.includes(p)&&!h.includes(p)&&h.push(p);h.length>0&&(t=oe.getObservationsByIds(h,{limit:a.limit||20}),t.sort((p,g)=>h.indexOf(p.id)-h.indexOf(g.id)))}}catch(i){q("[search-server] Chroma ranking failed, using SQLite order:",i.message)}if(t.length===0){let i=be.findByType("change",a),o=be.findByConcept("change",a),l=be.findByConcept("what-changed",a),u=new Set;[...i,...o,...l].forEach(d=>u.add(d.id)),t=Array.from(u).map(d=>i.find(f=>f.id===d)||o.find(f=>f.id===d)||l.find(f=>f.id===d)).filter(Boolean),t.sort((d,f)=>f.created_at_epoch-d.created_at_epoch),t=t.slice(0,a.limit||20)}if(t.length===0)return{content:[{type:"text",text:"No change-related observations found"}]};let n;if(r==="index"){let i=`Found ${t.length} change-related observation(s): -`,o=t.map((l,u)=>$t(l,u));n=i+o.join(` +`,o=t.map((l,u)=>Dt(l,u));n=i+o.join(` -`)}else n=t.map(o=>Dt(o)).join(` +`)}else n=t.map(o=>Ct(o)).join(` --- -`);return{content:[{type:"text",text:n}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"how_it_works",description:'Semantic shortcut to find "how it works" explanations. Returns observations documenting system architecture, component interactions, data flow, and technical mechanisms. Searches for concept="how-it-works".',inputSchema:c.object({format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default), "full" for complete details'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=pt(s),{format:r="index",...a}=e,t=[];if(we)try{console.error("[search-server] Using metadata-first + semantic ranking for how-it-works");let i=_e.findByConcept("how-it-works",a);if(i.length>0){let o=i.map(d=>d.id),l=await ze("how it works architecture",Math.min(o.length,100)),u=[];for(let d of l.ids)o.includes(d)&&!u.includes(d)&&u.push(d);u.length>0&&(t=ne.getObservationsByIds(u,{limit:a.limit||20}),t.sort((d,f)=>u.indexOf(d.id)-u.indexOf(f.id)))}}catch(i){console.error("[search-server] Chroma ranking failed, using SQLite order:",i.message)}if(t.length===0&&(t=_e.findByConcept("how-it-works",a)),t.length===0)return{content:[{type:"text",text:'No "how it works" observations found'}]};let n;if(r==="index"){let i=`Found ${t.length} "how it works" observation(s): +`);return{content:[{type:"text",text:n}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"how_it_works",description:'Semantic shortcut to find "how it works" explanations. Returns observations documenting system architecture, component interactions, data flow, and technical mechanisms. Searches for concept="how-it-works".',inputSchema:c.object({format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default), "full" for complete details'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=ft(s),{format:r="index",...a}=e,t=[];if(Oe)try{q("[search-server] Using metadata-first + semantic ranking for how-it-works");let i=be.findByConcept("how-it-works",a);if(i.length>0){let o=i.map(d=>d.id),l=await Ze("how it works architecture",Math.min(o.length,100)),u=[];for(let d of l.ids)o.includes(d)&&!u.includes(d)&&u.push(d);u.length>0&&(t=oe.getObservationsByIds(u,{limit:a.limit||20}),t.sort((d,f)=>u.indexOf(d.id)-u.indexOf(f.id)))}}catch(i){q("[search-server] Chroma ranking failed, using SQLite order:",i.message)}if(t.length===0&&(t=be.findByConcept("how-it-works",a)),t.length===0)return{content:[{type:"text",text:'No "how it works" observations found'}]};let n;if(r==="index"){let i=`Found ${t.length} "how it works" observation(s): -`,o=t.map((l,u)=>$t(l,u));n=i+o.join(` +`,o=t.map((l,u)=>Dt(l,u));n=i+o.join(` -`)}else n=t.map(o=>Dt(o)).join(` +`)}else n=t.map(o=>Ct(o)).join(` --- -`);return{content:[{type:"text",text:n}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"search_observations",description:'DEPRECATED: Use the unified "search" tool instead. Search observations using vector-first semantic search (ChromaDB). IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.',inputSchema:c.object({query:c.string().describe("Natural language search query for semantic ranking via ChromaDB vector search"),format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'),...wh.shape}),handler:async s=>{try{let e=pt(s),{query:r,format:a="index",...t}=e,n=[];if(we)try{console.error("[search-server] Using hybrid semantic search (Chroma + SQLite)");let o=await ze(r,100);if(console.error(`[search-server] Chroma returned ${o.ids.length} semantic matches`),o.ids.length>0){let l=Date.now()-7776e6,u=o.ids.filter((d,f)=>{let h=o.metadatas[f];return h&&h.created_at_epoch>l});if(console.error(`[search-server] ${u.length} results within 90-day window`),u.length>0){let d=t.limit||20;n=ne.getObservationsByIds(u,{orderBy:"date_desc",limit:d}),console.error(`[search-server] Hydrated ${n.length} observations from SQLite`)}}}catch(o){console.error("[search-server] Chroma query failed - no results (FTS5 fallback removed):",o.message)}if(n.length===0)return{content:[{type:"text",text:`No observations found matching "${r}"`}]};let i;if(a==="index"){let o=`Found ${n.length} observation(s) matching "${r}": +`);return{content:[{type:"text",text:n}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"search_observations",description:'DEPRECATED: Use the unified "search" tool instead. Search observations using vector-first semantic search (ChromaDB). IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.',inputSchema:c.object({query:c.string().describe("Natural language search query for semantic ranking via ChromaDB vector search"),format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'),...wh.shape}),handler:async s=>{try{let e=ft(s),{query:r,format:a="index",...t}=e,n=[];if(Oe)try{q("[search-server] Using hybrid semantic search (Chroma + SQLite)");let o=await Ze(r,100);if(q(`[search-server] Chroma returned ${o.ids.length} semantic matches`),o.ids.length>0){let l=Date.now()-7776e6,u=o.ids.filter((d,f)=>{let h=o.metadatas[f];return h&&h.created_at_epoch>l});if(q(`[search-server] ${u.length} results within 90-day window`),u.length>0){let d=t.limit||20;n=oe.getObservationsByIds(u,{orderBy:"date_desc",limit:d}),q(`[search-server] Hydrated ${n.length} observations from SQLite`)}}}catch(o){q("[search-server] Chroma query failed - no results (FTS5 fallback removed):",o.message)}if(n.length===0)return{content:[{type:"text",text:`No observations found matching "${r}"`}]};let i;if(a==="index"){let o=`Found ${n.length} observation(s) matching "${r}": -`,l=n.map((u,d)=>$t(u,d));i=o+l.join(` +`,l=n.map((u,d)=>Dt(u,d));i=o+l.join(` -`)+nr()}else i=n.map(l=>Dt(l)).join(` +`)+or()}else i=n.map(l=>Ct(l)).join(` --- -`);return{content:[{type:"text",text:i}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"search_sessions",description:'DEPRECATED: Use the unified "search" tool instead. Search session summaries using vector-first semantic search (ChromaDB). IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.',inputSchema:c.object({query:c.string().describe("Natural language search query for semantic ranking via ChromaDB vector search"),format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=pt(s),{query:r,format:a="index",...t}=e,n=[];if(we)try{console.error("[search-server] Using hybrid semantic search for sessions");let o=await ze(r,100,{doc_type:"session_summary"});if(console.error(`[search-server] Chroma returned ${o.ids.length} semantic matches`),o.ids.length>0){let l=Date.now()-7776e6,u=o.ids.filter((d,f)=>{let h=o.metadatas[f];return h&&h.created_at_epoch>l});if(console.error(`[search-server] ${u.length} results within 90-day window`),u.length>0){let d=t.limit||20;n=ne.getSessionSummariesByIds(u,{orderBy:"date_desc",limit:d}),console.error(`[search-server] Hydrated ${n.length} sessions from SQLite`)}}}catch(o){console.error("[search-server] Chroma query failed - no results (FTS5 fallback removed):",o.message)}if(n.length===0)return{content:[{type:"text",text:`No sessions found matching "${r}"`}]};let i;if(a==="index"){let o=`Found ${n.length} session(s) matching "${r}": +`);return{content:[{type:"text",text:i}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"search_sessions",description:'DEPRECATED: Use the unified "search" tool instead. Search session summaries using vector-first semantic search (ChromaDB). IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.',inputSchema:c.object({query:c.string().describe("Natural language search query for semantic ranking via ChromaDB vector search"),format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=ft(s),{query:r,format:a="index",...t}=e,n=[];if(Oe)try{q("[search-server] Using hybrid semantic search for sessions");let o=await Ze(r,100,{doc_type:"session_summary"});if(q(`[search-server] Chroma returned ${o.ids.length} semantic matches`),o.ids.length>0){let l=Date.now()-7776e6,u=o.ids.filter((d,f)=>{let h=o.metadatas[f];return h&&h.created_at_epoch>l});if(q(`[search-server] ${u.length} results within 90-day window`),u.length>0){let d=t.limit||20;n=oe.getSessionSummariesByIds(u,{orderBy:"date_desc",limit:d}),q(`[search-server] Hydrated ${n.length} sessions from SQLite`)}}}catch(o){q("[search-server] Chroma query failed - no results (FTS5 fallback removed):",o.message)}if(n.length===0)return{content:[{type:"text",text:`No sessions found matching "${r}"`}]};let i;if(a==="index"){let o=`Found ${n.length} session(s) matching "${r}": `,l=n.map((u,d)=>ln(u,d));i=o+l.join(` -`)+nr()}else i=n.map(l=>un(l)).join(` +`)+or()}else i=n.map(l=>un(l)).join(` --- -`);return{content:[{type:"text",text:i}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"find_by_concept",description:'Find observations tagged with a specific concept. Available concepts: "discovery", "problem-solution", "what-changed", "how-it-works", "pattern", "gotcha", "change". IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.',inputSchema:c.object({concept:c.string().describe("Concept tag to search for. Available: discovery, problem-solution, what-changed, how-it-works, pattern, gotcha, change"),format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum results. IMPORTANT: Start with 3-5 to avoid exceeding MCP token limits, even in index mode."),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=pt(s),{concept:r,format:a="index",...t}=e,n=[];if(we)try{console.error("[search-server] Using metadata-first + semantic ranking for concept search");let o=_e.findByConcept(r,t);if(console.error(`[search-server] Found ${o.length} observations with concept "${r}"`),o.length>0){let l=o.map(f=>f.id),u=await ze(r,Math.min(l.length,100)),d=[];for(let f of u.ids)l.includes(f)&&!d.includes(f)&&d.push(f);console.error(`[search-server] Chroma ranked ${d.length} results by semantic relevance`),d.length>0&&(n=ne.getObservationsByIds(d,{limit:t.limit||20}),n.sort((f,h)=>d.indexOf(f.id)-d.indexOf(h.id)))}}catch(o){console.error("[search-server] Chroma ranking failed, using SQLite order:",o.message)}if(n.length===0&&(console.error("[search-server] Using SQLite-only concept search"),n=_e.findByConcept(r,t)),n.length===0)return{content:[{type:"text",text:`No observations found with concept "${r}"`}]};let i;if(a==="index"){let o=`Found ${n.length} observation(s) with concept "${r}": +`);return{content:[{type:"text",text:i}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"find_by_concept",description:'Find observations tagged with a specific concept. Available concepts: "discovery", "problem-solution", "what-changed", "how-it-works", "pattern", "gotcha", "change". IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.',inputSchema:c.object({concept:c.string().describe("Concept tag to search for. Available: discovery, problem-solution, what-changed, how-it-works, pattern, gotcha, change"),format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum results. IMPORTANT: Start with 3-5 to avoid exceeding MCP token limits, even in index mode."),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=ft(s),{concept:r,format:a="index",...t}=e,n=[];if(Oe)try{q("[search-server] Using metadata-first + semantic ranking for concept search");let o=be.findByConcept(r,t);if(q(`[search-server] Found ${o.length} observations with concept "${r}"`),o.length>0){let l=o.map(f=>f.id),u=await Ze(r,Math.min(l.length,100)),d=[];for(let f of u.ids)l.includes(f)&&!d.includes(f)&&d.push(f);q(`[search-server] Chroma ranked ${d.length} results by semantic relevance`),d.length>0&&(n=oe.getObservationsByIds(d,{limit:t.limit||20}),n.sort((f,h)=>d.indexOf(f.id)-d.indexOf(h.id)))}}catch(o){q("[search-server] Chroma ranking failed, using SQLite order:",o.message)}if(n.length===0&&(q("[search-server] Using SQLite-only concept search"),n=be.findByConcept(r,t)),n.length===0)return{content:[{type:"text",text:`No observations found with concept "${r}"`}]};let i;if(a==="index"){let o=`Found ${n.length} observation(s) with concept "${r}": -`,l=n.map((u,d)=>$t(u,d));i=o+l.join(` +`,l=n.map((u,d)=>Dt(u,d));i=o+l.join(` -`)+nr()}else i=n.map(l=>Dt(l)).join(` +`)+or()}else i=n.map(l=>Ct(l)).join(` --- -`);return{content:[{type:"text",text:i}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"find_by_file",description:'Find observations and sessions that reference a specific file path. IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.',inputSchema:c.object({filePath:c.string().describe("File path to search for (supports partial matching)"),format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum results. IMPORTANT: Start with 3-5 to avoid exceeding MCP token limits, even in index mode."),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=pt(s),{filePath:r,format:a="index",...t}=e,n=[],i=[];if(we)try{console.error("[search-server] Using metadata-first + semantic ranking for file search");let u=_e.findByFile(r,t);if(console.error(`[search-server] Found ${u.observations.length} observations, ${u.sessions.length} sessions for file "${r}"`),i=u.sessions,u.observations.length>0){let d=u.observations.map(p=>p.id),f=await ze(r,Math.min(d.length,100)),h=[];for(let p of f.ids)d.includes(p)&&!h.includes(p)&&h.push(p);console.error(`[search-server] Chroma ranked ${h.length} observations by semantic relevance`),h.length>0&&(n=ne.getObservationsByIds(h,{limit:t.limit||20}),n.sort((p,g)=>h.indexOf(p.id)-h.indexOf(g.id)))}}catch(u){console.error("[search-server] Chroma ranking failed, using SQLite order:",u.message)}if(n.length===0&&i.length===0){console.error("[search-server] Using SQLite-only file search");let u=_e.findByFile(r,t);n=u.observations,i=u.sessions}let o=n.length+i.length;if(o===0)return{content:[{type:"text",text:`No results found for file "${r}"`}]};let l;if(a==="index"){let u=`Found ${o} result(s) for file "${r}": +`);return{content:[{type:"text",text:i}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"find_by_file",description:'Find observations and sessions that reference a specific file path. IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.',inputSchema:c.object({filePath:c.string().describe("File path to search for (supports partial matching)"),format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum results. IMPORTANT: Start with 3-5 to avoid exceeding MCP token limits, even in index mode."),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=ft(s),{filePath:r,format:a="index",...t}=e,n=[],i=[];if(Oe)try{q("[search-server] Using metadata-first + semantic ranking for file search");let u=be.findByFile(r,t);if(q(`[search-server] Found ${u.observations.length} observations, ${u.sessions.length} sessions for file "${r}"`),i=u.sessions,u.observations.length>0){let d=u.observations.map(p=>p.id),f=await Ze(r,Math.min(d.length,100)),h=[];for(let p of f.ids)d.includes(p)&&!h.includes(p)&&h.push(p);q(`[search-server] Chroma ranked ${h.length} observations by semantic relevance`),h.length>0&&(n=oe.getObservationsByIds(h,{limit:t.limit||20}),n.sort((p,g)=>h.indexOf(p.id)-h.indexOf(g.id)))}}catch(u){q("[search-server] Chroma ranking failed, using SQLite order:",u.message)}if(n.length===0&&i.length===0){q("[search-server] Using SQLite-only file search");let u=be.findByFile(r,t);n=u.observations,i=u.sessions}let o=n.length+i.length;if(o===0)return{content:[{type:"text",text:`No results found for file "${r}"`}]};let l;if(a==="index"){let u=`Found ${o} result(s) for file "${r}": -`,d=[];n.forEach((f,h)=>{d.push($t(f,h))}),i.forEach((f,h)=>{d.push(ln(f,h+n.length))}),l=u+d.join(` +`,d=[];n.forEach((f,h)=>{d.push(Dt(f,h))}),i.forEach((f,h)=>{d.push(ln(f,h+n.length))}),l=u+d.join(` -`)+nr()}else{let u=[];n.forEach(d=>{u.push(Dt(d))}),i.forEach(d=>{u.push(un(d))}),l=u.join(` +`)+or()}else{let u=[];n.forEach(d=>{u.push(Ct(d))}),i.forEach(d=>{u.push(un(d))}),l=u.join(` --- -`)}return{content:[{type:"text",text:l}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"find_by_type",description:'Find observations of a specific type (decision, bugfix, feature, refactor, discovery, change). IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.',inputSchema:c.object({type:c.string().describe("Observation type(s) to filter by (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)"),format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum results. IMPORTANT: Start with 3-5 to avoid exceeding MCP token limits, even in index mode."),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=pt(s),{type:r,format:a="index",...t}=e,n=Array.isArray(r)?r.join(", "):r,i=[];if(we)try{console.error("[search-server] Using metadata-first + semantic ranking for type search");let l=_e.findByType(r,t);if(console.error(`[search-server] Found ${l.length} observations with type "${n}"`),l.length>0){let u=l.map(h=>h.id),d=await ze(n,Math.min(u.length,100)),f=[];for(let h of d.ids)u.includes(h)&&!f.includes(h)&&f.push(h);console.error(`[search-server] Chroma ranked ${f.length} results by semantic relevance`),f.length>0&&(i=ne.getObservationsByIds(f,{limit:t.limit||20}),i.sort((h,p)=>f.indexOf(h.id)-f.indexOf(p.id)))}}catch(l){console.error("[search-server] Chroma ranking failed, using SQLite order:",l.message)}if(i.length===0&&(console.error("[search-server] Using SQLite-only type search"),i=_e.findByType(r,t)),i.length===0)return{content:[{type:"text",text:`No observations found with type "${n}"`}]};let o;if(a==="index"){let l=`Found ${i.length} observation(s) with type "${n}": +`)}return{content:[{type:"text",text:l}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"find_by_type",description:'Find observations of a specific type (decision, bugfix, feature, refactor, discovery, change). IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.',inputSchema:c.object({type:c.string().describe("Observation type(s) to filter by (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)"),format:c.enum(["index","full"]).default("index").describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum results. IMPORTANT: Start with 3-5 to avoid exceeding MCP token limits, even in index mode."),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=ft(s),{type:r,format:a="index",...t}=e,n=Array.isArray(r)?r.join(", "):r,i=[];if(Oe)try{q("[search-server] Using metadata-first + semantic ranking for type search");let l=be.findByType(r,t);if(q(`[search-server] Found ${l.length} observations with type "${n}"`),l.length>0){let u=l.map(h=>h.id),d=await Ze(n,Math.min(u.length,100)),f=[];for(let h of d.ids)u.includes(h)&&!f.includes(h)&&f.push(h);q(`[search-server] Chroma ranked ${f.length} results by semantic relevance`),f.length>0&&(i=oe.getObservationsByIds(f,{limit:t.limit||20}),i.sort((h,p)=>f.indexOf(h.id)-f.indexOf(p.id)))}}catch(l){q("[search-server] Chroma ranking failed, using SQLite order:",l.message)}if(i.length===0&&(q("[search-server] Using SQLite-only type search"),i=be.findByType(r,t)),i.length===0)return{content:[{type:"text",text:`No observations found with type "${n}"`}]};let o;if(a==="index"){let l=`Found ${i.length} observation(s) with type "${n}": -`,u=i.map((d,f)=>$t(d,f));o=l+u.join(` +`,u=i.map((d,f)=>Dt(d,f));o=l+u.join(` -`)+nr()}else o=i.map(u=>Dt(u)).join(` +`)+or()}else o=i.map(u=>Ct(u)).join(` --- -`);return{content:[{type:"text",text:o}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"get_recent_context",description:"Get recent session context including summaries and observations for a project",inputSchema:c.object({project:c.string().optional().describe("Project name (defaults to current working directory basename)"),limit:c.number().min(1).max(10).default(3).describe("Number of recent sessions to retrieve")}),handler:async s=>{try{let e=s.project||(0,$l.basename)(process.cwd()),r=s.limit||3,a=ne.getRecentSessionsWithStatus(e,r);if(a.length===0)return{content:[{type:"text",text:`# Recent Session Context +`);return{content:[{type:"text",text:o}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"get_recent_context",description:"Get recent session context including summaries and observations for a project",inputSchema:c.object({project:c.string().optional().describe("Project name (defaults to current working directory basename)"),limit:c.number().min(1).max(10).default(3).describe("Number of recent sessions to retrieve")}),handler:async s=>{try{let e=s.project||(0,$l.basename)(process.cwd()),r=s.limit||3,a=oe.getRecentSessionsWithStatus(e,r);if(a.length===0)return{content:[{type:"text",text:`# Recent Session Context -No previous sessions found for project "${e}".`}]};let t=[];t.push("# Recent Session Context"),t.push(""),t.push(`Showing last ${a.length} session(s) for **${e}**:`),t.push("");for(let n of a)if(n.sdk_session_id){if(t.push("---"),t.push(""),n.has_summary){let i=ne.getSummaryForSession(n.sdk_session_id);if(i){let o=i.prompt_number?` (Prompt #${i.prompt_number})`:"";if(t.push(`**Summary${o}**`),t.push(""),i.request&&t.push(`**Request:** ${i.request}`),i.completed&&t.push(`**Completed:** ${i.completed}`),i.learned&&t.push(`**Learned:** ${i.learned}`),i.next_steps&&t.push(`**Next Steps:** ${i.next_steps}`),i.files_read)try{let u=JSON.parse(i.files_read);Array.isArray(u)&&u.length>0&&t.push(`**Files Read:** ${u.join(", ")}`)}catch{i.files_read.trim()&&t.push(`**Files Read:** ${i.files_read}`)}if(i.files_edited)try{let u=JSON.parse(i.files_edited);Array.isArray(u)&&u.length>0&&t.push(`**Files Edited:** ${u.join(", ")}`)}catch{i.files_edited.trim()&&t.push(`**Files Edited:** ${i.files_edited}`)}let l=new Date(i.created_at).toLocaleString();t.push(`**Date:** ${l}`)}}else if(n.status==="active"){t.push("**In Progress**"),t.push(""),n.user_prompt&&t.push(`**Request:** ${n.user_prompt}`);let i=ne.getObservationsForSession(n.sdk_session_id);if(i.length>0){t.push(""),t.push(`**Observations (${i.length}):**`);for(let l of i)t.push(`- ${l.title}`)}else t.push(""),t.push("*No observations yet*");t.push(""),t.push("**Status:** Active - summary pending");let o=new Date(n.started_at).toLocaleString();t.push(`**Date:** ${o}`)}else{t.push(`**${n.status.charAt(0).toUpperCase()+n.status.slice(1)}**`),t.push(""),n.user_prompt&&t.push(`**Request:** ${n.user_prompt}`),t.push(""),t.push(`**Status:** ${n.status} - no summary available`);let i=new Date(n.started_at).toLocaleString();t.push(`**Date:** ${i}`)}t.push("")}return{content:[{type:"text",text:t.join(` -`)}]}}catch(e){return{content:[{type:"text",text:`Failed to get recent context: ${e.message}`}],isError:!0}}}},{name:"search_user_prompts",description:'DEPRECATED: Use the unified "search" tool instead. Search raw user prompts using vector-first semantic search (ChromaDB). Use this to find what the user actually said/requested across all sessions. IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.',inputSchema:c.object({query:c.string().describe("Natural language search query for semantic ranking via ChromaDB vector search"),format:c.enum(["index","full"]).default("index").describe('Output format: "index" for truncated prompts/dates (default, RECOMMENDED for initial search), "full" for complete prompt text (use only after reviewing index results)'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=pt(s),{query:r,format:a="index",...t}=e,n=[];if(we)try{console.error("[search-server] Using hybrid semantic search for user prompts");let o=await ze(r,100,{doc_type:"user_prompt"});if(console.error(`[search-server] Chroma returned ${o.ids.length} semantic matches`),o.ids.length>0){let l=Date.now()-7776e6,u=o.ids.filter((d,f)=>{let h=o.metadatas[f];return h&&h.created_at_epoch>l});if(console.error(`[search-server] ${u.length} results within 90-day window`),u.length>0){let d=t.limit||20;n=ne.getUserPromptsByIds(u,{orderBy:"date_desc",limit:d}),console.error(`[search-server] Hydrated ${n.length} user prompts from SQLite`)}}}catch(o){console.error("[search-server] Chroma query failed - no results (FTS5 fallback removed):",o.message)}if(n.length===0)return{content:[{type:"text",text:`No user prompts found matching "${r}"`}]};let i;if(a==="index"){let o=`Found ${n.length} user prompt(s) matching "${r}": +No previous sessions found for project "${e}".`}]};let t=[];t.push("# Recent Session Context"),t.push(""),t.push(`Showing last ${a.length} session(s) for **${e}**:`),t.push("");for(let n of a)if(n.sdk_session_id){if(t.push("---"),t.push(""),n.has_summary){let i=oe.getSummaryForSession(n.sdk_session_id);if(i){let o=i.prompt_number?` (Prompt #${i.prompt_number})`:"";if(t.push(`**Summary${o}**`),t.push(""),i.request&&t.push(`**Request:** ${i.request}`),i.completed&&t.push(`**Completed:** ${i.completed}`),i.learned&&t.push(`**Learned:** ${i.learned}`),i.next_steps&&t.push(`**Next Steps:** ${i.next_steps}`),i.files_read)try{let u=JSON.parse(i.files_read);Array.isArray(u)&&u.length>0&&t.push(`**Files Read:** ${u.join(", ")}`)}catch{i.files_read.trim()&&t.push(`**Files Read:** ${i.files_read}`)}if(i.files_edited)try{let u=JSON.parse(i.files_edited);Array.isArray(u)&&u.length>0&&t.push(`**Files Edited:** ${u.join(", ")}`)}catch{i.files_edited.trim()&&t.push(`**Files Edited:** ${i.files_edited}`)}let l=new Date(i.created_at).toLocaleString();t.push(`**Date:** ${l}`)}}else if(n.status==="active"){t.push("**In Progress**"),t.push(""),n.user_prompt&&t.push(`**Request:** ${n.user_prompt}`);let i=oe.getObservationsForSession(n.sdk_session_id);if(i.length>0){t.push(""),t.push(`**Observations (${i.length}):**`);for(let l of i)t.push(`- ${l.title}`)}else t.push(""),t.push("*No observations yet*");t.push(""),t.push("**Status:** Active - summary pending");let o=new Date(n.started_at).toLocaleString();t.push(`**Date:** ${o}`)}else{t.push(`**${n.status.charAt(0).toUpperCase()+n.status.slice(1)}**`),t.push(""),n.user_prompt&&t.push(`**Request:** ${n.user_prompt}`),t.push(""),t.push(`**Status:** ${n.status} - no summary available`);let i=new Date(n.started_at).toLocaleString();t.push(`**Date:** ${i}`)}t.push("")}return{content:[{type:"text",text:t.join(` +`)}]}}catch(e){return{content:[{type:"text",text:`Failed to get recent context: ${e.message}`}],isError:!0}}}},{name:"search_user_prompts",description:'DEPRECATED: Use the unified "search" tool instead. Search raw user prompts using vector-first semantic search (ChromaDB). Use this to find what the user actually said/requested across all sessions. IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.',inputSchema:c.object({query:c.string().describe("Natural language search query for semantic ranking via ChromaDB vector search"),format:c.enum(["index","full"]).default("index").describe('Output format: "index" for truncated prompts/dates (default, RECOMMENDED for initial search), "full" for complete prompt text (use only after reviewing index results)'),project:c.string().optional().describe("Filter by project name"),dateStart:c.union([c.string(),c.number()]).optional().describe("Start date for filtering (ISO string or epoch timestamp)"),dateEnd:c.union([c.string(),c.number()]).optional().describe("End date for filtering (ISO string or epoch timestamp)"),limit:c.number().min(1).max(100).default(20).describe("Maximum number of results"),offset:c.number().min(0).default(0).describe("Number of results to skip"),orderBy:c.enum(["relevance","date_desc","date_asc"]).default("date_desc").describe("Sort order")}),handler:async s=>{try{let e=ft(s),{query:r,format:a="index",...t}=e,n=[];if(Oe)try{q("[search-server] Using hybrid semantic search for user prompts");let o=await Ze(r,100,{doc_type:"user_prompt"});if(q(`[search-server] Chroma returned ${o.ids.length} semantic matches`),o.ids.length>0){let l=Date.now()-7776e6,u=o.ids.filter((d,f)=>{let h=o.metadatas[f];return h&&h.created_at_epoch>l});if(q(`[search-server] ${u.length} results within 90-day window`),u.length>0){let d=t.limit||20;n=oe.getUserPromptsByIds(u,{orderBy:"date_desc",limit:d}),q(`[search-server] Hydrated ${n.length} user prompts from SQLite`)}}}catch(o){q("[search-server] Chroma query failed - no results (FTS5 fallback removed):",o.message)}if(n.length===0)return{content:[{type:"text",text:`No user prompts found matching "${r}"`}]};let i;if(a==="index"){let o=`Found ${n.length} user prompt(s) matching "${r}": `,l=n.map((u,d)=>Nl(u,d));i=o+l.join(` -`)+nr()}else i=n.map(l=>Al(l)).join(` +`)+or()}else i=n.map(l=>Al(l)).join(` --- -`);return{content:[{type:"text",text:i}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"get_context_timeline",description:'Get a unified timeline of context (observations, sessions, and prompts) around a specific point in time. All record types are interleaved chronologically. Useful for understanding "what was happening when X occurred". Returns depth_before records before anchor + anchor + depth_after records after (total: depth_before + 1 + depth_after mixed records).',inputSchema:c.object({anchor:c.union([c.number().describe("Observation ID to center timeline around"),c.string().describe("Session ID (format: S123) or ISO timestamp to center timeline around")]).describe('Anchor point: observation ID, session ID (e.g., "S123"), or ISO timestamp'),depth_before:c.number().min(0).max(50).default(10).describe("Number of records to retrieve before anchor, not including anchor (default: 10)"),depth_after:c.number().min(0).max(50).default(10).describe("Number of records to retrieve after anchor, not including anchor (default: 10)"),project:c.string().optional().describe("Filter by project name")}),handler:async s=>{try{let g=function(T){return new Date(T).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric"})},y=function(T){return new Date(T).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0})},v=function(T){return new Date(T).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0})},x=function(T){return T?Math.ceil(T.length/4):0};var e=g,r=y,a=v,t=x;let{anchor:n,depth_before:i=10,depth_after:o=10,project:l}=s,u,d=n,f;if(typeof n=="number"){let T=ne.getObservationById(n);if(!T)return{content:[{type:"text",text:`Observation #${n} not found`}],isError:!0};u=T.created_at_epoch,f=ne.getTimelineAroundObservation(n,u,i,o,l)}else if(typeof n=="string")if(n.startsWith("S")||n.startsWith("#S")){let T=n.replace(/^#?S/,""),S=parseInt(T,10),I=ne.getSessionSummariesByIds([S]);if(I.length===0)return{content:[{type:"text",text:`Session #${S} not found`}],isError:!0};u=I[0].created_at_epoch,d=`S${S}`,f=ne.getTimelineAroundTimestamp(u,i,o,l)}else{let T=new Date(n);if(isNaN(T.getTime()))return{content:[{type:"text",text:`Invalid timestamp: ${n}`}],isError:!0};u=T.getTime(),f=ne.getTimelineAroundTimestamp(u,i,o,l)}else return{content:[{type:"text",text:'Invalid anchor: must be observation ID (number), session ID (e.g., "S123"), or ISO timestamp'}],isError:!0};let h=[...f.observations.map(T=>({type:"observation",data:T,epoch:T.created_at_epoch})),...f.sessions.map(T=>({type:"session",data:T,epoch:T.created_at_epoch})),...f.prompts.map(T=>({type:"prompt",data:T,epoch:T.created_at_epoch}))];h.sort((T,S)=>T.epoch-S.epoch);let p=cn(h,d,u,i,o);if(p.length===0)return{content:[{type:"text",text:`No context found around ${new Date(u).toLocaleString()} (${i} records before, ${o} records after)`}]};let P=[];P.push(`# Timeline around anchor: ${d}`),P.push(`**Window:** ${i} records before \u2192 ${o} records after | **Items:** ${p.length}`),P.push(""),P.push("**Legend:** \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u{1F9E0} decision"),P.push("");let E=new Map;for(let T of p){let S=g(T.epoch);E.has(S)||E.set(S,[]),E.get(S).push(T)}let R=Array.from(E.entries()).sort((T,S)=>{let I=new Date(T[0]).getTime(),D=new Date(S[0]).getTime();return I-D});for(let[T,S]of R){P.push(`### ${T}`),P.push("");let I=null,D="",$=!1;for(let L of S){let C=typeof d=="number"&&L.type==="observation"&&L.data.id===d||typeof d=="string"&&d.startsWith("S")&&L.type==="session"&&`S${L.data.id}`===d;if(L.type==="session"){$&&(P.push(""),$=!1,I=null,D="");let k=L.data,N=k.request||"Session summary",A=`claude-mem://session-summary/${k.id}`,M=C?" \u2190 **ANCHOR**":"";P.push(`**\u{1F3AF} #S${k.id}** ${N} (${v(L.epoch)}) [\u2192](${A})${M}`),P.push("")}else if(L.type==="prompt"){$&&(P.push(""),$=!1,I=null,D="");let k=L.data,N=k.prompt.length>100?k.prompt.substring(0,100)+"...":k.prompt;P.push(`**\u{1F4AC} User Prompt #${k.prompt_number}** (${v(L.epoch)})`),P.push(`> ${N}`),P.push("")}else if(L.type==="observation"){let k=L.data,N="General";N!==I&&($&&P.push(""),P.push(`**${N}**`),P.push("| ID | Time | T | Title | Tokens |"),P.push("|----|------|---|-------|--------|"),I=N,$=!0,D="");let A="\u2022";switch(k.type){case"bugfix":A="\u{1F534}";break;case"feature":A="\u{1F7E3}";break;case"refactor":A="\u{1F504}";break;case"change":A="\u2705";break;case"discovery":A="\u{1F535}";break;case"decision":A="\u{1F9E0}";break}let M=y(L.epoch),X=k.title||"Untitled",W=x(k.narrative),Q=M!==D?M:"\u2033";D=M;let z=C?" \u2190 **ANCHOR**":"";P.push(`| #${k.id} | ${Q} | ${A} | ${X}${z} | ~${W} |`)}}$&&P.push("")}return{content:[{type:"text",text:P.join(` -`)}]}}catch(n){return{content:[{type:"text",text:`Timeline query failed: ${n.message}`}],isError:!0}}}},{name:"get_timeline_by_query",description:'Search for observations using natural language and get timeline context around the best match. Two modes: "auto" (default) automatically uses top result as timeline anchor; "interactive" returns top matches for you to choose from. This combines search + timeline into a single operation for faster context discovery.',inputSchema:c.object({query:c.string().describe("Natural language search query to find relevant observations"),mode:c.enum(["auto","interactive"]).default("auto").describe("auto: Automatically use top search result as timeline anchor. interactive: Show top N search results for manual anchor selection."),depth_before:c.number().min(0).max(50).default(10).describe("Number of timeline records before anchor (default: 10)"),depth_after:c.number().min(0).max(50).default(10).describe("Number of timeline records after anchor (default: 10)"),limit:c.number().min(1).max(20).default(5).describe("For interactive mode: number of top search results to display (default: 5)"),project:c.string().optional().describe("Filter by project name")}),handler:async s=>{try{let{query:n,mode:i="auto",depth_before:o=10,depth_after:l=10,limit:u=5,project:d}=s,f=[];if(we)try{console.error("[search-server] Using hybrid semantic search for timeline query");let h=await ze(n,100);if(console.error(`[search-server] Chroma returned ${h.ids.length} semantic matches`),h.ids.length>0){let p=Date.now()-7776e6,g=h.ids.filter((y,v)=>{let x=h.metadatas[v];return x&&x.created_at_epoch>p});console.error(`[search-server] ${g.length} results within 90-day window`),g.length>0&&(f=ne.getObservationsByIds(g,{orderBy:"date_desc",limit:i==="auto"?1:u}),console.error(`[search-server] Hydrated ${f.length} observations from SQLite`))}}catch(h){console.error("[search-server] Chroma query failed - no results (FTS5 fallback removed):",h.message)}if(f.length===0)return{content:[{type:"text",text:`No observations found matching "${n}". Try a different search query.`}]};if(i==="interactive"){let h=[];h.push("# Timeline Anchor Search Results"),h.push(""),h.push(`Found ${f.length} observation(s) matching "${n}"`),h.push(""),h.push("To get timeline context around any of these observations, use the `get_context_timeline` tool with the observation ID as the anchor."),h.push(""),h.push(`**Top ${f.length} matches:**`),h.push("");for(let p=0;p({type:"observation",data:I,epoch:I.created_at_epoch})),...p.sessions.map(I=>({type:"session",data:I,epoch:I.created_at_epoch})),...p.prompts.map(I=>({type:"prompt",data:I,epoch:I.created_at_epoch}))];g.sort((I,D)=>I.epoch-D.epoch);let y=cn(g,h.id,0,o,l);if(y.length===0)return{content:[{type:"text",text:`Found observation #${h.id} matching "${n}", but no timeline context available (${o} records before, ${l} records after).`}]};let R=[];R.push(`# Timeline for query: "${n}"`),R.push(`**Anchor:** Observation #${h.id} - ${h.title||"Untitled"}`),R.push(`**Window:** ${o} records before \u2192 ${l} records after | **Items:** ${y.length}`),R.push(""),R.push("**Legend:** \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u{1F9E0} decision"),R.push("");let T=new Map;for(let I of y){let D=v(I.epoch);T.has(D)||T.set(D,[]),T.get(D).push(I)}let S=Array.from(T.entries()).sort((I,D)=>{let $=new Date(I[0]).getTime(),L=new Date(D[0]).getTime();return $-L});for(let[I,D]of S){R.push(`### ${I}`),R.push("");let $=null,L="",C=!1;for(let k of D){let N=k.type==="observation"&&k.data.id===h.id;if(k.type==="session"){C&&(R.push(""),C=!1,$=null,L="");let A=k.data,M=A.request||"Session summary",X=`claude-mem://session-summary/${A.id}`;R.push(`**\u{1F3AF} #S${A.id}** ${M} (${P(k.epoch)}) [\u2192](${X})`),R.push("")}else if(k.type==="prompt"){C&&(R.push(""),C=!1,$=null,L="");let A=k.data,M=A.prompt.length>100?A.prompt.substring(0,100)+"...":A.prompt;R.push(`**\u{1F4AC} User Prompt #${A.prompt_number}** (${P(k.epoch)})`),R.push(`> ${M}`),R.push("")}else if(k.type==="observation"){let A=k.data,M="General";M!==$&&(C&&R.push(""),R.push(`**${M}**`),R.push("| ID | Time | T | Title | Tokens |"),R.push("|----|------|---|-------|--------|"),$=M,C=!0,L="");let X="\u2022";switch(A.type){case"bugfix":X="\u{1F534}";break;case"feature":X="\u{1F7E3}";break;case"refactor":X="\u{1F504}";break;case"change":X="\u2705";break;case"discovery":X="\u{1F535}";break;case"decision":X="\u{1F9E0}";break}let W=x(k.epoch),ee=A.title||"Untitled",Q=E(A.narrative),pe=W!==L?W:"\u2033";L=W;let Re=N?" \u2190 **ANCHOR**":"";R.push(`| #${A.id} | ${pe} | ${X} | ${ee}${Re} | ~${Q} |`)}}C&&R.push("")}return{content:[{type:"text",text:R.join(` -`)}]}}}catch(n){return{content:[{type:"text",text:`Timeline query failed: ${n.message}`}],isError:!0}}}}],dn=new Os({name:"claude-mem-search",version:"1.0.0"},{capabilities:{tools:{}}});dn.setRequestHandler(ca,async()=>({tools:Dl.map(s=>({name:s.name,description:s.description,inputSchema:tn(s.inputSchema)}))}));dn.setRequestHandler(ua,async s=>{let e=Dl.find(r=>r.name===s.params.name);if(!e)throw new Error(`Unknown tool: ${s.params.name}`);try{return await e.handler(s.params.arguments||{})}catch(r){return{content:[{type:"text",text:`Tool execution failed: ${r.message}`}],isError:!0}}});async function Cl(){if(console.error("[search-server] Shutting down..."),we)try{await we.close(),console.error("[search-server] Chroma client closed")}catch(s){console.error("[search-server] Error closing Chroma client:",s.message)}if(_e)try{_e.close(),console.error("[search-server] SessionSearch closed")}catch(s){console.error("[search-server] Error closing SessionSearch:",s.message)}if(ne)try{ne.close(),console.error("[search-server] SessionStore closed")}catch(s){console.error("[search-server] Error closing SessionStore:",s.message)}console.error("[search-server] Shutdown complete"),process.exit(0)}process.on("SIGTERM",Cl);process.on("SIGINT",Cl);async function Oh(){let s=new Is;await dn.connect(s),console.error("[search-server] Claude-mem search server started"),setTimeout(async()=>{try{console.error("[search-server] Initializing Chroma client...");let e=process.env.CLAUDE_MEM_PYTHON_VERSION||"3.13",r=new $s({command:"uvx",args:["--python",e,"chroma-mcp","--client-type","persistent","--data-dir",xl],stderr:"ignore"}),a=new Ns({name:"claude-mem-search-chroma-client",version:"1.0.0"},{capabilities:{}});await a.connect(r),we=a,console.error("[search-server] Chroma client connected successfully")}catch(e){console.error("[search-server] Failed to initialize Chroma client:",e.message),console.error("[search-server] Vector search unavailable - text queries will return empty results (FTS5 fallback removed)"),console.error("[search-server] Install UVX/Python to enable vector search: https://docs.astral.sh/uv/getting-started/installation/"),we=null}},0)}Oh().catch(s=>{console.error("[search-server] Fatal error:",s),process.exit(1)}); +`);return{content:[{type:"text",text:i}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e.message}`}],isError:!0}}}},{name:"get_context_timeline",description:'Get a unified timeline of context (observations, sessions, and prompts) around a specific point in time. All record types are interleaved chronologically. Useful for understanding "what was happening when X occurred". Returns depth_before records before anchor + anchor + depth_after records after (total: depth_before + 1 + depth_after mixed records).',inputSchema:c.object({anchor:c.union([c.number().describe("Observation ID to center timeline around"),c.string().describe("Session ID (format: S123) or ISO timestamp to center timeline around")]).describe('Anchor point: observation ID, session ID (e.g., "S123"), or ISO timestamp'),depth_before:c.number().min(0).max(50).default(10).describe("Number of records to retrieve before anchor, not including anchor (default: 10)"),depth_after:c.number().min(0).max(50).default(10).describe("Number of records to retrieve after anchor, not including anchor (default: 10)"),project:c.string().optional().describe("Filter by project name")}),handler:async s=>{try{let g=function(T){return new Date(T).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric"})},y=function(T){return new Date(T).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0})},v=function(T){return new Date(T).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0})},x=function(T){return T?Math.ceil(T.length/4):0};var e=g,r=y,a=v,t=x;let{anchor:n,depth_before:i=10,depth_after:o=10,project:l}=s,u,d=n,f;if(typeof n=="number"){let T=oe.getObservationById(n);if(!T)return{content:[{type:"text",text:`Observation #${n} not found`}],isError:!0};u=T.created_at_epoch,f=oe.getTimelineAroundObservation(n,u,i,o,l)}else if(typeof n=="string")if(n.startsWith("S")||n.startsWith("#S")){let T=n.replace(/^#?S/,""),S=parseInt(T,10),I=oe.getSessionSummariesByIds([S]);if(I.length===0)return{content:[{type:"text",text:`Session #${S} not found`}],isError:!0};u=I[0].created_at_epoch,d=`S${S}`,f=oe.getTimelineAroundTimestamp(u,i,o,l)}else{let T=new Date(n);if(isNaN(T.getTime()))return{content:[{type:"text",text:`Invalid timestamp: ${n}`}],isError:!0};u=T.getTime(),f=oe.getTimelineAroundTimestamp(u,i,o,l)}else return{content:[{type:"text",text:'Invalid anchor: must be observation ID (number), session ID (e.g., "S123"), or ISO timestamp'}],isError:!0};let h=[...f.observations.map(T=>({type:"observation",data:T,epoch:T.created_at_epoch})),...f.sessions.map(T=>({type:"session",data:T,epoch:T.created_at_epoch})),...f.prompts.map(T=>({type:"prompt",data:T,epoch:T.created_at_epoch}))];h.sort((T,S)=>T.epoch-S.epoch);let p=cn(h,d,u,i,o);if(p.length===0)return{content:[{type:"text",text:`No context found around ${new Date(u).toLocaleString()} (${i} records before, ${o} records after)`}]};let P=[];P.push(`# Timeline around anchor: ${d}`),P.push(`**Window:** ${i} records before \u2192 ${o} records after | **Items:** ${p.length}`),P.push(""),P.push("**Legend:** \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u{1F9E0} decision"),P.push("");let E=new Map;for(let T of p){let S=g(T.epoch);E.has(S)||E.set(S,[]),E.get(S).push(T)}let R=Array.from(E.entries()).sort((T,S)=>{let I=new Date(T[0]).getTime(),D=new Date(S[0]).getTime();return I-D});for(let[T,S]of R){P.push(`### ${T}`),P.push("");let I=null,D="",$=!1;for(let L of S){let C=typeof d=="number"&&L.type==="observation"&&L.data.id===d||typeof d=="string"&&d.startsWith("S")&&L.type==="session"&&`S${L.data.id}`===d;if(L.type==="session"){$&&(P.push(""),$=!1,I=null,D="");let k=L.data,N=k.request||"Session summary",A=`claude-mem://session-summary/${k.id}`,M=C?" \u2190 **ANCHOR**":"";P.push(`**\u{1F3AF} #S${k.id}** ${N} (${v(L.epoch)}) [\u2192](${A})${M}`),P.push("")}else if(L.type==="prompt"){$&&(P.push(""),$=!1,I=null,D="");let k=L.data,N=k.prompt.length>100?k.prompt.substring(0,100)+"...":k.prompt;P.push(`**\u{1F4AC} User Prompt #${k.prompt_number}** (${v(L.epoch)})`),P.push(`> ${N}`),P.push("")}else if(L.type==="observation"){let k=L.data,N="General";N!==I&&($&&P.push(""),P.push(`**${N}**`),P.push("| ID | Time | T | Title | Tokens |"),P.push("|----|------|---|-------|--------|"),I=N,$=!0,D="");let A="\u2022";switch(k.type){case"bugfix":A="\u{1F534}";break;case"feature":A="\u{1F7E3}";break;case"refactor":A="\u{1F504}";break;case"change":A="\u2705";break;case"discovery":A="\u{1F535}";break;case"decision":A="\u{1F9E0}";break}let M=y(L.epoch),W=k.title||"Untitled",Q=x(k.narrative),K=M!==D?M:"\u2033";D=M;let Z=C?" \u2190 **ANCHOR**":"";P.push(`| #${k.id} | ${K} | ${A} | ${W}${Z} | ~${Q} |`)}}$&&P.push("")}return{content:[{type:"text",text:P.join(` +`)}]}}catch(n){return{content:[{type:"text",text:`Timeline query failed: ${n.message}`}],isError:!0}}}},{name:"get_timeline_by_query",description:'Search for observations using natural language and get timeline context around the best match. Two modes: "auto" (default) automatically uses top result as timeline anchor; "interactive" returns top matches for you to choose from. This combines search + timeline into a single operation for faster context discovery.',inputSchema:c.object({query:c.string().describe("Natural language search query to find relevant observations"),mode:c.enum(["auto","interactive"]).default("auto").describe("auto: Automatically use top search result as timeline anchor. interactive: Show top N search results for manual anchor selection."),depth_before:c.number().min(0).max(50).default(10).describe("Number of timeline records before anchor (default: 10)"),depth_after:c.number().min(0).max(50).default(10).describe("Number of timeline records after anchor (default: 10)"),limit:c.number().min(1).max(20).default(5).describe("For interactive mode: number of top search results to display (default: 5)"),project:c.string().optional().describe("Filter by project name")}),handler:async s=>{try{let{query:n,mode:i="auto",depth_before:o=10,depth_after:l=10,limit:u=5,project:d}=s,f=[];if(Oe)try{q("[search-server] Using hybrid semantic search for timeline query");let h=await Ze(n,100);if(q(`[search-server] Chroma returned ${h.ids.length} semantic matches`),h.ids.length>0){let p=Date.now()-7776e6,g=h.ids.filter((y,v)=>{let x=h.metadatas[v];return x&&x.created_at_epoch>p});q(`[search-server] ${g.length} results within 90-day window`),g.length>0&&(f=oe.getObservationsByIds(g,{orderBy:"date_desc",limit:i==="auto"?1:u}),q(`[search-server] Hydrated ${f.length} observations from SQLite`))}}catch(h){q("[search-server] Chroma query failed - no results (FTS5 fallback removed):",h.message)}if(f.length===0)return{content:[{type:"text",text:`No observations found matching "${n}". Try a different search query.`}]};if(i==="interactive"){let h=[];h.push("# Timeline Anchor Search Results"),h.push(""),h.push(`Found ${f.length} observation(s) matching "${n}"`),h.push(""),h.push("To get timeline context around any of these observations, use the `get_context_timeline` tool with the observation ID as the anchor."),h.push(""),h.push(`**Top ${f.length} matches:**`),h.push("");for(let p=0;p({type:"observation",data:I,epoch:I.created_at_epoch})),...p.sessions.map(I=>({type:"session",data:I,epoch:I.created_at_epoch})),...p.prompts.map(I=>({type:"prompt",data:I,epoch:I.created_at_epoch}))];g.sort((I,D)=>I.epoch-D.epoch);let y=cn(g,h.id,0,o,l);if(y.length===0)return{content:[{type:"text",text:`Found observation #${h.id} matching "${n}", but no timeline context available (${o} records before, ${l} records after).`}]};let R=[];R.push(`# Timeline for query: "${n}"`),R.push(`**Anchor:** Observation #${h.id} - ${h.title||"Untitled"}`),R.push(`**Window:** ${o} records before \u2192 ${l} records after | **Items:** ${y.length}`),R.push(""),R.push("**Legend:** \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u{1F9E0} decision"),R.push("");let T=new Map;for(let I of y){let D=v(I.epoch);T.has(D)||T.set(D,[]),T.get(D).push(I)}let S=Array.from(T.entries()).sort((I,D)=>{let $=new Date(I[0]).getTime(),L=new Date(D[0]).getTime();return $-L});for(let[I,D]of S){R.push(`### ${I}`),R.push("");let $=null,L="",C=!1;for(let k of D){let N=k.type==="observation"&&k.data.id===h.id;if(k.type==="session"){C&&(R.push(""),C=!1,$=null,L="");let A=k.data,M=A.request||"Session summary",W=`claude-mem://session-summary/${A.id}`;R.push(`**\u{1F3AF} #S${A.id}** ${M} (${P(k.epoch)}) [\u2192](${W})`),R.push("")}else if(k.type==="prompt"){C&&(R.push(""),C=!1,$=null,L="");let A=k.data,M=A.prompt.length>100?A.prompt.substring(0,100)+"...":A.prompt;R.push(`**\u{1F4AC} User Prompt #${A.prompt_number}** (${P(k.epoch)})`),R.push(`> ${M}`),R.push("")}else if(k.type==="observation"){let A=k.data,M="General";M!==$&&(C&&R.push(""),R.push(`**${M}**`),R.push("| ID | Time | T | Title | Tokens |"),R.push("|----|------|---|-------|--------|"),$=M,C=!0,L="");let W="\u2022";switch(A.type){case"bugfix":W="\u{1F534}";break;case"feature":W="\u{1F7E3}";break;case"refactor":W="\u{1F504}";break;case"change":W="\u2705";break;case"discovery":W="\u{1F535}";break;case"decision":W="\u{1F9E0}";break}let Q=x(k.epoch),te=A.title||"Untitled",K=E(A.narrative),fe=Q!==L?Q:"\u2033";L=Q;let Te=N?" \u2190 **ANCHOR**":"";R.push(`| #${A.id} | ${fe} | ${W} | ${te}${Te} | ~${K} |`)}}C&&R.push("")}return{content:[{type:"text",text:R.join(` +`)}]}}}catch(n){return{content:[{type:"text",text:`Timeline query failed: ${n.message}`}],isError:!0}}}}],dn=new Os({name:"claude-mem-search",version:"1.0.0"},{capabilities:{tools:{}}});dn.setRequestHandler(ca,async()=>({tools:Dl.map(s=>({name:s.name,description:s.description,inputSchema:tn(s.inputSchema)}))}));dn.setRequestHandler(ua,async s=>{let e=Dl.find(r=>r.name===s.params.name);if(!e)throw new Error(`Unknown tool: ${s.params.name}`);try{return await e.handler(s.params.arguments||{})}catch(r){return{content:[{type:"text",text:`Tool execution failed: ${r.message}`}],isError:!0}}});async function Cl(){if(q("[search-server] Shutting down..."),Oe)try{await Oe.close(),q("[search-server] Chroma client closed")}catch(s){q("[search-server] Error closing Chroma client:",s.message)}if(be)try{be.close(),q("[search-server] SessionSearch closed")}catch(s){q("[search-server] Error closing SessionSearch:",s.message)}if(oe)try{oe.close(),q("[search-server] SessionStore closed")}catch(s){q("[search-server] Error closing SessionStore:",s.message)}q("[search-server] Shutdown complete"),process.exit(0)}process.on("SIGTERM",Cl);process.on("SIGINT",Cl);async function Oh(){let s=new Is;await dn.connect(s),q("[search-server] Claude-mem search server started"),setTimeout(async()=>{try{q("[search-server] Initializing Chroma client...");let e=new $s({command:"uvx",args:["chroma-mcp","--client-type","persistent","--data-dir",xl],stderr:"ignore"}),r=new Ns({name:"claude-mem-search-chroma-client",version:"1.0.0"},{capabilities:{}});await r.connect(e),Oe=r,q("[search-server] Chroma client connected successfully")}catch(e){q("[search-server] Failed to initialize Chroma client:",e.message),q("[search-server] Vector search unavailable - text queries will return empty results (FTS5 fallback removed)"),q("[search-server] Install UVX/Python to enable vector search: https://docs.astral.sh/uv/getting-started/installation/"),Oe=null}},0)}Oh().catch(s=>{q("[search-server] Fatal error:",s),process.exit(1)}); /*! Bundled license information: uri-js/dist/es5/uri.all.js: diff --git a/plugin/scripts/summary-hook.js b/plugin/scripts/summary-hook.js index 9a23a2f9..f8cb76b3 100755 --- a/plugin/scripts/summary-hook.js +++ b/plugin/scripts/summary-hook.js @@ -1,431 +1,16 @@ #!/usr/bin/env node -import{stdin as w}from"process";import{readFileSync as F,existsSync as X}from"fs";import Y from"better-sqlite3";import{join as l,dirname as B,basename as ce}from"path";import{homedir as D}from"os";import{existsSync as le,mkdirSync as j}from"fs";import{fileURLToPath as $}from"url";function W(){return typeof __dirname<"u"?__dirname:B($(import.meta.url))}var G=W(),T=process.env.CLAUDE_MEM_DATA_DIR||l(D(),".claude-mem"),O=process.env.CLAUDE_CONFIG_DIR||l(D(),".claude"),Te=l(T,"archives"),ge=l(T,"logs"),Se=l(T,"trash"),be=l(T,"backups"),Re=l(T,"settings.json"),k=l(T,"claude-mem.db"),he=l(T,"vector-db"),fe=l(O,"settings.json"),Oe=l(O,"commands"),Ne=l(O,"CLAUDE.md");function x(a){j(a,{recursive:!0})}function N(){return l(G,"..","..")}var I=(n=>(n[n.DEBUG=0]="DEBUG",n[n.INFO=1]="INFO",n[n.WARN=2]="WARN",n[n.ERROR=3]="ERROR",n[n.SILENT=4]="SILENT",n))(I||{}),L=class{level;useColor;constructor(){let e=process.env.CLAUDE_MEM_LOG_LEVEL?.toUpperCase()||"INFO";this.level=I[e]??1,this.useColor=process.stdout.isTTY??!1}correlationId(e,s){return`obs-${e}-${s}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.level===0?`${e.message} -${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let s=Object.keys(e);return s.length===0?"{}":s.length<=3?JSON.stringify(e):`{${s.length} keys: ${s.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,s){if(!s)return e;try{let t=typeof s=="string"?JSON.parse(s):s;if(e==="Bash"&&t.command){let r=t.command.length>50?t.command.substring(0,50)+"...":t.command;return`${e}(${r})`}if(e==="Read"&&t.file_path){let r=t.file_path.split("/").pop()||t.file_path;return`${e}(${r})`}if(e==="Edit"&&t.file_path){let r=t.file_path.split("/").pop()||t.file_path;return`${e}(${r})`}if(e==="Write"&&t.file_path){let r=t.file_path.split("/").pop()||t.file_path;return`${e}(${r})`}return e}catch{return e}}log(e,s,t,r,n){if(e0&&(u=` {${Object.entries(d).map(([H,P])=>`${H}=${P}`).join(", ")}}`)}let E=`[${o}] [${i}] [${p}] ${c}${t}${u}${_}`;e===3?console.error(E):console.log(E)}debug(e,s,t,r){this.log(0,e,s,t,r)}info(e,s,t,r){this.log(1,e,s,t,r)}warn(e,s,t,r){this.log(2,e,s,t,r)}error(e,s,t,r){this.log(3,e,s,t,r)}dataIn(e,s,t,r){this.info(e,`\u2192 ${s}`,t,r)}dataOut(e,s,t,r){this.info(e,`\u2190 ${s}`,t,r)}success(e,s,t,r){this.info(e,`\u2713 ${s}`,t,r)}failure(e,s,t,r){this.error(e,`\u2717 ${s}`,t,r)}timing(e,s,t,r){this.info(e,`\u23F1 ${s}`,r,{duration:`${t}ms`})}},S=new L;var R=class{db;constructor(){x(T),this.db=new Y(k),this.db.pragma("journal_mode = WAL"),this.db.pragma("synchronous = NORMAL"),this.db.pragma("foreign_keys = ON"),this.initializeSchema(),this.ensureWorkerPortColumn(),this.ensurePromptTrackingColumns(),this.removeSessionSummariesUniqueConstraint(),this.addObservationHierarchicalFields(),this.makeObservationsTextNullable(),this.createUserPromptsTable(),this.ensureDiscoveryTokensColumn()}initializeSchema(){try{this.db.exec(` - CREATE TABLE IF NOT EXISTS schema_versions ( - id INTEGER PRIMARY KEY, - version INTEGER UNIQUE NOT NULL, - applied_at TEXT NOT NULL - ) - `);let e=this.db.prepare("SELECT version FROM schema_versions ORDER BY version").all();(e.length>0?Math.max(...e.map(t=>t.version)):0)===0&&(console.error("[SessionStore] Initializing fresh database with migration004..."),this.db.exec(` - CREATE TABLE IF NOT EXISTS sdk_sessions ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - claude_session_id TEXT UNIQUE NOT NULL, - sdk_session_id TEXT UNIQUE, - project TEXT NOT NULL, - user_prompt TEXT, - started_at TEXT NOT NULL, - started_at_epoch INTEGER NOT NULL, - completed_at TEXT, - completed_at_epoch INTEGER, - status TEXT CHECK(status IN ('active', 'completed', 'failed')) NOT NULL DEFAULT 'active' - ); - - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_claude_id ON sdk_sessions(claude_session_id); - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_sdk_id ON sdk_sessions(sdk_session_id); - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_project ON sdk_sessions(project); - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_status ON sdk_sessions(status); - CREATE INDEX IF NOT EXISTS idx_sdk_sessions_started ON sdk_sessions(started_at_epoch DESC); - - CREATE TABLE IF NOT EXISTS observations ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - text TEXT NOT NULL, - type TEXT NOT NULL CHECK(type IN ('decision', 'bugfix', 'feature', 'refactor', 'discovery')), - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ); - - CREATE INDEX IF NOT EXISTS idx_observations_sdk_session ON observations(sdk_session_id); - CREATE INDEX IF NOT EXISTS idx_observations_project ON observations(project); - CREATE INDEX IF NOT EXISTS idx_observations_type ON observations(type); - CREATE INDEX IF NOT EXISTS idx_observations_created ON observations(created_at_epoch DESC); - - CREATE TABLE IF NOT EXISTS session_summaries ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT UNIQUE NOT NULL, - project TEXT NOT NULL, - request TEXT, - investigated TEXT, - learned TEXT, - completed TEXT, - next_steps TEXT, - files_read TEXT, - files_edited TEXT, - notes TEXT, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ); - - CREATE INDEX IF NOT EXISTS idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); - CREATE INDEX IF NOT EXISTS idx_session_summaries_project ON session_summaries(project); - CREATE INDEX IF NOT EXISTS idx_session_summaries_created ON session_summaries(created_at_epoch DESC); - `),this.db.prepare("INSERT INTO schema_versions (version, applied_at) VALUES (?, ?)").run(4,new Date().toISOString()),console.error("[SessionStore] Migration004 applied successfully"))}catch(e){throw console.error("[SessionStore] Schema initialization error:",e.message),e}}ensureWorkerPortColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(5))return;this.db.pragma("table_info(sdk_sessions)").some(r=>r.name==="worker_port")||(this.db.exec("ALTER TABLE sdk_sessions ADD COLUMN worker_port INTEGER"),console.error("[SessionStore] Added worker_port column to sdk_sessions table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(5,new Date().toISOString())}catch(e){console.error("[SessionStore] Migration error:",e.message)}}ensurePromptTrackingColumns(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(6))return;this.db.pragma("table_info(sdk_sessions)").some(p=>p.name==="prompt_counter")||(this.db.exec("ALTER TABLE sdk_sessions ADD COLUMN prompt_counter INTEGER DEFAULT 0"),console.error("[SessionStore] Added prompt_counter column to sdk_sessions table")),this.db.pragma("table_info(observations)").some(p=>p.name==="prompt_number")||(this.db.exec("ALTER TABLE observations ADD COLUMN prompt_number INTEGER"),console.error("[SessionStore] Added prompt_number column to observations table")),this.db.pragma("table_info(session_summaries)").some(p=>p.name==="prompt_number")||(this.db.exec("ALTER TABLE session_summaries ADD COLUMN prompt_number INTEGER"),console.error("[SessionStore] Added prompt_number column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(6,new Date().toISOString())}catch(e){console.error("[SessionStore] Prompt tracking migration error:",e.message)}}removeSessionSummariesUniqueConstraint(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(7))return;if(!this.db.pragma("index_list(session_summaries)").some(r=>r.unique===1)){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString());return}console.error("[SessionStore] Removing UNIQUE constraint from session_summaries.sdk_session_id..."),this.db.exec("BEGIN TRANSACTION");try{this.db.exec(` - CREATE TABLE session_summaries_new ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - request TEXT, - investigated TEXT, - learned TEXT, - completed TEXT, - next_steps TEXT, - files_read TEXT, - files_edited TEXT, - notes TEXT, - prompt_number INTEGER, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ) - `),this.db.exec(` - INSERT INTO session_summaries_new - SELECT id, sdk_session_id, project, request, investigated, learned, - completed, next_steps, files_read, files_edited, notes, - prompt_number, created_at, created_at_epoch - FROM session_summaries - `),this.db.exec("DROP TABLE session_summaries"),this.db.exec("ALTER TABLE session_summaries_new RENAME TO session_summaries"),this.db.exec(` - CREATE INDEX idx_session_summaries_sdk_session ON session_summaries(sdk_session_id); - CREATE INDEX idx_session_summaries_project ON session_summaries(project); - CREATE INDEX idx_session_summaries_created ON session_summaries(created_at_epoch DESC); - `),this.db.exec("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(7,new Date().toISOString()),console.error("[SessionStore] Successfully removed UNIQUE constraint from session_summaries.sdk_session_id")}catch(r){throw this.db.exec("ROLLBACK"),r}}catch(e){console.error("[SessionStore] Migration error (remove UNIQUE constraint):",e.message)}}addObservationHierarchicalFields(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(8))return;if(this.db.pragma("table_info(observations)").some(r=>r.name==="title")){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString());return}console.error("[SessionStore] Adding hierarchical fields to observations table..."),this.db.exec(` - ALTER TABLE observations ADD COLUMN title TEXT; - ALTER TABLE observations ADD COLUMN subtitle TEXT; - ALTER TABLE observations ADD COLUMN facts TEXT; - ALTER TABLE observations ADD COLUMN narrative TEXT; - ALTER TABLE observations ADD COLUMN concepts TEXT; - ALTER TABLE observations ADD COLUMN files_read TEXT; - ALTER TABLE observations ADD COLUMN files_modified TEXT; - `),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(8,new Date().toISOString()),console.error("[SessionStore] Successfully added hierarchical fields to observations table")}catch(e){console.error("[SessionStore] Migration error (add hierarchical fields):",e.message)}}makeObservationsTextNullable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(9))return;let t=this.db.pragma("table_info(observations)").find(r=>r.name==="text");if(!t||t.notnull===0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString());return}console.error("[SessionStore] Making observations.text nullable..."),this.db.exec("BEGIN TRANSACTION");try{this.db.exec(` - CREATE TABLE observations_new ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - sdk_session_id TEXT NOT NULL, - project TEXT NOT NULL, - text TEXT, - type TEXT NOT NULL CHECK(type IN ('decision', 'bugfix', 'feature', 'refactor', 'discovery', 'change')), - title TEXT, - subtitle TEXT, - facts TEXT, - narrative TEXT, - concepts TEXT, - files_read TEXT, - files_modified TEXT, - prompt_number INTEGER, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(sdk_session_id) REFERENCES sdk_sessions(sdk_session_id) ON DELETE CASCADE - ) - `),this.db.exec(` - INSERT INTO observations_new - SELECT id, sdk_session_id, project, text, type, title, subtitle, facts, - narrative, concepts, files_read, files_modified, prompt_number, - created_at, created_at_epoch - FROM observations - `),this.db.exec("DROP TABLE observations"),this.db.exec("ALTER TABLE observations_new RENAME TO observations"),this.db.exec(` - CREATE INDEX idx_observations_sdk_session ON observations(sdk_session_id); - CREATE INDEX idx_observations_project ON observations(project); - CREATE INDEX idx_observations_type ON observations(type); - CREATE INDEX idx_observations_created ON observations(created_at_epoch DESC); - `),this.db.exec("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(9,new Date().toISOString()),console.error("[SessionStore] Successfully made observations.text nullable")}catch(r){throw this.db.exec("ROLLBACK"),r}}catch(e){console.error("[SessionStore] Migration error (make text nullable):",e.message)}}createUserPromptsTable(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(10))return;if(this.db.pragma("table_info(user_prompts)").length>0){this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString());return}console.error("[SessionStore] Creating user_prompts table with FTS5 support..."),this.db.exec("BEGIN TRANSACTION");try{this.db.exec(` - CREATE TABLE user_prompts ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - claude_session_id TEXT NOT NULL, - prompt_number INTEGER NOT NULL, - prompt_text TEXT NOT NULL, - created_at TEXT NOT NULL, - created_at_epoch INTEGER NOT NULL, - FOREIGN KEY(claude_session_id) REFERENCES sdk_sessions(claude_session_id) ON DELETE CASCADE - ); - - CREATE INDEX idx_user_prompts_claude_session ON user_prompts(claude_session_id); - CREATE INDEX idx_user_prompts_created ON user_prompts(created_at_epoch DESC); - CREATE INDEX idx_user_prompts_prompt_number ON user_prompts(prompt_number); - CREATE INDEX idx_user_prompts_lookup ON user_prompts(claude_session_id, prompt_number); - `),this.db.exec(` - CREATE VIRTUAL TABLE user_prompts_fts USING fts5( - prompt_text, - content='user_prompts', - content_rowid='id' - ); - `),this.db.exec(` - CREATE TRIGGER user_prompts_ai AFTER INSERT ON user_prompts BEGIN - INSERT INTO user_prompts_fts(rowid, prompt_text) - VALUES (new.id, new.prompt_text); - END; - - CREATE TRIGGER user_prompts_ad AFTER DELETE ON user_prompts BEGIN - INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) - VALUES('delete', old.id, old.prompt_text); - END; - - CREATE TRIGGER user_prompts_au AFTER UPDATE ON user_prompts BEGIN - INSERT INTO user_prompts_fts(user_prompts_fts, rowid, prompt_text) - VALUES('delete', old.id, old.prompt_text); - INSERT INTO user_prompts_fts(rowid, prompt_text) - VALUES (new.id, new.prompt_text); - END; - `),this.db.exec("COMMIT"),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(10,new Date().toISOString()),console.error("[SessionStore] Successfully created user_prompts table with FTS5 support")}catch(t){throw this.db.exec("ROLLBACK"),t}}catch(e){console.error("[SessionStore] Migration error (create user_prompts table):",e.message)}}ensureDiscoveryTokensColumn(){try{if(this.db.prepare("SELECT version FROM schema_versions WHERE version = ?").get(11))return;this.db.pragma("table_info(observations)").some(o=>o.name==="discovery_tokens")||(this.db.exec("ALTER TABLE observations ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.error("[SessionStore] Added discovery_tokens column to observations table")),this.db.pragma("table_info(session_summaries)").some(o=>o.name==="discovery_tokens")||(this.db.exec("ALTER TABLE session_summaries ADD COLUMN discovery_tokens INTEGER DEFAULT 0"),console.error("[SessionStore] Added discovery_tokens column to session_summaries table")),this.db.prepare("INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)").run(11,new Date().toISOString())}catch(e){throw console.error("[SessionStore] Discovery tokens migration error:",e.message),e}}getRecentSummaries(e,s=10){return this.db.prepare(` - SELECT - request, investigated, learned, completed, next_steps, - files_read, files_edited, notes, prompt_number, created_at - FROM session_summaries - WHERE project = ? - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e,s)}getRecentSummariesWithSessionInfo(e,s=3){return this.db.prepare(` - SELECT - sdk_session_id, request, learned, completed, next_steps, - prompt_number, created_at - FROM session_summaries - WHERE project = ? - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e,s)}getRecentObservations(e,s=20){return this.db.prepare(` - SELECT type, text, prompt_number, created_at - FROM observations - WHERE project = ? - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e,s)}getAllRecentObservations(e=100){return this.db.prepare(` - SELECT id, type, title, subtitle, text, project, prompt_number, created_at, created_at_epoch - FROM observations - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e)}getAllRecentSummaries(e=50){return this.db.prepare(` - SELECT id, request, investigated, learned, completed, next_steps, - files_read, files_edited, notes, project, prompt_number, - created_at, created_at_epoch - FROM session_summaries - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(e)}getAllRecentUserPrompts(e=100){return this.db.prepare(` - SELECT - up.id, - up.claude_session_id, - s.project, - up.prompt_number, - up.prompt_text, - up.created_at, - up.created_at_epoch - FROM user_prompts up - LEFT JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - ORDER BY up.created_at_epoch DESC - LIMIT ? - `).all(e)}getAllProjects(){return this.db.prepare(` - SELECT DISTINCT project - FROM sdk_sessions - WHERE project IS NOT NULL AND project != '' - ORDER BY project ASC - `).all().map(t=>t.project)}getRecentSessionsWithStatus(e,s=3){return this.db.prepare(` - SELECT * FROM ( - SELECT - s.sdk_session_id, - s.status, - s.started_at, - s.started_at_epoch, - s.user_prompt, - CASE WHEN sum.sdk_session_id IS NOT NULL THEN 1 ELSE 0 END as has_summary - FROM sdk_sessions s - LEFT JOIN session_summaries sum ON s.sdk_session_id = sum.sdk_session_id - WHERE s.project = ? AND s.sdk_session_id IS NOT NULL - GROUP BY s.sdk_session_id - ORDER BY s.started_at_epoch DESC - LIMIT ? - ) - ORDER BY started_at_epoch ASC - `).all(e,s)}getObservationsForSession(e){return this.db.prepare(` - SELECT title, subtitle, type, prompt_number - FROM observations - WHERE sdk_session_id = ? - ORDER BY created_at_epoch ASC - `).all(e)}getObservationById(e){return this.db.prepare(` - SELECT * - FROM observations - WHERE id = ? - `).get(e)||null}getObservationsByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:r}=s,n=t==="date_asc"?"ASC":"DESC",o=r?`LIMIT ${r}`:"",i=e.map(()=>"?").join(",");return this.db.prepare(` - SELECT * - FROM observations - WHERE id IN (${i}) - ORDER BY created_at_epoch ${n} - ${o} - `).all(...e)}getSummaryForSession(e){return this.db.prepare(` - SELECT - request, investigated, learned, completed, next_steps, - files_read, files_edited, notes, prompt_number, created_at - FROM session_summaries - WHERE sdk_session_id = ? - ORDER BY created_at_epoch DESC - LIMIT 1 - `).get(e)||null}getFilesForSession(e){let t=this.db.prepare(` - SELECT files_read, files_modified - FROM observations - WHERE sdk_session_id = ? - `).all(e),r=new Set,n=new Set;for(let o of t){if(o.files_read)try{let i=JSON.parse(o.files_read);Array.isArray(i)&&i.forEach(p=>r.add(p))}catch{}if(o.files_modified)try{let i=JSON.parse(o.files_modified);Array.isArray(i)&&i.forEach(p=>n.add(p))}catch{}}return{filesRead:Array.from(r),filesModified:Array.from(n)}}getSessionById(e){return this.db.prepare(` - SELECT id, claude_session_id, sdk_session_id, project, user_prompt - FROM sdk_sessions - WHERE id = ? - LIMIT 1 - `).get(e)||null}findActiveSDKSession(e){return this.db.prepare(` - SELECT id, sdk_session_id, project, worker_port - FROM sdk_sessions - WHERE claude_session_id = ? AND status = 'active' - LIMIT 1 - `).get(e)||null}findAnySDKSession(e){return this.db.prepare(` - SELECT id - FROM sdk_sessions - WHERE claude_session_id = ? - LIMIT 1 - `).get(e)||null}reactivateSession(e,s){this.db.prepare(` - UPDATE sdk_sessions - SET status = 'active', user_prompt = ?, worker_port = NULL - WHERE id = ? - `).run(s,e)}incrementPromptCounter(e){return this.db.prepare(` - UPDATE sdk_sessions - SET prompt_counter = COALESCE(prompt_counter, 0) + 1 - WHERE id = ? - `).run(e),this.db.prepare(` - SELECT prompt_counter FROM sdk_sessions WHERE id = ? - `).get(e)?.prompt_counter||1}getPromptCounter(e){return this.db.prepare(` - SELECT prompt_counter FROM sdk_sessions WHERE id = ? - `).get(e)?.prompt_counter||0}createSDKSession(e,s,t){let r=new Date,n=r.getTime(),i=this.db.prepare(` - INSERT OR IGNORE INTO sdk_sessions - (claude_session_id, sdk_session_id, project, user_prompt, started_at, started_at_epoch, status) - VALUES (?, ?, ?, ?, ?, ?, 'active') - `).run(e,e,s,t,r.toISOString(),n);return i.lastInsertRowid===0||i.changes===0?(s&&s.trim()!==""&&this.db.prepare(` - UPDATE sdk_sessions - SET project = ?, user_prompt = ? - WHERE claude_session_id = ? - `).run(s,t,e),this.db.prepare(` - SELECT id FROM sdk_sessions WHERE claude_session_id = ? LIMIT 1 - `).get(e).id):i.lastInsertRowid}updateSDKSessionId(e,s){return this.db.prepare(` - UPDATE sdk_sessions - SET sdk_session_id = ? - WHERE id = ? AND sdk_session_id IS NULL - `).run(s,e).changes===0?(S.debug("DB","sdk_session_id already set, skipping update",{sessionId:e,sdkSessionId:s}),!1):!0}setWorkerPort(e,s){this.db.prepare(` - UPDATE sdk_sessions - SET worker_port = ? - WHERE id = ? - `).run(s,e)}getWorkerPort(e){return this.db.prepare(` - SELECT worker_port - FROM sdk_sessions - WHERE id = ? - LIMIT 1 - `).get(e)?.worker_port||null}saveUserPrompt(e,s,t){let r=new Date,n=r.getTime();return this.db.prepare(` - INSERT INTO user_prompts - (claude_session_id, prompt_number, prompt_text, created_at, created_at_epoch) - VALUES (?, ?, ?, ?, ?) - `).run(e,s,t,r.toISOString(),n).lastInsertRowid}getUserPrompt(e,s){return this.db.prepare(` - SELECT prompt_text - FROM user_prompts - WHERE claude_session_id = ? AND prompt_number = ? - LIMIT 1 - `).get(e,s)?.prompt_text??null}storeObservation(e,s,t,r,n=0){let o=new Date,i=o.getTime();this.db.prepare(` - SELECT id FROM sdk_sessions WHERE sdk_session_id = ? - `).get(e)||(this.db.prepare(` - INSERT INTO sdk_sessions - (claude_session_id, sdk_session_id, project, started_at, started_at_epoch, status) - VALUES (?, ?, ?, ?, ?, 'active') - `).run(e,e,s,o.toISOString(),i),console.error(`[SessionStore] Auto-created session record for session_id: ${e}`));let u=this.db.prepare(` - INSERT INTO observations - (sdk_session_id, project, type, title, subtitle, facts, narrative, concepts, - files_read, files_modified, prompt_number, discovery_tokens, created_at, created_at_epoch) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `).run(e,s,t.type,t.title,t.subtitle,JSON.stringify(t.facts),t.narrative,JSON.stringify(t.concepts),JSON.stringify(t.files_read),JSON.stringify(t.files_modified),r||null,n,o.toISOString(),i);return{id:Number(u.lastInsertRowid),createdAtEpoch:i}}storeSummary(e,s,t,r,n=0){let o=new Date,i=o.getTime();this.db.prepare(` - SELECT id FROM sdk_sessions WHERE sdk_session_id = ? - `).get(e)||(this.db.prepare(` - INSERT INTO sdk_sessions - (claude_session_id, sdk_session_id, project, started_at, started_at_epoch, status) - VALUES (?, ?, ?, ?, ?, 'active') - `).run(e,e,s,o.toISOString(),i),console.error(`[SessionStore] Auto-created session record for session_id: ${e}`));let u=this.db.prepare(` - INSERT INTO session_summaries - (sdk_session_id, project, request, investigated, learned, completed, - next_steps, notes, prompt_number, discovery_tokens, created_at, created_at_epoch) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `).run(e,s,t.request,t.investigated,t.learned,t.completed,t.next_steps,t.notes,r||null,n,o.toISOString(),i);return{id:Number(u.lastInsertRowid),createdAtEpoch:i}}markSessionCompleted(e){let s=new Date,t=s.getTime();this.db.prepare(` - UPDATE sdk_sessions - SET status = 'completed', completed_at = ?, completed_at_epoch = ? - WHERE id = ? - `).run(s.toISOString(),t,e)}markSessionFailed(e){let s=new Date,t=s.getTime();this.db.prepare(` - UPDATE sdk_sessions - SET status = 'failed', completed_at = ?, completed_at_epoch = ? - WHERE id = ? - `).run(s.toISOString(),t,e)}getSessionSummariesByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:r}=s,n=t==="date_asc"?"ASC":"DESC",o=r?`LIMIT ${r}`:"",i=e.map(()=>"?").join(",");return this.db.prepare(` - SELECT * FROM session_summaries - WHERE id IN (${i}) - ORDER BY created_at_epoch ${n} - ${o} - `).all(...e)}getUserPromptsByIds(e,s={}){if(e.length===0)return[];let{orderBy:t="date_desc",limit:r}=s,n=t==="date_asc"?"ASC":"DESC",o=r?`LIMIT ${r}`:"",i=e.map(()=>"?").join(",");return this.db.prepare(` - SELECT - up.*, - s.project, - s.sdk_session_id - FROM user_prompts up - JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - WHERE up.id IN (${i}) - ORDER BY up.created_at_epoch ${n} - ${o} - `).all(...e)}getTimelineAroundTimestamp(e,s=10,t=10,r){return this.getTimelineAroundObservation(null,e,s,t,r)}getTimelineAroundObservation(e,s,t=10,r=10,n){let o=n?"AND project = ?":"",i=n?[n]:[],p,c;if(e!==null){let g=` - SELECT id, created_at_epoch - FROM observations - WHERE id <= ? ${o} - ORDER BY id DESC - LIMIT ? - `,b=` - SELECT id, created_at_epoch - FROM observations - WHERE id >= ? ${o} - ORDER BY id ASC - LIMIT ? - `;try{let m=this.db.prepare(g).all(e,...i,t+1),d=this.db.prepare(b).all(e,...i,r+1);if(m.length===0&&d.length===0)return{observations:[],sessions:[],prompts:[]};p=m.length>0?m[m.length-1].created_at_epoch:s,c=d.length>0?d[d.length-1].created_at_epoch:s}catch(m){return console.error("[SessionStore] Error getting boundary observations:",m.message),{observations:[],sessions:[],prompts:[]}}}else{let g=` - SELECT created_at_epoch - FROM observations - WHERE created_at_epoch <= ? ${o} - ORDER BY created_at_epoch DESC - LIMIT ? - `,b=` - SELECT created_at_epoch - FROM observations - WHERE created_at_epoch >= ? ${o} - ORDER BY created_at_epoch ASC - LIMIT ? - `;try{let m=this.db.prepare(g).all(s,...i,t),d=this.db.prepare(b).all(s,...i,r+1);if(m.length===0&&d.length===0)return{observations:[],sessions:[],prompts:[]};p=m.length>0?m[m.length-1].created_at_epoch:s,c=d.length>0?d[d.length-1].created_at_epoch:s}catch(m){return console.error("[SessionStore] Error getting boundary timestamps:",m.message),{observations:[],sessions:[],prompts:[]}}}let _=` - SELECT * - FROM observations - WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${o} - ORDER BY created_at_epoch ASC - `,u=` - SELECT * - FROM session_summaries - WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${o} - ORDER BY created_at_epoch ASC - `,E=` - SELECT up.*, s.project, s.sdk_session_id - FROM user_prompts up - JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - WHERE up.created_at_epoch >= ? AND up.created_at_epoch <= ? ${o.replace("project","s.project")} - ORDER BY up.created_at_epoch ASC - `;try{let g=this.db.prepare(_).all(p,c,...i),b=this.db.prepare(u).all(p,c,...i),m=this.db.prepare(E).all(p,c,...i);return{observations:g,sessions:b.map(d=>({id:d.id,sdk_session_id:d.sdk_session_id,project:d.project,request:d.request,completed:d.completed,next_steps:d.next_steps,created_at:d.created_at,created_at_epoch:d.created_at_epoch})),prompts:m.map(d=>({id:d.id,claude_session_id:d.claude_session_id,project:d.project,prompt:d.prompt_text,created_at:d.created_at,created_at_epoch:d.created_at_epoch}))}}catch(g){return console.error("[SessionStore] Error querying timeline records:",g.message),{observations:[],sessions:[],prompts:[]}}}close(){this.db.close()}};function K(a,e,s){return a==="PreCompact"?e?{continue:!0,suppressOutput:!0}:{continue:!1,stopReason:s.reason||"Pre-compact operation failed",suppressOutput:!0}:a==="SessionStart"?e&&s.context?{continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"SessionStart",additionalContext:s.context}}:{continue:!0,suppressOutput:!0}:a==="UserPromptSubmit"||a==="PostToolUse"?{continue:!0,suppressOutput:!0}:a==="Stop"?{continue:!0,suppressOutput:!0}:{continue:e,suppressOutput:!0,...s.reason&&!e?{stopReason:s.reason}:{}}}function y(a,e,s={}){let t=K(a,e,s);return JSON.stringify(t)}import A from"path";import{homedir as q}from"os";import{existsSync as v,readFileSync as V}from"fs";import{spawnSync as J}from"child_process";var Q=100,z=500,Z=10;function h(){try{let a=A.join(q(),".claude-mem","settings.json");if(v(a)){let e=JSON.parse(V(a,"utf-8")),s=parseInt(e.env?.CLAUDE_MEM_WORKER_PORT,10);if(!isNaN(s))return s}}catch{}return parseInt(process.env.CLAUDE_MEM_WORKER_PORT||"37777",10)}async function U(){try{let a=h();return(await fetch(`http://127.0.0.1:${a}/health`,{signal:AbortSignal.timeout(Q)})).ok}catch{return!1}}async function ee(){try{let a=N(),e=A.join(a,"ecosystem.config.cjs");if(!v(e))throw new Error(`Ecosystem config not found at ${e}`);let s=A.join(a,"node_modules",".bin","pm2"),t=process.platform==="win32"?s+".cmd":s,r=v(t)?t:"pm2",n=J(r,["start",e],{cwd:a,stdio:"pipe",encoding:"utf-8",windowsHide:!0});if(n.status!==0)throw new Error(n.stderr||"PM2 start failed");for(let o=0;osetTimeout(i,z)),await U())return!0;return!1}catch{return!1}}async function M(){if(await U())return;if(!await ee()){let e=h(),s=N();throw new Error(`Worker service failed to start on port ${e}. +import{stdin as U}from"process";import{readFileSync as I,existsSync as P}from"fs";function b(o,t,e){return o==="PreCompact"?t?{continue:!0,suppressOutput:!0}:{continue:!1,stopReason:e.reason||"Pre-compact operation failed",suppressOutput:!0}:o==="SessionStart"?t&&e.context?{continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"SessionStart",additionalContext:e.context}}:{continue:!0,suppressOutput:!0}:o==="UserPromptSubmit"||o==="PostToolUse"?{continue:!0,suppressOutput:!0}:o==="Stop"?{continue:!0,suppressOutput:!0}:{continue:t,suppressOutput:!0,...e.reason&&!t?{stopReason:e.reason}:{}}}function R(o,t,e={}){let r=b(o,t,e);return JSON.stringify(r)}var m=(s=>(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(m||{}),S=class{level;useColor;constructor(){let t=process.env.CLAUDE_MEM_LOG_LEVEL?.toUpperCase()||"INFO";this.level=m[t]??1,this.useColor=process.stdout.isTTY??!1}correlationId(t,e){return`obs-${t}-${e}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.level===0?`${t.message} +${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let e=Object.keys(t);return e.length===0?"{}":e.length<=3?JSON.stringify(t):`{${e.length} keys: ${e.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,e){if(!e)return t;try{let r=typeof e=="string"?JSON.parse(e):e;if(t==="Bash"&&r.command){let n=r.command.length>50?r.command.substring(0,50)+"...":r.command;return`${t}(${n})`}if(t==="Read"&&r.file_path){let n=r.file_path.split("/").pop()||r.file_path;return`${t}(${n})`}if(t==="Edit"&&r.file_path){let n=r.file_path.split("/").pop()||r.file_path;return`${t}(${n})`}if(t==="Write"&&r.file_path){let n=r.file_path.split("/").pop()||r.file_path;return`${t}(${n})`}return t}catch{return t}}log(t,e,r,n,s){if(t0&&(y=` {${Object.entries(D).map(([k,v])=>`${k}=${v}`).join(", ")}}`)}let A=`[${i}] [${c}] [${f}] ${g}${r}${y}${l}`;t===3?console.error(A):console.log(A)}debug(t,e,r,n){this.log(0,t,e,r,n)}info(t,e,r,n){this.log(1,t,e,r,n)}warn(t,e,r,n){this.log(2,t,e,r,n)}error(t,e,r,n){this.log(3,t,e,r,n)}dataIn(t,e,r,n){this.info(t,`\u2192 ${e}`,r,n)}dataOut(t,e,r,n){this.info(t,`\u2190 ${e}`,r,n)}success(t,e,r,n){this.info(t,`\u2713 ${e}`,r,n)}failure(t,e,r,n){this.error(t,`\u2717 ${e}`,r,n)}timing(t,e,r,n){this.info(t,`\u23F1 ${e}`,n,{duration:`${r}ms`})}},p=new S;import d from"path";import{homedir as K}from"os";import{spawnSync as V}from"child_process";import{join as a,dirname as w,basename as at}from"path";import{homedir as h}from"os";import{fileURLToPath as $}from"url";function H(){return typeof __dirname<"u"?__dirname:w($(import.meta.url))}var F=H(),u=process.env.CLAUDE_MEM_DATA_DIR||a(h(),".claude-mem"),O=process.env.CLAUDE_CONFIG_DIR||a(h(),".claude"),ft=a(u,"archives"),Et=a(u,"logs"),_t=a(u,"trash"),gt=a(u,"backups"),lt=a(u,"settings.json"),mt=a(u,"claude-mem.db"),St=a(u,"vector-db"),Ot=a(O,"settings.json"),Tt=a(O,"commands"),dt=a(O,"CLAUDE.md");function T(){return a(F,"..","..")}import{readFileSync as B,existsSync as X}from"fs";var W=["bugfix","feature","refactor","discovery","decision","change"],j=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"];var M=W.join(","),L=j.join(",");var E=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:M,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:L,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(t){return process.env[t]||this.DEFAULTS[t]}static getInt(t){let e=this.get(t);return parseInt(e,10)}static getBool(t){return this.get(t)==="true"}static loadFromFile(t){if(!X(t))return this.getAllDefaults();let e=B(t,"utf-8"),n=JSON.parse(e).env||{},s={...this.DEFAULTS};for(let i of Object.keys(this.DEFAULTS))n[i]!==void 0&&(s[i]=n[i]);return s}};var G=100,Y=500,J=10;function _(){let o=d.join(K(),".claude-mem","settings.json"),t=E.loadFromFile(o);return parseInt(t.CLAUDE_MEM_WORKER_PORT,10)}async function N(){try{let o=_();return(await fetch(`http://127.0.0.1:${o}/health`,{signal:AbortSignal.timeout(G)})).ok}catch{return!1}}async function q(){try{let o=T(),t=d.join(o,"ecosystem.config.cjs");if(!existsSync(t))throw new Error(`Ecosystem config not found at ${t}`);let e=d.join(o,"node_modules",".bin","pm2"),r=process.platform==="win32"?e+".cmd":e,n=existsSync(r)?r:"pm2",s=V(n,["start",t],{cwd:o,stdio:"pipe",encoding:"utf-8",windowsHide:!0});if(s.status!==0)throw new Error(s.stderr||"PM2 start failed");for(let i=0;isetTimeout(c,Y)),await N())return!0;return!1}catch{return!1}}async function x(){if(await N())return;if(!await q()){let t=_(),e=T();throw new Error(`Worker service failed to start on port ${t}. To start manually, run: - cd ${s} + cd ${e} npx pm2 start ecosystem.config.cjs -If already running, try: npx pm2 restart claude-mem-worker`)}}import{appendFileSync as se}from"fs";import{homedir as te}from"os";import{join as re}from"path";var ne=re(te(),".claude-mem","silent.log");function f(a,e,s=""){let t=new Date().toISOString(),i=((new Error().stack||"").split(` -`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),p=i?`${i[1].split("/").pop()}:${i[2]}`:"unknown",c=`[${t}] [${p}] ${a}`;if(e!==void 0)try{c+=` ${JSON.stringify(e)}`}catch(_){c+=` [stringify error: ${_}]`}c+=` -`;try{se(ne,c)}catch(_){console.error("[silent-debug] Failed to write to log:",_)}return s}function oe(a){if(!a||!X(a))return"";try{let e=F(a,"utf-8").trim();if(!e)return"";let s=e.split(` -`);for(let t=s.length-1;t>=0;t--)try{let r=JSON.parse(s[t]);if(r.type==="user"&&r.message?.content){let n=r.message.content;if(typeof n=="string")return n;if(Array.isArray(n))return n.filter(i=>i.type==="text").map(i=>i.text).join(` -`)}}catch{continue}}catch(e){S.error("HOOK","Failed to read transcript",{transcriptPath:a},e)}return""}function ie(a){if(!a||!X(a))return"";try{let e=F(a,"utf-8").trim();if(!e)return"";let s=e.split(` -`);for(let t=s.length-1;t>=0;t--)try{let r=JSON.parse(s[t]);if(r.type==="assistant"&&r.message?.content){let n="",o=r.message.content;return typeof o=="string"?n=o:Array.isArray(o)&&(n=o.filter(p=>p.type==="text").map(p=>p.text).join(` -`)),n=n.replace(/[\s\S]*?<\/system-reminder>/g,""),n=n.replace(/\n{3,}/g,` +If already running, try: npx pm2 restart claude-mem-worker`)}}function z(o){if(!o||!P(o))return"";try{let t=I(o,"utf-8").trim();if(!t)return"";let e=t.split(` +`);for(let r=e.length-1;r>=0;r--)try{let n=JSON.parse(e[r]);if(n.type==="user"&&n.message?.content){let s=n.message.content;if(typeof s=="string")return s;if(Array.isArray(s))return s.filter(c=>c.type==="text").map(c=>c.text).join(` +`)}}catch{continue}}catch(t){p.error("HOOK","Failed to read transcript",{transcriptPath:o},t)}return""}function Q(o){if(!o||!P(o))return"";try{let t=I(o,"utf-8").trim();if(!t)return"";let e=t.split(` +`);for(let r=e.length-1;r>=0;r--)try{let n=JSON.parse(e[r]);if(n.type==="assistant"&&n.message?.content){let s="",i=n.message.content;return typeof i=="string"?s=i:Array.isArray(i)&&(s=i.filter(f=>f.type==="text").map(f=>f.text).join(` +`)),s=s.replace(/[\s\S]*?<\/system-reminder>/g,""),s=s.replace(/\n{3,}/g,` -`).trim(),n}}catch{continue}}catch(e){S.error("HOOK","Failed to read transcript",{transcriptPath:a},e)}return""}async function ae(a){if(!a)throw new Error("summaryHook requires input");let{session_id:e}=a;await M();let s=new R,t=s.createSDKSession(e,"",""),r=s.getPromptCounter(t),n=s.getUserPrompt(e,r);if(!n||n.trim()===""){f("[summary-hook] Skipping summary - user prompt was entirely private",{session_id:e,promptNumber:r}),s.close(),console.log(y("Stop",!0));return}let o=s.db.prepare(` - SELECT id, claude_session_id, sdk_session_id, project - FROM sdk_sessions WHERE id = ? - `).get(t),i=s.db.prepare(` - SELECT COUNT(*) as count - FROM observations - WHERE sdk_session_id = ? - `).get(o?.sdk_session_id);f("[summary-hook] Session diagnostics",{claudeSessionId:e,sessionDbId:t,sdkSessionId:o?.sdk_session_id,project:o?.project,promptNumber:r,observationCount:i?.count||0,transcriptPath:a.transcript_path}),s.close();let p=h(),c=oe(a.transcript_path||""),_=ie(a.transcript_path||"");f("[summary-hook] Extracted messages",{hasLastUserMessage:!!c,hasLastAssistantMessage:!!_,lastAssistantPreview:_.substring(0,200),lastAssistantLength:_.length}),S.dataIn("HOOK","Stop: Requesting summary",{sessionId:t,workerPort:p,promptNumber:r,hasLastUserMessage:!!c,hasLastAssistantMessage:!!_});try{let u=await fetch(`http://127.0.0.1:${p}/sessions/${t}/summarize`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt_number:r,last_user_message:c,last_assistant_message:_}),signal:AbortSignal.timeout(2e3)});if(!u.ok){let E=await u.text();throw S.failure("HOOK","Failed to generate summary",{sessionId:t,status:u.status},E),new Error(`Failed to request summary from worker: ${u.status} ${E}`)}S.debug("HOOK","Summary request sent successfully",{sessionId:t})}catch(u){throw u.cause?.code==="ECONNREFUSED"||u.name==="TimeoutError"||u.message.includes("fetch failed")?new Error("There's a problem with the worker. If you just updated, type `pm2 restart claude-mem-worker` in your terminal to continue"):u}finally{await fetch(`http://127.0.0.1:${p}/api/processing`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({isProcessing:!1})})}console.log(y("Stop",!0))}var C="";w.on("data",a=>C+=a);w.on("end",async()=>{let a=C?JSON.parse(C):void 0;await ae(a)}); +`).trim(),s}}catch{continue}}catch(t){p.error("HOOK","Failed to read transcript",{transcriptPath:o},t)}return""}async function Z(o){if(!o)throw new Error("summaryHook requires input");let{session_id:t}=o;await x();let e=_(),r=z(o.transcript_path||""),n=Q(o.transcript_path||"");p.dataIn("HOOK","Stop: Requesting summary",{workerPort:e,hasLastUserMessage:!!r,hasLastAssistantMessage:!!n});try{let s=await fetch(`http://127.0.0.1:${e}/api/sessions/summarize`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({claudeSessionId:t,last_user_message:r,last_assistant_message:n}),signal:AbortSignal.timeout(2e3)});if(!s.ok){let i=await s.text();throw p.failure("HOOK","Failed to generate summary",{status:s.status},i),new Error(`Failed to request summary from worker: ${s.status} ${i}`)}p.debug("HOOK","Summary request sent successfully")}catch(s){throw s.cause?.code==="ECONNREFUSED"||s.name==="TimeoutError"||s.message.includes("fetch failed")?new Error("There's a problem with the worker. If you just updated, type `pm2 restart claude-mem-worker` in your terminal to continue"):s}finally{fetch(`http://127.0.0.1:${e}/api/processing`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({isProcessing:!1})}).catch(()=>{})}console.log(R("Stop",!0))}var C="";U.on("data",o=>C+=o);U.on("end",async()=>{let o=C?JSON.parse(C):void 0;await Z(o)}); diff --git a/plugin/scripts/user-message-hook.js b/plugin/scripts/user-message-hook.js index d4ae7bb3..9d4187b0 100755 --- a/plugin/scripts/user-message-hook.js +++ b/plugin/scripts/user-message-hook.js @@ -1,7 +1,7 @@ #!/usr/bin/env node -import{execSync as P}from"child_process";import{join as a}from"path";import{homedir as f}from"os";import{existsSync as S}from"fs";import k from"path";import{homedir as A}from"os";import{existsSync as R,readFileSync as C}from"fs";import{join as t,dirname as _,basename as H}from"path";import{homedir as d}from"os";import{fileURLToPath as x}from"url";function E(){return typeof __dirname<"u"?__dirname:_(x(import.meta.url))}var j=E(),o=process.env.CLAUDE_MEM_DATA_DIR||t(d(),".claude-mem"),c=process.env.CLAUDE_CONFIG_DIR||t(d(),".claude"),N=t(o,"archives"),$=t(o,"logs"),F=t(o,"trash"),K=t(o,"backups"),B=t(o,"settings.json"),G=t(o,"claude-mem.db"),V=t(o,"vector-db"),J=t(c,"settings.json"),Y=t(c,"commands"),Z=t(c,"CLAUDE.md");function l(){try{let r=k.join(A(),".claude-mem","settings.json");if(R(r)){let s=JSON.parse(C(r,"utf-8")),n=parseInt(s.env?.CLAUDE_MEM_WORKER_PORT,10);if(!isNaN(n))return n}}catch{}return parseInt(process.env.CLAUDE_MEM_WORKER_PORT||"37777",10)}var v=a(f(),".claude","plugins","marketplaces","thedotmack"),I=a(v,"node_modules");S(I)||(console.error(` +import{join as O,basename as x}from"path";import{homedir as P}from"os";import{existsSync as k}from"fs";import I from"path";import{homedir as w}from"os";import{join as e,dirname as M,basename as X}from"path";import{homedir as l}from"os";import{fileURLToPath as h}from"url";function N(){return typeof __dirname<"u"?__dirname:M(h(import.meta.url))}var G=N(),s=process.env.CLAUDE_MEM_DATA_DIR||e(l(),".claude-mem"),E=process.env.CLAUDE_CONFIG_DIR||e(l(),".claude"),K=e(s,"archives"),Y=e(s,"logs"),$=e(s,"trash"),q=e(s,"backups"),J=e(s,"settings.json"),Z=e(s,"claude-mem.db"),z=e(s,"vector-db"),Q=e(E,"settings.json"),tt=e(E,"commands"),et=e(E,"CLAUDE.md");import{readFileSync as R,existsSync as y}from"fs";var U=["bugfix","feature","refactor","discovery","decision","change"],L=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"];var S=U.join(","),d=L.join(",");var c=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:S,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:d,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(t){return process.env[t]||this.DEFAULTS[t]}static getInt(t){let r=this.get(t);return parseInt(r,10)}static getBool(t){return this.get(t)==="true"}static loadFromFile(t){if(!y(t))return this.getAllDefaults();let r=R(t,"utf-8"),o=JSON.parse(r).env||{},a={...this.DEFAULTS};for(let i of Object.keys(this.DEFAULTS))o[i]!==void 0&&(a[i]=o[i]);return a}};function g(){let n=I.join(w(),".claude-mem","settings.json"),t=c.loadFromFile(n);return parseInt(t.CLAUDE_MEM_WORKER_PORT,10)}var v=O(P(),".claude","plugins","marketplaces","thedotmack"),b=O(v,"node_modules");k(b)||(console.error(` --- -\u{1F389} Note: This appears under Plugin Hook Error, but it's not an error. That's the only option for +\u{1F389} Note: This appears under Plugin Hook Error, but it's not an error. That's the only option for user messages in Claude Code UI until a better method is provided. --- @@ -17,7 +17,7 @@ Dependencies have been installed in the background. This only happens once. Thank you for installing Claude-Mem! This message was not added to your startup context, so you can continue working as normal. -`),process.exit(3));try{let r=a(f(),".claude","plugins","marketplaces","thedotmack","plugin","scripts","context-hook.js"),s=P(`node "${r}" --colors`,{encoding:"utf8",windowsHide:!0}),n=l(),e=new Date,g=new Date("2025-12-06T00:00:00Z"),h=new Date("2025-12-05T05:00:00Z"),m="";e=1&&u<=5,T=p>=17&&p<19;y&&T?i=` +`);let _="";if(o=1&&m<=5,D=p>=17&&p<19;C&&D?_=` \u{1F534} LIVE NOW: AMA w/ Dev (@thedotmack) until 7pm EST -`:i=` +`:_=` \u2013 LIVE AMA w/ Dev (@thedotmack) Dec 1st\u20135th, 5pm to 7pm EST `}console.error(` \u{1F4DD} Claude-Mem Context Loaded \u2139\uFE0F Note: This appears as stderr but is informational only -`+s+` +`+u+` \u{1F4A1} New! Wrap all or part of any message with ... to prevent storing sensitive information in your observation history. -\u{1F4AC} Community https://discord.gg/J4wttp9vDu`+m+i+` +\u{1F4AC} Community https://discord.gg/J4wttp9vDu`+T+_+` \u{1F4FA} Watch live in browser http://localhost:${n}/ -`)}catch(r){console.error(`\u274C Failed to load context display: ${r}`)}process.exit(3); +`)}catch(n){console.error(`\u274C Failed to load context display: ${n}`)}process.exit(3); diff --git a/plugin/scripts/worker-service.cjs b/plugin/scripts/worker-service.cjs index 8a7888dd..2db8da3a 100755 --- a/plugin/scripts/worker-service.cjs +++ b/plugin/scripts/worker-service.cjs @@ -1,24 +1,24 @@ #!/usr/bin/env node -"use strict";var uw=Object.create;var Zi=Object.defineProperty;var pw=Object.getOwnPropertyDescriptor;var dw=Object.getOwnPropertyNames;var fw=Object.getPrototypeOf,mw=Object.prototype.hasOwnProperty;var L=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports),Jd=(a,e)=>{for(var r in e)Zi(a,r,{get:e[r],enumerable:!0})},ef=(a,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of dw(e))!mw.call(a,s)&&s!==r&&Zi(a,s,{get:()=>e[s],enumerable:!(t=pw(e,s))||t.enumerable});return a};var Nt=(a,e,r)=>(r=a!=null?uw(fw(a)):{},ef(e||!a||!a.__esModule?Zi(r,"default",{value:a,enumerable:!0}):r,a)),hw=a=>ef(Zi({},"__esModule",{value:!0}),a);var kr=L((V$,sf)=>{var vw=require("path").relative;sf.exports=_w;var gw=process.cwd();function rf(a,e){for(var r=a.split(/[ ,]+/),t=String(e).toLowerCase(),s=0;s0}function ww(a){if(process.noDeprecation)return!0;var e=process.env.NO_DEPRECATION||"";return rf(e,a)}function Sw(a){if(process.traceDeprecation)return!0;var e=process.env.TRACE_DEPRECATION||"";return rf(e,a)}function Ki(a,e){var r=Ew(process,"deprecation");if(!(!r&&this._ignored)){var t,s,i,n,o=0,l=!1,c=Xi(),u=this._file;for(e?(n=e,i=Ms(c[1]),i.name=n.name,u=i[0]):(o=2,n=Ms(c[o]),i=n);o",r=a.getLineNumber(),t=a.getColumnNumber();a.isEval()&&(e=a.getEvalOrigin()+", "+e);var s=[e,r,t];return s.callSite=a,s.name=a.getFunctionName(),s}function tf(a){var e=a.callSite,r=a.name;r||(r="");var t=e.getThis(),s=t&&e.getTypeName();return s==="Object"&&(s=void 0),s==="Function"&&(s=t.name||s),s&&e.getMethodName()?s+"."+r:r}function Pw(a,e,r){var t=new Date().toUTCString(),s=t+" "+this._namespace+" deprecated "+a;if(this._traced){for(var i=0;i()=>(a&&(e=a(a=0)),e);var q=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports),Vl=(a,e)=>{for(var r in e)oo(a,r,{get:e[r],enumerable:!0})},Pf=(a,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Yw(e))!t1.call(a,s)&&s!==r&&oo(a,s,{get:()=>e[s],enumerable:!(t=Jw(e,s))||t.enumerable});return a};var gt=(a,e,r)=>(r=a!=null?Kw(e1(a)):{},Pf(e||!a||!a.__esModule?oo(r,"default",{value:a,enumerable:!0}):r,a)),r1=a=>Pf(oo({},"__esModule",{value:!0}),a);var Ar=q((z5,If)=>{var a1=require("path").relative;If.exports=c1;var s1=process.cwd();function kf(a,e){for(var r=a.split(/[ ,]+/),t=String(e).toLowerCase(),s=0;s0}function u1(a){if(process.noDeprecation)return!0;var e=process.env.NO_DEPRECATION||"";return kf(e,a)}function p1(a){if(process.traceDeprecation)return!0;var e=process.env.TRACE_DEPRECATION||"";return kf(e,a)}function co(a,e){var r=l1(process,"deprecation");if(!(!r&&this._ignored)){var t,s,i,n,o=0,l=!1,c=lo(),u=this._file;for(e?(n=e,i=Hs(c[1]),i.name=n.name,u=i[0]):(o=2,n=Hs(c[o]),i=n);o",r=a.getLineNumber(),t=a.getColumnNumber();a.isEval()&&(e=a.getEvalOrigin()+", "+e);var s=[e,r,t];return s.callSite=a,s.name=a.getFunctionName(),s}function Of(a){var e=a.callSite,r=a.name;r||(r="");var t=e.getThis(),s=t&&e.getTypeName();return s==="Object"&&(s=void 0),s==="Function"&&(s=t.name||s),s&&e.getMethodName()?s+"."+r:r}function d1(a,e,r){var t=new Date().toUTCString(),s=t+" "+this._namespace+" deprecated "+a;if(this._traced){for(var i=0;i{"use strict";Qi.exports=Nw;Qi.exports.format=nf;Qi.exports.parse=of;var kw=/\B(?=(\d{3})+(?!\d))/g,Aw=/(?:\.0*|(\.[^0]+)0+)$/,ma={b:1,kb:1024,mb:1<<20,gb:1<<30,tb:Math.pow(1024,4),pb:Math.pow(1024,5)},Iw=/^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;function Nw(a,e){return typeof a=="string"?of(a):typeof a=="number"?nf(a,e):null}function nf(a,e){if(!Number.isFinite(a))return null;var r=Math.abs(a),t=e&&e.thousandsSeparator||"",s=e&&e.unitSeparator||"",i=e&&e.decimalPlaces!==void 0?e.decimalPlaces:2,n=!!(e&&e.fixedDecimals),o=e&&e.unit||"";(!o||!ma[o.toLowerCase()])&&(r>=ma.pb?o="PB":r>=ma.tb?o="TB":r>=ma.gb?o="GB":r>=ma.mb?o="MB":r>=ma.kb?o="KB":o="B");var l=a/ma[o.toLowerCase()],c=l.toFixed(i);return n||(c=c.replace(Aw,"$1")),t&&(c=c.split(".").map(function(u,p){return p===0?u.replace(kw,t):u}).join(".")),c+s+o}function of(a){if(typeof a=="number"&&!isNaN(a))return a;if(typeof a!="string")return null;var e=Iw.exec(a),r,t="b";return e?(r=parseFloat(e[1]),t=e[4].toLowerCase()):(r=parseInt(a,10),t="b"),isNaN(r)?null:Math.floor(ma[t]*r)}});var zn=L(Sl=>{"use strict";var cf=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,jw=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,lf=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,Dw=/\\([\u000b\u0020-\u00ff])/g,$w=/([\\"])/g,uf=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;Sl.format=Mw;Sl.parse=Lw;function Mw(a){if(!a||typeof a!="object")throw new TypeError("argument obj is required");var e=a.parameters,r=a.type;if(!r||!uf.test(r))throw new TypeError("invalid type");var t=r;if(e&&typeof e=="object")for(var s,i=Object.keys(e).sort(),n=0;n0&&!jw.test(e))throw new TypeError("invalid parameter value");return'"'+e.replace($w,"\\$1")+'"'}function Uw(a){this.parameters=Object.create(null),this.type=a}});var Hn=L((Z$,pf)=>{"use strict";pf.exports=Object.setPrototypeOf||({__proto__:[]}instanceof Array?zw:Hw);function zw(a,e){return a.__proto__=e,a}function Hw(a,e){for(var r in e)Object.prototype.hasOwnProperty.call(a,r)||(a[r]=e[r]);return a}});var df=L((K$,Bw)=>{Bw.exports={"100":"Continue","101":"Switching Protocols","102":"Processing","103":"Early Hints","200":"OK","201":"Created","202":"Accepted","203":"Non-Authoritative Information","204":"No Content","205":"Reset Content","206":"Partial Content","207":"Multi-Status","208":"Already Reported","226":"IM Used","300":"Multiple Choices","301":"Moved Permanently","302":"Found","303":"See Other","304":"Not Modified","305":"Use Proxy","307":"Temporary Redirect","308":"Permanent Redirect","400":"Bad Request","401":"Unauthorized","402":"Payment Required","403":"Forbidden","404":"Not Found","405":"Method Not Allowed","406":"Not Acceptable","407":"Proxy Authentication Required","408":"Request Timeout","409":"Conflict","410":"Gone","411":"Length Required","412":"Precondition Failed","413":"Payload Too Large","414":"URI Too Long","415":"Unsupported Media Type","416":"Range Not Satisfiable","417":"Expectation Failed","418":"I'm a Teapot","421":"Misdirected Request","422":"Unprocessable Entity","423":"Locked","424":"Failed Dependency","425":"Too Early","426":"Upgrade Required","428":"Precondition Required","429":"Too Many Requests","431":"Request Header Fields Too Large","451":"Unavailable For Legal Reasons","500":"Internal Server Error","501":"Not Implemented","502":"Bad Gateway","503":"Service Unavailable","504":"Gateway Timeout","505":"HTTP Version Not Supported","506":"Variant Also Negotiates","507":"Insufficient Storage","508":"Loop Detected","509":"Bandwidth Limit Exceeded","510":"Not Extended","511":"Network Authentication Required"}});var Bn=L((X$,mf)=>{"use strict";var Pl=df();mf.exports=Er;Er.message=Pl;Er.code=Vw(Pl);Er.codes=Gw(Pl);Er.redirect={300:!0,301:!0,302:!0,303:!0,305:!0,307:!0,308:!0};Er.empty={204:!0,205:!0,304:!0};Er.retry={502:!0,503:!0,504:!0};function Vw(a){var e={};return Object.keys(a).forEach(function(t){var s=a[t],i=Number(t);e[s.toLowerCase()]=i}),e}function Gw(a){return Object.keys(a).map(function(r){return Number(r)})}function Ww(a){var e=a.toLowerCase();if(!Object.prototype.hasOwnProperty.call(Er.code,e))throw new Error('invalid status message: "'+a+'"');return Er.code[e]}function ff(a){if(!Object.prototype.hasOwnProperty.call(Er.message,a))throw new Error("invalid status code: "+a);return Er.message[a]}function Er(a){if(typeof a=="number")return ff(a);if(typeof a!="string")throw new TypeError("code must be a number or string");var e=parseInt(a,10);return isNaN(e)?Ww(a):ff(e)}});var hf=L((Q$,Tl)=>{typeof Object.create=="function"?Tl.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Tl.exports=function(e,r){if(r){e.super_=r;var t=function(){};t.prototype=r.prototype,e.prototype=new t,e.prototype.constructor=e}}});var vf=L((Y$,Ol)=>{try{if(Rl=require("util"),typeof Rl.inherits!="function")throw"";Ol.exports=Rl.inherits}catch{Ol.exports=hf()}var Rl});var yf=L((J$,gf)=>{"use strict";gf.exports=Zw;function Zw(a){return a.split(" ").map(function(e){return e.slice(0,1).toUpperCase()+e.slice(1)}).join("").replace(/[^ _0-9a-z]/gi,"")}});var Ma=L((eM,$a)=>{"use strict";var Kw=kr()("http-errors"),bf=Hn(),qs=Bn(),Cl=vf(),Xw=yf();$a.exports=Yi;$a.exports.HttpError=Qw();$a.exports.isHttpError=Jw($a.exports.HttpError);tS($a.exports,qs.codes,$a.exports.HttpError);function xf(a){return+(String(a).charAt(0)+"00")}function Yi(){for(var a,e,r=500,t={},s=0;s=600)&&Kw("non-error status code; use only 4xx or 5xx status codes"),(typeof r!="number"||!qs.message[r]&&(r<400||r>=600))&&(r=500);var o=Yi[r]||Yi[xf(r)];a||(a=o?new o(e):new Error(e||qs.message[r]),Error.captureStackTrace(a,Yi)),(!o||!(a instanceof o)||a.status!==r)&&(a.expose=r<500,a.status=a.statusCode=r);for(var l in t)l!=="status"&&l!=="statusCode"&&(a[l]=t[l]);return a}function Qw(){function a(){throw new TypeError("cannot construct abstract class")}return Cl(a,Error),a}function Yw(a,e,r){var t=Ef(e);function s(i){var n=i??qs.message[r],o=new Error(n);return Error.captureStackTrace(o,s),bf(o,s.prototype),Object.defineProperty(o,"message",{enumerable:!0,configurable:!0,value:n,writable:!0}),Object.defineProperty(o,"name",{enumerable:!1,configurable:!0,value:t,writable:!0}),o}return Cl(s,a),_f(s,t),s.prototype.status=r,s.prototype.statusCode=r,s.prototype.expose=!0,s}function Jw(a){return function(r){return!r||typeof r!="object"?!1:r instanceof a?!0:r instanceof Error&&typeof r.expose=="boolean"&&typeof r.statusCode=="number"&&r.status===r.statusCode}}function eS(a,e,r){var t=Ef(e);function s(i){var n=i??qs.message[r],o=new Error(n);return Error.captureStackTrace(o,s),bf(o,s.prototype),Object.defineProperty(o,"message",{enumerable:!0,configurable:!0,value:n,writable:!0}),Object.defineProperty(o,"name",{enumerable:!1,configurable:!0,value:t,writable:!0}),o}return Cl(s,a),_f(s,t),s.prototype.status=r,s.prototype.statusCode=r,s.prototype.expose=!1,s}function _f(a,e){var r=Object.getOwnPropertyDescriptor(a,"name");r&&r.configurable&&(r.value=e,Object.defineProperty(a,"name",r))}function tS(a,e,r){e.forEach(function(s){var i,n=Xw(qs.message[s]);switch(xf(s)){case 400:i=Yw(r,n,s);break;case 500:i=eS(r,n,s);break}i&&(a[s]=i,a[n]=i)})}function Ef(a){return a.substr(-5)!=="Error"?a+"Error":a}});var Sf=L((tM,wf)=>{var Vn=1e3,Gn=Vn*60,Wn=Gn*60,Zn=Wn*24,rS=Zn*365.25;wf.exports=function(a,e){e=e||{};var r=typeof a;if(r==="string"&&a.length>0)return aS(a);if(r==="number"&&isNaN(a)===!1)return e.long?nS(a):sS(a);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(a))};function aS(a){if(a=String(a),!(a.length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(a);if(e){var r=parseFloat(e[1]),t=(e[2]||"ms").toLowerCase();switch(t){case"years":case"year":case"yrs":case"yr":case"y":return r*rS;case"days":case"day":case"d":return r*Zn;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Wn;case"minutes":case"minute":case"mins":case"min":case"m":return r*Gn;case"seconds":case"second":case"secs":case"sec":case"s":return r*Vn;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function sS(a){return a>=Zn?Math.round(a/Zn)+"d":a>=Wn?Math.round(a/Wn)+"h":a>=Gn?Math.round(a/Gn)+"m":a>=Vn?Math.round(a/Vn)+"s":a+"ms"}function nS(a){return Ji(a,Zn,"day")||Ji(a,Wn,"hour")||Ji(a,Gn,"minute")||Ji(a,Vn,"second")||a+" ms"}function Ji(a,e,r){if(!(a{et=Pf.exports=Al.debug=Al.default=Al;et.coerce=uS;et.disable=cS;et.enable=oS;et.enabled=lS;et.humanize=Sf();et.names=[];et.skips=[];et.formatters={};var kl;function iS(a){var e=0,r;for(r in a)e=(e<<5)-e+a.charCodeAt(r),e|=0;return et.colors[Math.abs(e)%et.colors.length]}function Al(a){function e(){if(e.enabled){var r=e,t=+new Date,s=t-(kl||t);r.diff=s,r.prev=kl,r.curr=t,kl=t;for(var i=new Array(arguments.length),n=0;n{Rt=Rf.exports=Il();Rt.log=fS;Rt.formatArgs=dS;Rt.save=mS;Rt.load=Tf;Rt.useColors=pS;Rt.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:hS();Rt.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function pS(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}Rt.formatters.j=function(a){try{return JSON.stringify(a)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}};function dS(a){var e=this.useColors;if(a[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+a[0]+(e?"%c ":" ")+"+"+Rt.humanize(this.diff),!!e){var r="color: "+this.color;a.splice(1,0,r,"color: inherit");var t=0,s=0;a[0].replace(/%[a-zA-Z%]/g,function(i){i!=="%%"&&(t++,i==="%c"&&(s=t))}),a.splice(s,0,r)}}function fS(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function mS(a){try{a==null?Rt.storage.removeItem("debug"):Rt.storage.debug=a}catch{}}function Tf(){var a;try{a=Rt.storage.debug}catch{}return!a&&typeof process<"u"&&"env"in process&&(a=process.env.DEBUG),a}Rt.enable(Tf());function hS(){try{return window.localStorage}catch{}}});var If=L((gt,Af)=>{var Cf=require("tty"),Kn=require("util");gt=Af.exports=Il();gt.init=ES;gt.log=bS;gt.formatArgs=yS;gt.save=xS;gt.load=kf;gt.useColors=gS;gt.colors=[6,2,3,4,5,1];gt.inspectOpts=Object.keys(process.env).filter(function(a){return/^debug_/i.test(a)}).reduce(function(a,e){var r=e.substring(6).toLowerCase().replace(/_([a-z])/g,function(s,i){return i.toUpperCase()}),t=process.env[e];return/^(yes|on|true|enabled)$/i.test(t)?t=!0:/^(no|off|false|disabled)$/i.test(t)?t=!1:t==="null"?t=null:t=Number(t),a[r]=t,a},{});var Fs=parseInt(process.env.DEBUG_FD,10)||2;Fs!==1&&Fs!==2&&Kn.deprecate(function(){},"except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();var vS=Fs===1?process.stdout:Fs===2?process.stderr:_S(Fs);function gS(){return"colors"in gt.inspectOpts?!!gt.inspectOpts.colors:Cf.isatty(Fs)}gt.formatters.o=function(a){return this.inspectOpts.colors=this.useColors,Kn.inspect(a,this.inspectOpts).split(` -`).map(function(e){return e.trim()}).join(" ")};gt.formatters.O=function(a){return this.inspectOpts.colors=this.useColors,Kn.inspect(a,this.inspectOpts)};function yS(a){var e=this.namespace,r=this.useColors;if(r){var t=this.color,s=" \x1B[3"+t+";1m"+e+" \x1B[0m";a[0]=s+a[0].split(` +}`)(a,co,this,e,s);return i}function v1(a,e,r){if(!a||typeof a!="object"&&typeof a!="function")throw new TypeError("argument obj must be object");var t=Object.getOwnPropertyDescriptor(a,e);if(!t)throw new TypeError("must call property on owner object");if(!t.configurable)throw new TypeError("property must be configurable");var s=this,i=lo(),n=Hs(i[1]);n.name=e,"value"in t&&(t=n1(a,e,r));var o=t.get,l=t.set;typeof o=="function"&&(t.get=function(){return co.call(s,r,n),o.apply(this,arguments)}),typeof l=="function"&&(t.set=function(){return co.call(s,r,n),l.apply(this,arguments)}),Object.defineProperty(a,e,t)}function Cf(a,e,r){var t=new Error,s;return Object.defineProperty(t,"constructor",{value:Cf}),Object.defineProperty(t,"message",{configurable:!0,enumerable:!1,value:e,writable:!0}),Object.defineProperty(t,"name",{enumerable:!1,configurable:!0,value:"DeprecationError",writable:!0}),Object.defineProperty(t,"namespace",{configurable:!0,enumerable:!1,value:a,writable:!0}),Object.defineProperty(t,"stack",{configurable:!0,enumerable:!1,get:function(){return s!==void 0?s:s=o1.call(this,r)},set:function(n){s=n}}),t}});var Vs=q((B5,uo)=>{"use strict";uo.exports=x1;uo.exports.format=Af;uo.exports.parse=Nf;var g1=/\B(?=(\d{3})+(?!\d))/g,y1=/(?:\.0*|(\.[^0]+)0+)$/,ya={b:1,kb:1024,mb:1<<20,gb:1<<30,tb:Math.pow(1024,4),pb:Math.pow(1024,5)},b1=/^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;function x1(a,e){return typeof a=="string"?Nf(a):typeof a=="number"?Af(a,e):null}function Af(a,e){if(!Number.isFinite(a))return null;var r=Math.abs(a),t=e&&e.thousandsSeparator||"",s=e&&e.unitSeparator||"",i=e&&e.decimalPlaces!==void 0?e.decimalPlaces:2,n=!!(e&&e.fixedDecimals),o=e&&e.unit||"";(!o||!ya[o.toLowerCase()])&&(r>=ya.pb?o="PB":r>=ya.tb?o="TB":r>=ya.gb?o="GB":r>=ya.mb?o="MB":r>=ya.kb?o="KB":o="B");var l=a/ya[o.toLowerCase()],c=l.toFixed(i);return n||(c=c.replace(y1,"$1")),t&&(c=c.split(".").map(function(u,p){return p===0?u.replace(g1,t):u}).join(".")),c+s+o}function Nf(a){if(typeof a=="number"&&!isNaN(a))return a;if(typeof a!="string")return null;var e=b1.exec(a),r,t="b";return e?(r=parseFloat(e[1]),t=e[4].toLowerCase()):(r=parseInt(a,10),t="b"),isNaN(r)?null:Math.floor(ya[t]*r)}});var ei=q(Wl=>{"use strict";var Df=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,_1=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,$f=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,S1=/\\([\u000b\u0020-\u00ff])/g,E1=/([\\"])/g,jf=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;Wl.format=w1;Wl.parse=T1;function w1(a){if(!a||typeof a!="object")throw new TypeError("argument obj is required");var e=a.parameters,r=a.type;if(!r||!jf.test(r))throw new TypeError("invalid type");var t=r;if(e&&typeof e=="object")for(var s,i=Object.keys(e).sort(),n=0;n0&&!_1.test(e))throw new TypeError("invalid parameter value");return'"'+e.replace(E1,"\\$1")+'"'}function O1(a){this.parameters=Object.create(null),this.type=a}});var ti=q((V5,Mf)=>{"use strict";Mf.exports=Object.setPrototypeOf||({__proto__:[]}instanceof Array?k1:C1);function k1(a,e){return a.__proto__=e,a}function C1(a,e){for(var r in e)Object.prototype.hasOwnProperty.call(a,r)||(a[r]=e[r]);return a}});var Lf=q((G5,I1)=>{I1.exports={"100":"Continue","101":"Switching Protocols","102":"Processing","103":"Early Hints","200":"OK","201":"Created","202":"Accepted","203":"Non-Authoritative Information","204":"No Content","205":"Reset Content","206":"Partial Content","207":"Multi-Status","208":"Already Reported","226":"IM Used","300":"Multiple Choices","301":"Moved Permanently","302":"Found","303":"See Other","304":"Not Modified","305":"Use Proxy","307":"Temporary Redirect","308":"Permanent Redirect","400":"Bad Request","401":"Unauthorized","402":"Payment Required","403":"Forbidden","404":"Not Found","405":"Method Not Allowed","406":"Not Acceptable","407":"Proxy Authentication Required","408":"Request Timeout","409":"Conflict","410":"Gone","411":"Length Required","412":"Precondition Failed","413":"Payload Too Large","414":"URI Too Long","415":"Unsupported Media Type","416":"Range Not Satisfiable","417":"Expectation Failed","418":"I'm a Teapot","421":"Misdirected Request","422":"Unprocessable Entity","423":"Locked","424":"Failed Dependency","425":"Too Early","426":"Upgrade Required","428":"Precondition Required","429":"Too Many Requests","431":"Request Header Fields Too Large","451":"Unavailable For Legal Reasons","500":"Internal Server Error","501":"Not Implemented","502":"Bad Gateway","503":"Service Unavailable","504":"Gateway Timeout","505":"HTTP Version Not Supported","506":"Variant Also Negotiates","507":"Insufficient Storage","508":"Loop Detected","509":"Bandwidth Limit Exceeded","510":"Not Extended","511":"Network Authentication Required"}});var ri=q((W5,Ff)=>{"use strict";var Zl=Lf();Ff.exports=wr;wr.message=Zl;wr.code=A1(Zl);wr.codes=N1(Zl);wr.redirect={300:!0,301:!0,302:!0,303:!0,305:!0,307:!0,308:!0};wr.empty={204:!0,205:!0,304:!0};wr.retry={502:!0,503:!0,504:!0};function A1(a){var e={};return Object.keys(a).forEach(function(t){var s=a[t],i=Number(t);e[s.toLowerCase()]=i}),e}function N1(a){return Object.keys(a).map(function(r){return Number(r)})}function D1(a){var e=a.toLowerCase();if(!Object.prototype.hasOwnProperty.call(wr.code,e))throw new Error('invalid status message: "'+a+'"');return wr.code[e]}function qf(a){if(!Object.prototype.hasOwnProperty.call(wr.message,a))throw new Error("invalid status code: "+a);return wr.message[a]}function wr(a){if(typeof a=="number")return qf(a);if(typeof a!="string")throw new TypeError("code must be a number or string");var e=parseInt(a,10);return isNaN(e)?D1(a):qf(e)}});var Uf=q((Z5,Xl)=>{typeof Object.create=="function"?Xl.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Xl.exports=function(e,r){if(r){e.super_=r;var t=function(){};t.prototype=r.prototype,e.prototype=new t,e.prototype.constructor=e}}});var zf=q((X5,Kl)=>{try{if(Ql=require("util"),typeof Ql.inherits!="function")throw"";Kl.exports=Ql.inherits}catch{Kl.exports=Uf()}var Ql});var Hf=q((Q5,Bf)=>{"use strict";Bf.exports=$1;function $1(a){return a.split(" ").map(function(e){return e.slice(0,1).toUpperCase()+e.slice(1)}).join("").replace(/[^ _0-9a-z]/gi,"")}});var za=q((K5,Ua)=>{"use strict";var j1=Ar()("http-errors"),Vf=ti(),Gs=ri(),Jl=zf(),M1=Hf();Ua.exports=po;Ua.exports.HttpError=L1();Ua.exports.isHttpError=F1(Ua.exports.HttpError);z1(Ua.exports,Gs.codes,Ua.exports.HttpError);function Gf(a){return+(String(a).charAt(0)+"00")}function po(){for(var a,e,r=500,t={},s=0;s=600)&&j1("non-error status code; use only 4xx or 5xx status codes"),(typeof r!="number"||!Gs.message[r]&&(r<400||r>=600))&&(r=500);var o=po[r]||po[Gf(r)];a||(a=o?new o(e):new Error(e||Gs.message[r]),Error.captureStackTrace(a,po)),(!o||!(a instanceof o)||a.status!==r)&&(a.expose=r<500,a.status=a.statusCode=r);for(var l in t)l!=="status"&&l!=="statusCode"&&(a[l]=t[l]);return a}function L1(){function a(){throw new TypeError("cannot construct abstract class")}return Jl(a,Error),a}function q1(a,e,r){var t=Zf(e);function s(i){var n=i??Gs.message[r],o=new Error(n);return Error.captureStackTrace(o,s),Vf(o,s.prototype),Object.defineProperty(o,"message",{enumerable:!0,configurable:!0,value:n,writable:!0}),Object.defineProperty(o,"name",{enumerable:!1,configurable:!0,value:t,writable:!0}),o}return Jl(s,a),Wf(s,t),s.prototype.status=r,s.prototype.statusCode=r,s.prototype.expose=!0,s}function F1(a){return function(r){return!r||typeof r!="object"?!1:r instanceof a?!0:r instanceof Error&&typeof r.expose=="boolean"&&typeof r.statusCode=="number"&&r.status===r.statusCode}}function U1(a,e,r){var t=Zf(e);function s(i){var n=i??Gs.message[r],o=new Error(n);return Error.captureStackTrace(o,s),Vf(o,s.prototype),Object.defineProperty(o,"message",{enumerable:!0,configurable:!0,value:n,writable:!0}),Object.defineProperty(o,"name",{enumerable:!1,configurable:!0,value:t,writable:!0}),o}return Jl(s,a),Wf(s,t),s.prototype.status=r,s.prototype.statusCode=r,s.prototype.expose=!1,s}function Wf(a,e){var r=Object.getOwnPropertyDescriptor(a,"name");r&&r.configurable&&(r.value=e,Object.defineProperty(a,"name",r))}function z1(a,e,r){e.forEach(function(s){var i,n=M1(Gs.message[s]);switch(Gf(s)){case 400:i=q1(r,n,s);break;case 500:i=U1(r,n,s);break}i&&(a[s]=i,a[n]=i)})}function Zf(a){return a.substr(-5)!=="Error"?a+"Error":a}});var Qf=q((J5,Xf)=>{var ai=1e3,si=ai*60,ni=si*60,ii=ni*24,B1=ii*365.25;Xf.exports=function(a,e){e=e||{};var r=typeof a;if(r==="string"&&a.length>0)return H1(a);if(r==="number"&&isNaN(a)===!1)return e.long?G1(a):V1(a);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(a))};function H1(a){if(a=String(a),!(a.length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(a);if(e){var r=parseFloat(e[1]),t=(e[2]||"ms").toLowerCase();switch(t){case"years":case"year":case"yrs":case"yr":case"y":return r*B1;case"days":case"day":case"d":return r*ii;case"hours":case"hour":case"hrs":case"hr":case"h":return r*ni;case"minutes":case"minute":case"mins":case"min":case"m":return r*si;case"seconds":case"second":case"secs":case"sec":case"s":return r*ai;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function V1(a){return a>=ii?Math.round(a/ii)+"d":a>=ni?Math.round(a/ni)+"h":a>=si?Math.round(a/si)+"m":a>=ai?Math.round(a/ai)+"s":a+"ms"}function G1(a){return fo(a,ii,"day")||fo(a,ni,"hour")||fo(a,si,"minute")||fo(a,ai,"second")||a+" ms"}function fo(a,e,r){if(!(a{rt=Kf.exports=eu.debug=eu.default=eu;rt.coerce=K1;rt.disable=X1;rt.enable=Z1;rt.enabled=Q1;rt.humanize=Qf();rt.names=[];rt.skips=[];rt.formatters={};var Yl;function W1(a){var e=0,r;for(r in a)e=(e<<5)-e+a.charCodeAt(r),e|=0;return rt.colors[Math.abs(e)%rt.colors.length]}function eu(a){function e(){if(e.enabled){var r=e,t=+new Date,s=t-(Yl||t);r.diff=s,r.prev=Yl,r.curr=t,Yl=t;for(var i=new Array(arguments.length),n=0;n{Ct=Yf.exports=tu();Ct.log=eT;Ct.formatArgs=Y1;Ct.save=tT;Ct.load=Jf;Ct.useColors=J1;Ct.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:rT();Ct.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function J1(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}Ct.formatters.j=function(a){try{return JSON.stringify(a)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}};function Y1(a){var e=this.useColors;if(a[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+a[0]+(e?"%c ":" ")+"+"+Ct.humanize(this.diff),!!e){var r="color: "+this.color;a.splice(1,0,r,"color: inherit");var t=0,s=0;a[0].replace(/%[a-zA-Z%]/g,function(i){i!=="%%"&&(t++,i==="%c"&&(s=t))}),a.splice(s,0,r)}}function eT(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function tT(a){try{a==null?Ct.storage.removeItem("debug"):Ct.storage.debug=a}catch{}}function Jf(){var a;try{a=Ct.storage.debug}catch{}return!a&&typeof process<"u"&&"env"in process&&(a=process.env.DEBUG),a}Ct.enable(Jf());function rT(){try{return window.localStorage}catch{}}});var sm=q((bt,am)=>{var tm=require("tty"),oi=require("util");bt=am.exports=tu();bt.init=lT;bt.log=iT;bt.formatArgs=nT;bt.save=oT;bt.load=rm;bt.useColors=sT;bt.colors=[6,2,3,4,5,1];bt.inspectOpts=Object.keys(process.env).filter(function(a){return/^debug_/i.test(a)}).reduce(function(a,e){var r=e.substring(6).toLowerCase().replace(/_([a-z])/g,function(s,i){return i.toUpperCase()}),t=process.env[e];return/^(yes|on|true|enabled)$/i.test(t)?t=!0:/^(no|off|false|disabled)$/i.test(t)?t=!1:t==="null"?t=null:t=Number(t),a[r]=t,a},{});var Ws=parseInt(process.env.DEBUG_FD,10)||2;Ws!==1&&Ws!==2&&oi.deprecate(function(){},"except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();var aT=Ws===1?process.stdout:Ws===2?process.stderr:cT(Ws);function sT(){return"colors"in bt.inspectOpts?!!bt.inspectOpts.colors:tm.isatty(Ws)}bt.formatters.o=function(a){return this.inspectOpts.colors=this.useColors,oi.inspect(a,this.inspectOpts).split(` +`).map(function(e){return e.trim()}).join(" ")};bt.formatters.O=function(a){return this.inspectOpts.colors=this.useColors,oi.inspect(a,this.inspectOpts)};function nT(a){var e=this.namespace,r=this.useColors;if(r){var t=this.color,s=" \x1B[3"+t+";1m"+e+" \x1B[0m";a[0]=s+a[0].split(` `).join(` -`+s),a.push("\x1B[3"+t+"m+"+gt.humanize(this.diff)+"\x1B[0m")}else a[0]=new Date().toUTCString()+" "+e+" "+a[0]}function bS(){return vS.write(Kn.format.apply(Kn,arguments)+` -`)}function xS(a){a==null?delete process.env.DEBUG:process.env.DEBUG=a}function kf(){return process.env.DEBUG}function _S(a){var e,r=process.binding("tty_wrap");switch(r.guessHandleType(a)){case"TTY":e=new Cf.WriteStream(a),e._type="tty",e._handle&&e._handle.unref&&e._handle.unref();break;case"FILE":var t=require("fs");e=new t.SyncWriteStream(a,{autoClose:!1}),e._type="fs";break;case"PIPE":case"TCP":var s=require("net");e=new s.Socket({fd:a,readable:!1,writable:!0}),e.readable=!1,e.read=null,e._type="pipe",e._handle&&e._handle.unref&&e._handle.unref();break;default:throw new Error("Implement me. Unknown stream file type!")}return e.fd=a,e._isStdio=!0,e}function ES(a){a.inspectOpts={};for(var e=Object.keys(gt.inspectOpts),r=0;r{typeof process<"u"&&process.type==="renderer"?Nl.exports=Of():Nl.exports=If()});var jl=L((aM,jf)=>{"use strict";var wS=require("events").EventEmitter,SS=require("fs").ReadStream,Nf=require("stream"),La=require("zlib");jf.exports=PS;function PS(a,e){return AS(a)?TS(a):IS(a)?OS(a):CS(a)&&a.destroy(),kS(a)&&e&&(a.removeAllListeners("error"),a.addListener("error",NS)),a}function TS(a){a.destroy(),typeof a.close=="function"&&a.on("open",DS)}function RS(a){if(a._hadError===!0){var e=a._binding===null?"_binding":"_handle";a[e]={close:function(){this[e]=null}}}a.close()}function OS(a){typeof a.destroy=="function"?a._binding?(a.destroy(),a._processing?(a._needDrain=!0,a.once("drain",jS)):a._binding.clear()):a._destroy&&a._destroy!==Nf.Transform.prototype._destroy?a.destroy():a._destroy&&typeof a.close=="function"?(a.destroyed=!0,a.close()):a.destroy():typeof a.close=="function"&&RS(a)}function CS(a){return a instanceof Nf&&typeof a.destroy=="function"}function kS(a){return a instanceof wS}function AS(a){return a instanceof SS}function IS(a){return a instanceof La.Gzip||a instanceof La.Gunzip||a instanceof La.Deflate||a instanceof La.DeflateRaw||a instanceof La.Inflate||a instanceof La.InflateRaw||a instanceof La.Unzip}function NS(){}function jS(){this._binding.clear()}function DS(){typeof this.fd=="number"&&this.close()}});var qa=L((sM,Df)=>{"use strict";var eo=require("buffer"),Us=eo.Buffer,rr={},ar;for(ar in eo)eo.hasOwnProperty(ar)&&(ar==="SlowBuffer"||ar==="Buffer"||(rr[ar]=eo[ar]));var zs=rr.Buffer={};for(ar in Us)Us.hasOwnProperty(ar)&&(ar==="allocUnsafe"||ar==="allocUnsafeSlow"||(zs[ar]=Us[ar]));rr.Buffer.prototype=Us.prototype;(!zs.from||zs.from===Uint8Array.from)&&(zs.from=function(a,e,r){if(typeof a=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof a);if(a&&typeof a.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof a);return Us(a,e,r)});zs.alloc||(zs.alloc=function(a,e,r){if(typeof a!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof a);if(a<0||a>=2*(1<<30))throw new RangeError('The value "'+a+'" is invalid for option "size"');var t=Us(a);return!e||e.length===0?t.fill(0):typeof r=="string"?t.fill(e,r):t.fill(e),t});if(!rr.kStringMaxLength)try{rr.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch{}rr.constants||(rr.constants={MAX_LENGTH:rr.kMaxLength},rr.kStringMaxLength&&(rr.constants.MAX_STRING_LENGTH=rr.kStringMaxLength));Df.exports=rr});var Mf=L(Ml=>{"use strict";var $f="\uFEFF";Ml.PrependBOM=Dl;function Dl(a,e){this.encoder=a,this.addBOM=!0}Dl.prototype.write=function(a){return this.addBOM&&(a=$f+a,this.addBOM=!1),this.encoder.write(a)};Dl.prototype.end=function(){return this.encoder.end()};Ml.StripBOM=$l;function $l(a,e){this.decoder=a,this.pass=!1,this.options=e||{}}$l.prototype.write=function(a){var e=this.decoder.write(a);return this.pass||!e||(e[0]===$f&&(e=e.slice(1),typeof this.options.stripBOM=="function"&&this.options.stripBOM()),this.pass=!0),e};$l.prototype.end=function(){return this.decoder.end()}});var Ff=L((iM,qf)=>{"use strict";var Xn=qa().Buffer;qf.exports={utf8:{type:"_internal",bomAware:!0},cesu8:{type:"_internal",bomAware:!0},unicode11utf8:"utf8",ucs2:{type:"_internal",bomAware:!0},utf16le:"ucs2",binary:{type:"_internal"},base64:{type:"_internal"},hex:{type:"_internal"},_internal:Ll};function Ll(a,e){this.enc=a.encodingName,this.bomAware=a.bomAware,this.enc==="base64"?this.encoder=Fl:this.enc==="cesu8"&&(this.enc="utf8",this.encoder=Ul,Xn.from("eda0bdedb2a9","hex").toString()!=="\u{1F4A9}"&&(this.decoder=zl,this.defaultCharUnicode=e.defaultCharUnicode))}Ll.prototype.encoder=ql;Ll.prototype.decoder=Lf;var to=require("string_decoder").StringDecoder;to.prototype.end||(to.prototype.end=function(){});function Lf(a,e){to.call(this,e.enc)}Lf.prototype=to.prototype;function ql(a,e){this.enc=e.enc}ql.prototype.write=function(a){return Xn.from(a,this.enc)};ql.prototype.end=function(){};function Fl(a,e){this.prevStr=""}Fl.prototype.write=function(a){a=this.prevStr+a;var e=a.length-a.length%4;return this.prevStr=a.slice(e),a=a.slice(0,e),Xn.from(a,"base64")};Fl.prototype.end=function(){return Xn.from(this.prevStr,"base64")};function Ul(a,e){}Ul.prototype.write=function(a){for(var e=Xn.alloc(a.length*3),r=0,t=0;t>>6),e[r++]=128+(s&63)):(e[r++]=224+(s>>>12),e[r++]=128+(s>>>6&63),e[r++]=128+(s&63))}return e.slice(0,r)};Ul.prototype.end=function(){};function zl(a,e){this.acc=0,this.contBytes=0,this.accBytes=0,this.defaultCharUnicode=e.defaultCharUnicode}zl.prototype.write=function(a){for(var e=this.acc,r=this.contBytes,t=this.accBytes,s="",i=0;i0&&(s+=this.defaultCharUnicode,r=0),n<128?s+=String.fromCharCode(n):n<224?(e=n&31,r=1,t=1):n<240?(e=n&15,r=2,t=1):s+=this.defaultCharUnicode):r>0?(e=e<<6|n&63,r--,t++,r===0&&(t===2&&e<128&&e>0?s+=this.defaultCharUnicode:t===3&&e<2048?s+=this.defaultCharUnicode:s+=String.fromCharCode(e))):s+=this.defaultCharUnicode}return this.acc=e,this.contBytes=r,this.accBytes=t,s};zl.prototype.end=function(){var a=0;return this.contBytes>0&&(a+=this.defaultCharUnicode),a}});var zf=L(Zl=>{"use strict";var ro=qa().Buffer;Zl.utf16be=ao;function ao(){}ao.prototype.encoder=Hl;ao.prototype.decoder=Bl;ao.prototype.bomAware=!0;function Hl(){}Hl.prototype.write=function(a){for(var e=ro.from(a,"ucs2"),r=0;r=2)if(a[0]==254&&a[1]==255)r="utf-16be";else if(a[0]==255&&a[1]==254)r="utf-16le";else{for(var t=0,s=0,i=Math.min(a.length-a.length%2,64),n=0;nt?r="utf-16be":s{"use strict";var Ar=qa().Buffer;io.utf7=so;io.unicode11utf7="utf7";function so(a,e){this.iconv=e}so.prototype.encoder=Xl;so.prototype.decoder=Ql;so.prototype.bomAware=!0;var $S=/[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;function Xl(a,e){this.iconv=e.iconv}Xl.prototype.write=function(a){return Ar.from(a.replace($S,function(e){return"+"+(e==="+"?"":this.iconv.encode(e,"utf16-be").toString("base64").replace(/=+$/,""))+"-"}.bind(this)))};Xl.prototype.end=function(){};function Ql(a,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var MS=/[A-Za-z0-9\/+]/,Yl=[];for(Qn=0;Qn<256;Qn++)Yl[Qn]=MS.test(String.fromCharCode(Qn));var Qn,LS=43,Fa=45,Kl=38;Ql.prototype.write=function(a){for(var e="",r=0,t=this.inBase64,s=this.base64Accum,i=0;i0&&(a=this.iconv.decode(Ar.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",a};io.utf7imap=no;function no(a,e){this.iconv=e}no.prototype.encoder=Jl;no.prototype.decoder=eu;no.prototype.bomAware=!0;function Jl(a,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=Ar.alloc(6),this.base64AccumIdx=0}Jl.prototype.write=function(a){for(var e=this.inBase64,r=this.base64Accum,t=this.base64AccumIdx,s=Ar.alloc(a.length*5+10),i=0,n=0;n0&&(i+=s.write(r.slice(0,t).toString("base64").replace(/\//g,",").replace(/=+$/,""),i),t=0),s[i++]=Fa,e=!1),e||(s[i++]=o,o===Kl&&(s[i++]=Fa))):(e||(s[i++]=Kl,e=!0),e&&(r[t++]=o>>8,r[t++]=o&255,t==r.length&&(i+=s.write(r.toString("base64").replace(/\//g,","),i),t=0)))}return this.inBase64=e,this.base64AccumIdx=t,s.slice(0,i)};Jl.prototype.end=function(){var a=Ar.alloc(10),e=0;return this.inBase64&&(this.base64AccumIdx>0&&(e+=a.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),e),this.base64AccumIdx=0),a[e++]=Fa,this.inBase64=!1),a.slice(0,e)};function eu(a,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var Hf=Yl.slice();Hf[44]=!0;eu.prototype.write=function(a){for(var e="",r=0,t=this.inBase64,s=this.base64Accum,i=0;i0&&(a=this.iconv.decode(Ar.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",a}});var Gf=L(Vf=>{"use strict";var oo=qa().Buffer;Vf._sbcs=tu;function tu(a,e){if(!a)throw new Error("SBCS codec is called without the data.");if(!a.chars||a.chars.length!==128&&a.chars.length!==256)throw new Error("Encoding '"+a.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(a.chars.length===128){for(var r="",t=0;t<128;t++)r+=String.fromCharCode(t);a.chars=r+a.chars}this.decodeBuf=oo.from(a.chars,"ucs2");for(var s=oo.alloc(65536,e.defaultCharSingleByte.charCodeAt(0)),t=0;t{"use strict";Wf.exports={10029:"maccenteuro",maccenteuro:{type:"_sbcs",chars:"\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7"},808:"cp808",ibm808:"cp808",cp808:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0"},mik:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ascii8bit:"ascii",usascii:"ascii",ansix34:"ascii",ansix341968:"ascii",ansix341986:"ascii",csascii:"ascii",cp367:"ascii",ibm367:"ascii",isoir6:"ascii",iso646us:"ascii",iso646irv:"ascii",us:"ascii",latin1:"iso88591",latin2:"iso88592",latin3:"iso88593",latin4:"iso88594",latin5:"iso88599",latin6:"iso885910",latin7:"iso885913",latin8:"iso885914",latin9:"iso885915",latin10:"iso885916",csisolatin1:"iso88591",csisolatin2:"iso88592",csisolatin3:"iso88593",csisolatin4:"iso88594",csisolatincyrillic:"iso88595",csisolatinarabic:"iso88596",csisolatingreek:"iso88597",csisolatinhebrew:"iso88598",csisolatin5:"iso88599",csisolatin6:"iso885910",l1:"iso88591",l2:"iso88592",l3:"iso88593",l4:"iso88594",l5:"iso88599",l6:"iso885910",l7:"iso885913",l8:"iso885914",l9:"iso885915",l10:"iso885916",isoir14:"iso646jp",isoir57:"iso646cn",isoir100:"iso88591",isoir101:"iso88592",isoir109:"iso88593",isoir110:"iso88594",isoir144:"iso88595",isoir127:"iso88596",isoir126:"iso88597",isoir138:"iso88598",isoir148:"iso88599",isoir157:"iso885910",isoir166:"tis620",isoir179:"iso885913",isoir199:"iso885914",isoir203:"iso885915",isoir226:"iso885916",cp819:"iso88591",ibm819:"iso88591",cyrillic:"iso88595",arabic:"iso88596",arabic8:"iso88596",ecma114:"iso88596",asmo708:"iso88596",greek:"iso88597",greek8:"iso88597",ecma118:"iso88597",elot928:"iso88597",hebrew:"iso88598",hebrew8:"iso88598",turkish:"iso88599",turkish8:"iso88599",thai:"iso885911",thai8:"iso885911",celtic:"iso885914",celtic8:"iso885914",isoceltic:"iso885914",tis6200:"tis620",tis62025291:"tis620",tis62025330:"tis620",1e4:"macroman",10006:"macgreek",10007:"maccyrillic",10079:"maciceland",10081:"macturkish",cspc8codepage437:"cp437",cspc775baltic:"cp775",cspc850multilingual:"cp850",cspcp852:"cp852",cspc862latinhebrew:"cp862",cpgr:"cp869",msee:"cp1250",mscyrl:"cp1251",msansi:"cp1252",msgreek:"cp1253",msturk:"cp1254",mshebr:"cp1255",msarab:"cp1256",winbaltrim:"cp1257",cp20866:"koi8r",20866:"koi8r",ibm878:"koi8r",cskoi8r:"koi8r",cp21866:"koi8u",21866:"koi8u",ibm1168:"koi8u",strk10482002:"rk1048",tcvn5712:"tcvn",tcvn57121:"tcvn",gb198880:"iso646cn",cn:"iso646cn",csiso14jisc6220ro:"iso646jp",jisc62201969ro:"iso646jp",jp:"iso646jp",cshproman8:"hproman8",r8:"hproman8",roman8:"hproman8",xroman8:"hproman8",ibm1051:"hproman8",mac:"macintosh",csmacintosh:"macintosh"}});var Xf=L((pM,Kf)=>{"use strict";Kf.exports={437:"cp437",737:"cp737",775:"cp775",850:"cp850",852:"cp852",855:"cp855",856:"cp856",857:"cp857",858:"cp858",860:"cp860",861:"cp861",862:"cp862",863:"cp863",864:"cp864",865:"cp865",866:"cp866",869:"cp869",874:"windows874",922:"cp922",1046:"cp1046",1124:"cp1124",1125:"cp1125",1129:"cp1129",1133:"cp1133",1161:"cp1161",1162:"cp1162",1163:"cp1163",1250:"windows1250",1251:"windows1251",1252:"windows1252",1253:"windows1253",1254:"windows1254",1255:"windows1255",1256:"windows1256",1257:"windows1257",1258:"windows1258",28591:"iso88591",28592:"iso88592",28593:"iso88593",28594:"iso88594",28595:"iso88595",28596:"iso88596",28597:"iso88597",28598:"iso88598",28599:"iso88599",28600:"iso885910",28601:"iso885911",28603:"iso885913",28604:"iso885914",28605:"iso885915",28606:"iso885916",windows874:{type:"_sbcs",chars:"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},win874:"windows874",cp874:"windows874",windows1250:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},win1250:"windows1250",cp1250:"windows1250",windows1251:{type:"_sbcs",chars:"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},win1251:"windows1251",cp1251:"windows1251",windows1252:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},win1252:"windows1252",cp1252:"windows1252",windows1253:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},win1253:"windows1253",cp1253:"windows1253",windows1254:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},win1254:"windows1254",cp1254:"windows1254",windows1255:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},win1255:"windows1255",cp1255:"windows1255",windows1256:{type:"_sbcs",chars:"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2"},win1256:"windows1256",cp1256:"windows1256",windows1257:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9"},win1257:"windows1257",cp1257:"windows1257",windows1258:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},win1258:"windows1258",cp1258:"windows1258",iso88591:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28591:"iso88591",iso88592:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},cp28592:"iso88592",iso88593:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9"},cp28593:"iso88593",iso88594:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9"},cp28594:"iso88594",iso88595:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"},cp28595:"iso88595",iso88596:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},cp28596:"iso88596",iso88597:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},cp28597:"iso88597",iso88598:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},cp28598:"iso88598",iso88599:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},cp28599:"iso88599",iso885910:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138"},cp28600:"iso885910",iso885911:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},cp28601:"iso885911",iso885913:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019"},cp28603:"iso885913",iso885914:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF"},cp28604:"iso885914",iso885915:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28605:"iso885915",iso885916:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF"},cp28606:"iso885916",cp437:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm437:"cp437",csibm437:"cp437",cp737:{type:"_sbcs",chars:"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm737:"cp737",csibm737:"cp737",cp775:{type:"_sbcs",chars:"\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm775:"cp775",csibm775:"cp775",cp850:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm850:"cp850",csibm850:"cp850",cp852:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0"},ibm852:"cp852",csibm852:"cp852",cp855:{type:"_sbcs",chars:"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0"},ibm855:"cp855",csibm855:"cp855",cp856:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm856:"cp856",csibm856:"cp856",cp857:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm857:"cp857",csibm857:"cp857",cp858:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm858:"cp858",csibm858:"cp858",cp860:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm860:"cp860",csibm860:"cp860",cp861:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm861:"cp861",csibm861:"cp861",cp862:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm862:"cp862",csibm862:"cp862",cp863:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm863:"cp863",csibm863:"cp863",cp864:{type:"_sbcs",chars:`\0\x07\b +`+s),a.push("\x1B[3"+t+"m+"+bt.humanize(this.diff)+"\x1B[0m")}else a[0]=new Date().toUTCString()+" "+e+" "+a[0]}function iT(){return aT.write(oi.format.apply(oi,arguments)+` +`)}function oT(a){a==null?delete process.env.DEBUG:process.env.DEBUG=a}function rm(){return process.env.DEBUG}function cT(a){var e,r=process.binding("tty_wrap");switch(r.guessHandleType(a)){case"TTY":e=new tm.WriteStream(a),e._type="tty",e._handle&&e._handle.unref&&e._handle.unref();break;case"FILE":var t=require("fs");e=new t.SyncWriteStream(a,{autoClose:!1}),e._type="fs";break;case"PIPE":case"TCP":var s=require("net");e=new s.Socket({fd:a,readable:!1,writable:!0}),e.readable=!1,e.read=null,e._type="pipe",e._handle&&e._handle.unref&&e._handle.unref();break;default:throw new Error("Implement me. Unknown stream file type!")}return e.fd=a,e._isStdio=!0,e}function lT(a){a.inspectOpts={};for(var e=Object.keys(bt.inspectOpts),r=0;r{typeof process<"u"&&process.type==="renderer"?ru.exports=em():ru.exports=sm()});var au=q((eL,im)=>{"use strict";var uT=require("events").EventEmitter,pT=require("fs").ReadStream,nm=require("stream"),Ba=require("zlib");im.exports=dT;function dT(a,e){return yT(a)?fT(a):bT(a)?hT(a):vT(a)&&a.destroy(),gT(a)&&e&&(a.removeAllListeners("error"),a.addListener("error",xT)),a}function fT(a){a.destroy(),typeof a.close=="function"&&a.on("open",ST)}function mT(a){if(a._hadError===!0){var e=a._binding===null?"_binding":"_handle";a[e]={close:function(){this[e]=null}}}a.close()}function hT(a){typeof a.destroy=="function"?a._binding?(a.destroy(),a._processing?(a._needDrain=!0,a.once("drain",_T)):a._binding.clear()):a._destroy&&a._destroy!==nm.Transform.prototype._destroy?a.destroy():a._destroy&&typeof a.close=="function"?(a.destroyed=!0,a.close()):a.destroy():typeof a.close=="function"&&mT(a)}function vT(a){return a instanceof nm&&typeof a.destroy=="function"}function gT(a){return a instanceof uT}function yT(a){return a instanceof pT}function bT(a){return a instanceof Ba.Gzip||a instanceof Ba.Gunzip||a instanceof Ba.Deflate||a instanceof Ba.DeflateRaw||a instanceof Ba.Inflate||a instanceof Ba.InflateRaw||a instanceof Ba.Unzip}function xT(){}function _T(){this._binding.clear()}function ST(){typeof this.fd=="number"&&this.close()}});var Ha=q((tL,om)=>{"use strict";var mo=require("buffer"),Zs=mo.Buffer,ar={},sr;for(sr in mo)mo.hasOwnProperty(sr)&&(sr==="SlowBuffer"||sr==="Buffer"||(ar[sr]=mo[sr]));var Xs=ar.Buffer={};for(sr in Zs)Zs.hasOwnProperty(sr)&&(sr==="allocUnsafe"||sr==="allocUnsafeSlow"||(Xs[sr]=Zs[sr]));ar.Buffer.prototype=Zs.prototype;(!Xs.from||Xs.from===Uint8Array.from)&&(Xs.from=function(a,e,r){if(typeof a=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof a);if(a&&typeof a.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof a);return Zs(a,e,r)});Xs.alloc||(Xs.alloc=function(a,e,r){if(typeof a!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof a);if(a<0||a>=2*(1<<30))throw new RangeError('The value "'+a+'" is invalid for option "size"');var t=Zs(a);return!e||e.length===0?t.fill(0):typeof r=="string"?t.fill(e,r):t.fill(e),t});if(!ar.kStringMaxLength)try{ar.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch{}ar.constants||(ar.constants={MAX_LENGTH:ar.kMaxLength},ar.kStringMaxLength&&(ar.constants.MAX_STRING_LENGTH=ar.kStringMaxLength));om.exports=ar});var lm=q(iu=>{"use strict";var cm="\uFEFF";iu.PrependBOM=su;function su(a,e){this.encoder=a,this.addBOM=!0}su.prototype.write=function(a){return this.addBOM&&(a=cm+a,this.addBOM=!1),this.encoder.write(a)};su.prototype.end=function(){return this.encoder.end()};iu.StripBOM=nu;function nu(a,e){this.decoder=a,this.pass=!1,this.options=e||{}}nu.prototype.write=function(a){var e=this.decoder.write(a);return this.pass||!e||(e[0]===cm&&(e=e.slice(1),typeof this.options.stripBOM=="function"&&this.options.stripBOM()),this.pass=!0),e};nu.prototype.end=function(){return this.decoder.end()}});var dm=q((aL,pm)=>{"use strict";var ci=Ha().Buffer;pm.exports={utf8:{type:"_internal",bomAware:!0},cesu8:{type:"_internal",bomAware:!0},unicode11utf8:"utf8",ucs2:{type:"_internal",bomAware:!0},utf16le:"ucs2",binary:{type:"_internal"},base64:{type:"_internal"},hex:{type:"_internal"},_internal:ou};function ou(a,e){this.enc=a.encodingName,this.bomAware=a.bomAware,this.enc==="base64"?this.encoder=lu:this.enc==="cesu8"&&(this.enc="utf8",this.encoder=uu,ci.from("eda0bdedb2a9","hex").toString()!=="\u{1F4A9}"&&(this.decoder=pu,this.defaultCharUnicode=e.defaultCharUnicode))}ou.prototype.encoder=cu;ou.prototype.decoder=um;var ho=require("string_decoder").StringDecoder;ho.prototype.end||(ho.prototype.end=function(){});function um(a,e){ho.call(this,e.enc)}um.prototype=ho.prototype;function cu(a,e){this.enc=e.enc}cu.prototype.write=function(a){return ci.from(a,this.enc)};cu.prototype.end=function(){};function lu(a,e){this.prevStr=""}lu.prototype.write=function(a){a=this.prevStr+a;var e=a.length-a.length%4;return this.prevStr=a.slice(e),a=a.slice(0,e),ci.from(a,"base64")};lu.prototype.end=function(){return ci.from(this.prevStr,"base64")};function uu(a,e){}uu.prototype.write=function(a){for(var e=ci.alloc(a.length*3),r=0,t=0;t>>6),e[r++]=128+(s&63)):(e[r++]=224+(s>>>12),e[r++]=128+(s>>>6&63),e[r++]=128+(s&63))}return e.slice(0,r)};uu.prototype.end=function(){};function pu(a,e){this.acc=0,this.contBytes=0,this.accBytes=0,this.defaultCharUnicode=e.defaultCharUnicode}pu.prototype.write=function(a){for(var e=this.acc,r=this.contBytes,t=this.accBytes,s="",i=0;i0&&(s+=this.defaultCharUnicode,r=0),n<128?s+=String.fromCharCode(n):n<224?(e=n&31,r=1,t=1):n<240?(e=n&15,r=2,t=1):s+=this.defaultCharUnicode):r>0?(e=e<<6|n&63,r--,t++,r===0&&(t===2&&e<128&&e>0?s+=this.defaultCharUnicode:t===3&&e<2048?s+=this.defaultCharUnicode:s+=String.fromCharCode(e))):s+=this.defaultCharUnicode}return this.acc=e,this.contBytes=r,this.accBytes=t,s};pu.prototype.end=function(){var a=0;return this.contBytes>0&&(a+=this.defaultCharUnicode),a}});var mm=q(gu=>{"use strict";var vo=Ha().Buffer;gu.utf16be=go;function go(){}go.prototype.encoder=du;go.prototype.decoder=fu;go.prototype.bomAware=!0;function du(){}du.prototype.write=function(a){for(var e=vo.from(a,"ucs2"),r=0;r=2)if(a[0]==254&&a[1]==255)r="utf-16be";else if(a[0]==255&&a[1]==254)r="utf-16le";else{for(var t=0,s=0,i=Math.min(a.length-a.length%2,64),n=0;nt?r="utf-16be":s{"use strict";var Nr=Ha().Buffer;xo.utf7=yo;xo.unicode11utf7="utf7";function yo(a,e){this.iconv=e}yo.prototype.encoder=bu;yo.prototype.decoder=xu;yo.prototype.bomAware=!0;var ET=/[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;function bu(a,e){this.iconv=e.iconv}bu.prototype.write=function(a){return Nr.from(a.replace(ET,function(e){return"+"+(e==="+"?"":this.iconv.encode(e,"utf16-be").toString("base64").replace(/=+$/,""))+"-"}.bind(this)))};bu.prototype.end=function(){};function xu(a,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var wT=/[A-Za-z0-9\/+]/,_u=[];for(li=0;li<256;li++)_u[li]=wT.test(String.fromCharCode(li));var li,TT=43,Va=45,yu=38;xu.prototype.write=function(a){for(var e="",r=0,t=this.inBase64,s=this.base64Accum,i=0;i0&&(a=this.iconv.decode(Nr.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",a};xo.utf7imap=bo;function bo(a,e){this.iconv=e}bo.prototype.encoder=Su;bo.prototype.decoder=Eu;bo.prototype.bomAware=!0;function Su(a,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=Nr.alloc(6),this.base64AccumIdx=0}Su.prototype.write=function(a){for(var e=this.inBase64,r=this.base64Accum,t=this.base64AccumIdx,s=Nr.alloc(a.length*5+10),i=0,n=0;n0&&(i+=s.write(r.slice(0,t).toString("base64").replace(/\//g,",").replace(/=+$/,""),i),t=0),s[i++]=Va,e=!1),e||(s[i++]=o,o===yu&&(s[i++]=Va))):(e||(s[i++]=yu,e=!0),e&&(r[t++]=o>>8,r[t++]=o&255,t==r.length&&(i+=s.write(r.toString("base64").replace(/\//g,","),i),t=0)))}return this.inBase64=e,this.base64AccumIdx=t,s.slice(0,i)};Su.prototype.end=function(){var a=Nr.alloc(10),e=0;return this.inBase64&&(this.base64AccumIdx>0&&(e+=a.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),e),this.base64AccumIdx=0),a[e++]=Va,this.inBase64=!1),a.slice(0,e)};function Eu(a,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var hm=_u.slice();hm[44]=!0;Eu.prototype.write=function(a){for(var e="",r=0,t=this.inBase64,s=this.base64Accum,i=0;i0&&(a=this.iconv.decode(Nr.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",a}});var ym=q(gm=>{"use strict";var _o=Ha().Buffer;gm._sbcs=wu;function wu(a,e){if(!a)throw new Error("SBCS codec is called without the data.");if(!a.chars||a.chars.length!==128&&a.chars.length!==256)throw new Error("Encoding '"+a.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(a.chars.length===128){for(var r="",t=0;t<128;t++)r+=String.fromCharCode(t);a.chars=r+a.chars}this.decodeBuf=_o.from(a.chars,"ucs2");for(var s=_o.alloc(65536,e.defaultCharSingleByte.charCodeAt(0)),t=0;t{"use strict";bm.exports={10029:"maccenteuro",maccenteuro:{type:"_sbcs",chars:"\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7"},808:"cp808",ibm808:"cp808",cp808:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0"},mik:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ascii8bit:"ascii",usascii:"ascii",ansix34:"ascii",ansix341968:"ascii",ansix341986:"ascii",csascii:"ascii",cp367:"ascii",ibm367:"ascii",isoir6:"ascii",iso646us:"ascii",iso646irv:"ascii",us:"ascii",latin1:"iso88591",latin2:"iso88592",latin3:"iso88593",latin4:"iso88594",latin5:"iso88599",latin6:"iso885910",latin7:"iso885913",latin8:"iso885914",latin9:"iso885915",latin10:"iso885916",csisolatin1:"iso88591",csisolatin2:"iso88592",csisolatin3:"iso88593",csisolatin4:"iso88594",csisolatincyrillic:"iso88595",csisolatinarabic:"iso88596",csisolatingreek:"iso88597",csisolatinhebrew:"iso88598",csisolatin5:"iso88599",csisolatin6:"iso885910",l1:"iso88591",l2:"iso88592",l3:"iso88593",l4:"iso88594",l5:"iso88599",l6:"iso885910",l7:"iso885913",l8:"iso885914",l9:"iso885915",l10:"iso885916",isoir14:"iso646jp",isoir57:"iso646cn",isoir100:"iso88591",isoir101:"iso88592",isoir109:"iso88593",isoir110:"iso88594",isoir144:"iso88595",isoir127:"iso88596",isoir126:"iso88597",isoir138:"iso88598",isoir148:"iso88599",isoir157:"iso885910",isoir166:"tis620",isoir179:"iso885913",isoir199:"iso885914",isoir203:"iso885915",isoir226:"iso885916",cp819:"iso88591",ibm819:"iso88591",cyrillic:"iso88595",arabic:"iso88596",arabic8:"iso88596",ecma114:"iso88596",asmo708:"iso88596",greek:"iso88597",greek8:"iso88597",ecma118:"iso88597",elot928:"iso88597",hebrew:"iso88598",hebrew8:"iso88598",turkish:"iso88599",turkish8:"iso88599",thai:"iso885911",thai8:"iso885911",celtic:"iso885914",celtic8:"iso885914",isoceltic:"iso885914",tis6200:"tis620",tis62025291:"tis620",tis62025330:"tis620",1e4:"macroman",10006:"macgreek",10007:"maccyrillic",10079:"maciceland",10081:"macturkish",cspc8codepage437:"cp437",cspc775baltic:"cp775",cspc850multilingual:"cp850",cspcp852:"cp852",cspc862latinhebrew:"cp862",cpgr:"cp869",msee:"cp1250",mscyrl:"cp1251",msansi:"cp1252",msgreek:"cp1253",msturk:"cp1254",mshebr:"cp1255",msarab:"cp1256",winbaltrim:"cp1257",cp20866:"koi8r",20866:"koi8r",ibm878:"koi8r",cskoi8r:"koi8r",cp21866:"koi8u",21866:"koi8u",ibm1168:"koi8u",strk10482002:"rk1048",tcvn5712:"tcvn",tcvn57121:"tcvn",gb198880:"iso646cn",cn:"iso646cn",csiso14jisc6220ro:"iso646jp",jisc62201969ro:"iso646jp",jp:"iso646jp",cshproman8:"hproman8",r8:"hproman8",roman8:"hproman8",xroman8:"hproman8",ibm1051:"hproman8",mac:"macintosh",csmacintosh:"macintosh"}});var Sm=q((cL,_m)=>{"use strict";_m.exports={437:"cp437",737:"cp737",775:"cp775",850:"cp850",852:"cp852",855:"cp855",856:"cp856",857:"cp857",858:"cp858",860:"cp860",861:"cp861",862:"cp862",863:"cp863",864:"cp864",865:"cp865",866:"cp866",869:"cp869",874:"windows874",922:"cp922",1046:"cp1046",1124:"cp1124",1125:"cp1125",1129:"cp1129",1133:"cp1133",1161:"cp1161",1162:"cp1162",1163:"cp1163",1250:"windows1250",1251:"windows1251",1252:"windows1252",1253:"windows1253",1254:"windows1254",1255:"windows1255",1256:"windows1256",1257:"windows1257",1258:"windows1258",28591:"iso88591",28592:"iso88592",28593:"iso88593",28594:"iso88594",28595:"iso88595",28596:"iso88596",28597:"iso88597",28598:"iso88598",28599:"iso88599",28600:"iso885910",28601:"iso885911",28603:"iso885913",28604:"iso885914",28605:"iso885915",28606:"iso885916",windows874:{type:"_sbcs",chars:"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},win874:"windows874",cp874:"windows874",windows1250:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},win1250:"windows1250",cp1250:"windows1250",windows1251:{type:"_sbcs",chars:"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},win1251:"windows1251",cp1251:"windows1251",windows1252:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},win1252:"windows1252",cp1252:"windows1252",windows1253:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},win1253:"windows1253",cp1253:"windows1253",windows1254:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},win1254:"windows1254",cp1254:"windows1254",windows1255:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},win1255:"windows1255",cp1255:"windows1255",windows1256:{type:"_sbcs",chars:"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2"},win1256:"windows1256",cp1256:"windows1256",windows1257:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9"},win1257:"windows1257",cp1257:"windows1257",windows1258:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},win1258:"windows1258",cp1258:"windows1258",iso88591:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28591:"iso88591",iso88592:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},cp28592:"iso88592",iso88593:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9"},cp28593:"iso88593",iso88594:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9"},cp28594:"iso88594",iso88595:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"},cp28595:"iso88595",iso88596:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},cp28596:"iso88596",iso88597:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},cp28597:"iso88597",iso88598:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},cp28598:"iso88598",iso88599:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},cp28599:"iso88599",iso885910:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138"},cp28600:"iso885910",iso885911:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},cp28601:"iso885911",iso885913:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019"},cp28603:"iso885913",iso885914:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF"},cp28604:"iso885914",iso885915:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28605:"iso885915",iso885916:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF"},cp28606:"iso885916",cp437:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm437:"cp437",csibm437:"cp437",cp737:{type:"_sbcs",chars:"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm737:"cp737",csibm737:"cp737",cp775:{type:"_sbcs",chars:"\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm775:"cp775",csibm775:"cp775",cp850:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm850:"cp850",csibm850:"cp850",cp852:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0"},ibm852:"cp852",csibm852:"cp852",cp855:{type:"_sbcs",chars:"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0"},ibm855:"cp855",csibm855:"cp855",cp856:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm856:"cp856",csibm856:"cp856",cp857:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm857:"cp857",csibm857:"cp857",cp858:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm858:"cp858",csibm858:"cp858",cp860:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm860:"cp860",csibm860:"cp860",cp861:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm861:"cp861",csibm861:"cp861",cp862:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm862:"cp862",csibm862:"cp862",cp863:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm863:"cp863",csibm863:"cp863",cp864:{type:"_sbcs",chars:`\0\x07\b \v\f\r\x1B !"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD`},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0"},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0"},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0"},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0"},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7"},maccyrillic:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"},macgreek:{type:"_sbcs",chars:"\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD"},maciceland:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macroman:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macromania:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macthai:{type:"_sbcs",chars:"\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD"},macturkish:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macukraine:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"},koi8r:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8u:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8ru:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8t:{type:"_sbcs",chars:"\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},armscii8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD"},rk1048:{type:"_sbcs",chars:"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},tcvn:{type:"_sbcs",chars:`\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b \v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0`},georgianacademy:{type:"_sbcs",chars:"\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},georgianps:{type:"_sbcs",chars:"\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},pt154:{type:"_sbcs",chars:"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},viscii:{type:"_sbcs",chars:`\0\u1EB2\u1EB4\u1EAA\x07\b \v\f\r\u1EF6\u1EF8\x1B\u1EF4 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE`},iso646cn:{type:"_sbcs",chars:`\0\x07\b \v\f\r\x1B !"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD`},iso646jp:{type:"_sbcs",chars:`\0\x07\b -\v\f\r\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD`},hproman8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD"},macintosh:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},ascii:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},tis620:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"}}});var Jf=L(Yf=>{"use strict";var Bs=qa().Buffer;Yf._dbcs=Kr;var jt=-1,Qf=-2,sr=-10,Ir=-1e3,Hs=new Array(256),Yn=-1;for(co=0;co<256;co++)Hs[co]=jt;var co;function Kr(a,e){if(this.encodingName=a.encodingName,!a)throw new Error("DBCS codec is called without the data.");if(!a.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var r=a.table();this.decodeTables=[],this.decodeTables[0]=Hs.slice(0),this.decodeTableSeq=[];for(var t=0;t0;a>>=8)e.push(a&255);e.length==0&&e.push(0);for(var r=this.decodeTables[0],t=e.length-1;t>0;t--){var s=r[e[t]];if(s==jt)r[e[t]]=Ir-this.decodeTables.length,this.decodeTables.push(r=Hs.slice(0));else if(s<=Ir)r=this.decodeTables[Ir-s];else throw new Error("Overwrite byte in "+this.encodingName+", addr: "+a.toString(16))}return r};Kr.prototype._addDecodeChunk=function(a){var e=parseInt(a[0],16),r=this._getDecodeTrieNode(e);e=e&255;for(var t=1;t255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+a[0]+": too long"+e)};Kr.prototype._getEncodeBucket=function(a){var e=a>>8;return this.encodeTable[e]===void 0&&(this.encodeTable[e]=Hs.slice(0)),this.encodeTable[e]};Kr.prototype._setEncodeChar=function(a,e){var r=this._getEncodeBucket(a),t=a&255;r[t]<=sr?this.encodeTableSeq[sr-r[t]][Yn]=e:r[t]==jt&&(r[t]=e)};Kr.prototype._setEncodeSequence=function(a,e){var r=a[0],t=this._getEncodeBucket(r),s=r&255,i;t[s]<=sr?i=this.encodeTableSeq[sr-t[s]]:(i={},t[s]!==jt&&(i[Yn]=t[s]),t[s]=sr-this.encodeTableSeq.length,this.encodeTableSeq.push(i));for(var n=1;n=0?this._setEncodeChar(i,n):i<=Ir?this._fillEncodeTable(Ir-i,n<<8,r):i<=sr&&this._setEncodeSequence(this.decodeTableSeq[sr-i],n))}};function lo(a,e){this.leadSurrogate=-1,this.seqObj=void 0,this.encodeTable=e.encodeTable,this.encodeTableSeq=e.encodeTableSeq,this.defaultCharSingleByte=e.defCharSB,this.gb18030=e.gb18030}lo.prototype.write=function(a){for(var e=Bs.alloc(a.length*(this.gb18030?4:3)),r=this.leadSurrogate,t=this.seqObj,s=-1,i=0,n=0;;){if(s===-1){if(i==a.length)break;var o=a.charCodeAt(i++)}else{var o=s;s=-1}if(55296<=o&&o<57344)if(o<56320)if(r===-1){r=o;continue}else r=o,o=jt;else r!==-1?(o=65536+(r-55296)*1024+(o-56320),r=-1):o=jt;else r!==-1&&(s=o,o=jt,r=-1);var l=jt;if(t!==void 0&&o!=jt){var c=t[o];if(typeof c=="object"){t=c;continue}else typeof c=="number"?l=c:c==null&&(c=t[Yn],c!==void 0&&(l=c,s=o));t=void 0}else if(o>=0){var u=this.encodeTable[o>>8];if(u!==void 0&&(l=u[o&255]),l<=sr){t=this.encodeTableSeq[sr-l];continue}if(l==jt&&this.gb18030){var p=nu(this.gb18030.uChars,o);if(p!=-1){var l=this.gb18030.gbChars[p]+(o-this.gb18030.uChars[p]);e[n++]=129+Math.floor(l/12600),l=l%12600,e[n++]=48+Math.floor(l/1260),l=l%1260,e[n++]=129+Math.floor(l/10),l=l%10,e[n++]=48+l;continue}}}l===jt&&(l=this.defaultCharSingleByte),l<256?e[n++]=l:l<65536?(e[n++]=l>>8,e[n++]=l&255):(e[n++]=l>>16,e[n++]=l>>8&255,e[n++]=l&255)}return this.seqObj=t,this.leadSurrogate=r,e.slice(0,n)};lo.prototype.end=function(){if(!(this.leadSurrogate===-1&&this.seqObj===void 0)){var a=Bs.alloc(10),e=0;if(this.seqObj){var r=this.seqObj[Yn];r!==void 0&&(r<256?a[e++]=r:(a[e++]=r>>8,a[e++]=r&255)),this.seqObj=void 0}return this.leadSurrogate!==-1&&(a[e++]=this.defaultCharSingleByte,this.leadSurrogate=-1),a.slice(0,e)}};lo.prototype.findIdx=nu;function su(a,e){this.nodeIdx=0,this.prevBuf=Bs.alloc(0),this.decodeTables=e.decodeTables,this.decodeTableSeq=e.decodeTableSeq,this.defaultCharUnicode=e.defaultCharUnicode,this.gb18030=e.gb18030}su.prototype.write=function(a){var e=Bs.alloc(a.length*2),r=this.nodeIdx,t=this.prevBuf,s=this.prevBuf.length,i=-this.prevBuf.length,n;s>0&&(t=Bs.concat([t,a.slice(0,10)]));for(var o=0,l=0;o=0?a[o]:t[o+s],n=this.decodeTables[r][c];if(!(n>=0))if(n===jt)o=i,n=this.defaultCharUnicode.charCodeAt(0);else if(n===Qf){var u=i>=0?a.slice(i,o+1):t.slice(i+s,o+1+s),p=(u[0]-129)*12600+(u[1]-48)*1260+(u[2]-129)*10+(u[3]-48),m=nu(this.gb18030.gbChars,p);n=this.gb18030.uChars[m]+p-this.gb18030.gbChars[m]}else if(n<=Ir){r=Ir-n;continue}else if(n<=sr){for(var f=this.decodeTableSeq[sr-n],h=0;h>8;n=f[f.length-1]}else throw new Error("iconv-lite internal error: invalid decoding table value "+n+" at "+r+"/"+c);if(n>65535){n-=65536;var d=55296+Math.floor(n/1024);e[l++]=d&255,e[l++]=d>>8,n=56320+n%1024}e[l++]=n&255,e[l++]=n>>8,r=0,i=o+1}return this.nodeIdx=r,this.prevBuf=i>=0?a.slice(i):t.slice(i+s),e.slice(0,l).toString("ucs2")};su.prototype.end=function(){for(var a="";this.prevBuf.length>0;){a+=this.defaultCharUnicode;var e=this.prevBuf.slice(1);this.prevBuf=Bs.alloc(0),this.nodeIdx=0,e.length>0&&(a+=this.write(e))}return this.nodeIdx=0,a};function nu(a,e){if(a[0]>e)return-1;for(var r=0,t=a.length;r{qS.exports=[["0","\0",128],["a1","\uFF61",62],["8140","\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008",9,"\uFF0B\uFF0D\xB1\xD7"],["8180","\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],["81b8","\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],["81c8","\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],["81da","\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],["81f0","\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],["81fc","\u25EF"],["824f","\uFF10",9],["8260","\uFF21",25],["8281","\uFF41",25],["829f","\u3041",82],["8340","\u30A1",62],["8380","\u30E0",22],["839f","\u0391",16,"\u03A3",6],["83bf","\u03B1",16,"\u03C3",6],["8440","\u0410",5,"\u0401\u0416",25],["8470","\u0430",5,"\u0451\u0436",7],["8480","\u043E",17],["849f","\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],["8740","\u2460",19,"\u2160",9],["875f","\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],["877e","\u337B"],["8780","\u301D\u301F\u2116\u33CD\u2121\u32A4",4,"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],["889f","\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],["8940","\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"],["8980","\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],["8a40","\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"],["8a80","\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],["8b40","\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"],["8b80","\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],["8c40","\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"],["8c80","\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],["8d40","\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"],["8d80","\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],["8e40","\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"],["8e80","\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],["8f40","\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"],["8f80","\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],["9040","\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"],["9080","\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],["9140","\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"],["9180","\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],["9240","\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"],["9280","\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],["9340","\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"],["9380","\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],["9440","\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"],["9480","\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],["9540","\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"],["9580","\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],["9640","\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"],["9680","\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],["9740","\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"],["9780","\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],["9840","\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],["989f","\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],["9940","\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"],["9980","\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],["9a40","\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"],["9a80","\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],["9b40","\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"],["9b80","\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],["9c40","\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"],["9c80","\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],["9d40","\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"],["9d80","\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],["9e40","\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"],["9e80","\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],["9f40","\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"],["9f80","\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],["e040","\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"],["e080","\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],["e140","\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"],["e180","\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],["e240","\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"],["e280","\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],["e340","\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"],["e380","\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],["e440","\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"],["e480","\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],["e540","\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"],["e580","\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],["e640","\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"],["e680","\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],["e740","\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"],["e780","\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],["e840","\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"],["e880","\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],["e940","\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"],["e980","\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],["ea40","\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"],["ea80","\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"],["ed40","\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"],["ed80","\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],["ee40","\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"],["ee80","\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],["eeef","\u2170",9,"\uFFE2\uFFE4\uFF07\uFF02"],["f040","\uE000",62],["f080","\uE03F",124],["f140","\uE0BC",62],["f180","\uE0FB",124],["f240","\uE178",62],["f280","\uE1B7",124],["f340","\uE234",62],["f380","\uE273",124],["f440","\uE2F0",62],["f480","\uE32F",124],["f540","\uE3AC",62],["f580","\uE3EB",124],["f640","\uE468",62],["f680","\uE4A7",124],["f740","\uE524",62],["f780","\uE563",124],["f840","\uE5E0",62],["f880","\uE61F",124],["f940","\uE69C"],["fa40","\u2170",9,"\u2160",9,"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"],["fa80","\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"],["fb40","\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"],["fb80","\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"],["fc40","\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"]]});var tm=L((mM,FS)=>{FS.exports=[["0","\0",127],["8ea1","\uFF61",62],["a1a1","\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008",9,"\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"],["a2a1","\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],["a2ba","\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],["a2ca","\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],["a2dc","\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],["a2f2","\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],["a2fe","\u25EF"],["a3b0","\uFF10",9],["a3c1","\uFF21",25],["a3e1","\uFF41",25],["a4a1","\u3041",82],["a5a1","\u30A1",85],["a6a1","\u0391",16,"\u03A3",6],["a6c1","\u03B1",16,"\u03C3",6],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a8a1","\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],["ada1","\u2460",19,"\u2160",9],["adc0","\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],["addf","\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4",4,"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],["b0a1","\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],["b1a1","\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"],["b2a1","\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],["b3a1","\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"],["b4a1","\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],["b5a1","\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"],["b6a1","\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],["b7a1","\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"],["b8a1","\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],["b9a1","\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"],["baa1","\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],["bba1","\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"],["bca1","\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],["bda1","\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"],["bea1","\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],["bfa1","\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"],["c0a1","\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],["c1a1","\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"],["c2a1","\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],["c3a1","\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"],["c4a1","\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],["c5a1","\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"],["c6a1","\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],["c7a1","\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"],["c8a1","\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],["c9a1","\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"],["caa1","\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],["cba1","\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"],["cca1","\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],["cda1","\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"],["cea1","\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],["cfa1","\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],["d0a1","\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],["d1a1","\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"],["d2a1","\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],["d3a1","\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"],["d4a1","\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],["d5a1","\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"],["d6a1","\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],["d7a1","\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"],["d8a1","\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],["d9a1","\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"],["daa1","\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],["dba1","\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"],["dca1","\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],["dda1","\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"],["dea1","\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],["dfa1","\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"],["e0a1","\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],["e1a1","\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"],["e2a1","\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],["e3a1","\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"],["e4a1","\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],["e5a1","\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"],["e6a1","\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],["e7a1","\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"],["e8a1","\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],["e9a1","\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"],["eaa1","\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],["eba1","\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"],["eca1","\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],["eda1","\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"],["eea1","\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],["efa1","\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"],["f0a1","\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],["f1a1","\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"],["f2a1","\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],["f3a1","\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"],["f4a1","\u582F\u69C7\u9059\u7464\u51DC\u7199"],["f9a1","\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"],["faa1","\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],["fba1","\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"],["fca1","\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],["fcf1","\u2170",9,"\uFFE2\uFFE4\uFF07\uFF02"],["8fa2af","\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"],["8fa2c2","\xA1\xA6\xBF"],["8fa2eb","\xBA\xAA\xA9\xAE\u2122\xA4\u2116"],["8fa6e1","\u0386\u0388\u0389\u038A\u03AA"],["8fa6e7","\u038C"],["8fa6e9","\u038E\u03AB"],["8fa6ec","\u038F"],["8fa6f1","\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"],["8fa7c2","\u0402",10,"\u040E\u040F"],["8fa7f2","\u0452",10,"\u045E\u045F"],["8fa9a1","\xC6\u0110"],["8fa9a4","\u0126"],["8fa9a6","\u0132"],["8fa9a8","\u0141\u013F"],["8fa9ab","\u014A\xD8\u0152"],["8fa9af","\u0166\xDE"],["8fa9c1","\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"],["8faaa1","\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"],["8faaba","\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"],["8faba1","\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"],["8fabbd","\u0121\u0125\xED\xEC\xEF\xEE\u01D0"],["8fabc5","\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"],["8fb0a1","\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"],["8fb1a1","\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"],["8fb2a1","\u5092\u5093\u5094\u5096\u509B\u509C\u509E",4,"\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"],["8fb3a1","\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"],["8fb4a1","\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"],["8fb5a1","\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"],["8fb6a1","\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D",5,"\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4",4,"\u56F1\u56EB\u56ED"],["8fb7a1","\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D",4,"\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"],["8fb8a1","\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"],["8fb9a1","\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"],["8fbaa1","\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6",4,"\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"],["8fbba1","\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"],["8fbca1","\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A",4,"\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"],["8fbda1","\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0",4,"\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"],["8fbea1","\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110",4,"\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"],["8fbfa1","\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"],["8fc0a1","\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"],["8fc1a1","\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"],["8fc2a1","\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"],["8fc3a1","\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E",4,"\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"],["8fc4a1","\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"],["8fc5a1","\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"],["8fc6a1","\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"],["8fc7a1","\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"],["8fc8a1","\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"],["8fc9a1","\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094",4,"\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103",4,"\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"],["8fcaa1","\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"],["8fcba1","\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"],["8fcca1","\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428",9,"\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"],["8fcda1","\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579",5,"\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"],["8fcea1","\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2",6,"\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"],["8fcfa1","\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"],["8fd0a1","\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"],["8fd1a1","\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"],["8fd2a1","\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59",5],["8fd3a1","\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"],["8fd4a1","\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2",4,"\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"],["8fd5a1","\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"],["8fd6a1","\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"],["8fd7a1","\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"],["8fd8a1","\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"],["8fd9a1","\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F",4,"\u8556\u8559\u855C",6,"\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"],["8fdaa1","\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660",4,"\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"],["8fdba1","\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783",6,"\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"],["8fdca1","\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA",4,"\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"],["8fdda1","\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4",4,"\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"],["8fdea1","\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42",4,"\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"],["8fdfa1","\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"],["8fe0a1","\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"],["8fe1a1","\u8F43\u8F47\u8F4F\u8F51",4,"\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"],["8fe2a1","\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"],["8fe3a1","\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC",5,"\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275",4,"\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"],["8fe4a1","\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF",4,"\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"],["8fe5a1","\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9",4,"\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"],["8fe6a1","\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"],["8fe7a1","\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"],["8fe8a1","\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931",4,"\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"],["8fe9a1","\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF",4],["8feaa1","\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A",4,"\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"],["8feba1","\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26",4,"\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"],["8feca1","\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"],["8feda1","\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43",4,"\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D",4,"\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"]]});var uo=L((hM,US)=>{US.exports=[["0","\0",127,"\u20AC"],["8140","\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A",5,"\u4E72\u4E74",9,"\u4E7F",6,"\u4E87\u4E8A"],["8180","\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02",6,"\u4F0B\u4F0C\u4F12",4,"\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E",4,"\u4F44\u4F45\u4F47",5,"\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"],["8240","\u4FA4\u4FAB\u4FAD\u4FB0",4,"\u4FB6",8,"\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2",4,"\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF",11],["8280","\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F",10,"\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050",4,"\u5056\u5057\u5058\u5059\u505B\u505D",7,"\u5066",5,"\u506D",8,"\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E",20,"\u50A4\u50A6\u50AA\u50AB\u50AD",4,"\u50B3",6,"\u50BC"],["8340","\u50BD",17,"\u50D0",5,"\u50D7\u50D8\u50D9\u50DB",10,"\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6",4,"\u50FC",9,"\u5108"],["8380","\u5109\u510A\u510C",5,"\u5113",13,"\u5122",28,"\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D",4,"\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6",4,"\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2",5],["8440","\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5",5,"\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244",5,"\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"],["8480","\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273",9,"\u527E\u5280\u5283",4,"\u5289",6,"\u5291\u5292\u5294",6,"\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4",9,"\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9",5,"\u52E0\u52E1\u52E2\u52E3\u52E5",10,"\u52F1",7,"\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"],["8540","\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F",9,"\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"],["8580","\u5390",4,"\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF",6,"\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3",4,"\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D",4,"\u5463\u5465\u5467\u5469",7,"\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"],["8640","\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0",4,"\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4",5,"\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A",4,"\u5512\u5513\u5515",5,"\u551C\u551D\u551E\u551F\u5521\u5525\u5526"],["8680","\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B",4,"\u5551\u5552\u5553\u5554\u5557",4,"\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F",5,"\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0",6,"\u55A8",8,"\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF",4,"\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7",4,"\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8",4,"\u55FF\u5602\u5603\u5604\u5605"],["8740","\u5606\u5607\u560A\u560B\u560D\u5610",7,"\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640",11,"\u564F",4,"\u5655\u5656\u565A\u565B\u565D",4],["8780","\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D",7,"\u5687",6,"\u5690\u5691\u5692\u5694",14,"\u56A4",10,"\u56B0",6,"\u56B8\u56B9\u56BA\u56BB\u56BD",12,"\u56CB",8,"\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5",5,"\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B",6],["8840","\u5712",9,"\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734",4,"\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752",4,"\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"],["8880","\u5781\u5787\u5788\u5789\u578A\u578D",4,"\u5794",6,"\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9",8,"\u57C4",6,"\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5",7,"\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825",4,"\u582B",4,"\u5831\u5832\u5833\u5834\u5836",7],["8940","\u583E",5,"\u5845",6,"\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859",4,"\u585F",5,"\u5866",4,"\u586D",16,"\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"],["8980","\u588D",4,"\u5894",4,"\u589B\u589C\u589D\u58A0",7,"\u58AA",17,"\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6",10,"\u58D2\u58D3\u58D4\u58D6",13,"\u58E5",5,"\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA",7,"\u5903\u5905\u5906\u5908",4,"\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"],["8a40","\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B",4,"\u5961\u5963\u5964\u5966",12,"\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"],["8a80","\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3",5,"\u59BA\u59BC\u59BD\u59BF",6,"\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE",4,"\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED",11,"\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A",6,"\u5A33\u5A35\u5A37",4,"\u5A3D\u5A3E\u5A3F\u5A41",4,"\u5A47\u5A48\u5A4B",9,"\u5A56\u5A57\u5A58\u5A59\u5A5B",5],["8b40","\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B",8,"\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80",17,"\u5A93",6,"\u5A9C",13,"\u5AAB\u5AAC"],["8b80","\u5AAD",4,"\u5AB4\u5AB6\u5AB7\u5AB9",4,"\u5ABF\u5AC0\u5AC3",5,"\u5ACA\u5ACB\u5ACD",4,"\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC",4,"\u5AF2",22,"\u5B0A",11,"\u5B18",25,"\u5B33\u5B35\u5B36\u5B38",7,"\u5B41",6],["8c40","\u5B48",7,"\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"],["8c80","\u5BD1\u5BD4",8,"\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9",4,"\u5BEF\u5BF1",6,"\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67",6,"\u5C70\u5C72",6,"\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83",4,"\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D",4,"\u5CA4",4],["8d40","\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5",5,"\u5CCC",5,"\u5CD3",5,"\u5CDA",6,"\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1",9,"\u5CFC",4],["8d80","\u5D01\u5D04\u5D05\u5D08",5,"\u5D0F",4,"\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F",4,"\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F",4,"\u5D35",7,"\u5D3F",7,"\u5D48\u5D49\u5D4D",10,"\u5D59\u5D5A\u5D5C\u5D5E",10,"\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75",12,"\u5D83",21,"\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"],["8e40","\u5DA1",21,"\u5DB8",12,"\u5DC6",6,"\u5DCE",12,"\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"],["8e80","\u5DF0\u5DF5\u5DF6\u5DF8",4,"\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E",7,"\u5E28",4,"\u5E2F\u5E30\u5E32",4,"\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46",5,"\u5E4D",6,"\u5E56",4,"\u5E5C\u5E5D\u5E5F\u5E60\u5E63",14,"\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8",4,"\u5EAE",4,"\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF",6],["8f40","\u5EC6\u5EC7\u5EC8\u5ECB",5,"\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC",11,"\u5EE9\u5EEB",8,"\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"],["8f80","\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32",6,"\u5F3B\u5F3D\u5F3E\u5F3F\u5F41",14,"\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2",5,"\u5FA9\u5FAB\u5FAC\u5FAF",5,"\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE",4,"\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"],["9040","\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030",4,"\u6036",4,"\u603D\u603E\u6040\u6044",6,"\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"],["9080","\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD",7,"\u60C7\u60C8\u60C9\u60CC",4,"\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1",4,"\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB",4,"\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110",4,"\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C",18,"\u6140",6],["9140","\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156",6,"\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169",6,"\u6171\u6172\u6173\u6174\u6176\u6178",18,"\u618C\u618D\u618F",4,"\u6195"],["9180","\u6196",6,"\u619E",8,"\u61AA\u61AB\u61AD",9,"\u61B8",5,"\u61BF\u61C0\u61C1\u61C3",4,"\u61C9\u61CC",4,"\u61D3\u61D5",16,"\u61E7",13,"\u61F6",8,"\u6200",5,"\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238",4,"\u6242\u6244\u6245\u6246\u624A"],["9240","\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C",6,"\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B",5,"\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"],["9280","\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333",5,"\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356",7,"\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399",6,"\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"],["9340","\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7",6,"\u63DF\u63E2\u63E4",4,"\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406",4,"\u640D\u640E\u6411\u6412\u6415",5,"\u641D\u641F\u6422\u6423\u6424"],["9380","\u6425\u6427\u6428\u6429\u642B\u642E",5,"\u6435",4,"\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B",6,"\u6453\u6455\u6456\u6457\u6459",4,"\u645F",7,"\u6468\u646A\u646B\u646C\u646E",9,"\u647B",6,"\u6483\u6486\u6488",8,"\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F",4,"\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6",6,"\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"],["9440","\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7",24,"\u6501",7,"\u650A",7,"\u6513",4,"\u6519",8],["9480","\u6522\u6523\u6524\u6526",4,"\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540",4,"\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578",14,"\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1",7,"\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8",7,"\u65E1\u65E3\u65E4\u65EA\u65EB"],["9540","\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB",4,"\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637",4,"\u663D\u663F\u6640\u6642\u6644",6,"\u664D\u664E\u6650\u6651\u6658"],["9580","\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669",4,"\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698",4,"\u669E",8,"\u66A9",4,"\u66AF",4,"\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF",25,"\u66DA\u66DE",7,"\u66E7\u66E8\u66EA",5,"\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"],["9640","\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720",5,"\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757",4,"\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"],["9680","\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9",7,"\u67C2\u67C5",9,"\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5",7,"\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818",4,"\u681E\u681F\u6820\u6822",6,"\u682B",6,"\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856",5],["9740","\u685C\u685D\u685E\u685F\u686A\u686C",7,"\u6875\u6878",8,"\u6882\u6884\u6887",7,"\u6890\u6891\u6892\u6894\u6895\u6896\u6898",9,"\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"],["9780","\u68B9",6,"\u68C1\u68C3",5,"\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB",4,"\u68E1\u68E2\u68E4",9,"\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906",4,"\u690C\u690F\u6911\u6913",11,"\u6921\u6922\u6923\u6925",7,"\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943",16,"\u6955\u6956\u6958\u6959\u695B\u695C\u695F"],["9840","\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972",4,"\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E",5,"\u6996\u6997\u6999\u699A\u699D",9,"\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"],["9880","\u69BE\u69BF\u69C0\u69C2",7,"\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5",5,"\u69DC\u69DD\u69DE\u69E1",11,"\u69EE\u69EF\u69F0\u69F1\u69F3",9,"\u69FE\u6A00",9,"\u6A0B",11,"\u6A19",5,"\u6A20\u6A22",5,"\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36",6,"\u6A3F",4,"\u6A45\u6A46\u6A48",7,"\u6A51",6,"\u6A5A"],["9940","\u6A5C",4,"\u6A62\u6A63\u6A64\u6A66",10,"\u6A72",6,"\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85",8,"\u6A8F\u6A92",4,"\u6A98",7,"\u6AA1",5],["9980","\u6AA7\u6AA8\u6AAA\u6AAD",114,"\u6B25\u6B26\u6B28",6],["9a40","\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D",11,"\u6B5A",7,"\u6B68\u6B69\u6B6B",13,"\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"],["9a80","\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C",4,"\u6BA2",7,"\u6BAB",7,"\u6BB6\u6BB8",6,"\u6BC0\u6BC3\u6BC4\u6BC6",4,"\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC",4,"\u6BE2",7,"\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE",6,"\u6C08",4,"\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B",4,"\u6C51\u6C52\u6C53\u6C56\u6C58"],["9b40","\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B",4,"\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"],["9b80","\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F",5,"\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D",4,"\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96",4,"\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9",5,"\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"],["9c40","\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD",7,"\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"],["9c80","\u6E36\u6E37\u6E39\u6E3B",7,"\u6E45",7,"\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60",10,"\u6E6C\u6E6D\u6E6F",14,"\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A",4,"\u6E91",6,"\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA",5],["9d40","\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA",7,"\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A",4,"\u6F10\u6F11\u6F12\u6F16",9,"\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37",6,"\u6F3F\u6F40\u6F41\u6F42"],["9d80","\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E",9,"\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67",5,"\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D",6,"\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F",12,"\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2",4,"\u6FA8",10,"\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA",5,"\u6FC1\u6FC3",5,"\u6FCA",6,"\u6FD3",10,"\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"],["9e40","\u6FE6",7,"\u6FF0",32,"\u7012",7,"\u701C",6,"\u7024",6],["9e80","\u702B",9,"\u7036\u7037\u7038\u703A",17,"\u704D\u704E\u7050",13,"\u705F",11,"\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E",12,"\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB",12,"\u70DA"],["9f40","\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0",6,"\u70F8\u70FA\u70FB\u70FC\u70FE",10,"\u710B",4,"\u7111\u7112\u7114\u7117\u711B",10,"\u7127",7,"\u7132\u7133\u7134"],["9f80","\u7135\u7137",13,"\u7146\u7147\u7148\u7149\u714B\u714D\u714F",12,"\u715D\u715F",4,"\u7165\u7169",4,"\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E",5,"\u7185",4,"\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A",4,"\u71A1",6,"\u71A9\u71AA\u71AB\u71AD",5,"\u71B4\u71B6\u71B7\u71B8\u71BA",8,"\u71C4",9,"\u71CF",4],["a040","\u71D6",9,"\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8",5,"\u71EF",9,"\u71FA",11,"\u7207",19],["a080","\u721B\u721C\u721E",9,"\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240",6,"\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285",4,"\u728C\u728E\u7290\u7291\u7293",11,"\u72A0",11,"\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA",6,"\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"],["a1a1","\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008",7,"\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"],["a2a1","\u2170",9],["a2b1","\u2488",19,"\u2474",19,"\u2460",9],["a2e5","\u3220",9],["a2f1","\u2160",11],["a3a1","\uFF01\uFF02\uFF03\uFFE5\uFF05",88,"\uFFE3"],["a4a1","\u3041",82],["a5a1","\u30A1",85],["a6a1","\u0391",16,"\u03A3",6],["a6c1","\u03B1",16,"\u03C3",6],["a6e0","\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"],["a6ee","\uFE3B\uFE3C\uFE37\uFE38\uFE31"],["a6f4","\uFE33\uFE34"],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a840","\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550",35,"\u2581",6],["a880","\u2588",7,"\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"],["a8a1","\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"],["a8bd","\u0144\u0148"],["a8c0","\u0261"],["a8c5","\u3105",36],["a940","\u3021",8,"\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"],["a959","\u2121\u3231"],["a95c","\u2010"],["a960","\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49",9,"\uFE54\uFE55\uFE56\uFE57\uFE59",8],["a980","\uFE62",4,"\uFE68\uFE69\uFE6A\uFE6B"],["a996","\u3007"],["a9a4","\u2500",75],["aa40","\u72DC\u72DD\u72DF\u72E2",5,"\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304",5,"\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340",8],["aa80","\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358",7,"\u7361",10,"\u736E\u7370\u7371"],["ab40","\u7372",11,"\u737F",4,"\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3",5,"\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3",4],["ab80","\u73CB\u73CC\u73CE\u73D2",6,"\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3",4],["ac40","\u73F8",10,"\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411",8,"\u741C",5,"\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437",4,"\u743D\u743E\u743F\u7440\u7442",11],["ac80","\u744E",6,"\u7456\u7458\u745D\u7460",12,"\u746E\u746F\u7471",4,"\u7478\u7479\u747A"],["ad40","\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491",10,"\u749D\u749F",7,"\u74AA",15,"\u74BB",12],["ad80","\u74C8",9,"\u74D3",8,"\u74DD\u74DF\u74E1\u74E5\u74E7",6,"\u74F0\u74F1\u74F2"],["ae40","\u74F3\u74F5\u74F8",6,"\u7500\u7501\u7502\u7503\u7505",7,"\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520",4,"\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"],["ae80","\u755D",7,"\u7567\u7568\u7569\u756B",6,"\u7573\u7575\u7576\u7577\u757A",4,"\u7580\u7581\u7582\u7584\u7585\u7587"],["af40","\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6",4,"\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"],["af80","\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"],["b040","\u7645",6,"\u764E",5,"\u7655\u7657",4,"\u765D\u765F\u7660\u7661\u7662\u7664",6,"\u766C\u766D\u766E\u7670",7,"\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"],["b080","\u769C",7,"\u76A5",8,"\u76AF\u76B0\u76B3\u76B5",9,"\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"],["b140","\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0",4,"\u76E6",7,"\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E",10,"\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"],["b180","\u772C\u772E\u7730",4,"\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748",7,"\u7752",7,"\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"],["b240","\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D",11,"\u777A\u777B\u777C\u7781\u7782\u7783\u7786",5,"\u778F\u7790\u7793",11,"\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6",4],["b280","\u77BC\u77BE\u77C0",12,"\u77CE",8,"\u77D8\u77D9\u77DA\u77DD",4,"\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"],["b340","\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803",5,"\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"],["b380","\u785B\u785C\u785E",11,"\u786F",7,"\u7878\u7879\u787A\u787B\u787D",6,"\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"],["b440","\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8",7,"\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA",9],["b480","\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED",4,"\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB",5,"\u7902\u7903\u7904\u7906",6,"\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"],["b540","\u790D",5,"\u7914",9,"\u791F",4,"\u7925",14,"\u7935",4,"\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A",8,"\u7954\u7955\u7958\u7959\u7961\u7963"],["b580","\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970",6,"\u7979\u797B",4,"\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"],["b640","\u7993",6,"\u799B",11,"\u79A8",10,"\u79B4",4,"\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9",5,"\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"],["b680","\u79EC\u79EE\u79F1",6,"\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F",4,"\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"],["b740","\u7A1D\u7A1F\u7A21\u7A22\u7A24",14,"\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40",5,"\u7A47",9,"\u7A52",4,"\u7A58",16],["b780","\u7A69",6,"\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"],["b840","\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE",4,"\u7AB4",10,"\u7AC0",10,"\u7ACC",9,"\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7",5,"\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"],["b880","\u7AF4",4,"\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"],["b940","\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F",5,"\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63",10,"\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86",6,"\u7B8E\u7B8F"],["b980","\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9",7,"\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"],["ba40","\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4",4,"\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2",4,"\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF",7,"\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10",5,"\u7C17\u7C18\u7C19"],["ba80","\u7C1A",4,"\u7C20",5,"\u7C28\u7C29\u7C2B",12,"\u7C39",5,"\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"],["bb40","\u7C43",9,"\u7C4E",36,"\u7C75",5,"\u7C7E",9],["bb80","\u7C88\u7C8A",6,"\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4",4,"\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"],["bc40","\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE",6,"\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1",6,"\u7CE9",5,"\u7CF0",7,"\u7CF9\u7CFA\u7CFC",13,"\u7D0B",5],["bc80","\u7D11",14,"\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30",6,"\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"],["bd40","\u7D37",54,"\u7D6F",7],["bd80","\u7D78",32,"\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"],["be40","\u7D99",12,"\u7DA7",6,"\u7DAF",42],["be80","\u7DDA",32,"\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"],["bf40","\u7DFB",62],["bf80","\u7E3A\u7E3C",4,"\u7E42",4,"\u7E48",21,"\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"],["c040","\u7E5E",35,"\u7E83",23,"\u7E9C\u7E9D\u7E9E"],["c080","\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B",6,"\u7F43\u7F46",9,"\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"],["c140","\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63",4,"\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82",7,"\u7F8B\u7F8D\u7F8F",4,"\u7F95",4,"\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8",6,"\u7FB1"],["c180","\u7FB3",4,"\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF",4,"\u7FD6\u7FD7\u7FD9",5,"\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"],["c240","\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4",6,"\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B",5,"\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"],["c280","\u8059\u805B",13,"\u806B",5,"\u8072",11,"\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"],["c340","\u807E\u8081\u8082\u8085\u8088\u808A\u808D",5,"\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7",4,"\u80CF",6,"\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"],["c380","\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F",12,"\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139",4,"\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"],["c440","\u8140",5,"\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B",4,"\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183",4,"\u8189\u818B\u818C\u818D\u818E\u8190\u8192",5,"\u8199\u819A\u819E",4,"\u81A4\u81A5"],["c480","\u81A7\u81A9\u81AB",7,"\u81B4",5,"\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD",6,"\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"],["c540","\u81D4",14,"\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE",4,"\u81F5",5,"\u81FD\u81FF\u8203\u8207",4,"\u820E\u820F\u8211\u8213\u8215",5,"\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"],["c580","\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250",7,"\u8259\u825B\u825C\u825D\u825E\u8260",7,"\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"],["c640","\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"],["c680","\u82FA\u82FC",4,"\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D",9,"\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"],["c740","\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A",4,"\u8353\u8355",4,"\u835D\u8362\u8370",6,"\u8379\u837A\u837E",6,"\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1",6,"\u83AC\u83AD\u83AE"],["c780","\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"],["c840","\u83EE\u83EF\u83F3",4,"\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412",5,"\u8419\u841A\u841B\u841E",5,"\u8429",7,"\u8432",5,"\u8439\u843A\u843B\u843E",7,"\u8447\u8448\u8449"],["c880","\u844A",6,"\u8452",4,"\u8458\u845D\u845E\u845F\u8460\u8462\u8464",4,"\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"],["c940","\u847D",4,"\u8483\u8484\u8485\u8486\u848A\u848D\u848F",7,"\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2",12,"\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"],["c980","\u84D8",4,"\u84DE\u84E1\u84E2\u84E4\u84E7",4,"\u84ED\u84EE\u84EF\u84F1",10,"\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"],["ca40","\u8503",8,"\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522",8,"\u852D",9,"\u853E",4,"\u8544\u8545\u8546\u8547\u854B",10],["ca80","\u8557\u8558\u855A\u855B\u855C\u855D\u855F",4,"\u8565\u8566\u8567\u8569",8,"\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"],["cb40","\u8582\u8583\u8586\u8588",6,"\u8590",10,"\u859D",6,"\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1",5,"\u85B8\u85BA",6,"\u85C2",6,"\u85CA",4,"\u85D1\u85D2"],["cb80","\u85D4\u85D6",5,"\u85DD",6,"\u85E5\u85E6\u85E7\u85E8\u85EA",14,"\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"],["cc40","\u85F9\u85FA\u85FC\u85FD\u85FE\u8600",4,"\u8606",10,"\u8612\u8613\u8614\u8615\u8617",15,"\u8628\u862A",13,"\u8639\u863A\u863B\u863D\u863E\u863F\u8640"],["cc80","\u8641",11,"\u8652\u8653\u8655",4,"\u865B\u865C\u865D\u865F\u8660\u8661\u8663",7,"\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"],["cd40","\u866D\u866F\u8670\u8672",6,"\u8683",6,"\u868E",4,"\u8694\u8696",5,"\u869E",4,"\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB",4,"\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"],["cd80","\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"],["ce40","\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740",6,"\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A",5,"\u8761\u8762\u8766",7,"\u876F\u8771\u8772\u8773\u8775"],["ce80","\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E",4,"\u8794\u8795\u8796\u8798",6,"\u87A0",4,"\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"],["cf40","\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1",4,"\u87C7\u87C8\u87C9\u87CC",4,"\u87D4",6,"\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF",9],["cf80","\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804",5,"\u880B",7,"\u8814\u8817\u8818\u8819\u881A\u881C",4,"\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"],["d040","\u8824",13,"\u8833",5,"\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846",5,"\u884E",5,"\u8855\u8856\u8858\u885A",6,"\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"],["d080","\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897",4,"\u889D",4,"\u88A3\u88A5",5,"\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"],["d140","\u88AC\u88AE\u88AF\u88B0\u88B2",4,"\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA",4,"\u88E0\u88E1\u88E6\u88E7\u88E9",6,"\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903",5],["d180","\u8909\u890B",4,"\u8911\u8914",4,"\u891C",4,"\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"],["d240","\u8938",8,"\u8942\u8943\u8945",24,"\u8960",5,"\u8967",19,"\u897C"],["d280","\u897D\u897E\u8980\u8982\u8984\u8985\u8987",26,"\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"],["d340","\u89A2",30,"\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4",6],["d380","\u89FB",4,"\u8A01",5,"\u8A08",21,"\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"],["d440","\u8A1E",31,"\u8A3F",8,"\u8A49",21],["d480","\u8A5F",25,"\u8A7A",6,"\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"],["d540","\u8A81",7,"\u8A8B",7,"\u8A94",46],["d580","\u8AC3",32,"\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"],["d640","\u8AE4",34,"\u8B08",27],["d680","\u8B24\u8B25\u8B27",30,"\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"],["d740","\u8B46",31,"\u8B67",4,"\u8B6D",25],["d780","\u8B87",24,"\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"],["d840","\u8C38",8,"\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D",7,"\u8C56\u8C57\u8C58\u8C59\u8C5B",5,"\u8C63",6,"\u8C6C",6,"\u8C74\u8C75\u8C76\u8C77\u8C7B",6,"\u8C83\u8C84\u8C86\u8C87"],["d880","\u8C88\u8C8B\u8C8D",6,"\u8C95\u8C96\u8C97\u8C99",20,"\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"],["d940","\u8CAE",62],["d980","\u8CED",32,"\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"],["da40","\u8D0E",14,"\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78",8,"\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C",4,"\u8D92\u8D93\u8D95",9,"\u8DA0\u8DA1"],["da80","\u8DA2\u8DA4",12,"\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"],["db40","\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE",6,"\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15",7,"\u8E20\u8E21\u8E24",4,"\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"],["db80","\u8E3F\u8E43\u8E45\u8E46\u8E4C",4,"\u8E53",5,"\u8E5A",11,"\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"],["dc40","\u8E73\u8E75\u8E77",4,"\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88",6,"\u8E91\u8E92\u8E93\u8E95",6,"\u8E9D\u8E9F",11,"\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3",6,"\u8EBB",7],["dc80","\u8EC3",10,"\u8ECF",21,"\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"],["dd40","\u8EE5",62],["dd80","\u8F24",32,"\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"],["de40","\u8F45",32,"\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"],["de80","\u8FC9",4,"\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"],["df40","\u9019\u901C\u9023\u9024\u9025\u9027",5,"\u9030",4,"\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048",4,"\u904E\u9054\u9055\u9056\u9059\u905A\u905C",5,"\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F",4,"\u9076",6,"\u907E\u9081"],["df80","\u9084\u9085\u9086\u9087\u9089\u908A\u908C",4,"\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"],["e040","\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105",19,"\u911A\u911B\u911C"],["e080","\u911D\u911F\u9120\u9121\u9124",10,"\u9130\u9132",6,"\u913A",8,"\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"],["e140","\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180",4,"\u9186\u9188\u918A\u918E\u918F\u9193",6,"\u919C",5,"\u91A4",5,"\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"],["e180","\u91BC",10,"\u91C8\u91CB\u91D0\u91D2",9,"\u91DD",8,"\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"],["e240","\u91E6",62],["e280","\u9225",32,"\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967",5,"\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"],["e340","\u9246",45,"\u9275",16],["e380","\u9286",7,"\u928F",24,"\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"],["e440","\u92A8",5,"\u92AF",24,"\u92C9",31],["e480","\u92E9",32,"\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"],["e540","\u930A",51,"\u933F",10],["e580","\u934A",31,"\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"],["e640","\u936C",34,"\u9390",27],["e680","\u93AC",29,"\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"],["e740","\u93CE",7,"\u93D7",54],["e780","\u940E",32,"\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21",6,"\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F",4,"\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"],["e840","\u942F",14,"\u943F",43,"\u946C\u946D\u946E\u946F"],["e880","\u9470",20,"\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"],["e940","\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577",7,"\u9580",42],["e980","\u95AB",32,"\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"],["ea40","\u95CC",27,"\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623",6,"\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"],["ea80","\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D",4,"\u9673\u9678",12,"\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"],["eb40","\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D",9,"\u96A8",7,"\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6",9,"\u96E1",6,"\u96EB"],["eb80","\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717",4,"\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"],["ec40","\u9721",8,"\u972B\u972C\u972E\u972F\u9731\u9733",4,"\u973A\u973B\u973C\u973D\u973F",18,"\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A",7],["ec80","\u9772\u9775\u9777",4,"\u977D",7,"\u9786",4,"\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799",4,"\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"],["ed40","\u979E\u979F\u97A1\u97A2\u97A4",6,"\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5",46],["ed80","\u97E4\u97E5\u97E8\u97EE",4,"\u97F4\u97F7",23,"\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"],["ee40","\u980F",62],["ee80","\u984E",32,"\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6",4,"\u94BC\u94BD\u94BF\u94C4\u94C8",6,"\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"],["ef40","\u986F",5,"\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8",37,"\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0",4],["ef80","\u98E5\u98E6\u98E9",30,"\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512",4,"\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564",8,"\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"],["f040","\u9908",4,"\u990E\u990F\u9911",28,"\u992F",26],["f080","\u994A",9,"\u9956",12,"\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28",4,"\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66",6,"\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"],["f140","\u998C\u998E\u999A",10,"\u99A6\u99A7\u99A9",47],["f180","\u99D9",32,"\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"],["f240","\u99FA",62],["f280","\u9A39",32,"\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"],["f340","\u9A5A",17,"\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9",6,"\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6",4,"\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"],["f380","\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0",8,"\u9AFA\u9AFC",6,"\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"],["f440","\u9B07\u9B09",5,"\u9B10\u9B11\u9B12\u9B14",10,"\u9B20\u9B21\u9B22\u9B24",10,"\u9B30\u9B31\u9B33",7,"\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55",5],["f480","\u9B5B",32,"\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"],["f540","\u9B7C",62],["f580","\u9BBB",32,"\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"],["f640","\u9BDC",62],["f680","\u9C1B",32,"\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85",5,"\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E",5,"\u9CA5",4,"\u9CAB\u9CAD\u9CAE\u9CB0",7,"\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"],["f740","\u9C3C",62],["f780","\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE",4,"\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC",4,"\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"],["f840","\u9CE3",62],["f880","\u9D22",32],["f940","\u9D43",62],["f980","\u9D82",32],["fa40","\u9DA3",62],["fa80","\u9DE2",32],["fb40","\u9E03",27,"\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74",9,"\u9E80"],["fb80","\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C",5,"\u9E94",8,"\u9E9E\u9EA0",5,"\u9EA7\u9EA8\u9EA9\u9EAA"],["fc40","\u9EAB",8,"\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF",4,"\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0",8,"\u9EFA\u9EFD\u9EFF",6],["fc80","\u9F06",4,"\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A",5,"\u9F21\u9F23",8,"\u9F2D\u9F2E\u9F30\u9F31"],["fd40","\u9F32",4,"\u9F38\u9F3A\u9F3C\u9F3F",4,"\u9F45",10,"\u9F52",38],["fd80","\u9F79",5,"\u9F81\u9F82\u9F8D",11,"\u9F9C\u9F9D\u9F9E\u9FA1",4,"\uF92C\uF979\uF995\uF9E7\uF9F1"],["fe40","\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"]]});var iu=L((vM,zS)=>{zS.exports=[["a140","\uE4C6",62],["a180","\uE505",32],["a240","\uE526",62],["a280","\uE565",32],["a2ab","\uE766",5],["a2e3","\u20AC\uE76D"],["a2ef","\uE76E\uE76F"],["a2fd","\uE770\uE771"],["a340","\uE586",62],["a380","\uE5C5",31,"\u3000"],["a440","\uE5E6",62],["a480","\uE625",32],["a4f4","\uE772",10],["a540","\uE646",62],["a580","\uE685",32],["a5f7","\uE77D",7],["a640","\uE6A6",62],["a680","\uE6E5",32],["a6b9","\uE785",7],["a6d9","\uE78D",6],["a6ec","\uE794\uE795"],["a6f3","\uE796"],["a6f6","\uE797",8],["a740","\uE706",62],["a780","\uE745",32],["a7c2","\uE7A0",14],["a7f2","\uE7AF",12],["a896","\uE7BC",10],["a8bc","\uE7C7"],["a8bf","\u01F9"],["a8c1","\uE7C9\uE7CA\uE7CB\uE7CC"],["a8ea","\uE7CD",20],["a958","\uE7E2"],["a95b","\uE7E3"],["a95d","\uE7E4\uE7E5\uE7E6"],["a989","\u303E\u2FF0",11],["a997","\uE7F4",12],["a9f0","\uE801",14],["aaa1","\uE000",93],["aba1","\uE05E",93],["aca1","\uE0BC",93],["ada1","\uE11A",93],["aea1","\uE178",93],["afa1","\uE1D6",93],["d7fa","\uE810",4],["f8a1","\uE234",93],["f9a1","\uE292",93],["faa1","\uE2F0",93],["fba1","\uE34E",93],["fca1","\uE3AC",93],["fda1","\uE40A",93],["fe50","\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"],["fe80","\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13",6,"\u4DAE\uE864\uE468",93]]});var rm=L((gM,HS)=>{HS.exports={uChars:[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],gbChars:[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189e3]}});var am=L((yM,BS)=>{BS.exports=[["0","\0",127],["8141","\uAC02\uAC03\uAC05\uAC06\uAC0B",4,"\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25",6,"\uAC2E\uAC32\uAC33\uAC34"],["8161","\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41",9,"\uAC4C\uAC4E",5,"\uAC55"],["8181","\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D",18,"\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B",4,"\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95",6,"\uAC9E\uACA2",5,"\uACAB\uACAD\uACAE\uACB1",6,"\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD",7,"\uACD6\uACD8",7,"\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7",4,"\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07",4,"\uAD0E\uAD10\uAD12\uAD13"],["8241","\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21",7,"\uAD2A\uAD2B\uAD2E",5],["8261","\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D",6,"\uAD46\uAD48\uAD4A",5,"\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"],["8281","\uAD59",7,"\uAD62\uAD64",7,"\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83",4,"\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91",10,"\uAD9E",5,"\uADA5",17,"\uADB8",7,"\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9",6,"\uADD2\uADD4",7,"\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5",18],["8341","\uADFA\uADFB\uADFD\uADFE\uAE02",5,"\uAE0A\uAE0C\uAE0E",5,"\uAE15",7],["8361","\uAE1D",18,"\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"],["8381","\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57",4,"\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71",6,"\uAE7A\uAE7E",5,"\uAE86",5,"\uAE8D",46,"\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5",6,"\uAECE\uAED2",5,"\uAEDA\uAEDB\uAEDD",8],["8441","\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE",5,"\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD",8],["8461","\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11",18],["8481","\uAF24",7,"\uAF2E\uAF2F\uAF31\uAF33\uAF35",6,"\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A",5,"\uAF51",10,"\uAF5E",5,"\uAF66",18,"\uAF7A",5,"\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89",6,"\uAF92\uAF93\uAF94\uAF96",5,"\uAF9D",26,"\uAFBA\uAFBB\uAFBD\uAFBE"],["8541","\uAFBF\uAFC1",5,"\uAFCA\uAFCC\uAFCF",4,"\uAFD5",6,"\uAFDD",4],["8561","\uAFE2",5,"\uAFEA",5,"\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9",6,"\uB002\uB003"],["8581","\uB005",6,"\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015",6,"\uB01E",9,"\uB029",26,"\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E",29,"\uB07E\uB07F\uB081\uB082\uB083\uB085",6,"\uB08E\uB090\uB092",5,"\uB09B\uB09D\uB09E\uB0A3\uB0A4"],["8641","\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD",6,"\uB0C6\uB0CA",5,"\uB0D2"],["8661","\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9",6,"\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6",10],["8681","\uB0F1",22,"\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E",4,"\uB126\uB127\uB129\uB12A\uB12B\uB12D",6,"\uB136\uB13A",5,"\uB142\uB143\uB145\uB146\uB147\uB149",6,"\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161",22,"\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183",4,"\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"],["8741","\uB19E",9,"\uB1A9",15],["8761","\uB1B9",18,"\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"],["8781","\uB1D6",5,"\uB1DE\uB1E0",7,"\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1",7,"\uB1FA\uB1FC\uB1FE",5,"\uB206\uB207\uB209\uB20A\uB20D",6,"\uB216\uB218\uB21A",5,"\uB221",18,"\uB235",6,"\uB23D",26,"\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261",6,"\uB26A",4],["8841","\uB26F",4,"\uB276",5,"\uB27D",6,"\uB286\uB287\uB288\uB28A",4],["8861","\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B",4,"\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"],["8881","\uB2B8",15,"\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3",4,"\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309",6,"\uB312\uB316",5,"\uB31D",54,"\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"],["8941","\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379",6,"\uB382\uB386",5,"\uB38D"],["8961","\uB38E\uB38F\uB391\uB392\uB393\uB395",10,"\uB3A2",5,"\uB3A9\uB3AA\uB3AB\uB3AD"],["8981","\uB3AE",21,"\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9",18,"\uB3FD",18,"\uB411",6,"\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421",6,"\uB42A\uB42C",7,"\uB435",15],["8a41","\uB445",10,"\uB452\uB453\uB455\uB456\uB457\uB459",6,"\uB462\uB464\uB466"],["8a61","\uB467",4,"\uB46D",18,"\uB481\uB482"],["8a81","\uB483",4,"\uB489",19,"\uB49E",5,"\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD",7,"\uB4B6\uB4B8\uB4BA",5,"\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9",6,"\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6",5,"\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7",4,"\uB4EE\uB4F0\uB4F2",5,"\uB4F9",26,"\uB516\uB517\uB519\uB51A\uB51D"],["8b41","\uB51E",5,"\uB526\uB52B",4,"\uB532\uB533\uB535\uB536\uB537\uB539",6,"\uB542\uB546"],["8b61","\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555",6,"\uB55E\uB562",8],["8b81","\uB56B",52,"\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6",4,"\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5",6,"\uB5CE\uB5D2",5,"\uB5D9",18,"\uB5ED",18],["8c41","\uB600",15,"\uB612\uB613\uB615\uB616\uB617\uB619",4],["8c61","\uB61E",6,"\uB626",5,"\uB62D",6,"\uB635",5],["8c81","\uB63B",12,"\uB649",26,"\uB665\uB666\uB667\uB669",50,"\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5",5,"\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2",16],["8d41","\uB6C3",16,"\uB6D5",8],["8d61","\uB6DE",17,"\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"],["8d81","\uB6FB",4,"\uB702\uB703\uB704\uB706",33,"\uB72A\uB72B\uB72D\uB72E\uB731",6,"\uB73A\uB73C",7,"\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D",6,"\uB756",9,"\uB761\uB762\uB763\uB765\uB766\uB767\uB769",6,"\uB772\uB774\uB776",5,"\uB77E\uB77F\uB781\uB782\uB783\uB785",6,"\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"],["8e41","\uB79F\uB7A1",6,"\uB7AA\uB7AE",5,"\uB7B6\uB7B7\uB7B9",8],["8e61","\uB7C2",4,"\uB7C8\uB7CA",19],["8e81","\uB7DE",13,"\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5",6,"\uB7FE\uB802",4,"\uB80A\uB80B\uB80D\uB80E\uB80F\uB811",6,"\uB81A\uB81C\uB81E",5,"\uB826\uB827\uB829\uB82A\uB82B\uB82D",6,"\uB836\uB83A",5,"\uB841\uB842\uB843\uB845",11,"\uB852\uB854",7,"\uB85E\uB85F\uB861\uB862\uB863\uB865",6,"\uB86E\uB870\uB872",5,"\uB879\uB87A\uB87B\uB87D",7],["8f41","\uB885",7,"\uB88E",17],["8f61","\uB8A0",7,"\uB8A9",6,"\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9",4],["8f81","\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6",5,"\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5",7,"\uB8DE\uB8E0\uB8E2",5,"\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1",6,"\uB8FA\uB8FC\uB8FE",5,"\uB905",18,"\uB919",6,"\uB921",26,"\uB93E\uB93F\uB941\uB942\uB943\uB945",6,"\uB94D\uB94E\uB950\uB952",5],["9041","\uB95A\uB95B\uB95D\uB95E\uB95F\uB961",6,"\uB96A\uB96C\uB96E",5,"\uB976\uB977\uB979\uB97A\uB97B\uB97D"],["9061","\uB97E",5,"\uB986\uB988\uB98B\uB98C\uB98F",15],["9081","\uB99F",12,"\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5",6,"\uB9BE\uB9C0\uB9C2",5,"\uB9CA\uB9CB\uB9CD\uB9D3",4,"\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED",6,"\uB9F6\uB9FB",4,"\uBA02",5,"\uBA09",11,"\uBA16",33,"\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"],["9141","\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D",6,"\uBA66\uBA6A",5],["9161","\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79",9,"\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D",5],["9181","\uBA93",20,"\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3",4,"\uBABA\uBABC\uBABE",5,"\uBAC5\uBAC6\uBAC7\uBAC9",14,"\uBADA",33,"\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05",7,"\uBB0E\uBB10\uBB12",5,"\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21",6],["9241","\uBB28\uBB2A\uBB2C",7,"\uBB37\uBB39\uBB3A\uBB3F",4,"\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"],["9261","\uBB53\uBB55\uBB56\uBB57\uBB59",7,"\uBB62\uBB64",7,"\uBB6D",4],["9281","\uBB72",21,"\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91",18,"\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD",6,"\uBBB5\uBBB6\uBBB8",7,"\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9",6,"\uBBD1\uBBD2\uBBD4",35,"\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"],["9341","\uBC03",4,"\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"],["9361","\uBC36\uBC37\uBC39",6,"\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51",8],["9381","\uBC5A\uBC5B\uBC5C\uBC5E",37,"\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F",4,"\uBC96\uBC98\uBC9B",4,"\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9",6,"\uBCB2\uBCB6",5,"\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5",7,"\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD",22,"\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"],["9441","\uBCFE",5,"\uBD06\uBD08\uBD0A",5,"\uBD11\uBD12\uBD13\uBD15",8],["9461","\uBD1E",5,"\uBD25",6,"\uBD2D",12],["9481","\uBD3A",5,"\uBD41",6,"\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51",6,"\uBD5A",9,"\uBD65\uBD66\uBD67\uBD69",22,"\uBD82\uBD83\uBD85\uBD86\uBD8B",4,"\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D",6,"\uBDA5",10,"\uBDB1",6,"\uBDB9",24],["9541","\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD",11,"\uBDEA",5,"\uBDF1"],["9561","\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9",6,"\uBE01\uBE02\uBE04\uBE06",5,"\uBE0E\uBE0F\uBE11\uBE12\uBE13"],["9581","\uBE15",6,"\uBE1E\uBE20",35,"\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F",4,"\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B",4,"\uBE72\uBE76",4,"\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85",6,"\uBE8E\uBE92",5,"\uBE9A",13,"\uBEA9",14],["9641","\uBEB8",23,"\uBED2\uBED3"],["9661","\uBED5\uBED6\uBED9",6,"\uBEE1\uBEE2\uBEE6",5,"\uBEED",8],["9681","\uBEF6",10,"\uBF02",5,"\uBF0A",13,"\uBF1A\uBF1E",33,"\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49",6,"\uBF52\uBF53\uBF54\uBF56",44],["9741","\uBF83",16,"\uBF95",8],["9761","\uBF9E",17,"\uBFB1",7],["9781","\uBFB9",11,"\uBFC6",5,"\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5",6,"\uBFDD\uBFDE\uBFE0\uBFE2",89,"\uC03D\uC03E\uC03F"],["9841","\uC040",16,"\uC052",5,"\uC059\uC05A\uC05B"],["9861","\uC05D\uC05E\uC05F\uC061",6,"\uC06A",15],["9881","\uC07A",21,"\uC092\uC093\uC095\uC096\uC097\uC099",6,"\uC0A2\uC0A4\uC0A6",5,"\uC0AE\uC0B1\uC0B2\uC0B7",4,"\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1",6,"\uC0DA\uC0DE",5,"\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED",6,"\uC0F6\uC0F8\uC0FA",5,"\uC101\uC102\uC103\uC105\uC106\uC107\uC109",6,"\uC111\uC112\uC113\uC114\uC116",5,"\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"],["9941","\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141",6,"\uC14A\uC14E",5,"\uC156\uC157"],["9961","\uC159\uC15A\uC15B\uC15D",6,"\uC166\uC16A",5,"\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"],["9981","\uC17C",8,"\uC186",5,"\uC18F\uC191\uC192\uC193\uC195\uC197",4,"\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1",11,"\uC1BE",5,"\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD",6,"\uC1D5\uC1D6\uC1D9",6,"\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9",6,"\uC1F2\uC1F4",7,"\uC1FE\uC1FF\uC201\uC202\uC203\uC205",6,"\uC20E\uC210\uC212",5,"\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"],["9a41","\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235",16],["9a61","\uC246\uC247\uC249",6,"\uC252\uC253\uC255\uC256\uC257\uC259",6,"\uC261\uC262\uC263\uC264\uC266"],["9a81","\uC267",4,"\uC26E\uC26F\uC271\uC272\uC273\uC275",6,"\uC27E\uC280\uC282",5,"\uC28A",5,"\uC291",6,"\uC299\uC29A\uC29C\uC29E",5,"\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE",5,"\uC2B6\uC2B8\uC2BA",33,"\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5",5,"\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301",6,"\uC30A\uC30B\uC30E\uC30F"],["9b41","\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D",6,"\uC326\uC327\uC32A",8],["9b61","\uC333",17,"\uC346",7],["9b81","\uC34E",25,"\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373",4,"\uC37A\uC37B\uC37E",5,"\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D",50,"\uC3C1",22,"\uC3DA"],["9c41","\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3",4,"\uC3EA\uC3EB\uC3EC\uC3EE",5,"\uC3F6\uC3F7\uC3F9",5],["9c61","\uC3FF",8,"\uC409",6,"\uC411",9],["9c81","\uC41B",8,"\uC425",6,"\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435",6,"\uC43E",9,"\uC449",26,"\uC466\uC467\uC469\uC46A\uC46B\uC46D",6,"\uC476\uC477\uC478\uC47A",5,"\uC481",18,"\uC495",6,"\uC49D",12],["9d41","\uC4AA",13,"\uC4B9\uC4BA\uC4BB\uC4BD",8],["9d61","\uC4C6",25],["9d81","\uC4E0",8,"\uC4EA",5,"\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502",9,"\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515",6,"\uC51D",10,"\uC52A\uC52B\uC52D\uC52E\uC52F\uC531",6,"\uC53A\uC53C\uC53E",5,"\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569",6,"\uC572\uC576",5,"\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"],["9e41","\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1",7,"\uC5AA",9,"\uC5B6"],["9e61","\uC5B7\uC5BA\uC5BF",4,"\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9",6,"\uC5E2\uC5E4\uC5E6\uC5E7"],["9e81","\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611",6,"\uC61A\uC61D",6,"\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649",6,"\uC652\uC656",5,"\uC65E\uC65F\uC661",10,"\uC66D\uC66E\uC670\uC672",5,"\uC67A\uC67B\uC67D\uC67E\uC67F\uC681",6,"\uC68A\uC68C\uC68E",5,"\uC696\uC697\uC699\uC69A\uC69B\uC69D",6,"\uC6A6"],["9f41","\uC6A8\uC6AA",5,"\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB",4,"\uC6C2\uC6C4\uC6C6",5,"\uC6CE"],["9f61","\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5",6,"\uC6DE\uC6DF\uC6E2",5,"\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"],["9f81","\uC6F3",4,"\uC6FA\uC6FB\uC6FC\uC6FE",5,"\uC706\uC707\uC709\uC70A\uC70B\uC70D",6,"\uC716\uC718\uC71A",5,"\uC722\uC723\uC725\uC726\uC727\uC729",6,"\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745",4,"\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761",6,"\uC769\uC76A\uC76C",7,"\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B",4,"\uC7A2\uC7A7",4,"\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"],["a041","\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2",5,"\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1",6,"\uC7D9\uC7DA\uC7DB\uC7DC"],["a061","\uC7DE",5,"\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED",13],["a081","\uC7FB",4,"\uC802\uC803\uC805\uC806\uC807\uC809\uC80B",4,"\uC812\uC814\uC817",4,"\uC81E\uC81F\uC821\uC822\uC823\uC825",6,"\uC82E\uC830\uC832",5,"\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841",6,"\uC84A\uC84B\uC84E",5,"\uC855",26,"\uC872\uC873\uC875\uC876\uC877\uC879\uC87B",4,"\uC882\uC884\uC888\uC889\uC88A\uC88E",5,"\uC895",7,"\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"],["a141","\uC8A5\uC8A6\uC8A7\uC8A9",18,"\uC8BE\uC8BF\uC8C0\uC8C1"],["a161","\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD",6,"\uC8D6\uC8D8\uC8DA",5,"\uC8E2\uC8E3\uC8E5"],["a181","\uC8E6",14,"\uC8F6",5,"\uC8FE\uC8FF\uC901\uC902\uC903\uC907",4,"\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008",9,"\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"],["a241","\uC910\uC912",5,"\uC919",18],["a261","\uC92D",6,"\uC935",18],["a281","\uC948",7,"\uC952\uC953\uC955\uC956\uC957\uC959",6,"\uC962\uC964",7,"\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"],["a341","\uC971\uC972\uC973\uC975",6,"\uC97D",10,"\uC98A\uC98B\uC98D\uC98E\uC98F"],["a361","\uC991",6,"\uC99A\uC99C\uC99E",16],["a381","\uC9AF",16,"\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB",4,"\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01",58,"\uFFE6\uFF3D",32,"\uFFE3"],["a441","\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2",5,"\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"],["a461","\uCA05\uCA06\uCA07\uCA0A\uCA0E",5,"\uCA15\uCA16\uCA17\uCA19",12],["a481","\uCA26\uCA27\uCA28\uCA2A",28,"\u3131",93],["a541","\uCA47",4,"\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55",6,"\uCA5E\uCA62",5,"\uCA69\uCA6A"],["a561","\uCA6B",17,"\uCA7E",5,"\uCA85\uCA86"],["a581","\uCA87",16,"\uCA99",14,"\u2170",9],["a5b0","\u2160",9],["a5c1","\u0391",16,"\u03A3",6],["a5e1","\u03B1",16,"\u03C3",6],["a641","\uCAA8",19,"\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"],["a661","\uCAC6",5,"\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA",5,"\uCAE1",6],["a681","\uCAE8\uCAE9\uCAEA\uCAEB\uCAED",6,"\uCAF5",18,"\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543",7],["a741","\uCB0B",4,"\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19",6,"\uCB22",7],["a761","\uCB2A",22,"\uCB42\uCB43\uCB44"],["a781","\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51",6,"\uCB5A\uCB5B\uCB5C\uCB5E",5,"\uCB65",7,"\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399",9,"\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0",9,"\u3380",4,"\u33BA",5,"\u3390",4,"\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"],["a841","\uCB6D",10,"\uCB7A",14],["a861","\uCB89",18,"\uCB9D",6],["a881","\uCBA4",19,"\uCBB9",11,"\xC6\xD0\xAA\u0126"],["a8a6","\u0132"],["a8a8","\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"],["a8b1","\u3260",27,"\u24D0",25,"\u2460",14,"\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"],["a941","\uCBC5",14,"\uCBD5",10],["a961","\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA",18],["a981","\uCBFD",14,"\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15",6,"\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200",27,"\u249C",25,"\u2474",14,"\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"],["aa41","\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31",6,"\uCC3A\uCC3F",4,"\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"],["aa61","\uCC4F",4,"\uCC56\uCC5A",5,"\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69",6,"\uCC71\uCC72"],["aa81","\uCC73\uCC74\uCC76",29,"\u3041",82],["ab41","\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1",6,"\uCCAA\uCCAE",5,"\uCCB6\uCCB7\uCCB9"],["ab61","\uCCBA\uCCBB\uCCBD",6,"\uCCC6\uCCC8\uCCCA",5,"\uCCD1\uCCD2\uCCD3\uCCD5",5],["ab81","\uCCDB",8,"\uCCE5",6,"\uCCED\uCCEE\uCCEF\uCCF1",12,"\u30A1",85],["ac41","\uCCFE\uCCFF\uCD00\uCD02",5,"\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11",6,"\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"],["ac61","\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D",11,"\uCD3A",4],["ac81","\uCD3F",28,"\uCD5D\uCD5E\uCD5F\u0410",5,"\u0401\u0416",25],["acd1","\u0430",5,"\u0451\u0436",25],["ad41","\uCD61\uCD62\uCD63\uCD65",6,"\uCD6E\uCD70\uCD72",5,"\uCD79",7],["ad61","\uCD81",6,"\uCD89",10,"\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"],["ad81","\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA",5,"\uCDB1",18,"\uCDC5"],["ae41","\uCDC6",5,"\uCDCD\uCDCE\uCDCF\uCDD1",16],["ae61","\uCDE2",5,"\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1",6,"\uCDFA\uCDFC\uCDFE",4],["ae81","\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D",6,"\uCE15\uCE16\uCE17\uCE18\uCE1A",5,"\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"],["af41","\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36",19],["af61","\uCE4A",13,"\uCE5A\uCE5B\uCE5D\uCE5E\uCE62",5,"\uCE6A\uCE6C"],["af81","\uCE6E",5,"\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D",6,"\uCE86\uCE88\uCE8A",5,"\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"],["b041","\uCE9A",5,"\uCEA2\uCEA6",5,"\uCEAE",12],["b061","\uCEBB",5,"\uCEC2",19],["b081","\uCED6",13,"\uCEE6\uCEE7\uCEE9\uCEEA\uCEED",6,"\uCEF6\uCEFA",5,"\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10",7,"\uAC19",4,"\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"],["b141","\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09",6,"\uCF12\uCF14\uCF16",5,"\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"],["b161","\uCF25",6,"\uCF2E\uCF32",5,"\uCF39",11],["b181","\uCF45",14,"\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D",6,"\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"],["b241","\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79",6,"\uCF81\uCF82\uCF83\uCF84\uCF86",5,"\uCF8D"],["b261","\uCF8E",18,"\uCFA2",5,"\uCFA9"],["b281","\uCFAA",5,"\uCFB1",18,"\uCFC5",6,"\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"],["b341","\uCFCC",19,"\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"],["b361","\uCFEA",5,"\uCFF2\uCFF4\uCFF6",5,"\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005",5],["b381","\uD00B",5,"\uD012",5,"\uD019",19,"\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB",4,"\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"],["b441","\uD02E",5,"\uD036\uD037\uD039\uD03A\uD03B\uD03D",6,"\uD046\uD048\uD04A",5],["b461","\uD051\uD052\uD053\uD055\uD056\uD057\uD059",6,"\uD061",10,"\uD06E\uD06F"],["b481","\uD071\uD072\uD073\uD075",6,"\uD07E\uD07F\uD080\uD082",18,"\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB",4,"\uB2F3\uB2F4\uB2F5\uB2F7",4,"\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"],["b541","\uD095",14,"\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD",5],["b561","\uD0B3\uD0B6\uD0B8\uD0BA",5,"\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA",5,"\uD0D2\uD0D6",4],["b581","\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5",6,"\uD0EE\uD0F2",5,"\uD0F9",11,"\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"],["b641","\uD105",7,"\uD10E",17],["b661","\uD120",15,"\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"],["b681","\uD13F\uD142\uD146",5,"\uD14E\uD14F\uD151\uD152\uD153\uD155",6,"\uD15E\uD160\uD162",5,"\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"],["b741","\uD16E",13,"\uD17D",6,"\uD185\uD186\uD187\uD189\uD18A"],["b761","\uD18B",20,"\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"],["b781","\uD1A9",6,"\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1",14,"\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"],["b841","\uD1D0",7,"\uD1D9",17],["b861","\uD1EB",8,"\uD1F5\uD1F6\uD1F7\uD1F9",13],["b881","\uD208\uD20A",5,"\uD211",24,"\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE",4,"\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"],["b941","\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235",6,"\uD23E\uD240\uD242",5,"\uD249\uD24A\uD24B\uD24C"],["b961","\uD24D",14,"\uD25D",6,"\uD265\uD266\uD267\uD268"],["b981","\uD269",22,"\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14",4,"\uBC1B",4,"\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"],["ba41","\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296",5,"\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5",6,"\uD2AD"],["ba61","\uD2AE\uD2AF\uD2B0\uD2B2",5,"\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3",4,"\uD2CA\uD2CC",5],["ba81","\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD",6,"\uD2E6",9,"\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"],["bb41","\uD2FB",4,"\uD302\uD304\uD306",5,"\uD30F\uD311\uD312\uD313\uD315\uD317",4,"\uD31E\uD322\uD323"],["bb61","\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331",6,"\uD33A\uD33E",5,"\uD346\uD347\uD348\uD349"],["bb81","\uD34A",31,"\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"],["bc41","\uD36A",17,"\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"],["bc61","\uD388\uD389\uD38A\uD38B\uD38E\uD392",5,"\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1",6,"\uD3AA\uD3AC\uD3AE"],["bc81","\uD3AF",4,"\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD",6,"\uD3C6\uD3C7\uD3CA",5,"\uD3D1",5,"\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C",4,"\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"],["bd41","\uD3D7\uD3D9",7,"\uD3E2\uD3E4",7,"\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"],["bd61","\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402",5,"\uD409",13],["bd81","\uD417",5,"\uD41E",25,"\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"],["be41","\uD438",7,"\uD441\uD442\uD443\uD445",14],["be61","\uD454",7,"\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465",7,"\uD46E\uD470\uD471\uD472"],["be81","\uD473",4,"\uD47A\uD47B\uD47D\uD47E\uD481\uD483",4,"\uD48A\uD48C\uD48E",5,"\uD495",8,"\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4",6,"\uC5CC\uC5CE"],["bf41","\uD49E",10,"\uD4AA",14],["bf61","\uD4B9",18,"\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"],["bf81","\uD4D6",5,"\uD4DD\uD4DE\uD4E0",7,"\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1",6,"\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC",5,"\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"],["c041","\uD4FE",5,"\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D",6,"\uD516\uD518",5],["c061","\uD51E",25],["c081","\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545",6,"\uD54E\uD550\uD552",5,"\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751",7,"\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"],["c141","\uD564\uD566\uD567\uD56A\uD56C\uD56E",5,"\uD576\uD577\uD579\uD57A\uD57B\uD57D",6,"\uD586\uD58A\uD58B"],["c161","\uD58C\uD58D\uD58E\uD58F\uD591",19,"\uD5A6\uD5A7"],["c181","\uD5A8",31,"\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"],["c241","\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3",4,"\uD5DA\uD5DC\uD5DE",5,"\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"],["c261","\uD5EF",4,"\uD5F6\uD5F8\uD5FA",5,"\uD602\uD603\uD605\uD606\uD607\uD609",6,"\uD612"],["c281","\uD616",5,"\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625",7,"\uD62E",9,"\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"],["c341","\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D",4],["c361","\uD662",4,"\uD668\uD66A",5,"\uD672\uD673\uD675",11],["c381","\uD681\uD682\uD684\uD686",5,"\uD68E\uD68F\uD691\uD692\uD693\uD695",7,"\uD69E\uD6A0\uD6A2",5,"\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"],["c441","\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1",7,"\uD6BA\uD6BC",7,"\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"],["c461","\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA",5,"\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9",4],["c481","\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6",5,"\uD6FE\uD6FF\uD701\uD702\uD703\uD705",11,"\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"],["c541","\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721",6,"\uD72A\uD72C\uD72E",5,"\uD736\uD737\uD739"],["c561","\uD73A\uD73B\uD73D",6,"\uD745\uD746\uD748\uD74A",5,"\uD752\uD753\uD755\uD75A",4],["c581","\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775",6,"\uD77E\uD77F\uD780\uD782",5,"\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"],["c641","\uD78D\uD78E\uD78F\uD791",6,"\uD79A\uD79C\uD79E",5],["c6a1","\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"],["c7a1","\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"],["c8a1","\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"],["caa1","\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"],["cba1","\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"],["cca1","\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"],["cda1","\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"],["cea1","\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"],["cfa1","\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"],["d0a1","\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"],["d1a1","\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E",5,"\u90A3\uF914",4,"\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"],["d2a1","\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928",4,"\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933",5,"\u99D1\uF939",10,"\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A",7,"\u5AE9\u8A25\u677B\u7D10\uF952",5,"\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"],["d3a1","\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"],["d4a1","\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"],["d5a1","\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"],["d6a1","\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"],["d7a1","\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"],["d8a1","\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"],["d9a1","\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"],["daa1","\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"],["dba1","\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"],["dca1","\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"],["dda1","\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"],["dea1","\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"],["dfa1","\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"],["e0a1","\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"],["e1a1","\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"],["e2a1","\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"],["e3a1","\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"],["e4a1","\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"],["e5a1","\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"],["e6a1","\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"],["e7a1","\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"],["e8a1","\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"],["e9a1","\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"],["eaa1","\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"],["eba1","\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"],["eca1","\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"],["eda1","\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"],["eea1","\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"],["efa1","\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"],["f0a1","\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"],["f1a1","\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"],["f2a1","\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"],["f3a1","\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"],["f4a1","\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"],["f5a1","\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"],["f6a1","\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"],["f7a1","\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"],["f8a1","\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"],["f9a1","\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"],["faa1","\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"],["fba1","\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"],["fca1","\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"],["fda1","\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"]]});var ou=L((bM,VS)=>{VS.exports=[["0","\0",127],["a140","\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"],["a1a1","\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62",4,"\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"],["a240","\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581",7,"\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"],["a2a1","\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10",9,"\u2160",9,"\u3021",8,"\u5341\u5344\u5345\uFF21",25,"\uFF41",21],["a340","\uFF57\uFF58\uFF59\uFF5A\u0391",16,"\u03A3",6,"\u03B1",16,"\u03C3",6,"\u3105",10],["a3a1","\u3110",25,"\u02D9\u02C9\u02CA\u02C7\u02CB"],["a3e1","\u20AC"],["a440","\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"],["a4a1","\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"],["a540","\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"],["a5a1","\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"],["a640","\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"],["a6a1","\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"],["a740","\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"],["a7a1","\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"],["a840","\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"],["a8a1","\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"],["a940","\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"],["a9a1","\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"],["aa40","\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"],["aaa1","\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"],["ab40","\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"],["aba1","\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"],["ac40","\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"],["aca1","\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"],["ad40","\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"],["ada1","\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"],["ae40","\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"],["aea1","\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"],["af40","\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"],["afa1","\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"],["b040","\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"],["b0a1","\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"],["b140","\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"],["b1a1","\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"],["b240","\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"],["b2a1","\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"],["b340","\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"],["b3a1","\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"],["b440","\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"],["b4a1","\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"],["b540","\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"],["b5a1","\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"],["b640","\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"],["b6a1","\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"],["b740","\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"],["b7a1","\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"],["b840","\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"],["b8a1","\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"],["b940","\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"],["b9a1","\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"],["ba40","\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"],["baa1","\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"],["bb40","\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"],["bba1","\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"],["bc40","\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"],["bca1","\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"],["bd40","\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"],["bda1","\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"],["be40","\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"],["bea1","\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"],["bf40","\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"],["bfa1","\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"],["c040","\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"],["c0a1","\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"],["c140","\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"],["c1a1","\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"],["c240","\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"],["c2a1","\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"],["c340","\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"],["c3a1","\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"],["c440","\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"],["c4a1","\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"],["c540","\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"],["c5a1","\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"],["c640","\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"],["c940","\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"],["c9a1","\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"],["ca40","\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"],["caa1","\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"],["cb40","\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"],["cba1","\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"],["cc40","\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"],["cca1","\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"],["cd40","\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"],["cda1","\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"],["ce40","\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"],["cea1","\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"],["cf40","\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"],["cfa1","\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"],["d040","\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"],["d0a1","\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"],["d140","\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"],["d1a1","\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"],["d240","\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"],["d2a1","\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"],["d340","\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"],["d3a1","\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"],["d440","\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"],["d4a1","\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"],["d540","\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"],["d5a1","\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"],["d640","\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"],["d6a1","\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"],["d740","\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"],["d7a1","\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"],["d840","\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"],["d8a1","\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"],["d940","\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"],["d9a1","\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"],["da40","\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"],["daa1","\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"],["db40","\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"],["dba1","\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"],["dc40","\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"],["dca1","\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"],["dd40","\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"],["dda1","\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"],["de40","\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"],["dea1","\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"],["df40","\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"],["dfa1","\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"],["e040","\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"],["e0a1","\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"],["e140","\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"],["e1a1","\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"],["e240","\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"],["e2a1","\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"],["e340","\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"],["e3a1","\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"],["e440","\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"],["e4a1","\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"],["e540","\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"],["e5a1","\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"],["e640","\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"],["e6a1","\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"],["e740","\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"],["e7a1","\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"],["e840","\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"],["e8a1","\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"],["e940","\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"],["e9a1","\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"],["ea40","\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"],["eaa1","\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"],["eb40","\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"],["eba1","\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"],["ec40","\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"],["eca1","\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"],["ed40","\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"],["eda1","\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"],["ee40","\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"],["eea1","\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"],["ef40","\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"],["efa1","\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"],["f040","\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"],["f0a1","\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"],["f140","\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"],["f1a1","\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"],["f240","\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"],["f2a1","\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"],["f340","\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"],["f3a1","\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"],["f440","\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"],["f4a1","\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"],["f540","\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"],["f5a1","\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"],["f640","\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"],["f6a1","\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"],["f740","\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"],["f7a1","\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"],["f840","\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"],["f8a1","\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"],["f940","\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"],["f9a1","\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"]]});var sm=L((xM,GS)=>{GS.exports=[["8740","\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"],["8767","\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"],["87a1","\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"],["8840","\u31C0",4,"\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"],["88a1","\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"],["8940","\u{2A3A9}\u{21145}"],["8943","\u650A"],["8946","\u4E3D\u6EDD\u9D4E\u91DF"],["894c","\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"],["89a1","\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"],["89ab","\u918C\u78B8\u915E\u80BC"],["89b0","\u8D0B\u80F6\u{209E7}"],["89b5","\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"],["89c1","\u6E9A\u823E\u7519"],["89c5","\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"],["8a40","\u{27D84}\u5525"],["8a43","\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"],["8a64","\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"],["8a76","\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"],["8aa1","\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"],["8aac","\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"],["8ab2","\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"],["8abb","\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"],["8ac9","\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"],["8ace","\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"],["8adf","\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"],["8af6","\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"],["8b40","\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"],["8b55","\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"],["8ba1","\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"],["8bde","\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"],["8c40","\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"],["8ca1","\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"],["8ca7","\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"],["8cc9","\u9868\u676B\u4276\u573D"],["8cce","\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"],["8ce6","\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"],["8d40","\u{20B9F}"],["8d42","\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"],["8da1","\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"],["8e40","\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"],["8ea1","\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"],["8f40","\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"],["8fa1","\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"],["9040","\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"],["90a1","\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"],["9140","\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"],["91a1","\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"],["9240","\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"],["92a1","\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"],["9340","\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"],["93a1","\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"],["9440","\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"],["94a1","\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"],["9540","\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"],["95a1","\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"],["9640","\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"],["96a1","\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"],["9740","\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"],["97a1","\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"],["9840","\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"],["98a1","\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"],["9940","\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"],["99a1","\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"],["9a40","\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"],["9aa1","\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"],["9b40","\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"],["9b62","\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"],["9ba1","\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"],["9c40","\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"],["9ca1","\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"],["9d40","\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"],["9da1","\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"],["9e40","\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"],["9ea1","\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"],["9ead","\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"],["9ec5","\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"],["9ef5","\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"],["9f40","\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"],["9f4f","\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"],["9fa1","\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"],["9fae","\u9159\u9681\u915C"],["9fb2","\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"],["9fc1","\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"],["9fc9","\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"],["9fdb","\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"],["9fe7","\u6BFA\u8818\u7F78"],["9feb","\u5620\u{2A64A}\u8E77\u9F53"],["9ff0","\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"],["a040","\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"],["a055","\u{2183B}\u{26E05}"],["a058","\u8A7E\u{2251B}"],["a05b","\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"],["a063","\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"],["a073","\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"],["a0a1","\u5D57\u{28BC2}\u8FDA\u{28E39}"],["a0a6","\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"],["a0ae","\u77FE"],["a0b0","\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"],["a0d4","\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"],["a0e2","\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"],["a3c0","\u2400",31,"\u2421"],["c6a1","\u2460",9,"\u2474",9,"\u2170",9,"\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041",23],["c740","\u3059",58,"\u30A1\u30A2\u30A3\u30A4"],["c7a1","\u30A5",81,"\u0410",5,"\u0401\u0416",4],["c840","\u041B",26,"\u0451\u0436",25,"\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"],["c8a1","\u9FB0\u5188\u9FB1\u{27607}"],["c8cd","\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"],["c8f5","\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"],["f9fe","\uFFED"],["fa40","\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"],["faa1","\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"],["fb40","\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"],["fba1","\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"],["fc40","\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"],["fca1","\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"],["fd40","\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"],["fda1","\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"],["fe40","\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"],["fea1","\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"]]});var im=L((_M,nm)=>{"use strict";nm.exports={shiftjis:{type:"_dbcs",table:function(){return em()},encodeAdd:{"\xA5":92,"\u203E":126},encodeSkipVals:[{from:60736,to:63808}]},csshiftjis:"shiftjis",mskanji:"shiftjis",sjis:"shiftjis",windows31j:"shiftjis",ms31j:"shiftjis",xsjis:"shiftjis",windows932:"shiftjis",ms932:"shiftjis",932:"shiftjis",cp932:"shiftjis",eucjp:{type:"_dbcs",table:function(){return tm()},encodeAdd:{"\xA5":92,"\u203E":126}},gb2312:"cp936",gb231280:"cp936",gb23121980:"cp936",csgb2312:"cp936",csiso58gb231280:"cp936",euccn:"cp936",windows936:"cp936",ms936:"cp936",936:"cp936",cp936:{type:"_dbcs",table:function(){return uo()}},gbk:{type:"_dbcs",table:function(){return uo().concat(iu())}},xgbk:"gbk",isoir58:"gbk",gb18030:{type:"_dbcs",table:function(){return uo().concat(iu())},gb18030:function(){return rm()},encodeSkipVals:[128],encodeAdd:{"\u20AC":41699}},chinese:"gb18030",windows949:"cp949",ms949:"cp949",949:"cp949",cp949:{type:"_dbcs",table:function(){return am()}},cseuckr:"cp949",csksc56011987:"cp949",euckr:"cp949",isoir149:"cp949",korean:"cp949",ksc56011987:"cp949",ksc56011989:"cp949",ksc5601:"cp949",windows950:"cp950",ms950:"cp950",950:"cp950",cp950:{type:"_dbcs",table:function(){return ou()}},big5:"big5hkscs",big5hkscs:{type:"_dbcs",table:function(){return ou().concat(sm())},encodeSkipVals:[41676]},cnbig5:"big5hkscs",csbig5:"big5hkscs",xxbig5:"big5hkscs"}});var lm=L((cm,Vs)=>{"use strict";var om=[Ff(),zf(),Bf(),Gf(),Zf(),Xf(),Jf(),im()];for(po=0;po{"use strict";var um=require("buffer").Buffer,mo=require("stream").Transform;pm.exports=function(a){a.encodeStream=function(r,t){return new Ua(a.getEncoder(r,t),t)},a.decodeStream=function(r,t){return new ha(a.getDecoder(r,t),t)},a.supportsStreams=!0,a.IconvLiteEncoderStream=Ua,a.IconvLiteDecoderStream=ha,a._collect=ha.prototype.collect};function Ua(a,e){this.conv=a,e=e||{},e.decodeStrings=!1,mo.call(this,e)}Ua.prototype=Object.create(mo.prototype,{constructor:{value:Ua}});Ua.prototype._transform=function(a,e,r){if(typeof a!="string")return r(new Error("Iconv encoding stream needs strings as its input."));try{var t=this.conv.write(a);t&&t.length&&this.push(t),r()}catch(s){r(s)}};Ua.prototype._flush=function(a){try{var e=this.conv.end();e&&e.length&&this.push(e),a()}catch(r){a(r)}};Ua.prototype.collect=function(a){var e=[];return this.on("error",a),this.on("data",function(r){e.push(r)}),this.on("end",function(){a(null,um.concat(e))}),this};function ha(a,e){this.conv=a,e=e||{},e.encoding=this.encoding="utf8",mo.call(this,e)}ha.prototype=Object.create(mo.prototype,{constructor:{value:ha}});ha.prototype._transform=function(a,e,r){if(!um.isBuffer(a))return r(new Error("Iconv decoding stream needs buffers as its input."));try{var t=this.conv.write(a);t&&t.length&&this.push(t,this.encoding),r()}catch(s){r(s)}};ha.prototype._flush=function(a){try{var e=this.conv.end();e&&e.length&&this.push(e,this.encoding),a()}catch(r){a(r)}};ha.prototype.collect=function(a){var e="";return this.on("error",a),this.on("data",function(r){e+=r}),this.on("end",function(){a(null,e)}),this}});var mm=L((wM,fm)=>{"use strict";var ct=require("buffer").Buffer;fm.exports=function(a){var e=void 0;a.supportsNodeEncodingsExtension=!(ct.from||new ct(0)instanceof Uint8Array),a.extendNodeEncodings=function(){if(!e){if(e={},!a.supportsNodeEncodingsExtension){console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"),console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility");return}var t={hex:!0,utf8:!0,"utf-8":!0,ascii:!0,binary:!0,base64:!0,ucs2:!0,"ucs-2":!0,utf16le:!0,"utf-16le":!0};ct.isNativeEncoding=function(n){return n&&t[n.toLowerCase()]};var s=require("buffer").SlowBuffer;if(e.SlowBufferToString=s.prototype.toString,s.prototype.toString=function(n,o,l){return n=String(n||"utf8").toLowerCase(),ct.isNativeEncoding(n)?e.SlowBufferToString.call(this,n,o,l):(typeof o>"u"&&(o=0),typeof l>"u"&&(l=this.length),a.decode(this.slice(o,l),n))},e.SlowBufferWrite=s.prototype.write,s.prototype.write=function(n,o,l,c){if(isFinite(o))isFinite(l)||(c=l,l=void 0);else{var u=c;c=o,o=l,l=u}o=+o||0;var p=this.length-o;if(l?(l=+l,l>p&&(l=p)):l=p,c=String(c||"utf8").toLowerCase(),ct.isNativeEncoding(c))return e.SlowBufferWrite.call(this,n,o,l,c);if(n.length>0&&(l<0||o<0))throw new RangeError("attempt to write beyond buffer bounds");var m=a.encode(n,c);return m.length"u"&&(o=0),typeof l>"u"&&(l=this.length),a.decode(this.slice(o,l),n))},e.BufferWrite=ct.prototype.write,ct.prototype.write=function(n,o,l,c){var u=o,p=l,m=c;if(isFinite(o))isFinite(l)||(c=l,l=void 0);else{var f=c;c=o,o=l,l=f}if(c=String(c||"utf8").toLowerCase(),ct.isNativeEncoding(c))return e.BufferWrite.call(this,n,u,p,m);o=+o||0;var h=this.length-o;if(l?(l=+l,l>h&&(l=h)):l=h,n.length>0&&(l<0||o<0))throw new RangeError("attempt to write beyond buffer bounds");var d=a.encode(n,c);return d.length{"use strict";var vm=qa().Buffer,gm=Mf(),Ye=ym.exports;Ye.encodings=null;Ye.defaultCharUnicode="\uFFFD";Ye.defaultCharSingleByte="?";Ye.encode=function(e,r,t){e=""+(e||"");var s=Ye.getEncoder(r,t),i=s.write(e),n=s.end();return n&&n.length>0?vm.concat([i,n]):i};Ye.decode=function(e,r,t){typeof e=="string"&&(Ye.skipDecodeWarning||(console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"),Ye.skipDecodeWarning=!0),e=vm.from(""+(e||""),"binary"));var s=Ye.getDecoder(r,t),i=s.write(e),n=s.end();return n?i+n:i};Ye.encodingExists=function(e){try{return Ye.getCodec(e),!0}catch{return!1}};Ye.toEncoding=Ye.encode;Ye.fromEncoding=Ye.decode;Ye._codecDataCache={};Ye.getCodec=function(e){Ye.encodings||(Ye.encodings=lm());for(var r=Ye._canonicalizeEncoding(e),t={};;){var s=Ye._codecDataCache[r];if(s)return s;var i=Ye.encodings[r];switch(typeof i){case"string":r=i;break;case"object":for(var n in i)t[n]=i[n];t.encodingName||(t.encodingName=r),r=i.type;break;case"function":return t.encodingName||(t.encodingName=r),s=new i(t,Ye),Ye._codecDataCache[t.encodingName]=s,s;default:throw new Error("Encoding not recognized: '"+e+"' (searched as: '"+r+"')")}}};Ye._canonicalizeEncoding=function(a){return(""+a).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g,"")};Ye.getEncoder=function(e,r){var t=Ye.getCodec(e),s=new t.encoder(r,t);return t.bomAware&&r&&r.addBOM&&(s=new gm.PrependBOM(s,r)),s};Ye.getDecoder=function(e,r){var t=Ye.getCodec(e),s=new t.decoder(r,t);return t.bomAware&&!(r&&r.stripBOM===!1)&&(s=new gm.StripBOM(s,r)),s};var hm=typeof process<"u"&&process.versions&&process.versions.node;hm&&(cu=hm.split(".").map(Number),(cu[0]>0||cu[1]>=10)&&dm()(Ye),mm()(Ye));var cu});var ho=L((PM,bm)=>{"use strict";bm.exports=ZS;function WS(a){for(var e=a.listeners("data"),r=0;r{"use strict";var xm=rP(),KS=Ls(),za=Ma(),XS=lu(),QS=ho();Em.exports=eP;var YS=/^Encoding not recognized: /;function JS(a){if(!a)return null;try{return XS.getDecoder(a)}catch(e){throw YS.test(e.message)?za(415,"specified encoding unsupported",{encoding:a,type:"encoding.unsupported"}):e}}function eP(a,e,r){var t=r,s=e||{};if(a===void 0)throw new TypeError("argument stream is required");if(typeof a!="object"||a===null||typeof a.on!="function")throw new TypeError("argument stream must be a stream");if((e===!0||typeof e=="string")&&(s={encoding:e}),typeof e=="function"&&(t=e,s={}),t!==void 0&&typeof t!="function")throw new TypeError("argument callback must be a function");if(!t&&!global.Promise)throw new TypeError("argument callback is required");var i=s.encoding!==!0?s.encoding:"utf-8",n=KS.parse(s.limit),o=s.length!=null&&!isNaN(s.length)?parseInt(s.length,10):null;return t?_m(a,i,o,n,aP(t)):new Promise(function(c,u){_m(a,i,o,n,function(m,f){if(m)return u(m);c(f)})})}function tP(a){QS(a),typeof a.pause=="function"&&a.pause()}function _m(a,e,r,t,s){var i=!1,n=!0;if(t!==null&&r!==null&&r>t)return p(za(413,"request entity too large",{expected:r,length:r,limit:t,type:"entity.too.large"}));var o=a._readableState;if(a._decoder||o&&(o.encoding||o.decoder))return p(za(500,"stream encoding should not be set",{type:"stream.encoding.set"}));if(typeof a.readable<"u"&&!a.readable)return p(za(500,"stream is not readable",{type:"stream.not.readable"}));var l=0,c;try{c=JS(e)}catch(v){return p(v)}var u=c?"":[];a.on("aborted",m),a.on("close",d),a.on("data",f),a.on("end",h),a.on("error",h),n=!1;function p(){for(var v=new Array(arguments.length),x=0;xt?p(za(413,"request entity too large",{limit:t,received:l,type:"entity.too.large"})):c?u+=c.write(v):u.push(v))}function h(v){if(!i){if(v)return p(v);if(r!==null&&l!==r)p(za(400,"request size did not match content length",{expected:r,length:r,received:l,type:"request.size.invalid"}));else{var x=c?u+(c.end()||""):Buffer.concat(u);p(null,x)}}}function d(){u=null,a.removeListener("aborted",m),a.removeListener("data",f),a.removeListener("end",h),a.removeListener("error",h),a.removeListener("close",d)}}function rP(){try{return require("async_hooks")}catch{return{}}}function aP(a){var e;return xm.AsyncResource&&(e=new xm.AsyncResource(a.name||"bound-anonymous-fn")),!e||!e.runInAsyncScope?a:e.runInAsyncScope.bind(e,a,null)}});var Pm=L((RM,Sm)=>{"use strict";Sm.exports=sP;function sP(a,e){if(!Array.isArray(a))throw new TypeError("arg must be an array of [ee, events...] arrays");for(var r=[],t=0;t{"use strict";uu.exports=oP;uu.exports.isFinished=Om;var Tm=dP(),Rm=Pm(),iP=typeof setImmediate=="function"?setImmediate:function(a){process.nextTick(a.bind.apply(a,arguments))};function oP(a,e){return Om(a)!==!1?(iP(e,null,a),a):(lP(a,fP(e)),a)}function Om(a){var e=a.socket;if(typeof a.finished=="boolean")return!!(a.finished||e&&!e.writable);if(typeof a.complete=="boolean")return!!(a.upgrade||!e||!e.readable||a.complete&&!a.readable)}function cP(a,e){var r,t,s=!1;function i(o){r.cancel(),t.cancel(),s=!0,e(o)}r=t=Rm([[a,"end","finish"]],i);function n(o){a.removeListener("socket",n),!s&&r===t&&(t=Rm([[o,"error","close"]],i))}if(a.socket){n(a.socket);return}a.on("socket",n),a.socket===void 0&&pP(a,n)}function lP(a,e){var r=a.__onFinished;(!r||!r.queue)&&(r=a.__onFinished=uP(a),cP(a,r)),r.queue.push(e)}function uP(a){function e(r){if(a.__onFinished===e&&(a.__onFinished=null),!!e.queue){var t=e.queue;e.queue=null;for(var s=0;s{"use strict";var va=Ma(),mP=jl(),hP=wm(),Cm=lu(),km=Jn(),vP=ho(),Am=require("zlib");Im.exports=gP;function gP(a,e,r,t,s,i){var n,o=i,l;a._body=!0;var c=o.encoding!==null?o.encoding:null,u=o.verify;try{l=yP(a,s,o.inflate),n=l.length,l.length=void 0}catch(p){return r(p)}if(o.length=n,o.encoding=u?null:c,o.encoding===null&&c!==null&&!Cm.encodingExists(c))return r(va(415,'unsupported charset "'+c.toUpperCase()+'"',{charset:c.toLowerCase(),type:"charset.unsupported"}));s("read body"),hP(l,o,function(p,m){if(p){var f;p.type==="encoding.unsupported"?f=va(415,'unsupported charset "'+c.toUpperCase()+'"',{charset:c.toLowerCase(),type:"charset.unsupported"}):f=va(400,p),l!==a&&(vP(a),mP(l,!0)),bP(a,function(){r(va(400,f))});return}if(u)try{s("verify body"),u(a,e,m,c)}catch(d){r(va(403,d,{body:m,type:d.type||"entity.verify.failed"}));return}var h=m;try{s("parse body"),h=typeof m!="string"&&c!==null?Cm.decode(m,c):m,a.body=t(h)}catch(d){r(va(400,d,{body:h,type:d.type||"entity.parse.failed"}));return}r()})}function yP(a,e,r){var t=(a.headers["content-encoding"]||"identity").toLowerCase(),s=a.headers["content-length"],i;if(e('content-encoding "%s"',t),r===!1&&t!=="identity")throw va(415,"content encoding unsupported",{encoding:t,type:"encoding.unsupported"});switch(t){case"deflate":i=Am.createInflate(),e("inflate body"),a.pipe(i);break;case"gzip":i=Am.createGunzip(),e("gunzip body"),a.pipe(i);break;case"identity":i=a,i.length=s;break;default:throw va(415,'unsupported content encoding "'+t+'"',{encoding:t,type:"encoding.unsupported"})}return i}function bP(a,e){km.isFinished(a)?e(null):(km(a,e),a.resume())}});var $m=L(pu=>{var Nm=/; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g,xP=/^[\u0020-\u007e\u0080-\u00ff]+$/,Dm=/^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/,_P=/\\([\u0000-\u007f])/g,EP=/([\\"])/g,wP=/^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/,jm=/^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/,SP=/^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;pu.format=PP;pu.parse=TP;function PP(a){if(!a||typeof a!="object")throw new TypeError("argument obj is required");var e=a.parameters,r=a.subtype,t=a.suffix,s=a.type;if(!s||!jm.test(s))throw new TypeError("invalid type");if(!r||!wP.test(r))throw new TypeError("invalid subtype");var i=s+"/"+r;if(t){if(!jm.test(t))throw new TypeError("invalid suffix");i+="+"+t}if(e&&typeof e=="object")for(var n,o=Object.keys(e).sort(),l=0;l0&&!xP.test(e))throw new TypeError("invalid parameter value");return'"'+e.replace(EP,"\\$1")+'"'}function CP(a){var e=SP.exec(a.toLowerCase());if(!e)throw new TypeError("invalid media type");var r=e[1],t=e[2],s,i=t.lastIndexOf("+");i!==-1&&(s=t.substr(i+1),t=t.substr(0,i));var n={type:r,subtype:t,suffix:s};return n}});var Mm=L((AM,kP)=>{kP.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hl7cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var qm=L((IM,Lm)=>{Lm.exports=Mm()});var du=L(Dt=>{"use strict";var vo=qm(),AP=require("path").extname,Fm=/^\s*([^;\s]*)(?:;|\s|$)/,IP=/^text\//i;Dt.charset=Um;Dt.charsets={lookup:Um};Dt.contentType=NP;Dt.extension=jP;Dt.extensions=Object.create(null);Dt.lookup=DP;Dt.types=Object.create(null);$P(Dt.extensions,Dt.types);function Um(a){if(!a||typeof a!="string")return!1;var e=Fm.exec(a),r=e&&vo[e[1].toLowerCase()];return r&&r.charset?r.charset:e&&IP.test(e[1])?"UTF-8":!1}function NP(a){if(!a||typeof a!="string")return!1;var e=a.indexOf("/")===-1?Dt.lookup(a):a;if(!e)return!1;if(e.indexOf("charset")===-1){var r=Dt.charset(e);r&&(e+="; charset="+r.toLowerCase())}return e}function jP(a){if(!a||typeof a!="string")return!1;var e=Fm.exec(a),r=e&&Dt.extensions[e[1].toLowerCase()];return!r||!r.length?!1:r[0]}function DP(a){if(!a||typeof a!="string")return!1;var e=AP("x."+a).toLowerCase().substr(1);return e&&Dt.types[e]||!1}function $P(a,e){var r=["nginx","apache",void 0,"iana"];Object.keys(vo).forEach(function(s){var i=vo[s],n=i.extensions;if(!(!n||!n.length)){a[s]=n;for(var o=0;ou||c===u&&e[l].substr(0,12)==="application/"))continue}e[l]=s}}})}});var Ws=L((jM,Gs)=>{"use strict";var zm=$m(),MP=du();Gs.exports=LP;Gs.exports.is=Hm;Gs.exports.hasBody=Bm;Gs.exports.normalize=Vm;Gs.exports.match=Gm;function Hm(a,e){var r,t=e,s=FP(a);if(!s)return!1;if(t&&!Array.isArray(t))for(t=new Array(arguments.length-1),r=0;r2){r=new Array(arguments.length-1);for(var t=0;t{"use strict";var UP=Ls(),zP=zn(),HP=Ma(),ga=tr()("body-parser:json"),BP=ei(),Zm=Ws();Xm.exports=WP;var VP=/^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/,Wm="#",GP=/#+/g;function WP(a){var e=a||{},r=typeof e.limit!="number"?UP.parse(e.limit||"100kb"):e.limit,t=e.inflate!==!1,s=e.reviver,i=e.strict!==!1,n=e.type||"application/json",o=e.verify||!1;if(o!==!1&&typeof o!="function")throw new TypeError("option verify must be function");var l=typeof n!="function"?QP(n):n;function c(u){if(u.length===0)return{};if(i){var p=KP(u);if(p!=="{"&&p!=="[")throw ga("strict violation"),ZP(u,p)}try{return ga("parse json"),JSON.parse(u,s)}catch(m){throw Km(m,{message:m.message,stack:m.stack})}}return function(p,m,f){if(p._body){ga("body already parsed"),f();return}if(p.body=p.body||{},!Zm.hasBody(p)){ga("skip empty body"),f();return}if(ga("content-type %j",p.headers["content-type"]),!l(p)){ga("skip parsing"),f();return}var h=XP(p)||"utf-8";if(h.slice(0,4)!=="utf-"){ga("invalid charset"),f(HP(415,'unsupported charset "'+h.toUpperCase()+'"',{charset:h,type:"charset.unsupported"}));return}BP(p,m,f,c,ga,{encoding:h,inflate:t,limit:r,verify:o})}}function ZP(a,e){var r=a.indexOf(e),t="";if(r!==-1){t=a.substring(0,r)+Wm;for(var s=r+1;s{"use strict";var YP=Ls(),ti=tr()("body-parser:raw"),JP=ei(),Ym=Ws();Jm.exports=eT;function eT(a){var e=a||{},r=e.inflate!==!1,t=typeof e.limit!="number"?YP.parse(e.limit||"100kb"):e.limit,s=e.type||"application/octet-stream",i=e.verify||!1;if(i!==!1&&typeof i!="function")throw new TypeError("option verify must be function");var n=typeof s!="function"?tT(s):s;function o(l){return l}return function(c,u,p){if(c._body){ti("body already parsed"),p();return}if(c.body=c.body||{},!Ym.hasBody(c)){ti("skip empty body"),p();return}if(ti("content-type %j",c.headers["content-type"]),!n(c)){ti("skip parsing"),p();return}JP(c,u,p,o,ti,{encoding:null,inflate:r,limit:t,verify:i})}}function tT(a){return function(r){return!!Ym(r,a)}}});var ah=L((MM,rh)=>{"use strict";var rT=Ls(),aT=zn(),ri=tr()("body-parser:text"),sT=ei(),th=Ws();rh.exports=nT;function nT(a){var e=a||{},r=e.defaultCharset||"utf-8",t=e.inflate!==!1,s=typeof e.limit!="number"?rT.parse(e.limit||"100kb"):e.limit,i=e.type||"text/plain",n=e.verify||!1;if(n!==!1&&typeof n!="function")throw new TypeError("option verify must be function");var o=typeof i!="function"?oT(i):i;function l(c){return c}return function(u,p,m){if(u._body){ri("body already parsed"),m();return}if(u.body=u.body||{},!th.hasBody(u)){ri("skip empty body"),m();return}if(ri("content-type %j",u.headers["content-type"]),!o(u)){ri("skip parsing"),m();return}var f=iT(u)||r;sT(u,p,m,l,ri,{encoding:f,inflate:t,limit:s,verify:n})}}function iT(a){try{return(aT.parse(a).parameters.charset||"").toLowerCase()}catch{return}}function oT(a){return function(r){return!!th(r,a)}}});var Ha=L((LM,sh)=>{"use strict";sh.exports=TypeError});var ih=L((qM,nh)=>{nh.exports=require("util").inspect});var oi=L((FM,Th)=>{var Eu=typeof Map=="function"&&Map.prototype,fu=Object.getOwnPropertyDescriptor&&Eu?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,yo=Eu&&fu&&typeof fu.get=="function"?fu.get:null,oh=Eu&&Map.prototype.forEach,wu=typeof Set=="function"&&Set.prototype,mu=Object.getOwnPropertyDescriptor&&wu?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,bo=wu&&mu&&typeof mu.get=="function"?mu.get:null,ch=wu&&Set.prototype.forEach,cT=typeof WeakMap=="function"&&WeakMap.prototype,si=cT?WeakMap.prototype.has:null,lT=typeof WeakSet=="function"&&WeakSet.prototype,ni=lT?WeakSet.prototype.has:null,uT=typeof WeakRef=="function"&&WeakRef.prototype,lh=uT?WeakRef.prototype.deref:null,pT=Boolean.prototype.valueOf,dT=Object.prototype.toString,fT=Function.prototype.toString,mT=String.prototype.match,Su=String.prototype.slice,ya=String.prototype.replace,hT=String.prototype.toUpperCase,uh=String.prototype.toLowerCase,bh=RegExp.prototype.test,ph=Array.prototype.concat,Nr=Array.prototype.join,vT=Array.prototype.slice,dh=Math.floor,gu=typeof BigInt=="function"?BigInt.prototype.valueOf:null,hu=Object.getOwnPropertySymbols,yu=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,Zs=typeof Symbol=="function"&&typeof Symbol.iterator=="object",ii=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===Zs||!0)?Symbol.toStringTag:null,xh=Object.prototype.propertyIsEnumerable,fh=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(a){return a.__proto__}:null);function mh(a,e){if(a===1/0||a===-1/0||a!==a||a&&a>-1e3&&a<1e3||bh.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof a=="number"){var t=a<0?-dh(-a):dh(a);if(t!==a){var s=String(t),i=Su.call(e,s.length+1);return ya.call(s,r,"$&_")+"."+ya.call(ya.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return ya.call(e,r,"$&_")}var bu=ih(),hh=bu.custom,vh=wh(hh)?hh:null,_h={__proto__:null,double:'"',single:"'"},gT={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};Th.exports=function a(e,r,t,s){var i=r||{};if(Xr(i,"quoteStyle")&&!Xr(_h,i.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(Xr(i,"maxStringLength")&&(typeof i.maxStringLength=="number"?i.maxStringLength<0&&i.maxStringLength!==1/0:i.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var n=Xr(i,"customInspect")?i.customInspect:!0;if(typeof n!="boolean"&&n!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(Xr(i,"indent")&&i.indent!==null&&i.indent!==" "&&!(parseInt(i.indent,10)===i.indent&&i.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(Xr(i,"numericSeparator")&&typeof i.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var o=i.numericSeparator;if(typeof e>"u")return"undefined";if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="string")return Ph(e,i);if(typeof e=="number"){if(e===0)return 1/0/e>0?"0":"-0";var l=String(e);return o?mh(e,l):l}if(typeof e=="bigint"){var c=String(e)+"n";return o?mh(e,c):c}var u=typeof i.depth>"u"?5:i.depth;if(typeof t>"u"&&(t=0),t>=u&&u>0&&typeof e=="object")return xu(e)?"[Array]":"[Object]";var p=DT(i,t);if(typeof s>"u")s=[];else if(Sh(s,e)>=0)return"[Circular]";function m(T,N,z){if(N&&(s=vT.call(s),s.push(N)),z){var B={depth:i.depth};return Xr(i,"quoteStyle")&&(B.quoteStyle=i.quoteStyle),a(T,B,t+1,s)}return a(T,i,t+1,s)}if(typeof e=="function"&&!gh(e)){var f=TT(e),h=go(e,m);return"[Function"+(f?": "+f:" (anonymous)")+"]"+(h.length>0?" { "+Nr.call(h,", ")+" }":"")}if(wh(e)){var d=Zs?ya.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):yu.call(e);return typeof e=="object"&&!Zs?ai(d):d}if(IT(e)){for(var v="<"+uh.call(String(e.nodeName)),x=e.attributes||[],b=0;b",v}if(xu(e)){if(e.length===0)return"[]";var E=go(e,m);return p&&!jT(E)?"["+_u(E,p)+"]":"[ "+Nr.call(E,", ")+" ]"}if(xT(e)){var O=go(e,m);return!("cause"in Error.prototype)&&"cause"in e&&!xh.call(e,"cause")?"{ ["+String(e)+"] "+Nr.call(ph.call("[cause]: "+m(e.cause),O),", ")+" }":O.length===0?"["+String(e)+"]":"{ ["+String(e)+"] "+Nr.call(O,", ")+" }"}if(typeof e=="object"&&n){if(vh&&typeof e[vh]=="function"&&bu)return bu(e,{depth:u-t});if(n!=="symbol"&&typeof e.inspect=="function")return e.inspect()}if(RT(e)){var C=[];return oh&&oh.call(e,function(T,N){C.push(m(N,e,!0)+" => "+m(T,e))}),yh("Map",yo.call(e),C,p)}if(kT(e)){var P=[];return ch&&ch.call(e,function(T){P.push(m(T,e))}),yh("Set",bo.call(e),P,p)}if(OT(e))return vu("WeakMap");if(AT(e))return vu("WeakSet");if(CT(e))return vu("WeakRef");if(ET(e))return ai(m(Number(e)));if(ST(e))return ai(m(gu.call(e)));if(wT(e))return ai(pT.call(e));if(_T(e))return ai(m(String(e)));if(typeof window<"u"&&e===window)return"{ [object Window] }";if(typeof globalThis<"u"&&e===globalThis||typeof global<"u"&&e===global)return"{ [object globalThis] }";if(!bT(e)&&!gh(e)){var A=go(e,m),$=fh?fh(e)===Object.prototype:e instanceof Object||e.constructor===Object,I=e instanceof Object?"":"null prototype",q=!$&&ii&&Object(e)===e&&ii in e?Su.call(ba(e),8,-1):I?"Object":"",M=$||typeof e.constructor!="function"?"":e.constructor.name?e.constructor.name+" ":"",k=M+(q||I?"["+Nr.call(ph.call([],q||[],I||[]),": ")+"] ":"");return A.length===0?k+"{}":p?k+"{"+_u(A,p)+"}":k+"{ "+Nr.call(A,", ")+" }"}return String(e)};function Eh(a,e,r){var t=r.quoteStyle||e,s=_h[t];return s+a+s}function yT(a){return ya.call(String(a),/"/g,""")}function Ba(a){return!ii||!(typeof a=="object"&&(ii in a||typeof a[ii]<"u"))}function xu(a){return ba(a)==="[object Array]"&&Ba(a)}function bT(a){return ba(a)==="[object Date]"&&Ba(a)}function gh(a){return ba(a)==="[object RegExp]"&&Ba(a)}function xT(a){return ba(a)==="[object Error]"&&Ba(a)}function _T(a){return ba(a)==="[object String]"&&Ba(a)}function ET(a){return ba(a)==="[object Number]"&&Ba(a)}function wT(a){return ba(a)==="[object Boolean]"&&Ba(a)}function wh(a){if(Zs)return a&&typeof a=="object"&&a instanceof Symbol;if(typeof a=="symbol")return!0;if(!a||typeof a!="object"||!yu)return!1;try{return yu.call(a),!0}catch{}return!1}function ST(a){if(!a||typeof a!="object"||!gu)return!1;try{return gu.call(a),!0}catch{}return!1}var PT=Object.prototype.hasOwnProperty||function(a){return a in this};function Xr(a,e){return PT.call(a,e)}function ba(a){return dT.call(a)}function TT(a){if(a.name)return a.name;var e=mT.call(fT.call(a),/^function\s*([\w$]+)/);return e?e[1]:null}function Sh(a,e){if(a.indexOf)return a.indexOf(e);for(var r=0,t=a.length;re.maxStringLength){var r=a.length-e.maxStringLength,t="... "+r+" more character"+(r>1?"s":"");return Ph(Su.call(a,0,e.maxStringLength),e)+t}var s=gT[e.quoteStyle||"single"];s.lastIndex=0;var i=ya.call(ya.call(a,s,"\\$1"),/[\x00-\x1f]/g,NT);return Eh(i,"single",e)}function NT(a){var e=a.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+hT.call(e.toString(16))}function ai(a){return"Object("+a+")"}function vu(a){return a+" { ? }"}function yh(a,e,r,t){var s=t?_u(r,t):Nr.call(r,", ");return a+" ("+e+") {"+s+"}"}function jT(a){for(var e=0;e=0)return!1;return!0}function DT(a,e){var r;if(a.indent===" ")r=" ";else if(typeof a.indent=="number"&&a.indent>0)r=Nr.call(Array(a.indent+1)," ");else return null;return{base:r,prev:Nr.call(Array(e+1),r)}}function _u(a,e){if(a.length===0)return"";var r=` -`+e.prev+e.base;return r+Nr.call(a,","+r)+` -`+e.prev}function go(a,e){var r=xu(a),t=[];if(r){t.length=a.length;for(var s=0;s{"use strict";var $T=oi(),MT=Ha(),xo=function(a,e,r){for(var t=a,s;(s=t.next)!=null;t=s)if(s.key===e)return t.next=s.next,r||(s.next=a.next,a.next=s),s},LT=function(a,e){if(a){var r=xo(a,e);return r&&r.value}},qT=function(a,e,r){var t=xo(a,e);t?t.value=r:a.next={key:e,next:a.next,value:r}},FT=function(a,e){return a?!!xo(a,e):!1},UT=function(a,e){if(a)return xo(a,e,!0)};Rh.exports=function(){var e,r={assert:function(t){if(!r.has(t))throw new MT("Side channel does not contain "+$T(t))},delete:function(t){var s=e&&e.next,i=UT(e,t);return i&&s&&s===i&&(e=void 0),!!i},get:function(t){return LT(e,t)},has:function(t){return FT(e,t)},set:function(t,s){e||(e={next:void 0}),qT(e,t,s)}};return r}});var Pu=L((zM,Ch)=>{"use strict";Ch.exports=Object});var Ah=L((HM,kh)=>{"use strict";kh.exports=Error});var Nh=L((BM,Ih)=>{"use strict";Ih.exports=EvalError});var Dh=L((VM,jh)=>{"use strict";jh.exports=RangeError});var Mh=L((GM,$h)=>{"use strict";$h.exports=ReferenceError});var qh=L((WM,Lh)=>{"use strict";Lh.exports=SyntaxError});var Uh=L((ZM,Fh)=>{"use strict";Fh.exports=URIError});var Hh=L((KM,zh)=>{"use strict";zh.exports=Math.abs});var Vh=L((XM,Bh)=>{"use strict";Bh.exports=Math.floor});var Wh=L((QM,Gh)=>{"use strict";Gh.exports=Math.max});var Kh=L((YM,Zh)=>{"use strict";Zh.exports=Math.min});var Qh=L((JM,Xh)=>{"use strict";Xh.exports=Math.pow});var Jh=L((eL,Yh)=>{"use strict";Yh.exports=Math.round});var tv=L((tL,ev)=>{"use strict";ev.exports=Number.isNaN||function(e){return e!==e}});var av=L((rL,rv)=>{"use strict";var zT=tv();rv.exports=function(e){return zT(e)||e===0?e:e<0?-1:1}});var nv=L((aL,sv)=>{"use strict";sv.exports=Object.getOwnPropertyDescriptor});var Tu=L((sL,iv)=>{"use strict";var _o=nv();if(_o)try{_o([],"length")}catch{_o=null}iv.exports=_o});var cv=L((nL,ov)=>{"use strict";var Eo=Object.defineProperty||!1;if(Eo)try{Eo({},"a",{value:1})}catch{Eo=!1}ov.exports=Eo});var uv=L((iL,lv)=>{"use strict";lv.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var e={},r=Symbol("test"),t=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(t)!=="[object Symbol]")return!1;var s=42;e[r]=s;for(var i in e)return!1;if(typeof Object.keys=="function"&&Object.keys(e).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(e).length!==0)return!1;var n=Object.getOwnPropertySymbols(e);if(n.length!==1||n[0]!==r||!Object.prototype.propertyIsEnumerable.call(e,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var o=Object.getOwnPropertyDescriptor(e,r);if(o.value!==s||o.enumerable!==!0)return!1}return!0}});var fv=L((oL,dv)=>{"use strict";var pv=typeof Symbol<"u"&&Symbol,HT=uv();dv.exports=function(){return typeof pv!="function"||typeof Symbol!="function"||typeof pv("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:HT()}});var Ru=L((cL,mv)=>{"use strict";mv.exports=typeof Reflect<"u"&&Reflect.getPrototypeOf||null});var Ou=L((lL,hv)=>{"use strict";var BT=Pu();hv.exports=BT.getPrototypeOf||null});var yv=L((uL,gv)=>{"use strict";var VT="Function.prototype.bind called on incompatible ",GT=Object.prototype.toString,WT=Math.max,ZT="[object Function]",vv=function(e,r){for(var t=[],s=0;s{"use strict";var QT=yv();bv.exports=Function.prototype.bind||QT});var wo=L((dL,xv)=>{"use strict";xv.exports=Function.prototype.call});var Cu=L((fL,_v)=>{"use strict";_v.exports=Function.prototype.apply});var wv=L((mL,Ev)=>{"use strict";Ev.exports=typeof Reflect<"u"&&Reflect&&Reflect.apply});var Pv=L((hL,Sv)=>{"use strict";var YT=ci(),JT=Cu(),eR=wo(),tR=wv();Sv.exports=tR||YT.call(eR,JT)});var ku=L((vL,Tv)=>{"use strict";var rR=ci(),aR=Ha(),sR=wo(),nR=Pv();Tv.exports=function(e){if(e.length<1||typeof e[0]!="function")throw new aR("a function is required");return nR(rR,sR,e)}});var Iv=L((gL,Av)=>{"use strict";var iR=ku(),Rv=Tu(),Cv;try{Cv=[].__proto__===Array.prototype}catch(a){if(!a||typeof a!="object"||!("code"in a)||a.code!=="ERR_PROTO_ACCESS")throw a}var Au=!!Cv&&Rv&&Rv(Object.prototype,"__proto__"),kv=Object,Ov=kv.getPrototypeOf;Av.exports=Au&&typeof Au.get=="function"?iR([Au.get]):typeof Ov=="function"?function(e){return Ov(e==null?e:kv(e))}:!1});var Mv=L((yL,$v)=>{"use strict";var Nv=Ru(),jv=Ou(),Dv=Iv();$v.exports=Nv?function(e){return Nv(e)}:jv?function(e){if(!e||typeof e!="object"&&typeof e!="function")throw new TypeError("getProto: not an object");return jv(e)}:Dv?function(e){return Dv(e)}:null});var qv=L((bL,Lv)=>{"use strict";var oR=Function.prototype.call,cR=Object.prototype.hasOwnProperty,lR=ci();Lv.exports=lR.call(oR,cR)});var To=L((xL,Vv)=>{"use strict";var ze,uR=Pu(),pR=Ah(),dR=Nh(),fR=Dh(),mR=Mh(),Ys=qh(),Qs=Ha(),hR=Uh(),vR=Hh(),gR=Vh(),yR=Wh(),bR=Kh(),xR=Qh(),_R=Jh(),ER=av(),Hv=Function,Iu=function(a){try{return Hv('"use strict"; return ('+a+").constructor;")()}catch{}},li=Tu(),wR=cv(),Nu=function(){throw new Qs},SR=li?(function(){try{return arguments.callee,Nu}catch{try{return li(arguments,"callee").get}catch{return Nu}}})():Nu,Ks=fv()(),yt=Mv(),PR=Ou(),TR=Ru(),Bv=Cu(),ui=wo(),Xs={},RR=typeof Uint8Array>"u"||!yt?ze:yt(Uint8Array),Va={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?ze:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?ze:ArrayBuffer,"%ArrayIteratorPrototype%":Ks&&yt?yt([][Symbol.iterator]()):ze,"%AsyncFromSyncIteratorPrototype%":ze,"%AsyncFunction%":Xs,"%AsyncGenerator%":Xs,"%AsyncGeneratorFunction%":Xs,"%AsyncIteratorPrototype%":Xs,"%Atomics%":typeof Atomics>"u"?ze:Atomics,"%BigInt%":typeof BigInt>"u"?ze:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?ze:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?ze:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?ze:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":pR,"%eval%":eval,"%EvalError%":dR,"%Float16Array%":typeof Float16Array>"u"?ze:Float16Array,"%Float32Array%":typeof Float32Array>"u"?ze:Float32Array,"%Float64Array%":typeof Float64Array>"u"?ze:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?ze:FinalizationRegistry,"%Function%":Hv,"%GeneratorFunction%":Xs,"%Int8Array%":typeof Int8Array>"u"?ze:Int8Array,"%Int16Array%":typeof Int16Array>"u"?ze:Int16Array,"%Int32Array%":typeof Int32Array>"u"?ze:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Ks&&yt?yt(yt([][Symbol.iterator]())):ze,"%JSON%":typeof JSON=="object"?JSON:ze,"%Map%":typeof Map>"u"?ze:Map,"%MapIteratorPrototype%":typeof Map>"u"||!Ks||!yt?ze:yt(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":uR,"%Object.getOwnPropertyDescriptor%":li,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?ze:Promise,"%Proxy%":typeof Proxy>"u"?ze:Proxy,"%RangeError%":fR,"%ReferenceError%":mR,"%Reflect%":typeof Reflect>"u"?ze:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?ze:Set,"%SetIteratorPrototype%":typeof Set>"u"||!Ks||!yt?ze:yt(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?ze:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Ks&&yt?yt(""[Symbol.iterator]()):ze,"%Symbol%":Ks?Symbol:ze,"%SyntaxError%":Ys,"%ThrowTypeError%":SR,"%TypedArray%":RR,"%TypeError%":Qs,"%Uint8Array%":typeof Uint8Array>"u"?ze:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?ze:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?ze:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?ze:Uint32Array,"%URIError%":hR,"%WeakMap%":typeof WeakMap>"u"?ze:WeakMap,"%WeakRef%":typeof WeakRef>"u"?ze:WeakRef,"%WeakSet%":typeof WeakSet>"u"?ze:WeakSet,"%Function.prototype.call%":ui,"%Function.prototype.apply%":Bv,"%Object.defineProperty%":wR,"%Object.getPrototypeOf%":PR,"%Math.abs%":vR,"%Math.floor%":gR,"%Math.max%":yR,"%Math.min%":bR,"%Math.pow%":xR,"%Math.round%":_R,"%Math.sign%":ER,"%Reflect.getPrototypeOf%":TR};if(yt)try{null.error}catch(a){Fv=yt(yt(a)),Va["%Error.prototype%"]=Fv}var Fv,OR=function a(e){var r;if(e==="%AsyncFunction%")r=Iu("async function () {}");else if(e==="%GeneratorFunction%")r=Iu("function* () {}");else if(e==="%AsyncGeneratorFunction%")r=Iu("async function* () {}");else if(e==="%AsyncGenerator%"){var t=a("%AsyncGeneratorFunction%");t&&(r=t.prototype)}else if(e==="%AsyncIteratorPrototype%"){var s=a("%AsyncGenerator%");s&&yt&&(r=yt(s.prototype))}return Va[e]=r,r},Uv={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},pi=ci(),So=qv(),CR=pi.call(ui,Array.prototype.concat),kR=pi.call(Bv,Array.prototype.splice),zv=pi.call(ui,String.prototype.replace),Po=pi.call(ui,String.prototype.slice),AR=pi.call(ui,RegExp.prototype.exec),IR=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,NR=/\\(\\)?/g,jR=function(e){var r=Po(e,0,1),t=Po(e,-1);if(r==="%"&&t!=="%")throw new Ys("invalid intrinsic syntax, expected closing `%`");if(t==="%"&&r!=="%")throw new Ys("invalid intrinsic syntax, expected opening `%`");var s=[];return zv(e,IR,function(i,n,o,l){s[s.length]=o?zv(l,NR,"$1"):n||i}),s},DR=function(e,r){var t=e,s;if(So(Uv,t)&&(s=Uv[t],t="%"+s[0]+"%"),So(Va,t)){var i=Va[t];if(i===Xs&&(i=OR(t)),typeof i>"u"&&!r)throw new Qs("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:s,name:t,value:i}}throw new Ys("intrinsic "+e+" does not exist!")};Vv.exports=function(e,r){if(typeof e!="string"||e.length===0)throw new Qs("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new Qs('"allowMissing" argument must be a boolean');if(AR(/^%?[^%]*%?$/,e)===null)throw new Ys("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var t=jR(e),s=t.length>0?t[0]:"",i=DR("%"+s+"%",r),n=i.name,o=i.value,l=!1,c=i.alias;c&&(s=c[0],kR(t,CR([0,1],c)));for(var u=1,p=!0;u=t.length){var d=li(o,m);p=!!d,p&&"get"in d&&!("originalValue"in d.get)?o=d.get:o=o[m]}else p=So(o,m),o=o[m];p&&!l&&(Va[n]=o)}}return o}});var ju=L((_L,Zv)=>{"use strict";var Gv=To(),Wv=ku(),$R=Wv([Gv("%String.prototype.indexOf%")]);Zv.exports=function(e,r){var t=Gv(e,!!r);return typeof t=="function"&&$R(e,".prototype.")>-1?Wv([t]):t}});var Du=L((EL,Xv)=>{"use strict";var MR=To(),di=ju(),LR=oi(),qR=Ha(),Kv=MR("%Map%",!0),FR=di("Map.prototype.get",!0),UR=di("Map.prototype.set",!0),zR=di("Map.prototype.has",!0),HR=di("Map.prototype.delete",!0),BR=di("Map.prototype.size",!0);Xv.exports=!!Kv&&function(){var e,r={assert:function(t){if(!r.has(t))throw new qR("Side channel does not contain "+LR(t))},delete:function(t){if(e){var s=HR(e,t);return BR(e)===0&&(e=void 0),s}return!1},get:function(t){if(e)return FR(e,t)},has:function(t){return e?zR(e,t):!1},set:function(t,s){e||(e=new Kv),UR(e,t,s)}};return r}});var Yv=L((wL,Qv)=>{"use strict";var VR=To(),Oo=ju(),GR=oi(),Ro=Du(),WR=Ha(),Js=VR("%WeakMap%",!0),ZR=Oo("WeakMap.prototype.get",!0),KR=Oo("WeakMap.prototype.set",!0),XR=Oo("WeakMap.prototype.has",!0),QR=Oo("WeakMap.prototype.delete",!0);Qv.exports=Js?function(){var e,r,t={assert:function(s){if(!t.has(s))throw new WR("Side channel does not contain "+GR(s))},delete:function(s){if(Js&&s&&(typeof s=="object"||typeof s=="function")){if(e)return QR(e,s)}else if(Ro&&r)return r.delete(s);return!1},get:function(s){return Js&&s&&(typeof s=="object"||typeof s=="function")&&e?ZR(e,s):r&&r.get(s)},has:function(s){return Js&&s&&(typeof s=="object"||typeof s=="function")&&e?XR(e,s):!!r&&r.has(s)},set:function(s,i){Js&&s&&(typeof s=="object"||typeof s=="function")?(e||(e=new Js),KR(e,s,i)):Ro&&(r||(r=Ro()),r.set(s,i))}};return t}:Ro});var eg=L((SL,Jv)=>{"use strict";var YR=Ha(),JR=oi(),eO=Oh(),tO=Du(),rO=Yv(),aO=rO||tO||eO;Jv.exports=function(){var e,r={assert:function(t){if(!r.has(t))throw new YR("Side channel does not contain "+JR(t))},delete:function(t){return!!e&&e.delete(t)},get:function(t){return e&&e.get(t)},has:function(t){return!!e&&e.has(t)},set:function(t,s){e||(e=aO()),e.set(t,s)}};return r}});var Co=L((PL,tg)=>{"use strict";var sO=String.prototype.replace,nO=/%20/g,$u={RFC1738:"RFC1738",RFC3986:"RFC3986"};tg.exports={default:$u.RFC3986,formatters:{RFC1738:function(a){return sO.call(a,nO,"+")},RFC3986:function(a){return String(a)}},RFC1738:$u.RFC1738,RFC3986:$u.RFC3986}});var qu=L((TL,ag)=>{"use strict";var iO=Co(),Mu=Object.prototype.hasOwnProperty,Ga=Array.isArray,jr=(function(){for(var a=[],e=0;e<256;++e)a.push("%"+((e<16?"0":"")+e.toString(16)).toUpperCase());return a})(),oO=function(e){for(;e.length>1;){var r=e.pop(),t=r.obj[r.prop];if(Ga(t)){for(var s=[],i=0;i=Lu?n.slice(l,l+Lu):n,u=[],p=0;p=48&&m<=57||m>=65&&m<=90||m>=97&&m<=122||i===iO.RFC1738&&(m===40||m===41)){u[u.length]=c.charAt(p);continue}if(m<128){u[u.length]=jr[m];continue}if(m<2048){u[u.length]=jr[192|m>>6]+jr[128|m&63];continue}if(m<55296||m>=57344){u[u.length]=jr[224|m>>12]+jr[128|m>>6&63]+jr[128|m&63];continue}p+=1,m=65536+((m&1023)<<10|c.charCodeAt(p)&1023),u[u.length]=jr[240|m>>18]+jr[128|m>>12&63]+jr[128|m>>6&63]+jr[128|m&63]}o+=u.join("")}return o},dO=function(e){for(var r=[{obj:{o:e},prop:"o"}],t=[],s=0;s{"use strict";var ng=eg(),ko=qu(),fi=Co(),gO=Object.prototype.hasOwnProperty,ig={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,r){return e+"["+r+"]"},repeat:function(e){return e}},Dr=Array.isArray,yO=Array.prototype.push,og=function(a,e){yO.apply(a,Dr(e)?e:[e])},bO=Date.prototype.toISOString,sg=fi.default,ht={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:ko.encode,encodeValuesOnly:!1,format:sg,formatter:fi.formatters[sg],indices:!1,serializeDate:function(e){return bO.call(e)},skipNulls:!1,strictNullHandling:!1},xO=function(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="symbol"||typeof e=="bigint"},Fu={},_O=function a(e,r,t,s,i,n,o,l,c,u,p,m,f,h,d,v,x,b){for(var E=e,O=b,C=0,P=!1;(O=O.get(Fu))!==void 0&&!P;){var A=O.get(e);if(C+=1,typeof A<"u"){if(A===C)throw new RangeError("Cyclic object value");P=!0}typeof O.get(Fu)>"u"&&(C=0)}if(typeof u=="function"?E=u(r,E):E instanceof Date?E=f(E):t==="comma"&&Dr(E)&&(E=ko.maybeMap(E,function(V){return V instanceof Date?f(V):V})),E===null){if(n)return c&&!v?c(r,ht.encoder,x,"key",h):r;E=""}if(xO(E)||ko.isBuffer(E)){if(c){var $=v?r:c(r,ht.encoder,x,"key",h);return[d($)+"="+d(c(E,ht.encoder,x,"value",h))]}return[d(r)+"="+d(String(E))]}var I=[];if(typeof E>"u")return I;var q;if(t==="comma"&&Dr(E))v&&c&&(E=ko.maybeMap(E,c)),q=[{value:E.length>0?E.join(",")||null:void 0}];else if(Dr(u))q=u;else{var M=Object.keys(E);q=p?M.sort(p):M}var k=l?r.replace(/\./g,"%2E"):r,T=s&&Dr(E)&&E.length===1?k+"[]":k;if(i&&Dr(E)&&E.length===0)return T+"[]";for(var N=0;N"u"?e.encodeDotInKeys===!0?!0:ht.allowDots:!!e.allowDots;return{addQueryPrefix:typeof e.addQueryPrefix=="boolean"?e.addQueryPrefix:ht.addQueryPrefix,allowDots:o,allowEmptyArrays:typeof e.allowEmptyArrays=="boolean"?!!e.allowEmptyArrays:ht.allowEmptyArrays,arrayFormat:n,charset:r,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:ht.charsetSentinel,commaRoundTrip:e.commaRoundTrip,delimiter:typeof e.delimiter>"u"?ht.delimiter:e.delimiter,encode:typeof e.encode=="boolean"?e.encode:ht.encode,encodeDotInKeys:typeof e.encodeDotInKeys=="boolean"?e.encodeDotInKeys:ht.encodeDotInKeys,encoder:typeof e.encoder=="function"?e.encoder:ht.encoder,encodeValuesOnly:typeof e.encodeValuesOnly=="boolean"?e.encodeValuesOnly:ht.encodeValuesOnly,filter:i,format:t,formatter:s,serializeDate:typeof e.serializeDate=="function"?e.serializeDate:ht.serializeDate,skipNulls:typeof e.skipNulls=="boolean"?e.skipNulls:ht.skipNulls,sort:typeof e.sort=="function"?e.sort:null,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:ht.strictNullHandling}};cg.exports=function(a,e){var r=a,t=EO(e),s,i;typeof t.filter=="function"?(i=t.filter,r=i("",r)):Dr(t.filter)&&(i=t.filter,s=i);var n=[];if(typeof r!="object"||r===null)return"";var o=ig[t.arrayFormat],l=o==="comma"&&t.commaRoundTrip;s||(s=Object.keys(r)),t.sort&&s.sort(t.sort);for(var c=ng(),u=0;u0?f+m:""}});var dg=L((OL,pg)=>{"use strict";var en=qu(),Uu=Object.prototype.hasOwnProperty,wO=Array.isArray,lt={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:en.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1},SO=function(a){return a.replace(/&#(\d+);/g,function(e,r){return String.fromCharCode(parseInt(r,10))})},ug=function(a,e){return a&&typeof a=="string"&&e.comma&&a.indexOf(",")>-1?a.split(","):a},PO="utf8=%26%2310003%3B",TO="utf8=%E2%9C%93",RO=function(e,r){var t={__proto__:null},s=r.ignoreQueryPrefix?e.replace(/^\?/,""):e;s=s.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var i=r.parameterLimit===1/0?void 0:r.parameterLimit,n=s.split(r.delimiter,i),o=-1,l,c=r.charset;if(r.charsetSentinel)for(l=0;l-1&&(h=wO(h)?[h]:h);var d=Uu.call(t,f);d&&r.duplicates==="combine"?t[f]=en.combine(t[f],h):(!d||r.duplicates==="last")&&(t[f]=h)}return t},OO=function(a,e,r,t){for(var s=t?e:ug(e,r),i=a.length-1;i>=0;--i){var n,o=a[i];if(o==="[]"&&r.parseArrays)n=r.allowEmptyArrays&&(s===""||r.strictNullHandling&&s===null)?[]:[].concat(s);else{n=r.plainObjects?Object.create(null):{};var l=o.charAt(0)==="["&&o.charAt(o.length-1)==="]"?o.slice(1,-1):o,c=r.decodeDotInKeys?l.replace(/%2E/g,"."):l,u=parseInt(c,10);!r.parseArrays&&c===""?n={0:s}:!isNaN(u)&&o!==c&&String(u)===c&&u>=0&&r.parseArrays&&u<=r.arrayLimit?(n=[],n[u]=s):c!=="__proto__"&&(n[c]=s)}s=n}return s},CO=function(e,r,t,s){if(e){var i=t.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,n=/(\[[^[\]]*])/,o=/(\[[^[\]]*])/g,l=t.depth>0&&n.exec(i),c=l?i.slice(0,l.index):i,u=[];if(c){if(!t.plainObjects&&Uu.call(Object.prototype,c)&&!t.allowPrototypes)return;u.push(c)}for(var p=0;t.depth>0&&(l=o.exec(i))!==null&&p"u"?lt.charset:e.charset,t=typeof e.duplicates>"u"?lt.duplicates:e.duplicates;if(t!=="combine"&&t!=="first"&&t!=="last")throw new TypeError("The duplicates option must be either combine, first, or last");var s=typeof e.allowDots>"u"?e.decodeDotInKeys===!0?!0:lt.allowDots:!!e.allowDots;return{allowDots:s,allowEmptyArrays:typeof e.allowEmptyArrays=="boolean"?!!e.allowEmptyArrays:lt.allowEmptyArrays,allowPrototypes:typeof e.allowPrototypes=="boolean"?e.allowPrototypes:lt.allowPrototypes,allowSparse:typeof e.allowSparse=="boolean"?e.allowSparse:lt.allowSparse,arrayLimit:typeof e.arrayLimit=="number"?e.arrayLimit:lt.arrayLimit,charset:r,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:lt.charsetSentinel,comma:typeof e.comma=="boolean"?e.comma:lt.comma,decodeDotInKeys:typeof e.decodeDotInKeys=="boolean"?e.decodeDotInKeys:lt.decodeDotInKeys,decoder:typeof e.decoder=="function"?e.decoder:lt.decoder,delimiter:typeof e.delimiter=="string"||en.isRegExp(e.delimiter)?e.delimiter:lt.delimiter,depth:typeof e.depth=="number"||e.depth===!1?+e.depth:lt.depth,duplicates:t,ignoreQueryPrefix:e.ignoreQueryPrefix===!0,interpretNumericEntities:typeof e.interpretNumericEntities=="boolean"?e.interpretNumericEntities:lt.interpretNumericEntities,parameterLimit:typeof e.parameterLimit=="number"?e.parameterLimit:lt.parameterLimit,parseArrays:e.parseArrays!==!1,plainObjects:typeof e.plainObjects=="boolean"?e.plainObjects:lt.plainObjects,strictDepth:typeof e.strictDepth=="boolean"?!!e.strictDepth:lt.strictDepth,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:lt.strictNullHandling}};pg.exports=function(a,e){var r=kO(e);if(a===""||a===null||typeof a>"u")return r.plainObjects?Object.create(null):{};for(var t=typeof a=="string"?RO(a,r):a,s=r.plainObjects?Object.create(null):{},i=Object.keys(t),n=0;n{"use strict";var AO=lg(),IO=dg(),NO=Co();fg.exports={formats:NO,parse:IO,stringify:AO}});var bg=L((kL,yg)=>{"use strict";var jO=Ls(),DO=zn(),Io=Ma(),wr=tr()("body-parser:urlencoded"),$O=kr()("body-parser"),MO=ei(),hg=Ws();yg.exports=LO;var mg=Object.create(null);function LO(a){var e=a||{};e.extended===void 0&&$O("undefined extended: provide extended option");var r=e.extended!==!1,t=e.inflate!==!1,s=typeof e.limit!="number"?jO.parse(e.limit||"100kb"):e.limit,i=e.type||"application/x-www-form-urlencoded",n=e.verify||!1,o=typeof e.depth!="number"?Number(e.depth||32):e.depth;if(n!==!1&&typeof n!="function")throw new TypeError("option verify must be function");var l=r?qO(e):UO(e),c=typeof i!="function"?zO(i):i;function u(p){return p.length?l(p):{}}return function(m,f,h){if(m._body){wr("body already parsed"),h();return}if(m.body=m.body||{},!hg.hasBody(m)){wr("skip empty body"),h();return}if(wr("content-type %j",m.headers["content-type"]),!c(m)){wr("skip parsing"),h();return}var d=FO(m)||"utf-8";if(d!=="utf-8"){wr("invalid charset"),h(Io(415,'unsupported charset "'+d.toUpperCase()+'"',{charset:d,type:"charset.unsupported"}));return}MO(m,f,h,u,wr,{debug:wr,encoding:d,inflate:t,limit:s,verify:n,depth:o})}}function qO(a){var e=a.parameterLimit!==void 0?a.parameterLimit:1e3,r=typeof a.depth!="number"?Number(a.depth||32):a.depth,t=gg("qs");if(isNaN(e)||e<1)throw new TypeError("option parameterLimit must be a positive number");if(isNaN(r)||r<0)throw new TypeError("option depth must be a zero or a positive number");return isFinite(e)&&(e=e|0),function(i){var n=vg(i,e);if(n===void 0)throw wr("too many parameters"),Io(413,"too many parameters",{type:"parameters.too.many"});var o=Math.max(100,n);wr("parse extended urlencoding");try{return t(i,{allowPrototypes:!0,arrayLimit:o,depth:r,strictDepth:!0,parameterLimit:e})}catch(l){throw l instanceof RangeError?Io(400,"The input exceeded the depth",{type:"querystring.parse.rangeError"}):l}}}function FO(a){try{return(DO.parse(a).parameters.charset||"").toLowerCase()}catch{return}}function vg(a,e){for(var r=0,t=0;(t=a.indexOf("&",t))!==-1;)if(r++,t++,r===e)return;return r}function gg(a){var e=mg[a];if(e!==void 0)return e.parse;switch(a){case"qs":e=Ao();break;case"querystring":e=require("querystring");break}return mg[a]=e,e.parse}function UO(a){var e=a.parameterLimit!==void 0?a.parameterLimit:1e3,r=gg("querystring");if(isNaN(e)||e<1)throw new TypeError("option parameterLimit must be a positive number");return isFinite(e)&&(e=e|0),function(s){var i=vg(s,e);if(i===void 0)throw wr("too many parameters"),Io(413,"too many parameters",{type:"parameters.too.many"});return wr("parse urlencoding"),r(s,void 0,void 0,{maxKeys:e})}}function zO(a){return function(r){return!!hg(r,a)}}});var Eg=L((xa,_g)=>{"use strict";var HO=kr()("body-parser"),xg=Object.create(null);xa=_g.exports=HO.function(BO,"bodyParser: use individual json/urlencoded middlewares");Object.defineProperty(xa,"json",{configurable:!0,enumerable:!0,get:No("json")});Object.defineProperty(xa,"raw",{configurable:!0,enumerable:!0,get:No("raw")});Object.defineProperty(xa,"text",{configurable:!0,enumerable:!0,get:No("text")});Object.defineProperty(xa,"urlencoded",{configurable:!0,enumerable:!0,get:No("urlencoded")});function BO(a){var e=Object.create(a||null,{type:{configurable:!0,enumerable:!0,value:void 0,writable:!0}}),r=xa.urlencoded(e),t=xa.json(e);return function(i,n,o){t(i,n,function(l){if(l)return o(l);r(i,n,o)})}}function No(a){return function(){return VO(a)}}function VO(a){var e=xg[a];if(e!==void 0)return e;switch(a){case"json":e=Qm();break;case"raw":e=eh();break;case"text":e=ah();break;case"urlencoded":e=bg();break}return xg[a]=e}});var Sg=L((AL,wg)=>{"use strict";wg.exports=WO;var GO=Object.prototype.hasOwnProperty;function WO(a,e,r){if(!a)throw new TypeError("argument dest is required");if(!e)throw new TypeError("argument src is required");return r===void 0&&(r=!0),Object.getOwnPropertyNames(e).forEach(function(s){if(!(!r&&GO.call(a,s))){var i=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(a,s,i)}}),a}});var jo=L((IL,Pg)=>{"use strict";Pg.exports=QO;var ZO=/(?:[^\x21\x23-\x3B\x3D\x3F-\x5F\x61-\x7A\x7C\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g,KO=/(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g,XO="$1\uFFFD$2";function QO(a){return String(a).replace(KO,XO).replace(ZO,encodeURI)}});var mi=L((NL,Tg)=>{"use strict";var YO=/["'&<>]/;Tg.exports=JO;function JO(a){var e=""+a,r=YO.exec(e);if(!r)return e;var t,s="",i=0,n=0;for(i=r.index;i{"use strict";var Og=require("url"),Rg=Og.parse,Do=Og.Url;zu.exports=Cg;zu.exports.original=eC;function Cg(a){var e=a.url;if(e!==void 0){var r=a._parsedUrl;return Ag(e,r)?r:(r=kg(e),r._raw=e,a._parsedUrl=r)}}function eC(a){var e=a.originalUrl;if(typeof e!="string")return Cg(a);var r=a._parsedOriginalUrl;return Ag(e,r)?r:(r=kg(e),r._raw=e,a._parsedOriginalUrl=r)}function kg(a){if(typeof a!="string"||a.charCodeAt(0)!==47)return Rg(a);for(var e=a,r=null,t=null,s=1;s{"use strict";var Hu=tr()("finalhandler"),tC=jo(),rC=mi(),Ng=Jn(),aC=tn(),jg=Bn(),sC=ho(),nC=/\x20{2}/g,iC=/\n/g,oC=typeof setImmediate=="function"?setImmediate:function(a){process.nextTick(a.bind.apply(a,arguments))},cC=Ng.isFinished;function lC(a){var e=rC(a).replace(iC,"
").replace(nC,"  ");return` +\v\f\r\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD`},hproman8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD"},macintosh:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},ascii:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},tis620:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"}}});var Tm=q(wm=>{"use strict";var Ks=Ha().Buffer;wm._dbcs=Yr;var jt=-1,Em=-2,nr=-10,Dr=-1e3,Qs=new Array(256),ui=-1;for(So=0;So<256;So++)Qs[So]=jt;var So;function Yr(a,e){if(this.encodingName=a.encodingName,!a)throw new Error("DBCS codec is called without the data.");if(!a.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var r=a.table();this.decodeTables=[],this.decodeTables[0]=Qs.slice(0),this.decodeTableSeq=[];for(var t=0;t0;a>>=8)e.push(a&255);e.length==0&&e.push(0);for(var r=this.decodeTables[0],t=e.length-1;t>0;t--){var s=r[e[t]];if(s==jt)r[e[t]]=Dr-this.decodeTables.length,this.decodeTables.push(r=Qs.slice(0));else if(s<=Dr)r=this.decodeTables[Dr-s];else throw new Error("Overwrite byte in "+this.encodingName+", addr: "+a.toString(16))}return r};Yr.prototype._addDecodeChunk=function(a){var e=parseInt(a[0],16),r=this._getDecodeTrieNode(e);e=e&255;for(var t=1;t255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+a[0]+": too long"+e)};Yr.prototype._getEncodeBucket=function(a){var e=a>>8;return this.encodeTable[e]===void 0&&(this.encodeTable[e]=Qs.slice(0)),this.encodeTable[e]};Yr.prototype._setEncodeChar=function(a,e){var r=this._getEncodeBucket(a),t=a&255;r[t]<=nr?this.encodeTableSeq[nr-r[t]][ui]=e:r[t]==jt&&(r[t]=e)};Yr.prototype._setEncodeSequence=function(a,e){var r=a[0],t=this._getEncodeBucket(r),s=r&255,i;t[s]<=nr?i=this.encodeTableSeq[nr-t[s]]:(i={},t[s]!==jt&&(i[ui]=t[s]),t[s]=nr-this.encodeTableSeq.length,this.encodeTableSeq.push(i));for(var n=1;n=0?this._setEncodeChar(i,n):i<=Dr?this._fillEncodeTable(Dr-i,n<<8,r):i<=nr&&this._setEncodeSequence(this.decodeTableSeq[nr-i],n))}};function Eo(a,e){this.leadSurrogate=-1,this.seqObj=void 0,this.encodeTable=e.encodeTable,this.encodeTableSeq=e.encodeTableSeq,this.defaultCharSingleByte=e.defCharSB,this.gb18030=e.gb18030}Eo.prototype.write=function(a){for(var e=Ks.alloc(a.length*(this.gb18030?4:3)),r=this.leadSurrogate,t=this.seqObj,s=-1,i=0,n=0;;){if(s===-1){if(i==a.length)break;var o=a.charCodeAt(i++)}else{var o=s;s=-1}if(55296<=o&&o<57344)if(o<56320)if(r===-1){r=o;continue}else r=o,o=jt;else r!==-1?(o=65536+(r-55296)*1024+(o-56320),r=-1):o=jt;else r!==-1&&(s=o,o=jt,r=-1);var l=jt;if(t!==void 0&&o!=jt){var c=t[o];if(typeof c=="object"){t=c;continue}else typeof c=="number"?l=c:c==null&&(c=t[ui],c!==void 0&&(l=c,s=o));t=void 0}else if(o>=0){var u=this.encodeTable[o>>8];if(u!==void 0&&(l=u[o&255]),l<=nr){t=this.encodeTableSeq[nr-l];continue}if(l==jt&&this.gb18030){var p=Ou(this.gb18030.uChars,o);if(p!=-1){var l=this.gb18030.gbChars[p]+(o-this.gb18030.uChars[p]);e[n++]=129+Math.floor(l/12600),l=l%12600,e[n++]=48+Math.floor(l/1260),l=l%1260,e[n++]=129+Math.floor(l/10),l=l%10,e[n++]=48+l;continue}}}l===jt&&(l=this.defaultCharSingleByte),l<256?e[n++]=l:l<65536?(e[n++]=l>>8,e[n++]=l&255):(e[n++]=l>>16,e[n++]=l>>8&255,e[n++]=l&255)}return this.seqObj=t,this.leadSurrogate=r,e.slice(0,n)};Eo.prototype.end=function(){if(!(this.leadSurrogate===-1&&this.seqObj===void 0)){var a=Ks.alloc(10),e=0;if(this.seqObj){var r=this.seqObj[ui];r!==void 0&&(r<256?a[e++]=r:(a[e++]=r>>8,a[e++]=r&255)),this.seqObj=void 0}return this.leadSurrogate!==-1&&(a[e++]=this.defaultCharSingleByte,this.leadSurrogate=-1),a.slice(0,e)}};Eo.prototype.findIdx=Ou;function Pu(a,e){this.nodeIdx=0,this.prevBuf=Ks.alloc(0),this.decodeTables=e.decodeTables,this.decodeTableSeq=e.decodeTableSeq,this.defaultCharUnicode=e.defaultCharUnicode,this.gb18030=e.gb18030}Pu.prototype.write=function(a){var e=Ks.alloc(a.length*2),r=this.nodeIdx,t=this.prevBuf,s=this.prevBuf.length,i=-this.prevBuf.length,n;s>0&&(t=Ks.concat([t,a.slice(0,10)]));for(var o=0,l=0;o=0?a[o]:t[o+s],n=this.decodeTables[r][c];if(!(n>=0))if(n===jt)o=i,n=this.defaultCharUnicode.charCodeAt(0);else if(n===Em){var u=i>=0?a.slice(i,o+1):t.slice(i+s,o+1+s),p=(u[0]-129)*12600+(u[1]-48)*1260+(u[2]-129)*10+(u[3]-48),f=Ou(this.gb18030.gbChars,p);n=this.gb18030.uChars[f]+p-this.gb18030.gbChars[f]}else if(n<=Dr){r=Dr-n;continue}else if(n<=nr){for(var d=this.decodeTableSeq[nr-n],v=0;v>8;n=d[d.length-1]}else throw new Error("iconv-lite internal error: invalid decoding table value "+n+" at "+r+"/"+c);if(n>65535){n-=65536;var h=55296+Math.floor(n/1024);e[l++]=h&255,e[l++]=h>>8,n=56320+n%1024}e[l++]=n&255,e[l++]=n>>8,r=0,i=o+1}return this.nodeIdx=r,this.prevBuf=i>=0?a.slice(i):t.slice(i+s),e.slice(0,l).toString("ucs2")};Pu.prototype.end=function(){for(var a="";this.prevBuf.length>0;){a+=this.defaultCharUnicode;var e=this.prevBuf.slice(1);this.prevBuf=Ks.alloc(0),this.nodeIdx=0,e.length>0&&(a+=this.write(e))}return this.nodeIdx=0,a};function Ou(a,e){if(a[0]>e)return-1;for(var r=0,t=a.length;r{RT.exports=[["0","\0",128],["a1","\uFF61",62],["8140","\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008",9,"\uFF0B\uFF0D\xB1\xD7"],["8180","\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],["81b8","\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],["81c8","\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],["81da","\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],["81f0","\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],["81fc","\u25EF"],["824f","\uFF10",9],["8260","\uFF21",25],["8281","\uFF41",25],["829f","\u3041",82],["8340","\u30A1",62],["8380","\u30E0",22],["839f","\u0391",16,"\u03A3",6],["83bf","\u03B1",16,"\u03C3",6],["8440","\u0410",5,"\u0401\u0416",25],["8470","\u0430",5,"\u0451\u0436",7],["8480","\u043E",17],["849f","\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],["8740","\u2460",19,"\u2160",9],["875f","\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],["877e","\u337B"],["8780","\u301D\u301F\u2116\u33CD\u2121\u32A4",4,"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],["889f","\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],["8940","\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"],["8980","\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],["8a40","\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"],["8a80","\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],["8b40","\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"],["8b80","\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],["8c40","\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"],["8c80","\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],["8d40","\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"],["8d80","\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],["8e40","\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"],["8e80","\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],["8f40","\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"],["8f80","\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],["9040","\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"],["9080","\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],["9140","\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"],["9180","\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],["9240","\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"],["9280","\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],["9340","\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"],["9380","\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],["9440","\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"],["9480","\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],["9540","\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"],["9580","\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],["9640","\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"],["9680","\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],["9740","\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"],["9780","\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],["9840","\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],["989f","\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],["9940","\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"],["9980","\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],["9a40","\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"],["9a80","\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],["9b40","\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"],["9b80","\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],["9c40","\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"],["9c80","\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],["9d40","\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"],["9d80","\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],["9e40","\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"],["9e80","\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],["9f40","\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"],["9f80","\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],["e040","\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"],["e080","\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],["e140","\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"],["e180","\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],["e240","\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"],["e280","\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],["e340","\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"],["e380","\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],["e440","\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"],["e480","\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],["e540","\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"],["e580","\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],["e640","\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"],["e680","\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],["e740","\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"],["e780","\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],["e840","\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"],["e880","\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],["e940","\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"],["e980","\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],["ea40","\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"],["ea80","\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"],["ed40","\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"],["ed80","\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],["ee40","\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"],["ee80","\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],["eeef","\u2170",9,"\uFFE2\uFFE4\uFF07\uFF02"],["f040","\uE000",62],["f080","\uE03F",124],["f140","\uE0BC",62],["f180","\uE0FB",124],["f240","\uE178",62],["f280","\uE1B7",124],["f340","\uE234",62],["f380","\uE273",124],["f440","\uE2F0",62],["f480","\uE32F",124],["f540","\uE3AC",62],["f580","\uE3EB",124],["f640","\uE468",62],["f680","\uE4A7",124],["f740","\uE524",62],["f780","\uE563",124],["f840","\uE5E0",62],["f880","\uE61F",124],["f940","\uE69C"],["fa40","\u2170",9,"\u2160",9,"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"],["fa80","\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"],["fb40","\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"],["fb80","\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"],["fc40","\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"]]});var Pm=q((pL,PT)=>{PT.exports=[["0","\0",127],["8ea1","\uFF61",62],["a1a1","\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008",9,"\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"],["a2a1","\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],["a2ba","\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],["a2ca","\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],["a2dc","\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],["a2f2","\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],["a2fe","\u25EF"],["a3b0","\uFF10",9],["a3c1","\uFF21",25],["a3e1","\uFF41",25],["a4a1","\u3041",82],["a5a1","\u30A1",85],["a6a1","\u0391",16,"\u03A3",6],["a6c1","\u03B1",16,"\u03C3",6],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a8a1","\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],["ada1","\u2460",19,"\u2160",9],["adc0","\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],["addf","\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4",4,"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],["b0a1","\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],["b1a1","\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"],["b2a1","\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],["b3a1","\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"],["b4a1","\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],["b5a1","\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"],["b6a1","\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],["b7a1","\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"],["b8a1","\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],["b9a1","\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"],["baa1","\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],["bba1","\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"],["bca1","\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],["bda1","\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"],["bea1","\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],["bfa1","\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"],["c0a1","\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],["c1a1","\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"],["c2a1","\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],["c3a1","\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"],["c4a1","\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],["c5a1","\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"],["c6a1","\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],["c7a1","\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"],["c8a1","\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],["c9a1","\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"],["caa1","\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],["cba1","\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"],["cca1","\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],["cda1","\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"],["cea1","\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],["cfa1","\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],["d0a1","\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],["d1a1","\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"],["d2a1","\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],["d3a1","\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"],["d4a1","\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],["d5a1","\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"],["d6a1","\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],["d7a1","\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"],["d8a1","\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],["d9a1","\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"],["daa1","\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],["dba1","\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"],["dca1","\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],["dda1","\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"],["dea1","\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],["dfa1","\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"],["e0a1","\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],["e1a1","\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"],["e2a1","\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],["e3a1","\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"],["e4a1","\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],["e5a1","\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"],["e6a1","\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],["e7a1","\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"],["e8a1","\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],["e9a1","\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"],["eaa1","\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],["eba1","\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"],["eca1","\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],["eda1","\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"],["eea1","\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],["efa1","\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"],["f0a1","\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],["f1a1","\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"],["f2a1","\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],["f3a1","\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"],["f4a1","\u582F\u69C7\u9059\u7464\u51DC\u7199"],["f9a1","\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"],["faa1","\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],["fba1","\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"],["fca1","\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],["fcf1","\u2170",9,"\uFFE2\uFFE4\uFF07\uFF02"],["8fa2af","\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"],["8fa2c2","\xA1\xA6\xBF"],["8fa2eb","\xBA\xAA\xA9\xAE\u2122\xA4\u2116"],["8fa6e1","\u0386\u0388\u0389\u038A\u03AA"],["8fa6e7","\u038C"],["8fa6e9","\u038E\u03AB"],["8fa6ec","\u038F"],["8fa6f1","\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"],["8fa7c2","\u0402",10,"\u040E\u040F"],["8fa7f2","\u0452",10,"\u045E\u045F"],["8fa9a1","\xC6\u0110"],["8fa9a4","\u0126"],["8fa9a6","\u0132"],["8fa9a8","\u0141\u013F"],["8fa9ab","\u014A\xD8\u0152"],["8fa9af","\u0166\xDE"],["8fa9c1","\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"],["8faaa1","\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"],["8faaba","\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"],["8faba1","\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"],["8fabbd","\u0121\u0125\xED\xEC\xEF\xEE\u01D0"],["8fabc5","\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"],["8fb0a1","\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"],["8fb1a1","\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"],["8fb2a1","\u5092\u5093\u5094\u5096\u509B\u509C\u509E",4,"\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"],["8fb3a1","\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"],["8fb4a1","\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"],["8fb5a1","\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"],["8fb6a1","\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D",5,"\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4",4,"\u56F1\u56EB\u56ED"],["8fb7a1","\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D",4,"\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"],["8fb8a1","\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"],["8fb9a1","\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"],["8fbaa1","\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6",4,"\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"],["8fbba1","\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"],["8fbca1","\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A",4,"\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"],["8fbda1","\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0",4,"\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"],["8fbea1","\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110",4,"\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"],["8fbfa1","\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"],["8fc0a1","\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"],["8fc1a1","\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"],["8fc2a1","\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"],["8fc3a1","\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E",4,"\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"],["8fc4a1","\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"],["8fc5a1","\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"],["8fc6a1","\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"],["8fc7a1","\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"],["8fc8a1","\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"],["8fc9a1","\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094",4,"\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103",4,"\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"],["8fcaa1","\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"],["8fcba1","\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"],["8fcca1","\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428",9,"\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"],["8fcda1","\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579",5,"\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"],["8fcea1","\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2",6,"\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"],["8fcfa1","\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"],["8fd0a1","\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"],["8fd1a1","\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"],["8fd2a1","\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59",5],["8fd3a1","\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"],["8fd4a1","\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2",4,"\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"],["8fd5a1","\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"],["8fd6a1","\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"],["8fd7a1","\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"],["8fd8a1","\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"],["8fd9a1","\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F",4,"\u8556\u8559\u855C",6,"\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"],["8fdaa1","\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660",4,"\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"],["8fdba1","\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783",6,"\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"],["8fdca1","\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA",4,"\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"],["8fdda1","\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4",4,"\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"],["8fdea1","\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42",4,"\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"],["8fdfa1","\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"],["8fe0a1","\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"],["8fe1a1","\u8F43\u8F47\u8F4F\u8F51",4,"\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"],["8fe2a1","\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"],["8fe3a1","\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC",5,"\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275",4,"\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"],["8fe4a1","\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF",4,"\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"],["8fe5a1","\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9",4,"\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"],["8fe6a1","\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"],["8fe7a1","\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"],["8fe8a1","\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931",4,"\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"],["8fe9a1","\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF",4],["8feaa1","\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A",4,"\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"],["8feba1","\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26",4,"\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"],["8feca1","\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"],["8feda1","\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43",4,"\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D",4,"\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"]]});var wo=q((dL,OT)=>{OT.exports=[["0","\0",127,"\u20AC"],["8140","\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A",5,"\u4E72\u4E74",9,"\u4E7F",6,"\u4E87\u4E8A"],["8180","\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02",6,"\u4F0B\u4F0C\u4F12",4,"\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E",4,"\u4F44\u4F45\u4F47",5,"\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"],["8240","\u4FA4\u4FAB\u4FAD\u4FB0",4,"\u4FB6",8,"\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2",4,"\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF",11],["8280","\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F",10,"\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050",4,"\u5056\u5057\u5058\u5059\u505B\u505D",7,"\u5066",5,"\u506D",8,"\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E",20,"\u50A4\u50A6\u50AA\u50AB\u50AD",4,"\u50B3",6,"\u50BC"],["8340","\u50BD",17,"\u50D0",5,"\u50D7\u50D8\u50D9\u50DB",10,"\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6",4,"\u50FC",9,"\u5108"],["8380","\u5109\u510A\u510C",5,"\u5113",13,"\u5122",28,"\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D",4,"\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6",4,"\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2",5],["8440","\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5",5,"\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244",5,"\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"],["8480","\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273",9,"\u527E\u5280\u5283",4,"\u5289",6,"\u5291\u5292\u5294",6,"\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4",9,"\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9",5,"\u52E0\u52E1\u52E2\u52E3\u52E5",10,"\u52F1",7,"\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"],["8540","\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F",9,"\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"],["8580","\u5390",4,"\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF",6,"\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3",4,"\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D",4,"\u5463\u5465\u5467\u5469",7,"\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"],["8640","\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0",4,"\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4",5,"\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A",4,"\u5512\u5513\u5515",5,"\u551C\u551D\u551E\u551F\u5521\u5525\u5526"],["8680","\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B",4,"\u5551\u5552\u5553\u5554\u5557",4,"\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F",5,"\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0",6,"\u55A8",8,"\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF",4,"\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7",4,"\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8",4,"\u55FF\u5602\u5603\u5604\u5605"],["8740","\u5606\u5607\u560A\u560B\u560D\u5610",7,"\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640",11,"\u564F",4,"\u5655\u5656\u565A\u565B\u565D",4],["8780","\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D",7,"\u5687",6,"\u5690\u5691\u5692\u5694",14,"\u56A4",10,"\u56B0",6,"\u56B8\u56B9\u56BA\u56BB\u56BD",12,"\u56CB",8,"\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5",5,"\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B",6],["8840","\u5712",9,"\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734",4,"\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752",4,"\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"],["8880","\u5781\u5787\u5788\u5789\u578A\u578D",4,"\u5794",6,"\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9",8,"\u57C4",6,"\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5",7,"\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825",4,"\u582B",4,"\u5831\u5832\u5833\u5834\u5836",7],["8940","\u583E",5,"\u5845",6,"\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859",4,"\u585F",5,"\u5866",4,"\u586D",16,"\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"],["8980","\u588D",4,"\u5894",4,"\u589B\u589C\u589D\u58A0",7,"\u58AA",17,"\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6",10,"\u58D2\u58D3\u58D4\u58D6",13,"\u58E5",5,"\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA",7,"\u5903\u5905\u5906\u5908",4,"\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"],["8a40","\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B",4,"\u5961\u5963\u5964\u5966",12,"\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"],["8a80","\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3",5,"\u59BA\u59BC\u59BD\u59BF",6,"\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE",4,"\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED",11,"\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A",6,"\u5A33\u5A35\u5A37",4,"\u5A3D\u5A3E\u5A3F\u5A41",4,"\u5A47\u5A48\u5A4B",9,"\u5A56\u5A57\u5A58\u5A59\u5A5B",5],["8b40","\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B",8,"\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80",17,"\u5A93",6,"\u5A9C",13,"\u5AAB\u5AAC"],["8b80","\u5AAD",4,"\u5AB4\u5AB6\u5AB7\u5AB9",4,"\u5ABF\u5AC0\u5AC3",5,"\u5ACA\u5ACB\u5ACD",4,"\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC",4,"\u5AF2",22,"\u5B0A",11,"\u5B18",25,"\u5B33\u5B35\u5B36\u5B38",7,"\u5B41",6],["8c40","\u5B48",7,"\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"],["8c80","\u5BD1\u5BD4",8,"\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9",4,"\u5BEF\u5BF1",6,"\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67",6,"\u5C70\u5C72",6,"\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83",4,"\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D",4,"\u5CA4",4],["8d40","\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5",5,"\u5CCC",5,"\u5CD3",5,"\u5CDA",6,"\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1",9,"\u5CFC",4],["8d80","\u5D01\u5D04\u5D05\u5D08",5,"\u5D0F",4,"\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F",4,"\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F",4,"\u5D35",7,"\u5D3F",7,"\u5D48\u5D49\u5D4D",10,"\u5D59\u5D5A\u5D5C\u5D5E",10,"\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75",12,"\u5D83",21,"\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"],["8e40","\u5DA1",21,"\u5DB8",12,"\u5DC6",6,"\u5DCE",12,"\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"],["8e80","\u5DF0\u5DF5\u5DF6\u5DF8",4,"\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E",7,"\u5E28",4,"\u5E2F\u5E30\u5E32",4,"\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46",5,"\u5E4D",6,"\u5E56",4,"\u5E5C\u5E5D\u5E5F\u5E60\u5E63",14,"\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8",4,"\u5EAE",4,"\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF",6],["8f40","\u5EC6\u5EC7\u5EC8\u5ECB",5,"\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC",11,"\u5EE9\u5EEB",8,"\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"],["8f80","\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32",6,"\u5F3B\u5F3D\u5F3E\u5F3F\u5F41",14,"\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2",5,"\u5FA9\u5FAB\u5FAC\u5FAF",5,"\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE",4,"\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"],["9040","\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030",4,"\u6036",4,"\u603D\u603E\u6040\u6044",6,"\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"],["9080","\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD",7,"\u60C7\u60C8\u60C9\u60CC",4,"\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1",4,"\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB",4,"\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110",4,"\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C",18,"\u6140",6],["9140","\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156",6,"\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169",6,"\u6171\u6172\u6173\u6174\u6176\u6178",18,"\u618C\u618D\u618F",4,"\u6195"],["9180","\u6196",6,"\u619E",8,"\u61AA\u61AB\u61AD",9,"\u61B8",5,"\u61BF\u61C0\u61C1\u61C3",4,"\u61C9\u61CC",4,"\u61D3\u61D5",16,"\u61E7",13,"\u61F6",8,"\u6200",5,"\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238",4,"\u6242\u6244\u6245\u6246\u624A"],["9240","\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C",6,"\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B",5,"\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"],["9280","\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333",5,"\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356",7,"\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399",6,"\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"],["9340","\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7",6,"\u63DF\u63E2\u63E4",4,"\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406",4,"\u640D\u640E\u6411\u6412\u6415",5,"\u641D\u641F\u6422\u6423\u6424"],["9380","\u6425\u6427\u6428\u6429\u642B\u642E",5,"\u6435",4,"\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B",6,"\u6453\u6455\u6456\u6457\u6459",4,"\u645F",7,"\u6468\u646A\u646B\u646C\u646E",9,"\u647B",6,"\u6483\u6486\u6488",8,"\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F",4,"\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6",6,"\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"],["9440","\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7",24,"\u6501",7,"\u650A",7,"\u6513",4,"\u6519",8],["9480","\u6522\u6523\u6524\u6526",4,"\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540",4,"\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578",14,"\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1",7,"\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8",7,"\u65E1\u65E3\u65E4\u65EA\u65EB"],["9540","\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB",4,"\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637",4,"\u663D\u663F\u6640\u6642\u6644",6,"\u664D\u664E\u6650\u6651\u6658"],["9580","\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669",4,"\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698",4,"\u669E",8,"\u66A9",4,"\u66AF",4,"\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF",25,"\u66DA\u66DE",7,"\u66E7\u66E8\u66EA",5,"\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"],["9640","\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720",5,"\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757",4,"\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"],["9680","\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9",7,"\u67C2\u67C5",9,"\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5",7,"\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818",4,"\u681E\u681F\u6820\u6822",6,"\u682B",6,"\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856",5],["9740","\u685C\u685D\u685E\u685F\u686A\u686C",7,"\u6875\u6878",8,"\u6882\u6884\u6887",7,"\u6890\u6891\u6892\u6894\u6895\u6896\u6898",9,"\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"],["9780","\u68B9",6,"\u68C1\u68C3",5,"\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB",4,"\u68E1\u68E2\u68E4",9,"\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906",4,"\u690C\u690F\u6911\u6913",11,"\u6921\u6922\u6923\u6925",7,"\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943",16,"\u6955\u6956\u6958\u6959\u695B\u695C\u695F"],["9840","\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972",4,"\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E",5,"\u6996\u6997\u6999\u699A\u699D",9,"\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"],["9880","\u69BE\u69BF\u69C0\u69C2",7,"\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5",5,"\u69DC\u69DD\u69DE\u69E1",11,"\u69EE\u69EF\u69F0\u69F1\u69F3",9,"\u69FE\u6A00",9,"\u6A0B",11,"\u6A19",5,"\u6A20\u6A22",5,"\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36",6,"\u6A3F",4,"\u6A45\u6A46\u6A48",7,"\u6A51",6,"\u6A5A"],["9940","\u6A5C",4,"\u6A62\u6A63\u6A64\u6A66",10,"\u6A72",6,"\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85",8,"\u6A8F\u6A92",4,"\u6A98",7,"\u6AA1",5],["9980","\u6AA7\u6AA8\u6AAA\u6AAD",114,"\u6B25\u6B26\u6B28",6],["9a40","\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D",11,"\u6B5A",7,"\u6B68\u6B69\u6B6B",13,"\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"],["9a80","\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C",4,"\u6BA2",7,"\u6BAB",7,"\u6BB6\u6BB8",6,"\u6BC0\u6BC3\u6BC4\u6BC6",4,"\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC",4,"\u6BE2",7,"\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE",6,"\u6C08",4,"\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B",4,"\u6C51\u6C52\u6C53\u6C56\u6C58"],["9b40","\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B",4,"\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"],["9b80","\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F",5,"\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D",4,"\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96",4,"\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9",5,"\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"],["9c40","\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD",7,"\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"],["9c80","\u6E36\u6E37\u6E39\u6E3B",7,"\u6E45",7,"\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60",10,"\u6E6C\u6E6D\u6E6F",14,"\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A",4,"\u6E91",6,"\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA",5],["9d40","\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA",7,"\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A",4,"\u6F10\u6F11\u6F12\u6F16",9,"\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37",6,"\u6F3F\u6F40\u6F41\u6F42"],["9d80","\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E",9,"\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67",5,"\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D",6,"\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F",12,"\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2",4,"\u6FA8",10,"\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA",5,"\u6FC1\u6FC3",5,"\u6FCA",6,"\u6FD3",10,"\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"],["9e40","\u6FE6",7,"\u6FF0",32,"\u7012",7,"\u701C",6,"\u7024",6],["9e80","\u702B",9,"\u7036\u7037\u7038\u703A",17,"\u704D\u704E\u7050",13,"\u705F",11,"\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E",12,"\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB",12,"\u70DA"],["9f40","\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0",6,"\u70F8\u70FA\u70FB\u70FC\u70FE",10,"\u710B",4,"\u7111\u7112\u7114\u7117\u711B",10,"\u7127",7,"\u7132\u7133\u7134"],["9f80","\u7135\u7137",13,"\u7146\u7147\u7148\u7149\u714B\u714D\u714F",12,"\u715D\u715F",4,"\u7165\u7169",4,"\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E",5,"\u7185",4,"\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A",4,"\u71A1",6,"\u71A9\u71AA\u71AB\u71AD",5,"\u71B4\u71B6\u71B7\u71B8\u71BA",8,"\u71C4",9,"\u71CF",4],["a040","\u71D6",9,"\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8",5,"\u71EF",9,"\u71FA",11,"\u7207",19],["a080","\u721B\u721C\u721E",9,"\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240",6,"\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285",4,"\u728C\u728E\u7290\u7291\u7293",11,"\u72A0",11,"\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA",6,"\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"],["a1a1","\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008",7,"\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"],["a2a1","\u2170",9],["a2b1","\u2488",19,"\u2474",19,"\u2460",9],["a2e5","\u3220",9],["a2f1","\u2160",11],["a3a1","\uFF01\uFF02\uFF03\uFFE5\uFF05",88,"\uFFE3"],["a4a1","\u3041",82],["a5a1","\u30A1",85],["a6a1","\u0391",16,"\u03A3",6],["a6c1","\u03B1",16,"\u03C3",6],["a6e0","\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"],["a6ee","\uFE3B\uFE3C\uFE37\uFE38\uFE31"],["a6f4","\uFE33\uFE34"],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a840","\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550",35,"\u2581",6],["a880","\u2588",7,"\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"],["a8a1","\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"],["a8bd","\u0144\u0148"],["a8c0","\u0261"],["a8c5","\u3105",36],["a940","\u3021",8,"\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"],["a959","\u2121\u3231"],["a95c","\u2010"],["a960","\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49",9,"\uFE54\uFE55\uFE56\uFE57\uFE59",8],["a980","\uFE62",4,"\uFE68\uFE69\uFE6A\uFE6B"],["a996","\u3007"],["a9a4","\u2500",75],["aa40","\u72DC\u72DD\u72DF\u72E2",5,"\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304",5,"\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340",8],["aa80","\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358",7,"\u7361",10,"\u736E\u7370\u7371"],["ab40","\u7372",11,"\u737F",4,"\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3",5,"\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3",4],["ab80","\u73CB\u73CC\u73CE\u73D2",6,"\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3",4],["ac40","\u73F8",10,"\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411",8,"\u741C",5,"\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437",4,"\u743D\u743E\u743F\u7440\u7442",11],["ac80","\u744E",6,"\u7456\u7458\u745D\u7460",12,"\u746E\u746F\u7471",4,"\u7478\u7479\u747A"],["ad40","\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491",10,"\u749D\u749F",7,"\u74AA",15,"\u74BB",12],["ad80","\u74C8",9,"\u74D3",8,"\u74DD\u74DF\u74E1\u74E5\u74E7",6,"\u74F0\u74F1\u74F2"],["ae40","\u74F3\u74F5\u74F8",6,"\u7500\u7501\u7502\u7503\u7505",7,"\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520",4,"\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"],["ae80","\u755D",7,"\u7567\u7568\u7569\u756B",6,"\u7573\u7575\u7576\u7577\u757A",4,"\u7580\u7581\u7582\u7584\u7585\u7587"],["af40","\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6",4,"\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"],["af80","\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"],["b040","\u7645",6,"\u764E",5,"\u7655\u7657",4,"\u765D\u765F\u7660\u7661\u7662\u7664",6,"\u766C\u766D\u766E\u7670",7,"\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"],["b080","\u769C",7,"\u76A5",8,"\u76AF\u76B0\u76B3\u76B5",9,"\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"],["b140","\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0",4,"\u76E6",7,"\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E",10,"\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"],["b180","\u772C\u772E\u7730",4,"\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748",7,"\u7752",7,"\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"],["b240","\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D",11,"\u777A\u777B\u777C\u7781\u7782\u7783\u7786",5,"\u778F\u7790\u7793",11,"\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6",4],["b280","\u77BC\u77BE\u77C0",12,"\u77CE",8,"\u77D8\u77D9\u77DA\u77DD",4,"\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"],["b340","\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803",5,"\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"],["b380","\u785B\u785C\u785E",11,"\u786F",7,"\u7878\u7879\u787A\u787B\u787D",6,"\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"],["b440","\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8",7,"\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA",9],["b480","\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED",4,"\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB",5,"\u7902\u7903\u7904\u7906",6,"\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"],["b540","\u790D",5,"\u7914",9,"\u791F",4,"\u7925",14,"\u7935",4,"\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A",8,"\u7954\u7955\u7958\u7959\u7961\u7963"],["b580","\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970",6,"\u7979\u797B",4,"\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"],["b640","\u7993",6,"\u799B",11,"\u79A8",10,"\u79B4",4,"\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9",5,"\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"],["b680","\u79EC\u79EE\u79F1",6,"\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F",4,"\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"],["b740","\u7A1D\u7A1F\u7A21\u7A22\u7A24",14,"\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40",5,"\u7A47",9,"\u7A52",4,"\u7A58",16],["b780","\u7A69",6,"\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"],["b840","\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE",4,"\u7AB4",10,"\u7AC0",10,"\u7ACC",9,"\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7",5,"\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"],["b880","\u7AF4",4,"\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"],["b940","\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F",5,"\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63",10,"\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86",6,"\u7B8E\u7B8F"],["b980","\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9",7,"\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"],["ba40","\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4",4,"\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2",4,"\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF",7,"\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10",5,"\u7C17\u7C18\u7C19"],["ba80","\u7C1A",4,"\u7C20",5,"\u7C28\u7C29\u7C2B",12,"\u7C39",5,"\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"],["bb40","\u7C43",9,"\u7C4E",36,"\u7C75",5,"\u7C7E",9],["bb80","\u7C88\u7C8A",6,"\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4",4,"\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"],["bc40","\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE",6,"\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1",6,"\u7CE9",5,"\u7CF0",7,"\u7CF9\u7CFA\u7CFC",13,"\u7D0B",5],["bc80","\u7D11",14,"\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30",6,"\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"],["bd40","\u7D37",54,"\u7D6F",7],["bd80","\u7D78",32,"\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"],["be40","\u7D99",12,"\u7DA7",6,"\u7DAF",42],["be80","\u7DDA",32,"\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"],["bf40","\u7DFB",62],["bf80","\u7E3A\u7E3C",4,"\u7E42",4,"\u7E48",21,"\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"],["c040","\u7E5E",35,"\u7E83",23,"\u7E9C\u7E9D\u7E9E"],["c080","\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B",6,"\u7F43\u7F46",9,"\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"],["c140","\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63",4,"\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82",7,"\u7F8B\u7F8D\u7F8F",4,"\u7F95",4,"\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8",6,"\u7FB1"],["c180","\u7FB3",4,"\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF",4,"\u7FD6\u7FD7\u7FD9",5,"\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"],["c240","\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4",6,"\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B",5,"\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"],["c280","\u8059\u805B",13,"\u806B",5,"\u8072",11,"\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"],["c340","\u807E\u8081\u8082\u8085\u8088\u808A\u808D",5,"\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7",4,"\u80CF",6,"\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"],["c380","\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F",12,"\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139",4,"\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"],["c440","\u8140",5,"\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B",4,"\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183",4,"\u8189\u818B\u818C\u818D\u818E\u8190\u8192",5,"\u8199\u819A\u819E",4,"\u81A4\u81A5"],["c480","\u81A7\u81A9\u81AB",7,"\u81B4",5,"\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD",6,"\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"],["c540","\u81D4",14,"\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE",4,"\u81F5",5,"\u81FD\u81FF\u8203\u8207",4,"\u820E\u820F\u8211\u8213\u8215",5,"\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"],["c580","\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250",7,"\u8259\u825B\u825C\u825D\u825E\u8260",7,"\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"],["c640","\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"],["c680","\u82FA\u82FC",4,"\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D",9,"\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"],["c740","\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A",4,"\u8353\u8355",4,"\u835D\u8362\u8370",6,"\u8379\u837A\u837E",6,"\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1",6,"\u83AC\u83AD\u83AE"],["c780","\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"],["c840","\u83EE\u83EF\u83F3",4,"\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412",5,"\u8419\u841A\u841B\u841E",5,"\u8429",7,"\u8432",5,"\u8439\u843A\u843B\u843E",7,"\u8447\u8448\u8449"],["c880","\u844A",6,"\u8452",4,"\u8458\u845D\u845E\u845F\u8460\u8462\u8464",4,"\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"],["c940","\u847D",4,"\u8483\u8484\u8485\u8486\u848A\u848D\u848F",7,"\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2",12,"\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"],["c980","\u84D8",4,"\u84DE\u84E1\u84E2\u84E4\u84E7",4,"\u84ED\u84EE\u84EF\u84F1",10,"\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"],["ca40","\u8503",8,"\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522",8,"\u852D",9,"\u853E",4,"\u8544\u8545\u8546\u8547\u854B",10],["ca80","\u8557\u8558\u855A\u855B\u855C\u855D\u855F",4,"\u8565\u8566\u8567\u8569",8,"\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"],["cb40","\u8582\u8583\u8586\u8588",6,"\u8590",10,"\u859D",6,"\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1",5,"\u85B8\u85BA",6,"\u85C2",6,"\u85CA",4,"\u85D1\u85D2"],["cb80","\u85D4\u85D6",5,"\u85DD",6,"\u85E5\u85E6\u85E7\u85E8\u85EA",14,"\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"],["cc40","\u85F9\u85FA\u85FC\u85FD\u85FE\u8600",4,"\u8606",10,"\u8612\u8613\u8614\u8615\u8617",15,"\u8628\u862A",13,"\u8639\u863A\u863B\u863D\u863E\u863F\u8640"],["cc80","\u8641",11,"\u8652\u8653\u8655",4,"\u865B\u865C\u865D\u865F\u8660\u8661\u8663",7,"\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"],["cd40","\u866D\u866F\u8670\u8672",6,"\u8683",6,"\u868E",4,"\u8694\u8696",5,"\u869E",4,"\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB",4,"\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"],["cd80","\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"],["ce40","\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740",6,"\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A",5,"\u8761\u8762\u8766",7,"\u876F\u8771\u8772\u8773\u8775"],["ce80","\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E",4,"\u8794\u8795\u8796\u8798",6,"\u87A0",4,"\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"],["cf40","\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1",4,"\u87C7\u87C8\u87C9\u87CC",4,"\u87D4",6,"\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF",9],["cf80","\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804",5,"\u880B",7,"\u8814\u8817\u8818\u8819\u881A\u881C",4,"\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"],["d040","\u8824",13,"\u8833",5,"\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846",5,"\u884E",5,"\u8855\u8856\u8858\u885A",6,"\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"],["d080","\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897",4,"\u889D",4,"\u88A3\u88A5",5,"\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"],["d140","\u88AC\u88AE\u88AF\u88B0\u88B2",4,"\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA",4,"\u88E0\u88E1\u88E6\u88E7\u88E9",6,"\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903",5],["d180","\u8909\u890B",4,"\u8911\u8914",4,"\u891C",4,"\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"],["d240","\u8938",8,"\u8942\u8943\u8945",24,"\u8960",5,"\u8967",19,"\u897C"],["d280","\u897D\u897E\u8980\u8982\u8984\u8985\u8987",26,"\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"],["d340","\u89A2",30,"\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4",6],["d380","\u89FB",4,"\u8A01",5,"\u8A08",21,"\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"],["d440","\u8A1E",31,"\u8A3F",8,"\u8A49",21],["d480","\u8A5F",25,"\u8A7A",6,"\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"],["d540","\u8A81",7,"\u8A8B",7,"\u8A94",46],["d580","\u8AC3",32,"\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"],["d640","\u8AE4",34,"\u8B08",27],["d680","\u8B24\u8B25\u8B27",30,"\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"],["d740","\u8B46",31,"\u8B67",4,"\u8B6D",25],["d780","\u8B87",24,"\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"],["d840","\u8C38",8,"\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D",7,"\u8C56\u8C57\u8C58\u8C59\u8C5B",5,"\u8C63",6,"\u8C6C",6,"\u8C74\u8C75\u8C76\u8C77\u8C7B",6,"\u8C83\u8C84\u8C86\u8C87"],["d880","\u8C88\u8C8B\u8C8D",6,"\u8C95\u8C96\u8C97\u8C99",20,"\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"],["d940","\u8CAE",62],["d980","\u8CED",32,"\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"],["da40","\u8D0E",14,"\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78",8,"\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C",4,"\u8D92\u8D93\u8D95",9,"\u8DA0\u8DA1"],["da80","\u8DA2\u8DA4",12,"\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"],["db40","\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE",6,"\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15",7,"\u8E20\u8E21\u8E24",4,"\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"],["db80","\u8E3F\u8E43\u8E45\u8E46\u8E4C",4,"\u8E53",5,"\u8E5A",11,"\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"],["dc40","\u8E73\u8E75\u8E77",4,"\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88",6,"\u8E91\u8E92\u8E93\u8E95",6,"\u8E9D\u8E9F",11,"\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3",6,"\u8EBB",7],["dc80","\u8EC3",10,"\u8ECF",21,"\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"],["dd40","\u8EE5",62],["dd80","\u8F24",32,"\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"],["de40","\u8F45",32,"\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"],["de80","\u8FC9",4,"\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"],["df40","\u9019\u901C\u9023\u9024\u9025\u9027",5,"\u9030",4,"\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048",4,"\u904E\u9054\u9055\u9056\u9059\u905A\u905C",5,"\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F",4,"\u9076",6,"\u907E\u9081"],["df80","\u9084\u9085\u9086\u9087\u9089\u908A\u908C",4,"\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"],["e040","\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105",19,"\u911A\u911B\u911C"],["e080","\u911D\u911F\u9120\u9121\u9124",10,"\u9130\u9132",6,"\u913A",8,"\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"],["e140","\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180",4,"\u9186\u9188\u918A\u918E\u918F\u9193",6,"\u919C",5,"\u91A4",5,"\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"],["e180","\u91BC",10,"\u91C8\u91CB\u91D0\u91D2",9,"\u91DD",8,"\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"],["e240","\u91E6",62],["e280","\u9225",32,"\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967",5,"\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"],["e340","\u9246",45,"\u9275",16],["e380","\u9286",7,"\u928F",24,"\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"],["e440","\u92A8",5,"\u92AF",24,"\u92C9",31],["e480","\u92E9",32,"\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"],["e540","\u930A",51,"\u933F",10],["e580","\u934A",31,"\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"],["e640","\u936C",34,"\u9390",27],["e680","\u93AC",29,"\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"],["e740","\u93CE",7,"\u93D7",54],["e780","\u940E",32,"\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21",6,"\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F",4,"\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"],["e840","\u942F",14,"\u943F",43,"\u946C\u946D\u946E\u946F"],["e880","\u9470",20,"\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"],["e940","\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577",7,"\u9580",42],["e980","\u95AB",32,"\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"],["ea40","\u95CC",27,"\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623",6,"\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"],["ea80","\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D",4,"\u9673\u9678",12,"\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"],["eb40","\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D",9,"\u96A8",7,"\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6",9,"\u96E1",6,"\u96EB"],["eb80","\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717",4,"\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"],["ec40","\u9721",8,"\u972B\u972C\u972E\u972F\u9731\u9733",4,"\u973A\u973B\u973C\u973D\u973F",18,"\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A",7],["ec80","\u9772\u9775\u9777",4,"\u977D",7,"\u9786",4,"\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799",4,"\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"],["ed40","\u979E\u979F\u97A1\u97A2\u97A4",6,"\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5",46],["ed80","\u97E4\u97E5\u97E8\u97EE",4,"\u97F4\u97F7",23,"\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"],["ee40","\u980F",62],["ee80","\u984E",32,"\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6",4,"\u94BC\u94BD\u94BF\u94C4\u94C8",6,"\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"],["ef40","\u986F",5,"\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8",37,"\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0",4],["ef80","\u98E5\u98E6\u98E9",30,"\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512",4,"\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564",8,"\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"],["f040","\u9908",4,"\u990E\u990F\u9911",28,"\u992F",26],["f080","\u994A",9,"\u9956",12,"\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28",4,"\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66",6,"\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"],["f140","\u998C\u998E\u999A",10,"\u99A6\u99A7\u99A9",47],["f180","\u99D9",32,"\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"],["f240","\u99FA",62],["f280","\u9A39",32,"\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"],["f340","\u9A5A",17,"\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9",6,"\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6",4,"\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"],["f380","\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0",8,"\u9AFA\u9AFC",6,"\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"],["f440","\u9B07\u9B09",5,"\u9B10\u9B11\u9B12\u9B14",10,"\u9B20\u9B21\u9B22\u9B24",10,"\u9B30\u9B31\u9B33",7,"\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55",5],["f480","\u9B5B",32,"\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"],["f540","\u9B7C",62],["f580","\u9BBB",32,"\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"],["f640","\u9BDC",62],["f680","\u9C1B",32,"\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85",5,"\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E",5,"\u9CA5",4,"\u9CAB\u9CAD\u9CAE\u9CB0",7,"\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"],["f740","\u9C3C",62],["f780","\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE",4,"\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC",4,"\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"],["f840","\u9CE3",62],["f880","\u9D22",32],["f940","\u9D43",62],["f980","\u9D82",32],["fa40","\u9DA3",62],["fa80","\u9DE2",32],["fb40","\u9E03",27,"\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74",9,"\u9E80"],["fb80","\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C",5,"\u9E94",8,"\u9E9E\u9EA0",5,"\u9EA7\u9EA8\u9EA9\u9EAA"],["fc40","\u9EAB",8,"\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF",4,"\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0",8,"\u9EFA\u9EFD\u9EFF",6],["fc80","\u9F06",4,"\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A",5,"\u9F21\u9F23",8,"\u9F2D\u9F2E\u9F30\u9F31"],["fd40","\u9F32",4,"\u9F38\u9F3A\u9F3C\u9F3F",4,"\u9F45",10,"\u9F52",38],["fd80","\u9F79",5,"\u9F81\u9F82\u9F8D",11,"\u9F9C\u9F9D\u9F9E\u9FA1",4,"\uF92C\uF979\uF995\uF9E7\uF9F1"],["fe40","\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"]]});var ku=q((fL,kT)=>{kT.exports=[["a140","\uE4C6",62],["a180","\uE505",32],["a240","\uE526",62],["a280","\uE565",32],["a2ab","\uE766",5],["a2e3","\u20AC\uE76D"],["a2ef","\uE76E\uE76F"],["a2fd","\uE770\uE771"],["a340","\uE586",62],["a380","\uE5C5",31,"\u3000"],["a440","\uE5E6",62],["a480","\uE625",32],["a4f4","\uE772",10],["a540","\uE646",62],["a580","\uE685",32],["a5f7","\uE77D",7],["a640","\uE6A6",62],["a680","\uE6E5",32],["a6b9","\uE785",7],["a6d9","\uE78D",6],["a6ec","\uE794\uE795"],["a6f3","\uE796"],["a6f6","\uE797",8],["a740","\uE706",62],["a780","\uE745",32],["a7c2","\uE7A0",14],["a7f2","\uE7AF",12],["a896","\uE7BC",10],["a8bc","\uE7C7"],["a8bf","\u01F9"],["a8c1","\uE7C9\uE7CA\uE7CB\uE7CC"],["a8ea","\uE7CD",20],["a958","\uE7E2"],["a95b","\uE7E3"],["a95d","\uE7E4\uE7E5\uE7E6"],["a989","\u303E\u2FF0",11],["a997","\uE7F4",12],["a9f0","\uE801",14],["aaa1","\uE000",93],["aba1","\uE05E",93],["aca1","\uE0BC",93],["ada1","\uE11A",93],["aea1","\uE178",93],["afa1","\uE1D6",93],["d7fa","\uE810",4],["f8a1","\uE234",93],["f9a1","\uE292",93],["faa1","\uE2F0",93],["fba1","\uE34E",93],["fca1","\uE3AC",93],["fda1","\uE40A",93],["fe50","\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"],["fe80","\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13",6,"\u4DAE\uE864\uE468",93]]});var Om=q((mL,CT)=>{CT.exports={uChars:[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],gbChars:[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189e3]}});var km=q((hL,IT)=>{IT.exports=[["0","\0",127],["8141","\uAC02\uAC03\uAC05\uAC06\uAC0B",4,"\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25",6,"\uAC2E\uAC32\uAC33\uAC34"],["8161","\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41",9,"\uAC4C\uAC4E",5,"\uAC55"],["8181","\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D",18,"\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B",4,"\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95",6,"\uAC9E\uACA2",5,"\uACAB\uACAD\uACAE\uACB1",6,"\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD",7,"\uACD6\uACD8",7,"\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7",4,"\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07",4,"\uAD0E\uAD10\uAD12\uAD13"],["8241","\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21",7,"\uAD2A\uAD2B\uAD2E",5],["8261","\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D",6,"\uAD46\uAD48\uAD4A",5,"\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"],["8281","\uAD59",7,"\uAD62\uAD64",7,"\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83",4,"\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91",10,"\uAD9E",5,"\uADA5",17,"\uADB8",7,"\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9",6,"\uADD2\uADD4",7,"\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5",18],["8341","\uADFA\uADFB\uADFD\uADFE\uAE02",5,"\uAE0A\uAE0C\uAE0E",5,"\uAE15",7],["8361","\uAE1D",18,"\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"],["8381","\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57",4,"\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71",6,"\uAE7A\uAE7E",5,"\uAE86",5,"\uAE8D",46,"\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5",6,"\uAECE\uAED2",5,"\uAEDA\uAEDB\uAEDD",8],["8441","\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE",5,"\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD",8],["8461","\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11",18],["8481","\uAF24",7,"\uAF2E\uAF2F\uAF31\uAF33\uAF35",6,"\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A",5,"\uAF51",10,"\uAF5E",5,"\uAF66",18,"\uAF7A",5,"\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89",6,"\uAF92\uAF93\uAF94\uAF96",5,"\uAF9D",26,"\uAFBA\uAFBB\uAFBD\uAFBE"],["8541","\uAFBF\uAFC1",5,"\uAFCA\uAFCC\uAFCF",4,"\uAFD5",6,"\uAFDD",4],["8561","\uAFE2",5,"\uAFEA",5,"\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9",6,"\uB002\uB003"],["8581","\uB005",6,"\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015",6,"\uB01E",9,"\uB029",26,"\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E",29,"\uB07E\uB07F\uB081\uB082\uB083\uB085",6,"\uB08E\uB090\uB092",5,"\uB09B\uB09D\uB09E\uB0A3\uB0A4"],["8641","\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD",6,"\uB0C6\uB0CA",5,"\uB0D2"],["8661","\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9",6,"\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6",10],["8681","\uB0F1",22,"\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E",4,"\uB126\uB127\uB129\uB12A\uB12B\uB12D",6,"\uB136\uB13A",5,"\uB142\uB143\uB145\uB146\uB147\uB149",6,"\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161",22,"\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183",4,"\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"],["8741","\uB19E",9,"\uB1A9",15],["8761","\uB1B9",18,"\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"],["8781","\uB1D6",5,"\uB1DE\uB1E0",7,"\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1",7,"\uB1FA\uB1FC\uB1FE",5,"\uB206\uB207\uB209\uB20A\uB20D",6,"\uB216\uB218\uB21A",5,"\uB221",18,"\uB235",6,"\uB23D",26,"\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261",6,"\uB26A",4],["8841","\uB26F",4,"\uB276",5,"\uB27D",6,"\uB286\uB287\uB288\uB28A",4],["8861","\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B",4,"\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"],["8881","\uB2B8",15,"\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3",4,"\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309",6,"\uB312\uB316",5,"\uB31D",54,"\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"],["8941","\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379",6,"\uB382\uB386",5,"\uB38D"],["8961","\uB38E\uB38F\uB391\uB392\uB393\uB395",10,"\uB3A2",5,"\uB3A9\uB3AA\uB3AB\uB3AD"],["8981","\uB3AE",21,"\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9",18,"\uB3FD",18,"\uB411",6,"\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421",6,"\uB42A\uB42C",7,"\uB435",15],["8a41","\uB445",10,"\uB452\uB453\uB455\uB456\uB457\uB459",6,"\uB462\uB464\uB466"],["8a61","\uB467",4,"\uB46D",18,"\uB481\uB482"],["8a81","\uB483",4,"\uB489",19,"\uB49E",5,"\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD",7,"\uB4B6\uB4B8\uB4BA",5,"\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9",6,"\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6",5,"\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7",4,"\uB4EE\uB4F0\uB4F2",5,"\uB4F9",26,"\uB516\uB517\uB519\uB51A\uB51D"],["8b41","\uB51E",5,"\uB526\uB52B",4,"\uB532\uB533\uB535\uB536\uB537\uB539",6,"\uB542\uB546"],["8b61","\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555",6,"\uB55E\uB562",8],["8b81","\uB56B",52,"\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6",4,"\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5",6,"\uB5CE\uB5D2",5,"\uB5D9",18,"\uB5ED",18],["8c41","\uB600",15,"\uB612\uB613\uB615\uB616\uB617\uB619",4],["8c61","\uB61E",6,"\uB626",5,"\uB62D",6,"\uB635",5],["8c81","\uB63B",12,"\uB649",26,"\uB665\uB666\uB667\uB669",50,"\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5",5,"\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2",16],["8d41","\uB6C3",16,"\uB6D5",8],["8d61","\uB6DE",17,"\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"],["8d81","\uB6FB",4,"\uB702\uB703\uB704\uB706",33,"\uB72A\uB72B\uB72D\uB72E\uB731",6,"\uB73A\uB73C",7,"\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D",6,"\uB756",9,"\uB761\uB762\uB763\uB765\uB766\uB767\uB769",6,"\uB772\uB774\uB776",5,"\uB77E\uB77F\uB781\uB782\uB783\uB785",6,"\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"],["8e41","\uB79F\uB7A1",6,"\uB7AA\uB7AE",5,"\uB7B6\uB7B7\uB7B9",8],["8e61","\uB7C2",4,"\uB7C8\uB7CA",19],["8e81","\uB7DE",13,"\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5",6,"\uB7FE\uB802",4,"\uB80A\uB80B\uB80D\uB80E\uB80F\uB811",6,"\uB81A\uB81C\uB81E",5,"\uB826\uB827\uB829\uB82A\uB82B\uB82D",6,"\uB836\uB83A",5,"\uB841\uB842\uB843\uB845",11,"\uB852\uB854",7,"\uB85E\uB85F\uB861\uB862\uB863\uB865",6,"\uB86E\uB870\uB872",5,"\uB879\uB87A\uB87B\uB87D",7],["8f41","\uB885",7,"\uB88E",17],["8f61","\uB8A0",7,"\uB8A9",6,"\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9",4],["8f81","\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6",5,"\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5",7,"\uB8DE\uB8E0\uB8E2",5,"\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1",6,"\uB8FA\uB8FC\uB8FE",5,"\uB905",18,"\uB919",6,"\uB921",26,"\uB93E\uB93F\uB941\uB942\uB943\uB945",6,"\uB94D\uB94E\uB950\uB952",5],["9041","\uB95A\uB95B\uB95D\uB95E\uB95F\uB961",6,"\uB96A\uB96C\uB96E",5,"\uB976\uB977\uB979\uB97A\uB97B\uB97D"],["9061","\uB97E",5,"\uB986\uB988\uB98B\uB98C\uB98F",15],["9081","\uB99F",12,"\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5",6,"\uB9BE\uB9C0\uB9C2",5,"\uB9CA\uB9CB\uB9CD\uB9D3",4,"\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED",6,"\uB9F6\uB9FB",4,"\uBA02",5,"\uBA09",11,"\uBA16",33,"\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"],["9141","\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D",6,"\uBA66\uBA6A",5],["9161","\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79",9,"\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D",5],["9181","\uBA93",20,"\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3",4,"\uBABA\uBABC\uBABE",5,"\uBAC5\uBAC6\uBAC7\uBAC9",14,"\uBADA",33,"\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05",7,"\uBB0E\uBB10\uBB12",5,"\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21",6],["9241","\uBB28\uBB2A\uBB2C",7,"\uBB37\uBB39\uBB3A\uBB3F",4,"\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"],["9261","\uBB53\uBB55\uBB56\uBB57\uBB59",7,"\uBB62\uBB64",7,"\uBB6D",4],["9281","\uBB72",21,"\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91",18,"\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD",6,"\uBBB5\uBBB6\uBBB8",7,"\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9",6,"\uBBD1\uBBD2\uBBD4",35,"\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"],["9341","\uBC03",4,"\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"],["9361","\uBC36\uBC37\uBC39",6,"\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51",8],["9381","\uBC5A\uBC5B\uBC5C\uBC5E",37,"\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F",4,"\uBC96\uBC98\uBC9B",4,"\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9",6,"\uBCB2\uBCB6",5,"\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5",7,"\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD",22,"\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"],["9441","\uBCFE",5,"\uBD06\uBD08\uBD0A",5,"\uBD11\uBD12\uBD13\uBD15",8],["9461","\uBD1E",5,"\uBD25",6,"\uBD2D",12],["9481","\uBD3A",5,"\uBD41",6,"\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51",6,"\uBD5A",9,"\uBD65\uBD66\uBD67\uBD69",22,"\uBD82\uBD83\uBD85\uBD86\uBD8B",4,"\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D",6,"\uBDA5",10,"\uBDB1",6,"\uBDB9",24],["9541","\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD",11,"\uBDEA",5,"\uBDF1"],["9561","\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9",6,"\uBE01\uBE02\uBE04\uBE06",5,"\uBE0E\uBE0F\uBE11\uBE12\uBE13"],["9581","\uBE15",6,"\uBE1E\uBE20",35,"\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F",4,"\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B",4,"\uBE72\uBE76",4,"\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85",6,"\uBE8E\uBE92",5,"\uBE9A",13,"\uBEA9",14],["9641","\uBEB8",23,"\uBED2\uBED3"],["9661","\uBED5\uBED6\uBED9",6,"\uBEE1\uBEE2\uBEE6",5,"\uBEED",8],["9681","\uBEF6",10,"\uBF02",5,"\uBF0A",13,"\uBF1A\uBF1E",33,"\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49",6,"\uBF52\uBF53\uBF54\uBF56",44],["9741","\uBF83",16,"\uBF95",8],["9761","\uBF9E",17,"\uBFB1",7],["9781","\uBFB9",11,"\uBFC6",5,"\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5",6,"\uBFDD\uBFDE\uBFE0\uBFE2",89,"\uC03D\uC03E\uC03F"],["9841","\uC040",16,"\uC052",5,"\uC059\uC05A\uC05B"],["9861","\uC05D\uC05E\uC05F\uC061",6,"\uC06A",15],["9881","\uC07A",21,"\uC092\uC093\uC095\uC096\uC097\uC099",6,"\uC0A2\uC0A4\uC0A6",5,"\uC0AE\uC0B1\uC0B2\uC0B7",4,"\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1",6,"\uC0DA\uC0DE",5,"\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED",6,"\uC0F6\uC0F8\uC0FA",5,"\uC101\uC102\uC103\uC105\uC106\uC107\uC109",6,"\uC111\uC112\uC113\uC114\uC116",5,"\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"],["9941","\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141",6,"\uC14A\uC14E",5,"\uC156\uC157"],["9961","\uC159\uC15A\uC15B\uC15D",6,"\uC166\uC16A",5,"\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"],["9981","\uC17C",8,"\uC186",5,"\uC18F\uC191\uC192\uC193\uC195\uC197",4,"\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1",11,"\uC1BE",5,"\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD",6,"\uC1D5\uC1D6\uC1D9",6,"\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9",6,"\uC1F2\uC1F4",7,"\uC1FE\uC1FF\uC201\uC202\uC203\uC205",6,"\uC20E\uC210\uC212",5,"\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"],["9a41","\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235",16],["9a61","\uC246\uC247\uC249",6,"\uC252\uC253\uC255\uC256\uC257\uC259",6,"\uC261\uC262\uC263\uC264\uC266"],["9a81","\uC267",4,"\uC26E\uC26F\uC271\uC272\uC273\uC275",6,"\uC27E\uC280\uC282",5,"\uC28A",5,"\uC291",6,"\uC299\uC29A\uC29C\uC29E",5,"\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE",5,"\uC2B6\uC2B8\uC2BA",33,"\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5",5,"\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301",6,"\uC30A\uC30B\uC30E\uC30F"],["9b41","\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D",6,"\uC326\uC327\uC32A",8],["9b61","\uC333",17,"\uC346",7],["9b81","\uC34E",25,"\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373",4,"\uC37A\uC37B\uC37E",5,"\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D",50,"\uC3C1",22,"\uC3DA"],["9c41","\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3",4,"\uC3EA\uC3EB\uC3EC\uC3EE",5,"\uC3F6\uC3F7\uC3F9",5],["9c61","\uC3FF",8,"\uC409",6,"\uC411",9],["9c81","\uC41B",8,"\uC425",6,"\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435",6,"\uC43E",9,"\uC449",26,"\uC466\uC467\uC469\uC46A\uC46B\uC46D",6,"\uC476\uC477\uC478\uC47A",5,"\uC481",18,"\uC495",6,"\uC49D",12],["9d41","\uC4AA",13,"\uC4B9\uC4BA\uC4BB\uC4BD",8],["9d61","\uC4C6",25],["9d81","\uC4E0",8,"\uC4EA",5,"\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502",9,"\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515",6,"\uC51D",10,"\uC52A\uC52B\uC52D\uC52E\uC52F\uC531",6,"\uC53A\uC53C\uC53E",5,"\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569",6,"\uC572\uC576",5,"\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"],["9e41","\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1",7,"\uC5AA",9,"\uC5B6"],["9e61","\uC5B7\uC5BA\uC5BF",4,"\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9",6,"\uC5E2\uC5E4\uC5E6\uC5E7"],["9e81","\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611",6,"\uC61A\uC61D",6,"\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649",6,"\uC652\uC656",5,"\uC65E\uC65F\uC661",10,"\uC66D\uC66E\uC670\uC672",5,"\uC67A\uC67B\uC67D\uC67E\uC67F\uC681",6,"\uC68A\uC68C\uC68E",5,"\uC696\uC697\uC699\uC69A\uC69B\uC69D",6,"\uC6A6"],["9f41","\uC6A8\uC6AA",5,"\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB",4,"\uC6C2\uC6C4\uC6C6",5,"\uC6CE"],["9f61","\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5",6,"\uC6DE\uC6DF\uC6E2",5,"\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"],["9f81","\uC6F3",4,"\uC6FA\uC6FB\uC6FC\uC6FE",5,"\uC706\uC707\uC709\uC70A\uC70B\uC70D",6,"\uC716\uC718\uC71A",5,"\uC722\uC723\uC725\uC726\uC727\uC729",6,"\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745",4,"\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761",6,"\uC769\uC76A\uC76C",7,"\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B",4,"\uC7A2\uC7A7",4,"\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"],["a041","\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2",5,"\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1",6,"\uC7D9\uC7DA\uC7DB\uC7DC"],["a061","\uC7DE",5,"\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED",13],["a081","\uC7FB",4,"\uC802\uC803\uC805\uC806\uC807\uC809\uC80B",4,"\uC812\uC814\uC817",4,"\uC81E\uC81F\uC821\uC822\uC823\uC825",6,"\uC82E\uC830\uC832",5,"\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841",6,"\uC84A\uC84B\uC84E",5,"\uC855",26,"\uC872\uC873\uC875\uC876\uC877\uC879\uC87B",4,"\uC882\uC884\uC888\uC889\uC88A\uC88E",5,"\uC895",7,"\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"],["a141","\uC8A5\uC8A6\uC8A7\uC8A9",18,"\uC8BE\uC8BF\uC8C0\uC8C1"],["a161","\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD",6,"\uC8D6\uC8D8\uC8DA",5,"\uC8E2\uC8E3\uC8E5"],["a181","\uC8E6",14,"\uC8F6",5,"\uC8FE\uC8FF\uC901\uC902\uC903\uC907",4,"\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008",9,"\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"],["a241","\uC910\uC912",5,"\uC919",18],["a261","\uC92D",6,"\uC935",18],["a281","\uC948",7,"\uC952\uC953\uC955\uC956\uC957\uC959",6,"\uC962\uC964",7,"\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"],["a341","\uC971\uC972\uC973\uC975",6,"\uC97D",10,"\uC98A\uC98B\uC98D\uC98E\uC98F"],["a361","\uC991",6,"\uC99A\uC99C\uC99E",16],["a381","\uC9AF",16,"\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB",4,"\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01",58,"\uFFE6\uFF3D",32,"\uFFE3"],["a441","\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2",5,"\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"],["a461","\uCA05\uCA06\uCA07\uCA0A\uCA0E",5,"\uCA15\uCA16\uCA17\uCA19",12],["a481","\uCA26\uCA27\uCA28\uCA2A",28,"\u3131",93],["a541","\uCA47",4,"\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55",6,"\uCA5E\uCA62",5,"\uCA69\uCA6A"],["a561","\uCA6B",17,"\uCA7E",5,"\uCA85\uCA86"],["a581","\uCA87",16,"\uCA99",14,"\u2170",9],["a5b0","\u2160",9],["a5c1","\u0391",16,"\u03A3",6],["a5e1","\u03B1",16,"\u03C3",6],["a641","\uCAA8",19,"\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"],["a661","\uCAC6",5,"\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA",5,"\uCAE1",6],["a681","\uCAE8\uCAE9\uCAEA\uCAEB\uCAED",6,"\uCAF5",18,"\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543",7],["a741","\uCB0B",4,"\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19",6,"\uCB22",7],["a761","\uCB2A",22,"\uCB42\uCB43\uCB44"],["a781","\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51",6,"\uCB5A\uCB5B\uCB5C\uCB5E",5,"\uCB65",7,"\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399",9,"\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0",9,"\u3380",4,"\u33BA",5,"\u3390",4,"\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"],["a841","\uCB6D",10,"\uCB7A",14],["a861","\uCB89",18,"\uCB9D",6],["a881","\uCBA4",19,"\uCBB9",11,"\xC6\xD0\xAA\u0126"],["a8a6","\u0132"],["a8a8","\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"],["a8b1","\u3260",27,"\u24D0",25,"\u2460",14,"\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"],["a941","\uCBC5",14,"\uCBD5",10],["a961","\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA",18],["a981","\uCBFD",14,"\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15",6,"\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200",27,"\u249C",25,"\u2474",14,"\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"],["aa41","\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31",6,"\uCC3A\uCC3F",4,"\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"],["aa61","\uCC4F",4,"\uCC56\uCC5A",5,"\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69",6,"\uCC71\uCC72"],["aa81","\uCC73\uCC74\uCC76",29,"\u3041",82],["ab41","\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1",6,"\uCCAA\uCCAE",5,"\uCCB6\uCCB7\uCCB9"],["ab61","\uCCBA\uCCBB\uCCBD",6,"\uCCC6\uCCC8\uCCCA",5,"\uCCD1\uCCD2\uCCD3\uCCD5",5],["ab81","\uCCDB",8,"\uCCE5",6,"\uCCED\uCCEE\uCCEF\uCCF1",12,"\u30A1",85],["ac41","\uCCFE\uCCFF\uCD00\uCD02",5,"\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11",6,"\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"],["ac61","\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D",11,"\uCD3A",4],["ac81","\uCD3F",28,"\uCD5D\uCD5E\uCD5F\u0410",5,"\u0401\u0416",25],["acd1","\u0430",5,"\u0451\u0436",25],["ad41","\uCD61\uCD62\uCD63\uCD65",6,"\uCD6E\uCD70\uCD72",5,"\uCD79",7],["ad61","\uCD81",6,"\uCD89",10,"\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"],["ad81","\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA",5,"\uCDB1",18,"\uCDC5"],["ae41","\uCDC6",5,"\uCDCD\uCDCE\uCDCF\uCDD1",16],["ae61","\uCDE2",5,"\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1",6,"\uCDFA\uCDFC\uCDFE",4],["ae81","\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D",6,"\uCE15\uCE16\uCE17\uCE18\uCE1A",5,"\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"],["af41","\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36",19],["af61","\uCE4A",13,"\uCE5A\uCE5B\uCE5D\uCE5E\uCE62",5,"\uCE6A\uCE6C"],["af81","\uCE6E",5,"\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D",6,"\uCE86\uCE88\uCE8A",5,"\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"],["b041","\uCE9A",5,"\uCEA2\uCEA6",5,"\uCEAE",12],["b061","\uCEBB",5,"\uCEC2",19],["b081","\uCED6",13,"\uCEE6\uCEE7\uCEE9\uCEEA\uCEED",6,"\uCEF6\uCEFA",5,"\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10",7,"\uAC19",4,"\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"],["b141","\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09",6,"\uCF12\uCF14\uCF16",5,"\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"],["b161","\uCF25",6,"\uCF2E\uCF32",5,"\uCF39",11],["b181","\uCF45",14,"\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D",6,"\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"],["b241","\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79",6,"\uCF81\uCF82\uCF83\uCF84\uCF86",5,"\uCF8D"],["b261","\uCF8E",18,"\uCFA2",5,"\uCFA9"],["b281","\uCFAA",5,"\uCFB1",18,"\uCFC5",6,"\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"],["b341","\uCFCC",19,"\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"],["b361","\uCFEA",5,"\uCFF2\uCFF4\uCFF6",5,"\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005",5],["b381","\uD00B",5,"\uD012",5,"\uD019",19,"\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB",4,"\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"],["b441","\uD02E",5,"\uD036\uD037\uD039\uD03A\uD03B\uD03D",6,"\uD046\uD048\uD04A",5],["b461","\uD051\uD052\uD053\uD055\uD056\uD057\uD059",6,"\uD061",10,"\uD06E\uD06F"],["b481","\uD071\uD072\uD073\uD075",6,"\uD07E\uD07F\uD080\uD082",18,"\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB",4,"\uB2F3\uB2F4\uB2F5\uB2F7",4,"\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"],["b541","\uD095",14,"\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD",5],["b561","\uD0B3\uD0B6\uD0B8\uD0BA",5,"\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA",5,"\uD0D2\uD0D6",4],["b581","\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5",6,"\uD0EE\uD0F2",5,"\uD0F9",11,"\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"],["b641","\uD105",7,"\uD10E",17],["b661","\uD120",15,"\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"],["b681","\uD13F\uD142\uD146",5,"\uD14E\uD14F\uD151\uD152\uD153\uD155",6,"\uD15E\uD160\uD162",5,"\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"],["b741","\uD16E",13,"\uD17D",6,"\uD185\uD186\uD187\uD189\uD18A"],["b761","\uD18B",20,"\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"],["b781","\uD1A9",6,"\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1",14,"\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"],["b841","\uD1D0",7,"\uD1D9",17],["b861","\uD1EB",8,"\uD1F5\uD1F6\uD1F7\uD1F9",13],["b881","\uD208\uD20A",5,"\uD211",24,"\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE",4,"\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"],["b941","\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235",6,"\uD23E\uD240\uD242",5,"\uD249\uD24A\uD24B\uD24C"],["b961","\uD24D",14,"\uD25D",6,"\uD265\uD266\uD267\uD268"],["b981","\uD269",22,"\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14",4,"\uBC1B",4,"\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"],["ba41","\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296",5,"\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5",6,"\uD2AD"],["ba61","\uD2AE\uD2AF\uD2B0\uD2B2",5,"\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3",4,"\uD2CA\uD2CC",5],["ba81","\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD",6,"\uD2E6",9,"\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"],["bb41","\uD2FB",4,"\uD302\uD304\uD306",5,"\uD30F\uD311\uD312\uD313\uD315\uD317",4,"\uD31E\uD322\uD323"],["bb61","\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331",6,"\uD33A\uD33E",5,"\uD346\uD347\uD348\uD349"],["bb81","\uD34A",31,"\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"],["bc41","\uD36A",17,"\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"],["bc61","\uD388\uD389\uD38A\uD38B\uD38E\uD392",5,"\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1",6,"\uD3AA\uD3AC\uD3AE"],["bc81","\uD3AF",4,"\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD",6,"\uD3C6\uD3C7\uD3CA",5,"\uD3D1",5,"\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C",4,"\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"],["bd41","\uD3D7\uD3D9",7,"\uD3E2\uD3E4",7,"\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"],["bd61","\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402",5,"\uD409",13],["bd81","\uD417",5,"\uD41E",25,"\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"],["be41","\uD438",7,"\uD441\uD442\uD443\uD445",14],["be61","\uD454",7,"\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465",7,"\uD46E\uD470\uD471\uD472"],["be81","\uD473",4,"\uD47A\uD47B\uD47D\uD47E\uD481\uD483",4,"\uD48A\uD48C\uD48E",5,"\uD495",8,"\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4",6,"\uC5CC\uC5CE"],["bf41","\uD49E",10,"\uD4AA",14],["bf61","\uD4B9",18,"\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"],["bf81","\uD4D6",5,"\uD4DD\uD4DE\uD4E0",7,"\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1",6,"\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC",5,"\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"],["c041","\uD4FE",5,"\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D",6,"\uD516\uD518",5],["c061","\uD51E",25],["c081","\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545",6,"\uD54E\uD550\uD552",5,"\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751",7,"\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"],["c141","\uD564\uD566\uD567\uD56A\uD56C\uD56E",5,"\uD576\uD577\uD579\uD57A\uD57B\uD57D",6,"\uD586\uD58A\uD58B"],["c161","\uD58C\uD58D\uD58E\uD58F\uD591",19,"\uD5A6\uD5A7"],["c181","\uD5A8",31,"\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"],["c241","\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3",4,"\uD5DA\uD5DC\uD5DE",5,"\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"],["c261","\uD5EF",4,"\uD5F6\uD5F8\uD5FA",5,"\uD602\uD603\uD605\uD606\uD607\uD609",6,"\uD612"],["c281","\uD616",5,"\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625",7,"\uD62E",9,"\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"],["c341","\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D",4],["c361","\uD662",4,"\uD668\uD66A",5,"\uD672\uD673\uD675",11],["c381","\uD681\uD682\uD684\uD686",5,"\uD68E\uD68F\uD691\uD692\uD693\uD695",7,"\uD69E\uD6A0\uD6A2",5,"\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"],["c441","\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1",7,"\uD6BA\uD6BC",7,"\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"],["c461","\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA",5,"\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9",4],["c481","\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6",5,"\uD6FE\uD6FF\uD701\uD702\uD703\uD705",11,"\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"],["c541","\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721",6,"\uD72A\uD72C\uD72E",5,"\uD736\uD737\uD739"],["c561","\uD73A\uD73B\uD73D",6,"\uD745\uD746\uD748\uD74A",5,"\uD752\uD753\uD755\uD75A",4],["c581","\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775",6,"\uD77E\uD77F\uD780\uD782",5,"\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"],["c641","\uD78D\uD78E\uD78F\uD791",6,"\uD79A\uD79C\uD79E",5],["c6a1","\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"],["c7a1","\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"],["c8a1","\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"],["caa1","\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"],["cba1","\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"],["cca1","\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"],["cda1","\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"],["cea1","\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"],["cfa1","\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"],["d0a1","\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"],["d1a1","\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E",5,"\u90A3\uF914",4,"\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"],["d2a1","\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928",4,"\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933",5,"\u99D1\uF939",10,"\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A",7,"\u5AE9\u8A25\u677B\u7D10\uF952",5,"\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"],["d3a1","\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"],["d4a1","\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"],["d5a1","\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"],["d6a1","\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"],["d7a1","\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"],["d8a1","\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"],["d9a1","\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"],["daa1","\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"],["dba1","\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"],["dca1","\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"],["dda1","\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"],["dea1","\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"],["dfa1","\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"],["e0a1","\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"],["e1a1","\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"],["e2a1","\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"],["e3a1","\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"],["e4a1","\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"],["e5a1","\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"],["e6a1","\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"],["e7a1","\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"],["e8a1","\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"],["e9a1","\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"],["eaa1","\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"],["eba1","\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"],["eca1","\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"],["eda1","\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"],["eea1","\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"],["efa1","\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"],["f0a1","\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"],["f1a1","\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"],["f2a1","\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"],["f3a1","\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"],["f4a1","\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"],["f5a1","\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"],["f6a1","\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"],["f7a1","\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"],["f8a1","\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"],["f9a1","\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"],["faa1","\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"],["fba1","\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"],["fca1","\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"],["fda1","\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"]]});var Cu=q((vL,AT)=>{AT.exports=[["0","\0",127],["a140","\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"],["a1a1","\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62",4,"\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"],["a240","\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581",7,"\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"],["a2a1","\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10",9,"\u2160",9,"\u3021",8,"\u5341\u5344\u5345\uFF21",25,"\uFF41",21],["a340","\uFF57\uFF58\uFF59\uFF5A\u0391",16,"\u03A3",6,"\u03B1",16,"\u03C3",6,"\u3105",10],["a3a1","\u3110",25,"\u02D9\u02C9\u02CA\u02C7\u02CB"],["a3e1","\u20AC"],["a440","\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"],["a4a1","\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"],["a540","\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"],["a5a1","\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"],["a640","\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"],["a6a1","\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"],["a740","\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"],["a7a1","\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"],["a840","\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"],["a8a1","\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"],["a940","\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"],["a9a1","\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"],["aa40","\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"],["aaa1","\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"],["ab40","\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"],["aba1","\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"],["ac40","\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"],["aca1","\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"],["ad40","\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"],["ada1","\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"],["ae40","\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"],["aea1","\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"],["af40","\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"],["afa1","\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"],["b040","\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"],["b0a1","\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"],["b140","\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"],["b1a1","\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"],["b240","\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"],["b2a1","\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"],["b340","\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"],["b3a1","\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"],["b440","\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"],["b4a1","\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"],["b540","\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"],["b5a1","\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"],["b640","\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"],["b6a1","\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"],["b740","\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"],["b7a1","\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"],["b840","\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"],["b8a1","\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"],["b940","\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"],["b9a1","\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"],["ba40","\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"],["baa1","\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"],["bb40","\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"],["bba1","\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"],["bc40","\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"],["bca1","\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"],["bd40","\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"],["bda1","\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"],["be40","\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"],["bea1","\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"],["bf40","\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"],["bfa1","\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"],["c040","\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"],["c0a1","\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"],["c140","\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"],["c1a1","\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"],["c240","\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"],["c2a1","\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"],["c340","\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"],["c3a1","\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"],["c440","\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"],["c4a1","\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"],["c540","\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"],["c5a1","\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"],["c640","\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"],["c940","\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"],["c9a1","\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"],["ca40","\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"],["caa1","\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"],["cb40","\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"],["cba1","\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"],["cc40","\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"],["cca1","\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"],["cd40","\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"],["cda1","\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"],["ce40","\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"],["cea1","\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"],["cf40","\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"],["cfa1","\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"],["d040","\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"],["d0a1","\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"],["d140","\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"],["d1a1","\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"],["d240","\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"],["d2a1","\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"],["d340","\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"],["d3a1","\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"],["d440","\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"],["d4a1","\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"],["d540","\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"],["d5a1","\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"],["d640","\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"],["d6a1","\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"],["d740","\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"],["d7a1","\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"],["d840","\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"],["d8a1","\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"],["d940","\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"],["d9a1","\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"],["da40","\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"],["daa1","\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"],["db40","\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"],["dba1","\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"],["dc40","\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"],["dca1","\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"],["dd40","\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"],["dda1","\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"],["de40","\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"],["dea1","\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"],["df40","\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"],["dfa1","\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"],["e040","\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"],["e0a1","\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"],["e140","\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"],["e1a1","\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"],["e240","\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"],["e2a1","\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"],["e340","\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"],["e3a1","\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"],["e440","\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"],["e4a1","\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"],["e540","\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"],["e5a1","\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"],["e640","\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"],["e6a1","\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"],["e740","\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"],["e7a1","\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"],["e840","\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"],["e8a1","\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"],["e940","\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"],["e9a1","\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"],["ea40","\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"],["eaa1","\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"],["eb40","\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"],["eba1","\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"],["ec40","\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"],["eca1","\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"],["ed40","\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"],["eda1","\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"],["ee40","\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"],["eea1","\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"],["ef40","\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"],["efa1","\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"],["f040","\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"],["f0a1","\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"],["f140","\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"],["f1a1","\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"],["f240","\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"],["f2a1","\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"],["f340","\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"],["f3a1","\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"],["f440","\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"],["f4a1","\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"],["f540","\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"],["f5a1","\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"],["f640","\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"],["f6a1","\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"],["f740","\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"],["f7a1","\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"],["f840","\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"],["f8a1","\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"],["f940","\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"],["f9a1","\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"]]});var Cm=q((gL,NT)=>{NT.exports=[["8740","\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"],["8767","\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"],["87a1","\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"],["8840","\u31C0",4,"\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"],["88a1","\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"],["8940","\u{2A3A9}\u{21145}"],["8943","\u650A"],["8946","\u4E3D\u6EDD\u9D4E\u91DF"],["894c","\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"],["89a1","\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"],["89ab","\u918C\u78B8\u915E\u80BC"],["89b0","\u8D0B\u80F6\u{209E7}"],["89b5","\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"],["89c1","\u6E9A\u823E\u7519"],["89c5","\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"],["8a40","\u{27D84}\u5525"],["8a43","\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"],["8a64","\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"],["8a76","\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"],["8aa1","\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"],["8aac","\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"],["8ab2","\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"],["8abb","\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"],["8ac9","\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"],["8ace","\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"],["8adf","\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"],["8af6","\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"],["8b40","\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"],["8b55","\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"],["8ba1","\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"],["8bde","\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"],["8c40","\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"],["8ca1","\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"],["8ca7","\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"],["8cc9","\u9868\u676B\u4276\u573D"],["8cce","\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"],["8ce6","\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"],["8d40","\u{20B9F}"],["8d42","\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"],["8da1","\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"],["8e40","\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"],["8ea1","\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"],["8f40","\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"],["8fa1","\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"],["9040","\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"],["90a1","\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"],["9140","\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"],["91a1","\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"],["9240","\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"],["92a1","\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"],["9340","\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"],["93a1","\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"],["9440","\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"],["94a1","\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"],["9540","\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"],["95a1","\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"],["9640","\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"],["96a1","\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"],["9740","\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"],["97a1","\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"],["9840","\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"],["98a1","\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"],["9940","\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"],["99a1","\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"],["9a40","\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"],["9aa1","\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"],["9b40","\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"],["9b62","\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"],["9ba1","\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"],["9c40","\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"],["9ca1","\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"],["9d40","\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"],["9da1","\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"],["9e40","\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"],["9ea1","\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"],["9ead","\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"],["9ec5","\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"],["9ef5","\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"],["9f40","\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"],["9f4f","\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"],["9fa1","\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"],["9fae","\u9159\u9681\u915C"],["9fb2","\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"],["9fc1","\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"],["9fc9","\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"],["9fdb","\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"],["9fe7","\u6BFA\u8818\u7F78"],["9feb","\u5620\u{2A64A}\u8E77\u9F53"],["9ff0","\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"],["a040","\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"],["a055","\u{2183B}\u{26E05}"],["a058","\u8A7E\u{2251B}"],["a05b","\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"],["a063","\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"],["a073","\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"],["a0a1","\u5D57\u{28BC2}\u8FDA\u{28E39}"],["a0a6","\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"],["a0ae","\u77FE"],["a0b0","\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"],["a0d4","\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"],["a0e2","\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"],["a3c0","\u2400",31,"\u2421"],["c6a1","\u2460",9,"\u2474",9,"\u2170",9,"\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041",23],["c740","\u3059",58,"\u30A1\u30A2\u30A3\u30A4"],["c7a1","\u30A5",81,"\u0410",5,"\u0401\u0416",4],["c840","\u041B",26,"\u0451\u0436",25,"\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"],["c8a1","\u9FB0\u5188\u9FB1\u{27607}"],["c8cd","\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"],["c8f5","\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"],["f9fe","\uFFED"],["fa40","\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"],["faa1","\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"],["fb40","\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"],["fba1","\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"],["fc40","\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"],["fca1","\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"],["fd40","\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"],["fda1","\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"],["fe40","\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"],["fea1","\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"]]});var Am=q((yL,Im)=>{"use strict";Im.exports={shiftjis:{type:"_dbcs",table:function(){return Rm()},encodeAdd:{"\xA5":92,"\u203E":126},encodeSkipVals:[{from:60736,to:63808}]},csshiftjis:"shiftjis",mskanji:"shiftjis",sjis:"shiftjis",windows31j:"shiftjis",ms31j:"shiftjis",xsjis:"shiftjis",windows932:"shiftjis",ms932:"shiftjis",932:"shiftjis",cp932:"shiftjis",eucjp:{type:"_dbcs",table:function(){return Pm()},encodeAdd:{"\xA5":92,"\u203E":126}},gb2312:"cp936",gb231280:"cp936",gb23121980:"cp936",csgb2312:"cp936",csiso58gb231280:"cp936",euccn:"cp936",windows936:"cp936",ms936:"cp936",936:"cp936",cp936:{type:"_dbcs",table:function(){return wo()}},gbk:{type:"_dbcs",table:function(){return wo().concat(ku())}},xgbk:"gbk",isoir58:"gbk",gb18030:{type:"_dbcs",table:function(){return wo().concat(ku())},gb18030:function(){return Om()},encodeSkipVals:[128],encodeAdd:{"\u20AC":41699}},chinese:"gb18030",windows949:"cp949",ms949:"cp949",949:"cp949",cp949:{type:"_dbcs",table:function(){return km()}},cseuckr:"cp949",csksc56011987:"cp949",euckr:"cp949",isoir149:"cp949",korean:"cp949",ksc56011987:"cp949",ksc56011989:"cp949",ksc5601:"cp949",windows950:"cp950",ms950:"cp950",950:"cp950",cp950:{type:"_dbcs",table:function(){return Cu()}},big5:"big5hkscs",big5hkscs:{type:"_dbcs",table:function(){return Cu().concat(Cm())},encodeSkipVals:[41676]},cnbig5:"big5hkscs",csbig5:"big5hkscs",xxbig5:"big5hkscs"}});var $m=q((Dm,Js)=>{"use strict";var Nm=[dm(),mm(),vm(),ym(),xm(),Sm(),Tm(),Am()];for(To=0;To{"use strict";var jm=require("buffer").Buffer,Po=require("stream").Transform;Mm.exports=function(a){a.encodeStream=function(r,t){return new Ga(a.getEncoder(r,t),t)},a.decodeStream=function(r,t){return new ba(a.getDecoder(r,t),t)},a.supportsStreams=!0,a.IconvLiteEncoderStream=Ga,a.IconvLiteDecoderStream=ba,a._collect=ba.prototype.collect};function Ga(a,e){this.conv=a,e=e||{},e.decodeStrings=!1,Po.call(this,e)}Ga.prototype=Object.create(Po.prototype,{constructor:{value:Ga}});Ga.prototype._transform=function(a,e,r){if(typeof a!="string")return r(new Error("Iconv encoding stream needs strings as its input."));try{var t=this.conv.write(a);t&&t.length&&this.push(t),r()}catch(s){r(s)}};Ga.prototype._flush=function(a){try{var e=this.conv.end();e&&e.length&&this.push(e),a()}catch(r){a(r)}};Ga.prototype.collect=function(a){var e=[];return this.on("error",a),this.on("data",function(r){e.push(r)}),this.on("end",function(){a(null,jm.concat(e))}),this};function ba(a,e){this.conv=a,e=e||{},e.encoding=this.encoding="utf8",Po.call(this,e)}ba.prototype=Object.create(Po.prototype,{constructor:{value:ba}});ba.prototype._transform=function(a,e,r){if(!jm.isBuffer(a))return r(new Error("Iconv decoding stream needs buffers as its input."));try{var t=this.conv.write(a);t&&t.length&&this.push(t,this.encoding),r()}catch(s){r(s)}};ba.prototype._flush=function(a){try{var e=this.conv.end();e&&e.length&&this.push(e,this.encoding),a()}catch(r){a(r)}};ba.prototype.collect=function(a){var e="";return this.on("error",a),this.on("data",function(r){e+=r}),this.on("end",function(){a(null,e)}),this}});var Fm=q((xL,qm)=>{"use strict";var ut=require("buffer").Buffer;qm.exports=function(a){var e=void 0;a.supportsNodeEncodingsExtension=!(ut.from||new ut(0)instanceof Uint8Array),a.extendNodeEncodings=function(){if(!e){if(e={},!a.supportsNodeEncodingsExtension){console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"),console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility");return}var t={hex:!0,utf8:!0,"utf-8":!0,ascii:!0,binary:!0,base64:!0,ucs2:!0,"ucs-2":!0,utf16le:!0,"utf-16le":!0};ut.isNativeEncoding=function(n){return n&&t[n.toLowerCase()]};var s=require("buffer").SlowBuffer;if(e.SlowBufferToString=s.prototype.toString,s.prototype.toString=function(n,o,l){return n=String(n||"utf8").toLowerCase(),ut.isNativeEncoding(n)?e.SlowBufferToString.call(this,n,o,l):(typeof o>"u"&&(o=0),typeof l>"u"&&(l=this.length),a.decode(this.slice(o,l),n))},e.SlowBufferWrite=s.prototype.write,s.prototype.write=function(n,o,l,c){if(isFinite(o))isFinite(l)||(c=l,l=void 0);else{var u=c;c=o,o=l,l=u}o=+o||0;var p=this.length-o;if(l?(l=+l,l>p&&(l=p)):l=p,c=String(c||"utf8").toLowerCase(),ut.isNativeEncoding(c))return e.SlowBufferWrite.call(this,n,o,l,c);if(n.length>0&&(l<0||o<0))throw new RangeError("attempt to write beyond buffer bounds");var f=a.encode(n,c);return f.length"u"&&(o=0),typeof l>"u"&&(l=this.length),a.decode(this.slice(o,l),n))},e.BufferWrite=ut.prototype.write,ut.prototype.write=function(n,o,l,c){var u=o,p=l,f=c;if(isFinite(o))isFinite(l)||(c=l,l=void 0);else{var d=c;c=o,o=l,l=d}if(c=String(c||"utf8").toLowerCase(),ut.isNativeEncoding(c))return e.BufferWrite.call(this,n,u,p,f);o=+o||0;var v=this.length-o;if(l?(l=+l,l>v&&(l=v)):l=v,n.length>0&&(l<0||o<0))throw new RangeError("attempt to write beyond buffer bounds");var h=a.encode(n,c);return h.length{"use strict";var zm=Ha().Buffer,Bm=lm(),et=Hm.exports;et.encodings=null;et.defaultCharUnicode="\uFFFD";et.defaultCharSingleByte="?";et.encode=function(e,r,t){e=""+(e||"");var s=et.getEncoder(r,t),i=s.write(e),n=s.end();return n&&n.length>0?zm.concat([i,n]):i};et.decode=function(e,r,t){typeof e=="string"&&(et.skipDecodeWarning||(console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"),et.skipDecodeWarning=!0),e=zm.from(""+(e||""),"binary"));var s=et.getDecoder(r,t),i=s.write(e),n=s.end();return n?i+n:i};et.encodingExists=function(e){try{return et.getCodec(e),!0}catch{return!1}};et.toEncoding=et.encode;et.fromEncoding=et.decode;et._codecDataCache={};et.getCodec=function(e){et.encodings||(et.encodings=$m());for(var r=et._canonicalizeEncoding(e),t={};;){var s=et._codecDataCache[r];if(s)return s;var i=et.encodings[r];switch(typeof i){case"string":r=i;break;case"object":for(var n in i)t[n]=i[n];t.encodingName||(t.encodingName=r),r=i.type;break;case"function":return t.encodingName||(t.encodingName=r),s=new i(t,et),et._codecDataCache[t.encodingName]=s,s;default:throw new Error("Encoding not recognized: '"+e+"' (searched as: '"+r+"')")}}};et._canonicalizeEncoding=function(a){return(""+a).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g,"")};et.getEncoder=function(e,r){var t=et.getCodec(e),s=new t.encoder(r,t);return t.bomAware&&r&&r.addBOM&&(s=new Bm.PrependBOM(s,r)),s};et.getDecoder=function(e,r){var t=et.getCodec(e),s=new t.decoder(r,t);return t.bomAware&&!(r&&r.stripBOM===!1)&&(s=new Bm.StripBOM(s,r)),s};var Um=typeof process<"u"&&process.versions&&process.versions.node;Um&&(Iu=Um.split(".").map(Number),(Iu[0]>0||Iu[1]>=10)&&Lm()(et),Fm()(et));var Iu});var Oo=q((SL,Vm)=>{"use strict";Vm.exports=$T;function DT(a){for(var e=a.listeners("data"),r=0;r{"use strict";var Gm=BT(),jT=Vs(),Wa=za(),MT=Au(),LT=Oo();Zm.exports=UT;var qT=/^Encoding not recognized: /;function FT(a){if(!a)return null;try{return MT.getDecoder(a)}catch(e){throw qT.test(e.message)?Wa(415,"specified encoding unsupported",{encoding:a,type:"encoding.unsupported"}):e}}function UT(a,e,r){var t=r,s=e||{};if(a===void 0)throw new TypeError("argument stream is required");if(typeof a!="object"||a===null||typeof a.on!="function")throw new TypeError("argument stream must be a stream");if((e===!0||typeof e=="string")&&(s={encoding:e}),typeof e=="function"&&(t=e,s={}),t!==void 0&&typeof t!="function")throw new TypeError("argument callback must be a function");if(!t&&!global.Promise)throw new TypeError("argument callback is required");var i=s.encoding!==!0?s.encoding:"utf-8",n=jT.parse(s.limit),o=s.length!=null&&!isNaN(s.length)?parseInt(s.length,10):null;return t?Wm(a,i,o,n,HT(t)):new Promise(function(c,u){Wm(a,i,o,n,function(f,d){if(f)return u(f);c(d)})})}function zT(a){LT(a),typeof a.pause=="function"&&a.pause()}function Wm(a,e,r,t,s){var i=!1,n=!0;if(t!==null&&r!==null&&r>t)return p(Wa(413,"request entity too large",{expected:r,length:r,limit:t,type:"entity.too.large"}));var o=a._readableState;if(a._decoder||o&&(o.encoding||o.decoder))return p(Wa(500,"stream encoding should not be set",{type:"stream.encoding.set"}));if(typeof a.readable<"u"&&!a.readable)return p(Wa(500,"stream is not readable",{type:"stream.not.readable"}));var l=0,c;try{c=FT(e)}catch(m){return p(m)}var u=c?"":[];a.on("aborted",f),a.on("close",h),a.on("data",d),a.on("end",v),a.on("error",v),n=!1;function p(){for(var m=new Array(arguments.length),y=0;yt?p(Wa(413,"request entity too large",{limit:t,received:l,type:"entity.too.large"})):c?u+=c.write(m):u.push(m))}function v(m){if(!i){if(m)return p(m);if(r!==null&&l!==r)p(Wa(400,"request size did not match content length",{expected:r,length:r,received:l,type:"request.size.invalid"}));else{var y=c?u+(c.end()||""):Buffer.concat(u);p(null,y)}}}function h(){u=null,a.removeListener("aborted",f),a.removeListener("data",d),a.removeListener("end",v),a.removeListener("error",v),a.removeListener("close",h)}}function BT(){try{return require("async_hooks")}catch{return{}}}function HT(a){var e;return Gm.AsyncResource&&(e=new Gm.AsyncResource(a.name||"bound-anonymous-fn")),!e||!e.runInAsyncScope?a:e.runInAsyncScope.bind(e,a,null)}});var Km=q((wL,Qm)=>{"use strict";Qm.exports=VT;function VT(a,e){if(!Array.isArray(a))throw new TypeError("arg must be an array of [ee, events...] arrays");for(var r=[],t=0;t{"use strict";Nu.exports=ZT;Nu.exports.isFinished=eh;var Jm=YT(),Ym=Km(),WT=typeof setImmediate=="function"?setImmediate:function(a){process.nextTick(a.bind.apply(a,arguments))};function ZT(a,e){return eh(a)!==!1?(WT(e,null,a),a):(QT(a,eR(e)),a)}function eh(a){var e=a.socket;if(typeof a.finished=="boolean")return!!(a.finished||e&&!e.writable);if(typeof a.complete=="boolean")return!!(a.upgrade||!e||!e.readable||a.complete&&!a.readable)}function XT(a,e){var r,t,s=!1;function i(o){r.cancel(),t.cancel(),s=!0,e(o)}r=t=Ym([[a,"end","finish"]],i);function n(o){a.removeListener("socket",n),!s&&r===t&&(t=Ym([[o,"error","close"]],i))}if(a.socket){n(a.socket);return}a.on("socket",n),a.socket===void 0&&JT(a,n)}function QT(a,e){var r=a.__onFinished;(!r||!r.queue)&&(r=a.__onFinished=KT(a),XT(a,r)),r.queue.push(e)}function KT(a){function e(r){if(a.__onFinished===e&&(a.__onFinished=null),!!e.queue){var t=e.queue;e.queue=null;for(var s=0;s{"use strict";var xa=za(),tR=au(),rR=Xm(),th=Au(),rh=pi(),aR=Oo(),ah=require("zlib");sh.exports=sR;function sR(a,e,r,t,s,i){var n,o=i,l;a._body=!0;var c=o.encoding!==null?o.encoding:null,u=o.verify;try{l=nR(a,s,o.inflate),n=l.length,l.length=void 0}catch(p){return r(p)}if(o.length=n,o.encoding=u?null:c,o.encoding===null&&c!==null&&!th.encodingExists(c))return r(xa(415,'unsupported charset "'+c.toUpperCase()+'"',{charset:c.toLowerCase(),type:"charset.unsupported"}));s("read body"),rR(l,o,function(p,f){if(p){var d;p.type==="encoding.unsupported"?d=xa(415,'unsupported charset "'+c.toUpperCase()+'"',{charset:c.toLowerCase(),type:"charset.unsupported"}):d=xa(400,p),l!==a&&(aR(a),tR(l,!0)),iR(a,function(){r(xa(400,d))});return}if(u)try{s("verify body"),u(a,e,f,c)}catch(h){r(xa(403,h,{body:f,type:h.type||"entity.verify.failed"}));return}var v=f;try{s("parse body"),v=typeof f!="string"&&c!==null?th.decode(f,c):f,a.body=t(v)}catch(h){r(xa(400,h,{body:v,type:h.type||"entity.parse.failed"}));return}r()})}function nR(a,e,r){var t=(a.headers["content-encoding"]||"identity").toLowerCase(),s=a.headers["content-length"],i;if(e('content-encoding "%s"',t),r===!1&&t!=="identity")throw xa(415,"content encoding unsupported",{encoding:t,type:"encoding.unsupported"});switch(t){case"deflate":i=ah.createInflate(),e("inflate body"),a.pipe(i);break;case"gzip":i=ah.createGunzip(),e("gunzip body"),a.pipe(i);break;case"identity":i=a,i.length=s;break;default:throw xa(415,'unsupported content encoding "'+t+'"',{encoding:t,type:"encoding.unsupported"})}return i}function iR(a,e){rh.isFinished(a)?e(null):(rh(a,e),a.resume())}});var ch=q(Du=>{var nh=/; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g,oR=/^[\u0020-\u007e\u0080-\u00ff]+$/,oh=/^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/,cR=/\\([\u0000-\u007f])/g,lR=/([\\"])/g,uR=/^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/,ih=/^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/,pR=/^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;Du.format=dR;Du.parse=fR;function dR(a){if(!a||typeof a!="object")throw new TypeError("argument obj is required");var e=a.parameters,r=a.subtype,t=a.suffix,s=a.type;if(!s||!ih.test(s))throw new TypeError("invalid type");if(!r||!uR.test(r))throw new TypeError("invalid subtype");var i=s+"/"+r;if(t){if(!ih.test(t))throw new TypeError("invalid suffix");i+="+"+t}if(e&&typeof e=="object")for(var n,o=Object.keys(e).sort(),l=0;l0&&!oR.test(e))throw new TypeError("invalid parameter value");return'"'+e.replace(lR,"\\$1")+'"'}function vR(a){var e=pR.exec(a.toLowerCase());if(!e)throw new TypeError("invalid media type");var r=e[1],t=e[2],s,i=t.lastIndexOf("+");i!==-1&&(s=t.substr(i+1),t=t.substr(0,i));var n={type:r,subtype:t,suffix:s};return n}});var lh=q((OL,gR)=>{gR.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hl7cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var ph=q((kL,uh)=>{uh.exports=lh()});var $u=q(Mt=>{"use strict";var ko=ph(),yR=require("path").extname,dh=/^\s*([^;\s]*)(?:;|\s|$)/,bR=/^text\//i;Mt.charset=fh;Mt.charsets={lookup:fh};Mt.contentType=xR;Mt.extension=_R;Mt.extensions=Object.create(null);Mt.lookup=SR;Mt.types=Object.create(null);ER(Mt.extensions,Mt.types);function fh(a){if(!a||typeof a!="string")return!1;var e=dh.exec(a),r=e&&ko[e[1].toLowerCase()];return r&&r.charset?r.charset:e&&bR.test(e[1])?"UTF-8":!1}function xR(a){if(!a||typeof a!="string")return!1;var e=a.indexOf("/")===-1?Mt.lookup(a):a;if(!e)return!1;if(e.indexOf("charset")===-1){var r=Mt.charset(e);r&&(e+="; charset="+r.toLowerCase())}return e}function _R(a){if(!a||typeof a!="string")return!1;var e=dh.exec(a),r=e&&Mt.extensions[e[1].toLowerCase()];return!r||!r.length?!1:r[0]}function SR(a){if(!a||typeof a!="string")return!1;var e=yR("x."+a).toLowerCase().substr(1);return e&&Mt.types[e]||!1}function ER(a,e){var r=["nginx","apache",void 0,"iana"];Object.keys(ko).forEach(function(s){var i=ko[s],n=i.extensions;if(!(!n||!n.length)){a[s]=n;for(var o=0;ou||c===u&&e[l].substr(0,12)==="application/"))continue}e[l]=s}}})}});var en=q((IL,Ys)=>{"use strict";var mh=ch(),wR=$u();Ys.exports=TR;Ys.exports.is=hh;Ys.exports.hasBody=vh;Ys.exports.normalize=gh;Ys.exports.match=yh;function hh(a,e){var r,t=e,s=PR(a);if(!s)return!1;if(t&&!Array.isArray(t))for(t=new Array(arguments.length-1),r=0;r2){r=new Array(arguments.length-1);for(var t=0;t{"use strict";var OR=Vs(),kR=ei(),CR=za(),_a=rr()("body-parser:json"),IR=di(),xh=en();Sh.exports=DR;var AR=/^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/,bh="#",NR=/#+/g;function DR(a){var e=a||{},r=typeof e.limit!="number"?OR.parse(e.limit||"100kb"):e.limit,t=e.inflate!==!1,s=e.reviver,i=e.strict!==!1,n=e.type||"application/json",o=e.verify||!1;if(o!==!1&&typeof o!="function")throw new TypeError("option verify must be function");var l=typeof n!="function"?LR(n):n;function c(u){if(u.length===0)return{};if(i){var p=jR(u);if(p!=="{"&&p!=="[")throw _a("strict violation"),$R(u,p)}try{return _a("parse json"),JSON.parse(u,s)}catch(f){throw _h(f,{message:f.message,stack:f.stack})}}return function(p,f,d){if(p._body){_a("body already parsed"),d();return}if(p.body=p.body||{},!xh.hasBody(p)){_a("skip empty body"),d();return}if(_a("content-type %j",p.headers["content-type"]),!l(p)){_a("skip parsing"),d();return}var v=MR(p)||"utf-8";if(v.slice(0,4)!=="utf-"){_a("invalid charset"),d(CR(415,'unsupported charset "'+v.toUpperCase()+'"',{charset:v,type:"charset.unsupported"}));return}IR(p,f,d,c,_a,{encoding:v,inflate:t,limit:r,verify:o})}}function $R(a,e){var r=a.indexOf(e),t="";if(r!==-1){t=a.substring(0,r)+bh;for(var s=r+1;s{"use strict";var qR=Vs(),fi=rr()("body-parser:raw"),FR=di(),wh=en();Th.exports=UR;function UR(a){var e=a||{},r=e.inflate!==!1,t=typeof e.limit!="number"?qR.parse(e.limit||"100kb"):e.limit,s=e.type||"application/octet-stream",i=e.verify||!1;if(i!==!1&&typeof i!="function")throw new TypeError("option verify must be function");var n=typeof s!="function"?zR(s):s;function o(l){return l}return function(c,u,p){if(c._body){fi("body already parsed"),p();return}if(c.body=c.body||{},!wh.hasBody(c)){fi("skip empty body"),p();return}if(fi("content-type %j",c.headers["content-type"]),!n(c)){fi("skip parsing"),p();return}FR(c,u,p,o,fi,{encoding:null,inflate:r,limit:t,verify:i})}}function zR(a){return function(r){return!!wh(r,a)}}});var kh=q((DL,Oh)=>{"use strict";var BR=Vs(),HR=ei(),mi=rr()("body-parser:text"),VR=di(),Ph=en();Oh.exports=GR;function GR(a){var e=a||{},r=e.defaultCharset||"utf-8",t=e.inflate!==!1,s=typeof e.limit!="number"?BR.parse(e.limit||"100kb"):e.limit,i=e.type||"text/plain",n=e.verify||!1;if(n!==!1&&typeof n!="function")throw new TypeError("option verify must be function");var o=typeof i!="function"?ZR(i):i;function l(c){return c}return function(u,p,f){if(u._body){mi("body already parsed"),f();return}if(u.body=u.body||{},!Ph.hasBody(u)){mi("skip empty body"),f();return}if(mi("content-type %j",u.headers["content-type"]),!o(u)){mi("skip parsing"),f();return}var d=WR(u)||r;VR(u,p,f,l,mi,{encoding:d,inflate:t,limit:s,verify:n})}}function WR(a){try{return(HR.parse(a).parameters.charset||"").toLowerCase()}catch{return}}function ZR(a){return function(r){return!!Ph(r,a)}}});var Za=q(($L,Ch)=>{"use strict";Ch.exports=TypeError});var Ah=q((jL,Ih)=>{Ih.exports=require("util").inspect});var bi=q((ML,Jh)=>{var Vu=typeof Map=="function"&&Map.prototype,ju=Object.getOwnPropertyDescriptor&&Vu?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,Io=Vu&&ju&&typeof ju.get=="function"?ju.get:null,Nh=Vu&&Map.prototype.forEach,Gu=typeof Set=="function"&&Set.prototype,Mu=Object.getOwnPropertyDescriptor&&Gu?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,Ao=Gu&&Mu&&typeof Mu.get=="function"?Mu.get:null,Dh=Gu&&Set.prototype.forEach,XR=typeof WeakMap=="function"&&WeakMap.prototype,vi=XR?WeakMap.prototype.has:null,QR=typeof WeakSet=="function"&&WeakSet.prototype,gi=QR?WeakSet.prototype.has:null,KR=typeof WeakRef=="function"&&WeakRef.prototype,$h=KR?WeakRef.prototype.deref:null,JR=Boolean.prototype.valueOf,YR=Object.prototype.toString,eP=Function.prototype.toString,tP=String.prototype.match,Wu=String.prototype.slice,Sa=String.prototype.replace,rP=String.prototype.toUpperCase,jh=String.prototype.toLowerCase,Vh=RegExp.prototype.test,Mh=Array.prototype.concat,$r=Array.prototype.join,aP=Array.prototype.slice,Lh=Math.floor,Fu=typeof BigInt=="function"?BigInt.prototype.valueOf:null,Lu=Object.getOwnPropertySymbols,Uu=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,tn=typeof Symbol=="function"&&typeof Symbol.iterator=="object",yi=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===tn||!0)?Symbol.toStringTag:null,Gh=Object.prototype.propertyIsEnumerable,qh=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(a){return a.__proto__}:null);function Fh(a,e){if(a===1/0||a===-1/0||a!==a||a&&a>-1e3&&a<1e3||Vh.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof a=="number"){var t=a<0?-Lh(-a):Lh(a);if(t!==a){var s=String(t),i=Wu.call(e,s.length+1);return Sa.call(s,r,"$&_")+"."+Sa.call(Sa.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return Sa.call(e,r,"$&_")}var zu=Ah(),Uh=zu.custom,zh=Xh(Uh)?Uh:null,Wh={__proto__:null,double:'"',single:"'"},sP={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};Jh.exports=function a(e,r,t,s){var i=r||{};if(ea(i,"quoteStyle")&&!ea(Wh,i.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(ea(i,"maxStringLength")&&(typeof i.maxStringLength=="number"?i.maxStringLength<0&&i.maxStringLength!==1/0:i.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var n=ea(i,"customInspect")?i.customInspect:!0;if(typeof n!="boolean"&&n!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(ea(i,"indent")&&i.indent!==null&&i.indent!==" "&&!(parseInt(i.indent,10)===i.indent&&i.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(ea(i,"numericSeparator")&&typeof i.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var o=i.numericSeparator;if(typeof e>"u")return"undefined";if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="string")return Kh(e,i);if(typeof e=="number"){if(e===0)return 1/0/e>0?"0":"-0";var l=String(e);return o?Fh(e,l):l}if(typeof e=="bigint"){var c=String(e)+"n";return o?Fh(e,c):c}var u=typeof i.depth>"u"?5:i.depth;if(typeof t>"u"&&(t=0),t>=u&&u>0&&typeof e=="object")return Bu(e)?"[Array]":"[Object]";var p=SP(i,t);if(typeof s>"u")s=[];else if(Qh(s,e)>=0)return"[Circular]";function f(O,$,F){if($&&(s=aP.call(s),s.push($)),F){var B={depth:i.depth};return ea(i,"quoteStyle")&&(B.quoteStyle=i.quoteStyle),a(O,B,t+1,s)}return a(O,i,t+1,s)}if(typeof e=="function"&&!Bh(e)){var d=fP(e),v=Co(e,f);return"[Function"+(d?": "+d:" (anonymous)")+"]"+(v.length>0?" { "+$r.call(v,", ")+" }":"")}if(Xh(e)){var h=tn?Sa.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):Uu.call(e);return typeof e=="object"&&!tn?hi(h):h}if(bP(e)){for(var m="<"+jh.call(String(e.nodeName)),y=e.attributes||[],g=0;g",m}if(Bu(e)){if(e.length===0)return"[]";var b=Co(e,f);return p&&!_P(b)?"["+Hu(b,p)+"]":"[ "+$r.call(b,", ")+" ]"}if(oP(e)){var w=Co(e,f);return!("cause"in Error.prototype)&&"cause"in e&&!Gh.call(e,"cause")?"{ ["+String(e)+"] "+$r.call(Mh.call("[cause]: "+f(e.cause),w),", ")+" }":w.length===0?"["+String(e)+"]":"{ ["+String(e)+"] "+$r.call(w,", ")+" }"}if(typeof e=="object"&&n){if(zh&&typeof e[zh]=="function"&&zu)return zu(e,{depth:u-t});if(n!=="symbol"&&typeof e.inspect=="function")return e.inspect()}if(mP(e)){var P=[];return Nh&&Nh.call(e,function(O,$){P.push(f($,e,!0)+" => "+f(O,e))}),Hh("Map",Io.call(e),P,p)}if(gP(e)){var T=[];return Dh&&Dh.call(e,function(O){T.push(f(O,e))}),Hh("Set",Ao.call(e),T,p)}if(hP(e))return qu("WeakMap");if(yP(e))return qu("WeakSet");if(vP(e))return qu("WeakRef");if(lP(e))return hi(f(Number(e)));if(pP(e))return hi(f(Fu.call(e)));if(uP(e))return hi(JR.call(e));if(cP(e))return hi(f(String(e)));if(typeof window<"u"&&e===window)return"{ [object Window] }";if(typeof globalThis<"u"&&e===globalThis||typeof global<"u"&&e===global)return"{ [object globalThis] }";if(!iP(e)&&!Bh(e)){var C=Co(e,f),D=qh?qh(e)===Object.prototype:e instanceof Object||e.constructor===Object,A=e instanceof Object?"":"null prototype",j=!D&&yi&&Object(e)===e&&yi in e?Wu.call(Ea(e),8,-1):A?"Object":"",N=D||typeof e.constructor!="function"?"":e.constructor.name?e.constructor.name+" ":"",k=N+(j||A?"["+$r.call(Mh.call([],j||[],A||[]),": ")+"] ":"");return C.length===0?k+"{}":p?k+"{"+Hu(C,p)+"}":k+"{ "+$r.call(C,", ")+" }"}return String(e)};function Zh(a,e,r){var t=r.quoteStyle||e,s=Wh[t];return s+a+s}function nP(a){return Sa.call(String(a),/"/g,""")}function Xa(a){return!yi||!(typeof a=="object"&&(yi in a||typeof a[yi]<"u"))}function Bu(a){return Ea(a)==="[object Array]"&&Xa(a)}function iP(a){return Ea(a)==="[object Date]"&&Xa(a)}function Bh(a){return Ea(a)==="[object RegExp]"&&Xa(a)}function oP(a){return Ea(a)==="[object Error]"&&Xa(a)}function cP(a){return Ea(a)==="[object String]"&&Xa(a)}function lP(a){return Ea(a)==="[object Number]"&&Xa(a)}function uP(a){return Ea(a)==="[object Boolean]"&&Xa(a)}function Xh(a){if(tn)return a&&typeof a=="object"&&a instanceof Symbol;if(typeof a=="symbol")return!0;if(!a||typeof a!="object"||!Uu)return!1;try{return Uu.call(a),!0}catch{}return!1}function pP(a){if(!a||typeof a!="object"||!Fu)return!1;try{return Fu.call(a),!0}catch{}return!1}var dP=Object.prototype.hasOwnProperty||function(a){return a in this};function ea(a,e){return dP.call(a,e)}function Ea(a){return YR.call(a)}function fP(a){if(a.name)return a.name;var e=tP.call(eP.call(a),/^function\s*([\w$]+)/);return e?e[1]:null}function Qh(a,e){if(a.indexOf)return a.indexOf(e);for(var r=0,t=a.length;re.maxStringLength){var r=a.length-e.maxStringLength,t="... "+r+" more character"+(r>1?"s":"");return Kh(Wu.call(a,0,e.maxStringLength),e)+t}var s=sP[e.quoteStyle||"single"];s.lastIndex=0;var i=Sa.call(Sa.call(a,s,"\\$1"),/[\x00-\x1f]/g,xP);return Zh(i,"single",e)}function xP(a){var e=a.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+rP.call(e.toString(16))}function hi(a){return"Object("+a+")"}function qu(a){return a+" { ? }"}function Hh(a,e,r,t){var s=t?Hu(r,t):$r.call(r,", ");return a+" ("+e+") {"+s+"}"}function _P(a){for(var e=0;e=0)return!1;return!0}function SP(a,e){var r;if(a.indent===" ")r=" ";else if(typeof a.indent=="number"&&a.indent>0)r=$r.call(Array(a.indent+1)," ");else return null;return{base:r,prev:$r.call(Array(e+1),r)}}function Hu(a,e){if(a.length===0)return"";var r=` +`+e.prev+e.base;return r+$r.call(a,","+r)+` +`+e.prev}function Co(a,e){var r=Bu(a),t=[];if(r){t.length=a.length;for(var s=0;s{"use strict";var EP=bi(),wP=Za(),No=function(a,e,r){for(var t=a,s;(s=t.next)!=null;t=s)if(s.key===e)return t.next=s.next,r||(s.next=a.next,a.next=s),s},TP=function(a,e){if(a){var r=No(a,e);return r&&r.value}},RP=function(a,e,r){var t=No(a,e);t?t.value=r:a.next={key:e,next:a.next,value:r}},PP=function(a,e){return a?!!No(a,e):!1},OP=function(a,e){if(a)return No(a,e,!0)};Yh.exports=function(){var e,r={assert:function(t){if(!r.has(t))throw new wP("Side channel does not contain "+EP(t))},delete:function(t){var s=e&&e.next,i=OP(e,t);return i&&s&&s===i&&(e=void 0),!!i},get:function(t){return TP(e,t)},has:function(t){return PP(e,t)},set:function(t,s){e||(e={next:void 0}),RP(e,t,s)}};return r}});var Zu=q((qL,tv)=>{"use strict";tv.exports=Object});var av=q((FL,rv)=>{"use strict";rv.exports=Error});var nv=q((UL,sv)=>{"use strict";sv.exports=EvalError});var ov=q((zL,iv)=>{"use strict";iv.exports=RangeError});var lv=q((BL,cv)=>{"use strict";cv.exports=ReferenceError});var pv=q((HL,uv)=>{"use strict";uv.exports=SyntaxError});var fv=q((VL,dv)=>{"use strict";dv.exports=URIError});var hv=q((GL,mv)=>{"use strict";mv.exports=Math.abs});var gv=q((WL,vv)=>{"use strict";vv.exports=Math.floor});var bv=q((ZL,yv)=>{"use strict";yv.exports=Math.max});var _v=q((XL,xv)=>{"use strict";xv.exports=Math.min});var Ev=q((QL,Sv)=>{"use strict";Sv.exports=Math.pow});var Tv=q((KL,wv)=>{"use strict";wv.exports=Math.round});var Pv=q((JL,Rv)=>{"use strict";Rv.exports=Number.isNaN||function(e){return e!==e}});var kv=q((YL,Ov)=>{"use strict";var kP=Pv();Ov.exports=function(e){return kP(e)||e===0?e:e<0?-1:1}});var Iv=q((eq,Cv)=>{"use strict";Cv.exports=Object.getOwnPropertyDescriptor});var Xu=q((tq,Av)=>{"use strict";var Do=Iv();if(Do)try{Do([],"length")}catch{Do=null}Av.exports=Do});var Dv=q((rq,Nv)=>{"use strict";var $o=Object.defineProperty||!1;if($o)try{$o({},"a",{value:1})}catch{$o=!1}Nv.exports=$o});var jv=q((aq,$v)=>{"use strict";$v.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var e={},r=Symbol("test"),t=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(t)!=="[object Symbol]")return!1;var s=42;e[r]=s;for(var i in e)return!1;if(typeof Object.keys=="function"&&Object.keys(e).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(e).length!==0)return!1;var n=Object.getOwnPropertySymbols(e);if(n.length!==1||n[0]!==r||!Object.prototype.propertyIsEnumerable.call(e,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var o=Object.getOwnPropertyDescriptor(e,r);if(o.value!==s||o.enumerable!==!0)return!1}return!0}});var qv=q((sq,Lv)=>{"use strict";var Mv=typeof Symbol<"u"&&Symbol,CP=jv();Lv.exports=function(){return typeof Mv!="function"||typeof Symbol!="function"||typeof Mv("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:CP()}});var Qu=q((nq,Fv)=>{"use strict";Fv.exports=typeof Reflect<"u"&&Reflect.getPrototypeOf||null});var Ku=q((iq,Uv)=>{"use strict";var IP=Zu();Uv.exports=IP.getPrototypeOf||null});var Hv=q((oq,Bv)=>{"use strict";var AP="Function.prototype.bind called on incompatible ",NP=Object.prototype.toString,DP=Math.max,$P="[object Function]",zv=function(e,r){for(var t=[],s=0;s{"use strict";var LP=Hv();Vv.exports=Function.prototype.bind||LP});var jo=q((lq,Gv)=>{"use strict";Gv.exports=Function.prototype.call});var Ju=q((uq,Wv)=>{"use strict";Wv.exports=Function.prototype.apply});var Xv=q((pq,Zv)=>{"use strict";Zv.exports=typeof Reflect<"u"&&Reflect&&Reflect.apply});var Kv=q((dq,Qv)=>{"use strict";var qP=xi(),FP=Ju(),UP=jo(),zP=Xv();Qv.exports=zP||qP.call(UP,FP)});var Yu=q((fq,Jv)=>{"use strict";var BP=xi(),HP=Za(),VP=jo(),GP=Kv();Jv.exports=function(e){if(e.length<1||typeof e[0]!="function")throw new HP("a function is required");return GP(BP,VP,e)}});var sg=q((mq,ag)=>{"use strict";var WP=Yu(),Yv=Xu(),tg;try{tg=[].__proto__===Array.prototype}catch(a){if(!a||typeof a!="object"||!("code"in a)||a.code!=="ERR_PROTO_ACCESS")throw a}var ep=!!tg&&Yv&&Yv(Object.prototype,"__proto__"),rg=Object,eg=rg.getPrototypeOf;ag.exports=ep&&typeof ep.get=="function"?WP([ep.get]):typeof eg=="function"?function(e){return eg(e==null?e:rg(e))}:!1});var lg=q((hq,cg)=>{"use strict";var ng=Qu(),ig=Ku(),og=sg();cg.exports=ng?function(e){return ng(e)}:ig?function(e){if(!e||typeof e!="object"&&typeof e!="function")throw new TypeError("getProto: not an object");return ig(e)}:og?function(e){return og(e)}:null});var pg=q((vq,ug)=>{"use strict";var ZP=Function.prototype.call,XP=Object.prototype.hasOwnProperty,QP=xi();ug.exports=QP.call(ZP,XP)});var qo=q((gq,gg)=>{"use strict";var We,KP=Zu(),JP=av(),YP=nv(),eO=ov(),tO=lv(),nn=pv(),sn=Za(),rO=fv(),aO=hv(),sO=gv(),nO=bv(),iO=_v(),oO=Ev(),cO=Tv(),lO=kv(),hg=Function,tp=function(a){try{return hg('"use strict"; return ('+a+").constructor;")()}catch{}},_i=Xu(),uO=Dv(),rp=function(){throw new sn},pO=_i?(function(){try{return arguments.callee,rp}catch{try{return _i(arguments,"callee").get}catch{return rp}}})():rp,rn=qv()(),xt=lg(),dO=Ku(),fO=Qu(),vg=Ju(),Si=jo(),an={},mO=typeof Uint8Array>"u"||!xt?We:xt(Uint8Array),Qa={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?We:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?We:ArrayBuffer,"%ArrayIteratorPrototype%":rn&&xt?xt([][Symbol.iterator]()):We,"%AsyncFromSyncIteratorPrototype%":We,"%AsyncFunction%":an,"%AsyncGenerator%":an,"%AsyncGeneratorFunction%":an,"%AsyncIteratorPrototype%":an,"%Atomics%":typeof Atomics>"u"?We:Atomics,"%BigInt%":typeof BigInt>"u"?We:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?We:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?We:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?We:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":JP,"%eval%":eval,"%EvalError%":YP,"%Float16Array%":typeof Float16Array>"u"?We:Float16Array,"%Float32Array%":typeof Float32Array>"u"?We:Float32Array,"%Float64Array%":typeof Float64Array>"u"?We:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?We:FinalizationRegistry,"%Function%":hg,"%GeneratorFunction%":an,"%Int8Array%":typeof Int8Array>"u"?We:Int8Array,"%Int16Array%":typeof Int16Array>"u"?We:Int16Array,"%Int32Array%":typeof Int32Array>"u"?We:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":rn&&xt?xt(xt([][Symbol.iterator]())):We,"%JSON%":typeof JSON=="object"?JSON:We,"%Map%":typeof Map>"u"?We:Map,"%MapIteratorPrototype%":typeof Map>"u"||!rn||!xt?We:xt(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":KP,"%Object.getOwnPropertyDescriptor%":_i,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?We:Promise,"%Proxy%":typeof Proxy>"u"?We:Proxy,"%RangeError%":eO,"%ReferenceError%":tO,"%Reflect%":typeof Reflect>"u"?We:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?We:Set,"%SetIteratorPrototype%":typeof Set>"u"||!rn||!xt?We:xt(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?We:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":rn&&xt?xt(""[Symbol.iterator]()):We,"%Symbol%":rn?Symbol:We,"%SyntaxError%":nn,"%ThrowTypeError%":pO,"%TypedArray%":mO,"%TypeError%":sn,"%Uint8Array%":typeof Uint8Array>"u"?We:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?We:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?We:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?We:Uint32Array,"%URIError%":rO,"%WeakMap%":typeof WeakMap>"u"?We:WeakMap,"%WeakRef%":typeof WeakRef>"u"?We:WeakRef,"%WeakSet%":typeof WeakSet>"u"?We:WeakSet,"%Function.prototype.call%":Si,"%Function.prototype.apply%":vg,"%Object.defineProperty%":uO,"%Object.getPrototypeOf%":dO,"%Math.abs%":aO,"%Math.floor%":sO,"%Math.max%":nO,"%Math.min%":iO,"%Math.pow%":oO,"%Math.round%":cO,"%Math.sign%":lO,"%Reflect.getPrototypeOf%":fO};if(xt)try{null.error}catch(a){dg=xt(xt(a)),Qa["%Error.prototype%"]=dg}var dg,hO=function a(e){var r;if(e==="%AsyncFunction%")r=tp("async function () {}");else if(e==="%GeneratorFunction%")r=tp("function* () {}");else if(e==="%AsyncGeneratorFunction%")r=tp("async function* () {}");else if(e==="%AsyncGenerator%"){var t=a("%AsyncGeneratorFunction%");t&&(r=t.prototype)}else if(e==="%AsyncIteratorPrototype%"){var s=a("%AsyncGenerator%");s&&xt&&(r=xt(s.prototype))}return Qa[e]=r,r},fg={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Ei=xi(),Mo=pg(),vO=Ei.call(Si,Array.prototype.concat),gO=Ei.call(vg,Array.prototype.splice),mg=Ei.call(Si,String.prototype.replace),Lo=Ei.call(Si,String.prototype.slice),yO=Ei.call(Si,RegExp.prototype.exec),bO=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,xO=/\\(\\)?/g,_O=function(e){var r=Lo(e,0,1),t=Lo(e,-1);if(r==="%"&&t!=="%")throw new nn("invalid intrinsic syntax, expected closing `%`");if(t==="%"&&r!=="%")throw new nn("invalid intrinsic syntax, expected opening `%`");var s=[];return mg(e,bO,function(i,n,o,l){s[s.length]=o?mg(l,xO,"$1"):n||i}),s},SO=function(e,r){var t=e,s;if(Mo(fg,t)&&(s=fg[t],t="%"+s[0]+"%"),Mo(Qa,t)){var i=Qa[t];if(i===an&&(i=hO(t)),typeof i>"u"&&!r)throw new sn("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:s,name:t,value:i}}throw new nn("intrinsic "+e+" does not exist!")};gg.exports=function(e,r){if(typeof e!="string"||e.length===0)throw new sn("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new sn('"allowMissing" argument must be a boolean');if(yO(/^%?[^%]*%?$/,e)===null)throw new nn("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var t=_O(e),s=t.length>0?t[0]:"",i=SO("%"+s+"%",r),n=i.name,o=i.value,l=!1,c=i.alias;c&&(s=c[0],gO(t,vO([0,1],c)));for(var u=1,p=!0;u=t.length){var h=_i(o,f);p=!!h,p&&"get"in h&&!("originalValue"in h.get)?o=h.get:o=o[f]}else p=Mo(o,f),o=o[f];p&&!l&&(Qa[n]=o)}}return o}});var ap=q((yq,xg)=>{"use strict";var yg=qo(),bg=Yu(),EO=bg([yg("%String.prototype.indexOf%")]);xg.exports=function(e,r){var t=yg(e,!!r);return typeof t=="function"&&EO(e,".prototype.")>-1?bg([t]):t}});var sp=q((bq,Sg)=>{"use strict";var wO=qo(),wi=ap(),TO=bi(),RO=Za(),_g=wO("%Map%",!0),PO=wi("Map.prototype.get",!0),OO=wi("Map.prototype.set",!0),kO=wi("Map.prototype.has",!0),CO=wi("Map.prototype.delete",!0),IO=wi("Map.prototype.size",!0);Sg.exports=!!_g&&function(){var e,r={assert:function(t){if(!r.has(t))throw new RO("Side channel does not contain "+TO(t))},delete:function(t){if(e){var s=CO(e,t);return IO(e)===0&&(e=void 0),s}return!1},get:function(t){if(e)return PO(e,t)},has:function(t){return e?kO(e,t):!1},set:function(t,s){e||(e=new _g),OO(e,t,s)}};return r}});var wg=q((xq,Eg)=>{"use strict";var AO=qo(),Uo=ap(),NO=bi(),Fo=sp(),DO=Za(),on=AO("%WeakMap%",!0),$O=Uo("WeakMap.prototype.get",!0),jO=Uo("WeakMap.prototype.set",!0),MO=Uo("WeakMap.prototype.has",!0),LO=Uo("WeakMap.prototype.delete",!0);Eg.exports=on?function(){var e,r,t={assert:function(s){if(!t.has(s))throw new DO("Side channel does not contain "+NO(s))},delete:function(s){if(on&&s&&(typeof s=="object"||typeof s=="function")){if(e)return LO(e,s)}else if(Fo&&r)return r.delete(s);return!1},get:function(s){return on&&s&&(typeof s=="object"||typeof s=="function")&&e?$O(e,s):r&&r.get(s)},has:function(s){return on&&s&&(typeof s=="object"||typeof s=="function")&&e?MO(e,s):!!r&&r.has(s)},set:function(s,i){on&&s&&(typeof s=="object"||typeof s=="function")?(e||(e=new on),jO(e,s,i)):Fo&&(r||(r=Fo()),r.set(s,i))}};return t}:Fo});var Rg=q((_q,Tg)=>{"use strict";var qO=Za(),FO=bi(),UO=ev(),zO=sp(),BO=wg(),HO=BO||zO||UO;Tg.exports=function(){var e,r={assert:function(t){if(!r.has(t))throw new qO("Side channel does not contain "+FO(t))},delete:function(t){return!!e&&e.delete(t)},get:function(t){return e&&e.get(t)},has:function(t){return!!e&&e.has(t)},set:function(t,s){e||(e=HO()),e.set(t,s)}};return r}});var zo=q((Sq,Pg)=>{"use strict";var VO=String.prototype.replace,GO=/%20/g,np={RFC1738:"RFC1738",RFC3986:"RFC3986"};Pg.exports={default:np.RFC3986,formatters:{RFC1738:function(a){return VO.call(a,GO,"+")},RFC3986:function(a){return String(a)}},RFC1738:np.RFC1738,RFC3986:np.RFC3986}});var cp=q((Eq,kg)=>{"use strict";var WO=zo(),ip=Object.prototype.hasOwnProperty,Ka=Array.isArray,jr=(function(){for(var a=[],e=0;e<256;++e)a.push("%"+((e<16?"0":"")+e.toString(16)).toUpperCase());return a})(),ZO=function(e){for(;e.length>1;){var r=e.pop(),t=r.obj[r.prop];if(Ka(t)){for(var s=[],i=0;i=op?n.slice(l,l+op):n,u=[],p=0;p=48&&f<=57||f>=65&&f<=90||f>=97&&f<=122||i===WO.RFC1738&&(f===40||f===41)){u[u.length]=c.charAt(p);continue}if(f<128){u[u.length]=jr[f];continue}if(f<2048){u[u.length]=jr[192|f>>6]+jr[128|f&63];continue}if(f<55296||f>=57344){u[u.length]=jr[224|f>>12]+jr[128|f>>6&63]+jr[128|f&63];continue}p+=1,f=65536+((f&1023)<<10|c.charCodeAt(p)&1023),u[u.length]=jr[240|f>>18]+jr[128|f>>12&63]+jr[128|f>>6&63]+jr[128|f&63]}o+=u.join("")}return o},YO=function(e){for(var r=[{obj:{o:e},prop:"o"}],t=[],s=0;s{"use strict";var Ig=Rg(),Bo=cp(),Ti=zo(),sk=Object.prototype.hasOwnProperty,Ag={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,r){return e+"["+r+"]"},repeat:function(e){return e}},Mr=Array.isArray,nk=Array.prototype.push,Ng=function(a,e){nk.apply(a,Mr(e)?e:[e])},ik=Date.prototype.toISOString,Cg=Ti.default,yt={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:Bo.encode,encodeValuesOnly:!1,format:Cg,formatter:Ti.formatters[Cg],indices:!1,serializeDate:function(e){return ik.call(e)},skipNulls:!1,strictNullHandling:!1},ok=function(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="symbol"||typeof e=="bigint"},lp={},ck=function a(e,r,t,s,i,n,o,l,c,u,p,f,d,v,h,m,y,g){for(var b=e,w=g,P=0,T=!1;(w=w.get(lp))!==void 0&&!T;){var C=w.get(e);if(P+=1,typeof C<"u"){if(C===P)throw new RangeError("Cyclic object value");T=!0}typeof w.get(lp)>"u"&&(P=0)}if(typeof u=="function"?b=u(r,b):b instanceof Date?b=d(b):t==="comma"&&Mr(b)&&(b=Bo.maybeMap(b,function(V){return V instanceof Date?d(V):V})),b===null){if(n)return c&&!m?c(r,yt.encoder,y,"key",v):r;b=""}if(ok(b)||Bo.isBuffer(b)){if(c){var D=m?r:c(r,yt.encoder,y,"key",v);return[h(D)+"="+h(c(b,yt.encoder,y,"value",v))]}return[h(r)+"="+h(String(b))]}var A=[];if(typeof b>"u")return A;var j;if(t==="comma"&&Mr(b))m&&c&&(b=Bo.maybeMap(b,c)),j=[{value:b.length>0?b.join(",")||null:void 0}];else if(Mr(u))j=u;else{var N=Object.keys(b);j=p?N.sort(p):N}var k=l?r.replace(/\./g,"%2E"):r,O=s&&Mr(b)&&b.length===1?k+"[]":k;if(i&&Mr(b)&&b.length===0)return O+"[]";for(var $=0;$"u"?e.encodeDotInKeys===!0?!0:yt.allowDots:!!e.allowDots;return{addQueryPrefix:typeof e.addQueryPrefix=="boolean"?e.addQueryPrefix:yt.addQueryPrefix,allowDots:o,allowEmptyArrays:typeof e.allowEmptyArrays=="boolean"?!!e.allowEmptyArrays:yt.allowEmptyArrays,arrayFormat:n,charset:r,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:yt.charsetSentinel,commaRoundTrip:e.commaRoundTrip,delimiter:typeof e.delimiter>"u"?yt.delimiter:e.delimiter,encode:typeof e.encode=="boolean"?e.encode:yt.encode,encodeDotInKeys:typeof e.encodeDotInKeys=="boolean"?e.encodeDotInKeys:yt.encodeDotInKeys,encoder:typeof e.encoder=="function"?e.encoder:yt.encoder,encodeValuesOnly:typeof e.encodeValuesOnly=="boolean"?e.encodeValuesOnly:yt.encodeValuesOnly,filter:i,format:t,formatter:s,serializeDate:typeof e.serializeDate=="function"?e.serializeDate:yt.serializeDate,skipNulls:typeof e.skipNulls=="boolean"?e.skipNulls:yt.skipNulls,sort:typeof e.sort=="function"?e.sort:null,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:yt.strictNullHandling}};Dg.exports=function(a,e){var r=a,t=lk(e),s,i;typeof t.filter=="function"?(i=t.filter,r=i("",r)):Mr(t.filter)&&(i=t.filter,s=i);var n=[];if(typeof r!="object"||r===null)return"";var o=Ag[t.arrayFormat],l=o==="comma"&&t.commaRoundTrip;s||(s=Object.keys(r)),t.sort&&s.sort(t.sort);for(var c=Ig(),u=0;u0?d+f:""}});var Lg=q((Tq,Mg)=>{"use strict";var cn=cp(),up=Object.prototype.hasOwnProperty,uk=Array.isArray,pt={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:cn.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1},pk=function(a){return a.replace(/&#(\d+);/g,function(e,r){return String.fromCharCode(parseInt(r,10))})},jg=function(a,e){return a&&typeof a=="string"&&e.comma&&a.indexOf(",")>-1?a.split(","):a},dk="utf8=%26%2310003%3B",fk="utf8=%E2%9C%93",mk=function(e,r){var t={__proto__:null},s=r.ignoreQueryPrefix?e.replace(/^\?/,""):e;s=s.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var i=r.parameterLimit===1/0?void 0:r.parameterLimit,n=s.split(r.delimiter,i),o=-1,l,c=r.charset;if(r.charsetSentinel)for(l=0;l-1&&(v=uk(v)?[v]:v);var h=up.call(t,d);h&&r.duplicates==="combine"?t[d]=cn.combine(t[d],v):(!h||r.duplicates==="last")&&(t[d]=v)}return t},hk=function(a,e,r,t){for(var s=t?e:jg(e,r),i=a.length-1;i>=0;--i){var n,o=a[i];if(o==="[]"&&r.parseArrays)n=r.allowEmptyArrays&&(s===""||r.strictNullHandling&&s===null)?[]:[].concat(s);else{n=r.plainObjects?Object.create(null):{};var l=o.charAt(0)==="["&&o.charAt(o.length-1)==="]"?o.slice(1,-1):o,c=r.decodeDotInKeys?l.replace(/%2E/g,"."):l,u=parseInt(c,10);!r.parseArrays&&c===""?n={0:s}:!isNaN(u)&&o!==c&&String(u)===c&&u>=0&&r.parseArrays&&u<=r.arrayLimit?(n=[],n[u]=s):c!=="__proto__"&&(n[c]=s)}s=n}return s},vk=function(e,r,t,s){if(e){var i=t.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,n=/(\[[^[\]]*])/,o=/(\[[^[\]]*])/g,l=t.depth>0&&n.exec(i),c=l?i.slice(0,l.index):i,u=[];if(c){if(!t.plainObjects&&up.call(Object.prototype,c)&&!t.allowPrototypes)return;u.push(c)}for(var p=0;t.depth>0&&(l=o.exec(i))!==null&&p"u"?pt.charset:e.charset,t=typeof e.duplicates>"u"?pt.duplicates:e.duplicates;if(t!=="combine"&&t!=="first"&&t!=="last")throw new TypeError("The duplicates option must be either combine, first, or last");var s=typeof e.allowDots>"u"?e.decodeDotInKeys===!0?!0:pt.allowDots:!!e.allowDots;return{allowDots:s,allowEmptyArrays:typeof e.allowEmptyArrays=="boolean"?!!e.allowEmptyArrays:pt.allowEmptyArrays,allowPrototypes:typeof e.allowPrototypes=="boolean"?e.allowPrototypes:pt.allowPrototypes,allowSparse:typeof e.allowSparse=="boolean"?e.allowSparse:pt.allowSparse,arrayLimit:typeof e.arrayLimit=="number"?e.arrayLimit:pt.arrayLimit,charset:r,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:pt.charsetSentinel,comma:typeof e.comma=="boolean"?e.comma:pt.comma,decodeDotInKeys:typeof e.decodeDotInKeys=="boolean"?e.decodeDotInKeys:pt.decodeDotInKeys,decoder:typeof e.decoder=="function"?e.decoder:pt.decoder,delimiter:typeof e.delimiter=="string"||cn.isRegExp(e.delimiter)?e.delimiter:pt.delimiter,depth:typeof e.depth=="number"||e.depth===!1?+e.depth:pt.depth,duplicates:t,ignoreQueryPrefix:e.ignoreQueryPrefix===!0,interpretNumericEntities:typeof e.interpretNumericEntities=="boolean"?e.interpretNumericEntities:pt.interpretNumericEntities,parameterLimit:typeof e.parameterLimit=="number"?e.parameterLimit:pt.parameterLimit,parseArrays:e.parseArrays!==!1,plainObjects:typeof e.plainObjects=="boolean"?e.plainObjects:pt.plainObjects,strictDepth:typeof e.strictDepth=="boolean"?!!e.strictDepth:pt.strictDepth,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:pt.strictNullHandling}};Mg.exports=function(a,e){var r=gk(e);if(a===""||a===null||typeof a>"u")return r.plainObjects?Object.create(null):{};for(var t=typeof a=="string"?mk(a,r):a,s=r.plainObjects?Object.create(null):{},i=Object.keys(t),n=0;n{"use strict";var yk=$g(),bk=Lg(),xk=zo();qg.exports={formats:xk,parse:bk,stringify:yk}});var Vg=q((Pq,Hg)=>{"use strict";var _k=Vs(),Sk=ei(),Vo=za(),Tr=rr()("body-parser:urlencoded"),Ek=Ar()("body-parser"),wk=di(),Ug=en();Hg.exports=Tk;var Fg=Object.create(null);function Tk(a){var e=a||{};e.extended===void 0&&Ek("undefined extended: provide extended option");var r=e.extended!==!1,t=e.inflate!==!1,s=typeof e.limit!="number"?_k.parse(e.limit||"100kb"):e.limit,i=e.type||"application/x-www-form-urlencoded",n=e.verify||!1,o=typeof e.depth!="number"?Number(e.depth||32):e.depth;if(n!==!1&&typeof n!="function")throw new TypeError("option verify must be function");var l=r?Rk(e):Ok(e),c=typeof i!="function"?kk(i):i;function u(p){return p.length?l(p):{}}return function(f,d,v){if(f._body){Tr("body already parsed"),v();return}if(f.body=f.body||{},!Ug.hasBody(f)){Tr("skip empty body"),v();return}if(Tr("content-type %j",f.headers["content-type"]),!c(f)){Tr("skip parsing"),v();return}var h=Pk(f)||"utf-8";if(h!=="utf-8"){Tr("invalid charset"),v(Vo(415,'unsupported charset "'+h.toUpperCase()+'"',{charset:h,type:"charset.unsupported"}));return}wk(f,d,v,u,Tr,{debug:Tr,encoding:h,inflate:t,limit:s,verify:n,depth:o})}}function Rk(a){var e=a.parameterLimit!==void 0?a.parameterLimit:1e3,r=typeof a.depth!="number"?Number(a.depth||32):a.depth,t=Bg("qs");if(isNaN(e)||e<1)throw new TypeError("option parameterLimit must be a positive number");if(isNaN(r)||r<0)throw new TypeError("option depth must be a zero or a positive number");return isFinite(e)&&(e=e|0),function(i){var n=zg(i,e);if(n===void 0)throw Tr("too many parameters"),Vo(413,"too many parameters",{type:"parameters.too.many"});var o=Math.max(100,n);Tr("parse extended urlencoding");try{return t(i,{allowPrototypes:!0,arrayLimit:o,depth:r,strictDepth:!0,parameterLimit:e})}catch(l){throw l instanceof RangeError?Vo(400,"The input exceeded the depth",{type:"querystring.parse.rangeError"}):l}}}function Pk(a){try{return(Sk.parse(a).parameters.charset||"").toLowerCase()}catch{return}}function zg(a,e){for(var r=0,t=0;(t=a.indexOf("&",t))!==-1;)if(r++,t++,r===e)return;return r}function Bg(a){var e=Fg[a];if(e!==void 0)return e.parse;switch(a){case"qs":e=Ho();break;case"querystring":e=require("querystring");break}return Fg[a]=e,e.parse}function Ok(a){var e=a.parameterLimit!==void 0?a.parameterLimit:1e3,r=Bg("querystring");if(isNaN(e)||e<1)throw new TypeError("option parameterLimit must be a positive number");return isFinite(e)&&(e=e|0),function(s){var i=zg(s,e);if(i===void 0)throw Tr("too many parameters"),Vo(413,"too many parameters",{type:"parameters.too.many"});return Tr("parse urlencoding"),r(s,void 0,void 0,{maxKeys:e})}}function kk(a){return function(r){return!!Ug(r,a)}}});var Zg=q((wa,Wg)=>{"use strict";var Ck=Ar()("body-parser"),Gg=Object.create(null);wa=Wg.exports=Ck.function(Ik,"bodyParser: use individual json/urlencoded middlewares");Object.defineProperty(wa,"json",{configurable:!0,enumerable:!0,get:Go("json")});Object.defineProperty(wa,"raw",{configurable:!0,enumerable:!0,get:Go("raw")});Object.defineProperty(wa,"text",{configurable:!0,enumerable:!0,get:Go("text")});Object.defineProperty(wa,"urlencoded",{configurable:!0,enumerable:!0,get:Go("urlencoded")});function Ik(a){var e=Object.create(a||null,{type:{configurable:!0,enumerable:!0,value:void 0,writable:!0}}),r=wa.urlencoded(e),t=wa.json(e);return function(i,n,o){t(i,n,function(l){if(l)return o(l);r(i,n,o)})}}function Go(a){return function(){return Ak(a)}}function Ak(a){var e=Gg[a];if(e!==void 0)return e;switch(a){case"json":e=Eh();break;case"raw":e=Rh();break;case"text":e=kh();break;case"urlencoded":e=Vg();break}return Gg[a]=e}});var Qg=q((Oq,Xg)=>{"use strict";Xg.exports=Dk;var Nk=Object.prototype.hasOwnProperty;function Dk(a,e,r){if(!a)throw new TypeError("argument dest is required");if(!e)throw new TypeError("argument src is required");return r===void 0&&(r=!0),Object.getOwnPropertyNames(e).forEach(function(s){if(!(!r&&Nk.call(a,s))){var i=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(a,s,i)}}),a}});var Wo=q((kq,Kg)=>{"use strict";Kg.exports=Lk;var $k=/(?:[^\x21\x23-\x3B\x3D\x3F-\x5F\x61-\x7A\x7C\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g,jk=/(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g,Mk="$1\uFFFD$2";function Lk(a){return String(a).replace(jk,Mk).replace($k,encodeURI)}});var Ri=q((Cq,Jg)=>{"use strict";var qk=/["'&<>]/;Jg.exports=Fk;function Fk(a){var e=""+a,r=qk.exec(e);if(!r)return e;var t,s="",i=0,n=0;for(i=r.index;i{"use strict";var ey=require("url"),Yg=ey.parse,Zo=ey.Url;pp.exports=ty;pp.exports.original=Uk;function ty(a){var e=a.url;if(e!==void 0){var r=a._parsedUrl;return ay(e,r)?r:(r=ry(e),r._raw=e,a._parsedUrl=r)}}function Uk(a){var e=a.originalUrl;if(typeof e!="string")return ty(a);var r=a._parsedOriginalUrl;return ay(e,r)?r:(r=ry(e),r._raw=e,a._parsedOriginalUrl=r)}function ry(a){if(typeof a!="string"||a.charCodeAt(0)!==47)return Yg(a);for(var e=a,r=null,t=null,s=1;s{"use strict";var dp=rr()("finalhandler"),zk=Wo(),Bk=Ri(),ny=pi(),Hk=ln(),iy=ri(),Vk=Oo(),Gk=/\x20{2}/g,Wk=/\n/g,Zk=typeof setImmediate=="function"?setImmediate:function(a){process.nextTick(a.bind.apply(a,arguments))},Xk=ny.isFinished;function Qk(a){var e=Bk(a).replace(Wk,"
").replace(Gk,"  ");return` @@ -28,7 +28,7 @@ return fn.apply(this, arguments)
`+e+`
-`}Dg.exports=uC;function uC(a,e,r){var t=r||{},s=t.env||process.env.NODE_ENV||"development",i=t.onerror;return function(n){var o,l,c;if(!n&&Ig(e)){Hu("cannot 404 after headers sent");return}if(n?(c=fC(n),c===void 0?c=hC(e):o=pC(n),l=dC(n,c,s)):(c=404,l="Cannot "+a.method+" "+tC(mC(a))),Hu("default %s",c),n&&i&&oC(i,n,a,e),Ig(e)){Hu("cannot %d after headers sent",c),a.socket&&a.socket.destroy();return}vC(a,e,c,o,l)}}function pC(a){if(!(!a.headers||typeof a.headers!="object")){for(var e=Object.create(null),r=Object.keys(a.headers),t=0;t=400&&a.status<600)return a.status;if(typeof a.statusCode=="number"&&a.statusCode>=400&&a.statusCode<600)return a.statusCode}function mC(a){try{return aC.original(a).pathname}catch{return"resource"}}function hC(a){var e=a.statusCode;return(typeof e!="number"||e<400||e>599)&&(e=500),e}function Ig(a){return typeof a.headersSent!="boolean"?!!a._header:a.headersSent}function vC(a,e,r,t,s){function i(){var n=lC(s);if(e.statusCode=r,a.httpVersionMajor<2&&(e.statusMessage=jg.message[r]),e.removeHeader("Content-Encoding"),e.removeHeader("Content-Language"),e.removeHeader("Content-Range"),gC(e,t),e.setHeader("Content-Security-Policy","default-src 'none'"),e.setHeader("X-Content-Type-Options","nosniff"),e.setHeader("Content-Type","text/html; charset=utf-8"),e.setHeader("Content-Length",Buffer.byteLength(n,"utf8")),a.method==="HEAD"){e.end();return}e.end(n,"utf8")}if(cC(a)){i();return}sC(a),Ng(a,i),a.resume()}function gC(a,e){if(e)for(var r=Object.keys(e),t=0;t{"use strict";qg.exports=yC;function Mg(a,e,r){for(var t=0;t0&&Array.isArray(s)?Mg(s,e,r-1):e.push(s)}return e}function Lg(a,e){for(var r=0;r{zg.exports=Ug;var Fg=/\\.|\((?:\?<(.*?)>)?(?!\?)/g;function Ug(a,e,r){r=r||{},e=e||[];var t=r.strict,s=r.end!==!1,i=r.sensitive?"":"i",n=r.lookahead!==!1,o=0,l=e.length,c=0,u=0,p=0,m="",f;if(a instanceof RegExp){for(;f=Fg.exec(a.source);)f[0][0]!=="\\"&&e.push({name:f[1]||u++,optional:!1,offset:f.index});return a}if(Array.isArray(a))return a=a.map(function(h){return Ug(h,e,r).source}),new RegExp(a.join("|"),i);if(typeof a!="string")throw new TypeError("path must be a string, array of strings, or regular expression");for(a=a.replace(/\\.|(\/)?(\.)?:(\w+)(\(.*?\))?(\*)?(\?)?|[.*]|\/\(/g,function(h,d,v,x,b,E,O,C){if(h[0]==="\\")return m+=h,p+=2,h;if(h===".")return m+="\\.",o+=1,p+=1,"\\.";if(d||v?m="":m+=a.slice(p,C),p=C+h.length,h==="*")return o+=3,"(.*)";if(h==="/(")return m+="/",o+=2,"/(?:";d=d||"",v=v?"\\.":"",O=O||"",b=b?b.replace(/\\.|\*/,function(A){return A==="*"?"(.*)":A}):m?"((?:(?!/|"+m+").)+?)":"([^/"+v+"]+?)",e.push({name:x,optional:!!O,offset:C+o});var P="(?:"+v+d+b+(E?"((?:[/"+v+"].+?)?)":"")+")"+O;return o+=P.length-h.length,P});f=Fg.exec(a);)f[0][0]!=="\\"&&((l+c===e.length||e[l+c].offset>f.index)&&e.splice(l+c,0,{name:u++,optional:!1,offset:f.index}),c++);return a+=t?"":a[a.length-1]==="/"?"?":"/?",s?a+="$":a[a.length-1]!=="/"&&(a+=n?"(?=/|$)":"(?:/|$)"),new RegExp("^"+a,i)}});var Bu=L((LL,Vg)=>{"use strict";var bC=Hg(),xC=tr()("express:router:layer"),_C=Object.prototype.hasOwnProperty;Vg.exports=rn;function rn(a,e,r){if(!(this instanceof rn))return new rn(a,e,r);xC("new %o",a);var t=e||{};this.handle=r,this.name=r.name||"",this.params=void 0,this.path=void 0,this.regexp=bC(a,this.keys=[],t),this.regexp.fast_star=a==="*",this.regexp.fast_slash=a==="/"&&t.end===!1}rn.prototype.handle_error=function(e,r,t,s){var i=this.handle;if(i.length!==4)return s(e);try{i(e,r,t,s)}catch(n){s(n)}};rn.prototype.handle_request=function(e,r,t){var s=this.handle;if(s.length>3)return t();try{s(e,r,t)}catch(i){t(i)}};rn.prototype.match=function(e){var r;if(e!=null){if(this.regexp.fast_slash)return this.params={},this.path="",!0;if(this.regexp.fast_star)return this.params={0:Bg(e)},this.path=e,!0;r=this.regexp.exec(e)}if(!r)return this.params=void 0,this.path=void 0,!1;this.params={},this.path=r[0];for(var t=this.keys,s=this.params,i=1;i{"use strict";var Gg=require("http");Wg.exports=EC()||wC();function EC(){return Gg.METHODS&&Gg.METHODS.map(function(e){return e.toLowerCase()})}function wC(){return["get","post","put","head","delete","options","trace","copy","lock","mkcol","move","purge","propfind","proppatch","unlock","report","mkactivity","checkout","merge","m-search","notify","subscribe","unsubscribe","patch","search","connect"]}});var Vu=L((FL,Jg)=>{"use strict";var Zg=tr()("express:router:route"),Kg=hi(),Xg=Bu(),SC=$o(),Qg=Array.prototype.slice,Yg=Object.prototype.toString;Jg.exports=an;function an(a){this.path=a,this.stack=[],Zg("new %o",a),this.methods={}}an.prototype._handles_method=function(e){if(this.methods._all)return!0;var r=typeof e=="string"?e.toLowerCase():e;return r==="head"&&!this.methods.head&&(r="get"),!!this.methods[r]};an.prototype._options=function(){var e=Object.keys(this.methods);this.methods.get&&!this.methods.head&&e.push("head");for(var r=0;r100)return setImmediate(l,c);var u=i[s++];if(!u)return t(c);u.method&&u.method!==o?l(c):c?u.handle_error(c,e,r,l):u.handle_request(e,r,l),n=0}};an.prototype.all=function(){for(var e=Kg(Qg.call(arguments)),r=0;r{ey=ty.exports=function(a,e){if(a&&e)for(var r in e)a[r]=e[r];return a}});var Wu=L((UL,ny)=>{"use strict";var PC=Vu(),ay=Bu(),TC=$o(),Gu=vi(),Mo=tr()("express:router"),ry=kr()("express"),RC=hi(),OC=tn(),CC=Hn(),kC=/^\[object (\S+)\]$/,sy=Array.prototype.slice,AC=Object.prototype.toString,Wa=ny.exports=function(a){var e=a||{};function r(t,s,i){r.handle(t,s,i)}return CC(r,Wa),r.params={},r._params=[],r.caseSensitive=e.caseSensitive,r.mergeParams=e.mergeParams,r.strict=e.strict,r.stack=[],r};Wa.param=function(e,r){if(typeof e=="function"){ry("router.param(fn): Refactor to use path params"),this._params.push(e);return}var t=this._params,s=t.length,i;e[0]===":"&&(ry("router.param("+JSON.stringify(e)+", fn): Use router.param("+JSON.stringify(e.slice(1))+", fn) instead"),e=e.slice(1));for(var n=0;n=m.length){setImmediate(d,E);return}if(++c>100)return setImmediate(v,b);var O=NC(e);if(O==null)return d(E);for(var C,P,A;P!==!0&&i=o.length)return i();if(u=0,p=o[l++],c=p.name,m=t.params[c],f=n[c],h=r[c],m===void 0||!f)return d();if(h&&(h.match===m||h.error&&h.error!=="route"))return t.params[c]=h.value,d(h.error);r[c]=h={error:null,match:m,value:m},v()}function v(x){var b=f[u++];if(h.value=t.params[p.name],x){h.error=x,d(x);return}if(!b)return d();try{b(t,s,v,m,p.name)}catch(E){v(E)}}d()};Wa.use=function(e){var r=0,t="/";if(typeof e!="function"){for(var s=e;Array.isArray(s)&&s.length!==0;)s=s[0];typeof s!="function"&&(r=1,t=e)}var i=RC(sy.call(arguments,r));if(i.length===0)throw new TypeError("Router.use() requires a middleware function");for(var n=0;n");var o=new ay(t,{sensitive:this.caseSensitive,strict:!1,end:!1},e);o.route=void 0,this.stack.push(o)}return this};Wa.route=function(e){var r=new PC(e),t=new ay(e,{sensitive:this.caseSensitive,strict:this.strict,end:!0},r.dispatch.bind(r));return t.route=r,this.stack.push(t),r};TC.concat("all").forEach(function(a){Wa[a]=function(e){var r=this.route(e);return r[a].apply(r,sy.call(arguments,1)),this}});function IC(a,e){for(var r=0;r=0;t--)a[t+s]=a[t],t{"use strict";var iy=Hn();oy.init=function(a){return function(r,t,s){a.enabled("x-powered-by")&&t.setHeader("X-Powered-By","Express"),r.res=t,t.req=r,r.next=s,iy(r,a.request),iy(t,a.response),t.locals=t.locals||Object.create(null),s()}}});var Zu=L((HL,ly)=>{"use strict";var UC=vi(),zC=tn(),HC=Ao();ly.exports=function(e){var r=UC({},e),t=HC.parse;return typeof e=="function"&&(t=e,r=void 0),r!==void 0&&r.allowPrototypes===void 0&&(r.allowPrototypes=!0),function(i,n,o){if(!i.query){var l=zC(i).query;i.query=t(l,r)}o()}}});var my=L((BL,fy)=>{"use strict";var Lo=tr()("express:view"),gi=require("path"),BC=require("fs"),VC=gi.dirname,dy=gi.basename,GC=gi.extname,uy=gi.join,WC=gi.resolve;fy.exports=qo;function qo(a,e){var r=e||{};if(this.defaultEngine=r.defaultEngine,this.ext=GC(a),this.name=a,this.root=r.root,!this.ext&&!this.defaultEngine)throw new Error("No default engine was specified and no extension was provided.");var t=a;if(this.ext||(this.ext=this.defaultEngine[0]!=="."?"."+this.defaultEngine:this.defaultEngine,t+=this.ext),!r.engines[this.ext]){var s=this.ext.slice(1);Lo('require "%s"',s);var i=require(s).__express;if(typeof i!="function")throw new Error('Module "'+s+'" does not provide a view engine.');r.engines[this.ext]=i}this.engine=r.engines[this.ext],this.path=this.lookup(t)}qo.prototype.lookup=function(e){var r,t=[].concat(this.root);Lo('lookup "%s"',e);for(var s=0;s{var Fo=require("buffer"),$r=Fo.Buffer;function hy(a,e){for(var r in a)e[r]=a[r]}$r.from&&$r.alloc&&$r.allocUnsafe&&$r.allocUnsafeSlow?vy.exports=Fo:(hy(Fo,Ku),Ku.Buffer=Za);function Za(a,e,r){return $r(a,e,r)}Za.prototype=Object.create($r.prototype);hy($r,Za);Za.from=function(a,e,r){if(typeof a=="number")throw new TypeError("Argument must not be a number");return $r(a,e,r)};Za.alloc=function(a,e,r){if(typeof a!="number")throw new TypeError("Argument must be a number");var t=$r(a);return e!==void 0?typeof r=="string"?t.fill(e,r):t.fill(e):t.fill(0),t};Za.allocUnsafe=function(a){if(typeof a!="number")throw new TypeError("Argument must be a number");return $r(a)};Za.allocUnsafeSlow=function(a){if(typeof a!="number")throw new TypeError("Argument must be a number");return Fo.SlowBuffer(a)}});var Qu=L((VL,Xu)=>{"use strict";Xu.exports=sk;Xu.exports.parse=ck;var gy=require("path").basename,ZC=Uo().Buffer,KC=/[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g,XC=/%[0-9A-Fa-f]{2}/,QC=/%([0-9A-Fa-f]{2})/g,by=/[^\x20-\x7e\xa0-\xff]/g,YC=/\\([\u0000-\u007f])/g,JC=/([\\"])/g,yy=/;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g,ek=/^[\x20-\x7e\x80-\xff]+$/,tk=/^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/,rk=/^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/,ak=/^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/;function sk(a,e){var r=e||{},t=r.type||"attachment",s=nk(a,r.fallback);return ik(new _y(t,s))}function nk(a,e){if(a!==void 0){var r={};if(typeof a!="string")throw new TypeError("filename must be a string");if(e===void 0&&(e=!0),typeof e!="string"&&typeof e!="boolean")throw new TypeError("fallback must be a string or boolean");if(typeof e=="string"&&by.test(e))throw new TypeError("fallback must be ISO-8859-1 string");var t=gy(a),s=ek.test(t),i=typeof e!="string"?e&&xy(t):gy(e),n=typeof i=="string"&&i!==t;return(n||!s||XC.test(t))&&(r["filename*"]=t),(s||n)&&(r.filename=n?i:t),r}}function ik(a){var e=a.parameters,r=a.type;if(!r||typeof r!="string"||!tk.test(r))throw new TypeError("invalid type");var t=String(r).toLowerCase();if(e&&typeof e=="object")for(var s,i=Object.keys(e).sort(),n=0;n{"use strict";Ey.exports=vk;var fk=/(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g,mk=/(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g,hk="$1\uFFFD$2";function vk(a){return String(a).replace(mk,hk).replace(fk,encodeURI)}});var Yu=L((WL,Ty)=>{"use strict";Ty.exports=bk;var gk=require("crypto"),Sy=require("fs").Stats,Py=Object.prototype.toString;function yk(a){if(a.length===0)return'"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"';var e=gk.createHash("sha1").update(a,"utf8").digest("base64").substring(0,27),r=typeof a=="string"?Buffer.byteLength(a,"utf8"):a.length;return'"'+r.toString(16)+"-"+e+'"'}function bk(a,e){if(a==null)throw new TypeError("argument entity is required");var r=xk(a),t=e&&typeof e.weak=="boolean"?e.weak:r;if(!r&&typeof a!="string"&&!Buffer.isBuffer(a))throw new TypeError("argument entity must be string, Buffer, or fs.Stats");var s=r?_k(a):yk(a);return t?"W/"+s:s}function xk(a){return typeof Sy=="function"&&a instanceof Sy?!0:a&&typeof a=="object"&&"ctime"in a&&Py.call(a.ctime)==="[object Date]"&&"mtime"in a&&Py.call(a.mtime)==="[object Date]"&&"ino"in a&&typeof a.ino=="number"&&"size"in a&&typeof a.size=="number"}function _k(a){var e=a.mtime.getTime().toString(16),r=a.size.toString(16);return'"'+r+"-"+e+'"'}});var Ju=L((ZL,Oy)=>{"use strict";var Ek=/(?:^|,)\s*?no-cache\s*?(?:,|$)/;Oy.exports=wk;function wk(a,e){var r=a["if-modified-since"],t=a["if-none-match"];if(!r&&!t)return!1;var s=a["cache-control"];if(s&&Ek.test(s))return!1;if(t&&t!=="*"){var i=e.etag;if(!i)return!1;for(var n=!0,o=Sk(t),l=0;l{Pk.exports={"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/bdoc":["bdoc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":[],"application/font-woff2":[],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/prs.cww":["cww"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-outlook":["msg"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.wadl+xml":["wadl"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":[],"application/x-arj":["arj"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":[],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":[],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":[],"application/x-msdownload":["com","bat"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["wmf","emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":[],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["obj"],"application/x-ustar":["ustar"],"application/x-virtualbox-hdd":["hdd"],"application/x-virtualbox-ova":["ova"],"application/x-virtualbox-ovf":["ovf"],"application/x-virtualbox-vbox":["vbox"],"application/x-virtualbox-vbox-extpack":["vbox-extpack"],"application/x-virtualbox-vdi":["vdi"],"application/x-virtualbox-vhd":["vhd"],"application/x-virtualbox-vmdk":["vmdk"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":[],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp3":[],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/wav":["wav"],"audio/wave":[],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":[],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":[],"audio/x-wav":[],"audio/xm":["xm"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/apng":["apng"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/ktx":["ktx"],"image/png":["png"],"image/prs.btif":["btif"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":[],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/webp":["webp"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":[],"image/x-pcx":["pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/rfc822":["eml","mime"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.vtu":["vtu"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/hjson":["hjson"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/prs.lines.tag":["dsc"],"text/richtext":["rtx"],"text/rtf":[],"text/sgml":["sgml","sgm"],"text/slim":["slim","slm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/vtt":["vtt"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-org":[],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"text/xml":[],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]}});var Ay=L((QL,ky)=>{var XL=require("path"),Tk=require("fs");function nn(){this.types=Object.create(null),this.extensions=Object.create(null)}nn.prototype.define=function(a){for(var e in a){for(var r=a[e],t=0;t{var on=1e3,cn=on*60,ln=cn*60,Ka=ln*24,Rk=Ka*7,Ok=Ka*365.25;Iy.exports=function(a,e){e=e||{};var r=typeof a;if(r==="string"&&a.length>0)return Ck(a);if(r==="number"&&isFinite(a))return e.long?Ak(a):kk(a);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(a))};function Ck(a){if(a=String(a),!(a.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(a);if(e){var r=parseFloat(e[1]),t=(e[2]||"ms").toLowerCase();switch(t){case"years":case"year":case"yrs":case"yr":case"y":return r*Ok;case"weeks":case"week":case"w":return r*Rk;case"days":case"day":case"d":return r*Ka;case"hours":case"hour":case"hrs":case"hr":case"h":return r*ln;case"minutes":case"minute":case"mins":case"min":case"m":return r*cn;case"seconds":case"second":case"secs":case"sec":case"s":return r*on;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function kk(a){var e=Math.abs(a);return e>=Ka?Math.round(a/Ka)+"d":e>=ln?Math.round(a/ln)+"h":e>=cn?Math.round(a/cn)+"m":e>=on?Math.round(a/on)+"s":a+"ms"}function Ak(a){var e=Math.abs(a);return e>=Ka?zo(a,e,Ka,"day"):e>=ln?zo(a,e,ln,"hour"):e>=cn?zo(a,e,cn,"minute"):e>=on?zo(a,e,on,"second"):a+" ms"}function zo(a,e,r,t){var s=e>=r*1.5;return Math.round(a/r)+" "+t+(s?"s":"")}});var ep=L((JL,jy)=>{"use strict";jy.exports=Ik;function Ik(a,e,r){if(typeof e!="string")throw new TypeError("argument str must be a string");var t=e.indexOf("=");if(t===-1)return-2;var s=e.slice(t+1).split(","),i=[];i.type=e.slice(0,t);for(var n=0;na-1&&(c=a-1),!(isNaN(l)||isNaN(c)||l>c||l<0)&&i.push({start:l,end:c})}return i.length<1?-1:r&&r.combine?Nk(i):i}function Nk(a){for(var e=a.map(jk).sort(Mk),r=0,t=1;ti.end+1?e[++r]=s:s.end>i.end&&(i.end=s.end,i.index=Math.min(i.index,s.index))}e.length=r+1;var n=e.sort($k).map(Dk);return n.type=a.type,n}function jk(a,e){return{start:a.start,end:a.end,index:e}}function Dk(a){return{start:a.start,end:a.end}}function $k(a,e){return a.index-e.index}function Mk(a,e){return a.start-e.start}});var Go=L((eq,ip)=>{"use strict";var tp=Ma(),ot=tr()("send"),Xa=kr()("send"),Lk=jl(),qk=wy(),My=mi(),Fk=Yu(),Uk=Ju(),Bo=require("fs"),ap=Ay(),Ly=Ny(),zk=Jn(),Hk=ep(),yi=require("path"),Bk=Bn(),qy=require("stream"),Vk=require("util"),Gk=yi.extname,Fy=yi.join,rp=yi.normalize,np=yi.resolve,Ho=yi.sep,Wk=/^ *bytes=/,Uy=3600*24*365*1e3,Dy=/(?:^|[\\/])\.\.(?:[\\/]|$)/;ip.exports=Zk;ip.exports.mime=ap;function Zk(a,e,r){return new tt(a,e,r)}function tt(a,e,r){qy.call(this);var t=r||{};if(this.options=t,this.path=e,this.req=a,this._acceptRanges=t.acceptRanges!==void 0?!!t.acceptRanges:!0,this._cacheControl=t.cacheControl!==void 0?!!t.cacheControl:!0,this._etag=t.etag!==void 0?!!t.etag:!0,this._dotfiles=t.dotfiles!==void 0?t.dotfiles:"ignore",this._dotfiles!=="ignore"&&this._dotfiles!=="allow"&&this._dotfiles!=="deny")throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"');this._hidden=!!t.hidden,t.hidden!==void 0&&Xa("hidden: use dotfiles: '"+(this._hidden?"allow":"ignore")+"' instead"),t.dotfiles===void 0&&(this._dotfiles=void 0),this._extensions=t.extensions!==void 0?sp(t.extensions,"extensions option"):[],this._immutable=t.immutable!==void 0?!!t.immutable:!1,this._index=t.index!==void 0?sp(t.index,"index option"):["index.html"],this._lastModified=t.lastModified!==void 0?!!t.lastModified:!0,this._maxage=t.maxAge||t.maxage,this._maxage=typeof this._maxage=="string"?Ly(this._maxage):Number(this._maxage),this._maxage=isNaN(this._maxage)?0:Math.min(Math.max(0,this._maxage),Uy),this._root=t.root?np(t.root):null,!this._root&&t.from&&this.from(t.from)}Vk.inherits(tt,qy);tt.prototype.etag=Xa.function(function(e){return this._etag=!!e,ot("etag %s",this._etag),this},"send.etag: pass etag as option");tt.prototype.hidden=Xa.function(function(e){return this._hidden=!!e,this._dotfiles=void 0,ot("hidden %s",this._hidden),this},"send.hidden: use dotfiles option");tt.prototype.index=Xa.function(function(e){var r=e?sp(e,"paths argument"):[];return ot("index %o",e),this._index=r,this},"send.index: pass index as option");tt.prototype.root=function(e){return this._root=np(String(e)),ot("root %s",this._root),this};tt.prototype.from=Xa.function(tt.prototype.root,"send.from: pass root as option");tt.prototype.root=Xa.function(tt.prototype.root,"send.root: pass root as option");tt.prototype.maxage=Xa.function(function(e){return this._maxage=typeof e=="string"?Ly(e):Number(e),this._maxage=isNaN(this._maxage)?0:Math.min(Math.max(0,this._maxage),Uy),ot("max-age %d",this._maxage),this},"send.maxage: pass maxAge as option");tt.prototype.error=function(e,r){if(Hy(this,"error"))return this.emit("error",Yk(e,r));var t=this.res,s=Bk.message[e]||String(e),i=zy("Error",My(s));Kk(t),r&&r.headers&&a4(t,r.headers),t.statusCode=e,t.setHeader("Content-Type","text/html; charset=UTF-8"),t.setHeader("Content-Length",Buffer.byteLength(i)),t.setHeader("Content-Security-Policy","default-src 'none'"),t.setHeader("X-Content-Type-Options","nosniff"),t.end(i)};tt.prototype.hasTrailingSlash=function(){return this.path[this.path.length-1]==="/"};tt.prototype.isConditionalGET=function(){return this.req.headers["if-match"]||this.req.headers["if-unmodified-since"]||this.req.headers["if-none-match"]||this.req.headers["if-modified-since"]};tt.prototype.isPreconditionFailure=function(){var e=this.req,r=this.res,t=e.headers["if-match"];if(t){var s=r.getHeader("ETag");return!s||t!=="*"&&r4(t).every(function(o){return o!==s&&o!=="W/"+s&&"W/"+o!==s})}var i=Vo(e.headers["if-unmodified-since"]);if(!isNaN(i)){var n=Vo(r.getHeader("Last-Modified"));return isNaN(n)||n>i}return!1};tt.prototype.removeContentHeaderFields=function(){var e=this.res;e.removeHeader("Content-Encoding"),e.removeHeader("Content-Language"),e.removeHeader("Content-Length"),e.removeHeader("Content-Range"),e.removeHeader("Content-Type")};tt.prototype.notModified=function(){var e=this.res;ot("not modified"),this.removeContentHeaderFields(),e.statusCode=304,e.end()};tt.prototype.headersAlreadySent=function(){var e=new Error("Can't set headers after they are sent.");ot("headers already sent"),this.error(500,e)};tt.prototype.isCachable=function(){var e=this.res.statusCode;return e>=200&&e<300||e===304};tt.prototype.onStatError=function(e){switch(e.code){case"ENAMETOOLONG":case"ENOENT":case"ENOTDIR":this.error(404,e);break;default:this.error(500,e);break}};tt.prototype.isFresh=function(){return Uk(this.req.headers,{etag:this.res.getHeader("ETag"),"last-modified":this.res.getHeader("Last-Modified")})};tt.prototype.isRangeFresh=function(){var e=this.req.headers["if-range"];if(!e)return!0;if(e.indexOf('"')!==-1){var r=this.res.getHeader("ETag");return!!(r&&e.indexOf(r)!==-1)}var t=this.res.getHeader("Last-Modified");return Vo(t)<=Vo(e)};tt.prototype.redirect=function(e){var r=this.res;if(Hy(this,"directory")){this.emit("directory",r,e);return}if(this.hasTrailingSlash()){this.error(403);return}var t=qk(Xk(this.path+"/")),s=zy("Redirecting","Redirecting to "+My(t));r.statusCode=301,r.setHeader("Content-Type","text/html; charset=UTF-8"),r.setHeader("Content-Length",Buffer.byteLength(s)),r.setHeader("Content-Security-Policy","default-src 'none'"),r.setHeader("X-Content-Type-Options","nosniff"),r.setHeader("Location",t),r.end(s)};tt.prototype.pipe=function(e){var r=this._root;this.res=e;var t=Jk(this.path);if(t===-1)return this.error(400),e;if(~t.indexOf("\0"))return this.error(400),e;var s;if(r!==null){if(t&&(t=rp("."+Ho+t)),Dy.test(t))return ot('malicious path "%s"',t),this.error(403),e;s=t.split(Ho),t=rp(Fy(r,t))}else{if(Dy.test(t))return ot('malicious path "%s"',t),this.error(403),e;s=rp(t).split(Ho),t=np(t)}if(Qk(s)){var i=this._dotfiles;switch(i===void 0&&(i=s[s.length-1][0]==="."?this._hidden?"allow":"ignore":"allow"),ot('%s dotfile "%s"',i,t),i){case"allow":break;case"deny":return this.error(403),e;case"ignore":default:return this.error(404),e}}return this._index.length&&this.hasTrailingSlash()?(this.sendIndex(t),e):(this.sendFile(t),e)};tt.prototype.send=function(e,r){var t=r.size,s=this.options,i={},n=this.res,o=this.req,l=o.headers.range,c=s.start||0;if(t4(n)){this.headersAlreadySent();return}if(ot('pipe "%s"',e),this.setHeader(e,r),this.type(e),this.isConditionalGET()){if(this.isPreconditionFailure()){this.error(412);return}if(this.isCachable()&&this.isFresh()){this.notModified();return}}if(t=Math.max(0,t-c),s.end!==void 0){var u=s.end-c+1;t>u&&(t=u)}if(this._acceptRanges&&Wk.test(l)){if(l=Hk(t,l,{combine:!0}),this.isRangeFresh()||(ot("range stale"),l=-2),l===-1)return ot("range unsatisfiable"),n.setHeader("Content-Range",$y("bytes",t)),this.error(416,{headers:{"Content-Range":n.getHeader("Content-Range")}});l!==-2&&l.length===1&&(ot("range %j",l),n.statusCode=206,n.setHeader("Content-Range",$y("bytes",t,l[0])),c+=l[0].start,t=l[0].end-l[0].start+1)}for(var p in s)i[p]=s[p];if(i.start=c,i.end=Math.max(c,c+t-1),n.setHeader("Content-Length",t),o.method==="HEAD"){n.end();return}this.stream(e,i)};tt.prototype.sendFile=function(e){var r=0,t=this;ot('stat "%s"',e),Bo.stat(e,function(n,o){if(n&&n.code==="ENOENT"&&!Gk(e)&&e[e.length-1]!==Ho)return s(n);if(n)return t.onStatError(n);if(o.isDirectory())return t.redirect(e);t.emit("file",e,o),t.send(e,o)});function s(i){if(t._extensions.length<=r)return i?t.onStatError(i):t.error(404);var n=e+"."+t._extensions[r++];ot('stat "%s"',n),Bo.stat(n,function(o,l){if(o)return s(o);if(l.isDirectory())return s();t.emit("file",n,l),t.send(n,l)})}};tt.prototype.sendIndex=function(e){var r=-1,t=this;function s(i){if(++r>=t._index.length)return i?t.onStatError(i):t.error(404);var n=Fy(e,t._index[r]);ot('stat "%s"',n),Bo.stat(n,function(o,l){if(o)return s(o);if(l.isDirectory())return s();t.emit("file",n,l),t.send(n,l)})}s()};tt.prototype.stream=function(e,r){var t=this,s=this.res,i=Bo.createReadStream(e,r);this.emit("stream",i),i.pipe(s);function n(){Lk(i,!0)}zk(s,n),i.on("error",function(l){n(),t.onStatError(l)}),i.on("end",function(){t.emit("end")})};tt.prototype.type=function(e){var r=this.res;if(!r.getHeader("Content-Type")){var t=ap.lookup(e);if(!t){ot("no content-type");return}var s=ap.charsets.lookup(t);ot("content-type %s",t),r.setHeader("Content-Type",t+(s?"; charset="+s:""))}};tt.prototype.setHeader=function(e,r){var t=this.res;if(this.emit("headers",t,e,r),this._acceptRanges&&!t.getHeader("Accept-Ranges")&&(ot("accept ranges"),t.setHeader("Accept-Ranges","bytes")),this._cacheControl&&!t.getHeader("Cache-Control")){var s="public, max-age="+Math.floor(this._maxage/1e3);this._immutable&&(s+=", immutable"),ot("cache-control %s",s),t.setHeader("Cache-Control",s)}if(this._lastModified&&!t.getHeader("Last-Modified")){var i=r.mtime.toUTCString();ot("modified %s",i),t.setHeader("Last-Modified",i)}if(this._etag&&!t.getHeader("ETag")){var n=Fk(r);ot("etag %s",n),t.setHeader("ETag",n)}};function Kk(a){for(var e=e4(a),r=0;r1?"/"+a.substr(e):a}function Qk(a){for(var e=0;e1&&r[0]===".")return!0}return!1}function $y(a,e,r){return a+" "+(r?r.start+"-"+r.end:"*")+"/"+e}function zy(a,e){return` +`}oy.exports=Kk;function Kk(a,e,r){var t=r||{},s=t.env||process.env.NODE_ENV||"development",i=t.onerror;return function(n){var o,l,c;if(!n&&sy(e)){dp("cannot 404 after headers sent");return}if(n?(c=eC(n),c===void 0?c=rC(e):o=Jk(n),l=Yk(n,c,s)):(c=404,l="Cannot "+a.method+" "+zk(tC(a))),dp("default %s",c),n&&i&&Zk(i,n,a,e),sy(e)){dp("cannot %d after headers sent",c),a.socket&&a.socket.destroy();return}aC(a,e,c,o,l)}}function Jk(a){if(!(!a.headers||typeof a.headers!="object")){for(var e=Object.create(null),r=Object.keys(a.headers),t=0;t=400&&a.status<600)return a.status;if(typeof a.statusCode=="number"&&a.statusCode>=400&&a.statusCode<600)return a.statusCode}function tC(a){try{return Hk.original(a).pathname}catch{return"resource"}}function rC(a){var e=a.statusCode;return(typeof e!="number"||e<400||e>599)&&(e=500),e}function sy(a){return typeof a.headersSent!="boolean"?!!a._header:a.headersSent}function aC(a,e,r,t,s){function i(){var n=Qk(s);if(e.statusCode=r,a.httpVersionMajor<2&&(e.statusMessage=iy.message[r]),e.removeHeader("Content-Encoding"),e.removeHeader("Content-Language"),e.removeHeader("Content-Range"),sC(e,t),e.setHeader("Content-Security-Policy","default-src 'none'"),e.setHeader("X-Content-Type-Options","nosniff"),e.setHeader("Content-Type","text/html; charset=utf-8"),e.setHeader("Content-Length",Buffer.byteLength(n,"utf8")),a.method==="HEAD"){e.end();return}e.end(n,"utf8")}if(Xk(a)){i();return}Vk(a),ny(a,i),a.resume()}function sC(a,e){if(e)for(var r=Object.keys(e),t=0;t{"use strict";py.exports=nC;function ly(a,e,r){for(var t=0;t0&&Array.isArray(s)?ly(s,e,r-1):e.push(s)}return e}function uy(a,e){for(var r=0;r{my.exports=fy;var dy=/\\.|\((?:\?<(.*?)>)?(?!\?)/g;function fy(a,e,r){r=r||{},e=e||[];var t=r.strict,s=r.end!==!1,i=r.sensitive?"":"i",n=r.lookahead!==!1,o=0,l=e.length,c=0,u=0,p=0,f="",d;if(a instanceof RegExp){for(;d=dy.exec(a.source);)d[0][0]!=="\\"&&e.push({name:d[1]||u++,optional:!1,offset:d.index});return a}if(Array.isArray(a))return a=a.map(function(v){return fy(v,e,r).source}),new RegExp(a.join("|"),i);if(typeof a!="string")throw new TypeError("path must be a string, array of strings, or regular expression");for(a=a.replace(/\\.|(\/)?(\.)?:(\w+)(\(.*?\))?(\*)?(\?)?|[.*]|\/\(/g,function(v,h,m,y,g,b,w,P){if(v[0]==="\\")return f+=v,p+=2,v;if(v===".")return f+="\\.",o+=1,p+=1,"\\.";if(h||m?f="":f+=a.slice(p,P),p=P+v.length,v==="*")return o+=3,"(.*)";if(v==="/(")return f+="/",o+=2,"/(?:";h=h||"",m=m?"\\.":"",w=w||"",g=g?g.replace(/\\.|\*/,function(C){return C==="*"?"(.*)":C}):f?"((?:(?!/|"+f+").)+?)":"([^/"+m+"]+?)",e.push({name:y,optional:!!w,offset:P+o});var T="(?:"+m+h+g+(b?"((?:[/"+m+"].+?)?)":"")+")"+w;return o+=T.length-v.length,T});d=dy.exec(a);)d[0][0]!=="\\"&&((l+c===e.length||e[l+c].offset>d.index)&&e.splice(l+c,0,{name:u++,optional:!1,offset:d.index}),c++);return a+=t?"":a[a.length-1]==="/"?"?":"/?",s?a+="$":a[a.length-1]!=="/"&&(a+=n?"(?=/|$)":"(?:/|$)"),new RegExp("^"+a,i)}});var fp=q(($q,gy)=>{"use strict";var iC=hy(),oC=rr()("express:router:layer"),cC=Object.prototype.hasOwnProperty;gy.exports=un;function un(a,e,r){if(!(this instanceof un))return new un(a,e,r);oC("new %o",a);var t=e||{};this.handle=r,this.name=r.name||"",this.params=void 0,this.path=void 0,this.regexp=iC(a,this.keys=[],t),this.regexp.fast_star=a==="*",this.regexp.fast_slash=a==="/"&&t.end===!1}un.prototype.handle_error=function(e,r,t,s){var i=this.handle;if(i.length!==4)return s(e);try{i(e,r,t,s)}catch(n){s(n)}};un.prototype.handle_request=function(e,r,t){var s=this.handle;if(s.length>3)return t();try{s(e,r,t)}catch(i){t(i)}};un.prototype.match=function(e){var r;if(e!=null){if(this.regexp.fast_slash)return this.params={},this.path="",!0;if(this.regexp.fast_star)return this.params={0:vy(e)},this.path=e,!0;r=this.regexp.exec(e)}if(!r)return this.params=void 0,this.path=void 0,!1;this.params={},this.path=r[0];for(var t=this.keys,s=this.params,i=1;i{"use strict";var yy=require("http");by.exports=lC()||uC();function lC(){return yy.METHODS&&yy.METHODS.map(function(e){return e.toLowerCase()})}function uC(){return["get","post","put","head","delete","options","trace","copy","lock","mkcol","move","purge","propfind","proppatch","unlock","report","mkactivity","checkout","merge","m-search","notify","subscribe","unsubscribe","patch","search","connect"]}});var mp=q((Mq,Ty)=>{"use strict";var xy=rr()("express:router:route"),_y=Pi(),Sy=fp(),pC=Xo(),Ey=Array.prototype.slice,wy=Object.prototype.toString;Ty.exports=pn;function pn(a){this.path=a,this.stack=[],xy("new %o",a),this.methods={}}pn.prototype._handles_method=function(e){if(this.methods._all)return!0;var r=typeof e=="string"?e.toLowerCase():e;return r==="head"&&!this.methods.head&&(r="get"),!!this.methods[r]};pn.prototype._options=function(){var e=Object.keys(this.methods);this.methods.get&&!this.methods.head&&e.push("head");for(var r=0;r100)return setImmediate(l,c);var u=i[s++];if(!u)return t(c);u.method&&u.method!==o?l(c):c?u.handle_error(c,e,r,l):u.handle_request(e,r,l),n=0}};pn.prototype.all=function(){for(var e=_y(Ey.call(arguments)),r=0;r{Ry=Py.exports=function(a,e){if(a&&e)for(var r in e)a[r]=e[r];return a}});var vp=q((Lq,Iy)=>{"use strict";var dC=mp(),ky=fp(),fC=Xo(),hp=Oi(),Qo=rr()("express:router"),Oy=Ar()("express"),mC=Pi(),hC=ln(),vC=ti(),gC=/^\[object (\S+)\]$/,Cy=Array.prototype.slice,yC=Object.prototype.toString,Ja=Iy.exports=function(a){var e=a||{};function r(t,s,i){r.handle(t,s,i)}return vC(r,Ja),r.params={},r._params=[],r.caseSensitive=e.caseSensitive,r.mergeParams=e.mergeParams,r.strict=e.strict,r.stack=[],r};Ja.param=function(e,r){if(typeof e=="function"){Oy("router.param(fn): Refactor to use path params"),this._params.push(e);return}var t=this._params,s=t.length,i;e[0]===":"&&(Oy("router.param("+JSON.stringify(e)+", fn): Use router.param("+JSON.stringify(e.slice(1))+", fn) instead"),e=e.slice(1));for(var n=0;n=f.length){setImmediate(h,b);return}if(++c>100)return setImmediate(m,g);var w=xC(e);if(w==null)return h(b);for(var P,T,C;T!==!0&&i=o.length)return i();if(u=0,p=o[l++],c=p.name,f=t.params[c],d=n[c],v=r[c],f===void 0||!d)return h();if(v&&(v.match===f||v.error&&v.error!=="route"))return t.params[c]=v.value,h(v.error);r[c]=v={error:null,match:f,value:f},m()}function m(y){var g=d[u++];if(v.value=t.params[p.name],y){v.error=y,h(y);return}if(!g)return h();try{g(t,s,m,f,p.name)}catch(b){m(b)}}h()};Ja.use=function(e){var r=0,t="/";if(typeof e!="function"){for(var s=e;Array.isArray(s)&&s.length!==0;)s=s[0];typeof s!="function"&&(r=1,t=e)}var i=mC(Cy.call(arguments,r));if(i.length===0)throw new TypeError("Router.use() requires a middleware function");for(var n=0;n");var o=new ky(t,{sensitive:this.caseSensitive,strict:!1,end:!1},e);o.route=void 0,this.stack.push(o)}return this};Ja.route=function(e){var r=new dC(e),t=new ky(e,{sensitive:this.caseSensitive,strict:this.strict,end:!0},r.dispatch.bind(r));return t.route=r,this.stack.push(t),r};fC.concat("all").forEach(function(a){Ja[a]=function(e){var r=this.route(e);return r[a].apply(r,Cy.call(arguments,1)),this}});function bC(a,e){for(var r=0;r=0;t--)a[t+s]=a[t],t{"use strict";var Ay=ti();Ny.init=function(a){return function(r,t,s){a.enabled("x-powered-by")&&t.setHeader("X-Powered-By","Express"),r.res=t,t.req=r,r.next=s,Ay(r,a.request),Ay(t,a.response),t.locals=t.locals||Object.create(null),s()}}});var gp=q((Fq,$y)=>{"use strict";var OC=Oi(),kC=ln(),CC=Ho();$y.exports=function(e){var r=OC({},e),t=CC.parse;return typeof e=="function"&&(t=e,r=void 0),r!==void 0&&r.allowPrototypes===void 0&&(r.allowPrototypes=!0),function(i,n,o){if(!i.query){var l=kC(i).query;i.query=t(l,r)}o()}}});var Fy=q((Uq,qy)=>{"use strict";var Ko=rr()("express:view"),ki=require("path"),IC=require("fs"),AC=ki.dirname,Ly=ki.basename,NC=ki.extname,jy=ki.join,DC=ki.resolve;qy.exports=Jo;function Jo(a,e){var r=e||{};if(this.defaultEngine=r.defaultEngine,this.ext=NC(a),this.name=a,this.root=r.root,!this.ext&&!this.defaultEngine)throw new Error("No default engine was specified and no extension was provided.");var t=a;if(this.ext||(this.ext=this.defaultEngine[0]!=="."?"."+this.defaultEngine:this.defaultEngine,t+=this.ext),!r.engines[this.ext]){var s=this.ext.slice(1);Ko('require "%s"',s);var i=require(s).__express;if(typeof i!="function")throw new Error('Module "'+s+'" does not provide a view engine.');r.engines[this.ext]=i}this.engine=r.engines[this.ext],this.path=this.lookup(t)}Jo.prototype.lookup=function(e){var r,t=[].concat(this.root);Ko('lookup "%s"',e);for(var s=0;s{var Yo=require("buffer"),Lr=Yo.Buffer;function Uy(a,e){for(var r in a)e[r]=a[r]}Lr.from&&Lr.alloc&&Lr.allocUnsafe&&Lr.allocUnsafeSlow?zy.exports=Yo:(Uy(Yo,yp),yp.Buffer=Ya);function Ya(a,e,r){return Lr(a,e,r)}Ya.prototype=Object.create(Lr.prototype);Uy(Lr,Ya);Ya.from=function(a,e,r){if(typeof a=="number")throw new TypeError("Argument must not be a number");return Lr(a,e,r)};Ya.alloc=function(a,e,r){if(typeof a!="number")throw new TypeError("Argument must be a number");var t=Lr(a);return e!==void 0?typeof r=="string"?t.fill(e,r):t.fill(e):t.fill(0),t};Ya.allocUnsafe=function(a){if(typeof a!="number")throw new TypeError("Argument must be a number");return Lr(a)};Ya.allocUnsafeSlow=function(a){if(typeof a!="number")throw new TypeError("Argument must be a number");return Yo.SlowBuffer(a)}});var xp=q((zq,bp)=>{"use strict";bp.exports=VC;bp.exports.parse=XC;var By=require("path").basename,$C=ec().Buffer,jC=/[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g,MC=/%[0-9A-Fa-f]{2}/,LC=/%([0-9A-Fa-f]{2})/g,Vy=/[^\x20-\x7e\xa0-\xff]/g,qC=/\\([\u0000-\u007f])/g,FC=/([\\"])/g,Hy=/;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g,UC=/^[\x20-\x7e\x80-\xff]+$/,zC=/^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/,BC=/^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/,HC=/^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/;function VC(a,e){var r=e||{},t=r.type||"attachment",s=GC(a,r.fallback);return WC(new Wy(t,s))}function GC(a,e){if(a!==void 0){var r={};if(typeof a!="string")throw new TypeError("filename must be a string");if(e===void 0&&(e=!0),typeof e!="string"&&typeof e!="boolean")throw new TypeError("fallback must be a string or boolean");if(typeof e=="string"&&Vy.test(e))throw new TypeError("fallback must be ISO-8859-1 string");var t=By(a),s=UC.test(t),i=typeof e!="string"?e&&Gy(t):By(e),n=typeof i=="string"&&i!==t;return(n||!s||MC.test(t))&&(r["filename*"]=t),(s||n)&&(r.filename=n?i:t),r}}function WC(a){var e=a.parameters,r=a.type;if(!r||typeof r!="string"||!zC.test(r))throw new TypeError("invalid type");var t=String(r).toLowerCase();if(e&&typeof e=="object")for(var s,i=Object.keys(e).sort(),n=0;n{"use strict";Zy.exports=aI;var eI=/(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g,tI=/(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g,rI="$1\uFFFD$2";function aI(a){return String(a).replace(tI,rI).replace(eI,encodeURI)}});var _p=q((Hq,Jy)=>{"use strict";Jy.exports=iI;var sI=require("crypto"),Qy=require("fs").Stats,Ky=Object.prototype.toString;function nI(a){if(a.length===0)return'"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"';var e=sI.createHash("sha1").update(a,"utf8").digest("base64").substring(0,27),r=typeof a=="string"?Buffer.byteLength(a,"utf8"):a.length;return'"'+r.toString(16)+"-"+e+'"'}function iI(a,e){if(a==null)throw new TypeError("argument entity is required");var r=oI(a),t=e&&typeof e.weak=="boolean"?e.weak:r;if(!r&&typeof a!="string"&&!Buffer.isBuffer(a))throw new TypeError("argument entity must be string, Buffer, or fs.Stats");var s=r?cI(a):nI(a);return t?"W/"+s:s}function oI(a){return typeof Qy=="function"&&a instanceof Qy?!0:a&&typeof a=="object"&&"ctime"in a&&Ky.call(a.ctime)==="[object Date]"&&"mtime"in a&&Ky.call(a.mtime)==="[object Date]"&&"ino"in a&&typeof a.ino=="number"&&"size"in a&&typeof a.size=="number"}function cI(a){var e=a.mtime.getTime().toString(16),r=a.size.toString(16);return'"'+r+"-"+e+'"'}});var Sp=q((Vq,eb)=>{"use strict";var lI=/(?:^|,)\s*?no-cache\s*?(?:,|$)/;eb.exports=uI;function uI(a,e){var r=a["if-modified-since"],t=a["if-none-match"];if(!r&&!t)return!1;var s=a["cache-control"];if(s&&lI.test(s))return!1;if(t&&t!=="*"){var i=e.etag;if(!i)return!1;for(var n=!0,o=pI(t),l=0;l{dI.exports={"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/bdoc":["bdoc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":[],"application/font-woff2":[],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/prs.cww":["cww"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-outlook":["msg"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.wadl+xml":["wadl"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":[],"application/x-arj":["arj"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":[],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":[],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":[],"application/x-msdownload":["com","bat"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["wmf","emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":[],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["obj"],"application/x-ustar":["ustar"],"application/x-virtualbox-hdd":["hdd"],"application/x-virtualbox-ova":["ova"],"application/x-virtualbox-ovf":["ovf"],"application/x-virtualbox-vbox":["vbox"],"application/x-virtualbox-vbox-extpack":["vbox-extpack"],"application/x-virtualbox-vdi":["vdi"],"application/x-virtualbox-vhd":["vhd"],"application/x-virtualbox-vmdk":["vmdk"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":[],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp3":[],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/wav":["wav"],"audio/wave":[],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":[],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":[],"audio/x-wav":[],"audio/xm":["xm"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/apng":["apng"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/ktx":["ktx"],"image/png":["png"],"image/prs.btif":["btif"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":[],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/webp":["webp"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":[],"image/x-pcx":["pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/rfc822":["eml","mime"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.vtu":["vtu"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/hjson":["hjson"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/prs.lines.tag":["dsc"],"text/richtext":["rtx"],"text/rtf":[],"text/sgml":["sgml","sgm"],"text/slim":["slim","slm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/vtt":["vtt"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-org":[],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"text/xml":[],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]}});var ab=q((Zq,rb)=>{var Wq=require("path"),fI=require("fs");function fn(){this.types=Object.create(null),this.extensions=Object.create(null)}fn.prototype.define=function(a){for(var e in a){for(var r=a[e],t=0;t{var mn=1e3,hn=mn*60,vn=hn*60,es=vn*24,mI=es*7,hI=es*365.25;sb.exports=function(a,e){e=e||{};var r=typeof a;if(r==="string"&&a.length>0)return vI(a);if(r==="number"&&isFinite(a))return e.long?yI(a):gI(a);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(a))};function vI(a){if(a=String(a),!(a.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(a);if(e){var r=parseFloat(e[1]),t=(e[2]||"ms").toLowerCase();switch(t){case"years":case"year":case"yrs":case"yr":case"y":return r*hI;case"weeks":case"week":case"w":return r*mI;case"days":case"day":case"d":return r*es;case"hours":case"hour":case"hrs":case"hr":case"h":return r*vn;case"minutes":case"minute":case"mins":case"min":case"m":return r*hn;case"seconds":case"second":case"secs":case"sec":case"s":return r*mn;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function gI(a){var e=Math.abs(a);return e>=es?Math.round(a/es)+"d":e>=vn?Math.round(a/vn)+"h":e>=hn?Math.round(a/hn)+"m":e>=mn?Math.round(a/mn)+"s":a+"ms"}function yI(a){var e=Math.abs(a);return e>=es?tc(a,e,es,"day"):e>=vn?tc(a,e,vn,"hour"):e>=hn?tc(a,e,hn,"minute"):e>=mn?tc(a,e,mn,"second"):a+" ms"}function tc(a,e,r,t){var s=e>=r*1.5;return Math.round(a/r)+" "+t+(s?"s":"")}});var Ep=q((Qq,ib)=>{"use strict";ib.exports=bI;function bI(a,e,r){if(typeof e!="string")throw new TypeError("argument str must be a string");var t=e.indexOf("=");if(t===-1)return-2;var s=e.slice(t+1).split(","),i=[];i.type=e.slice(0,t);for(var n=0;na-1&&(c=a-1),!(isNaN(l)||isNaN(c)||l>c||l<0)&&i.push({start:l,end:c})}return i.length<1?-1:r&&r.combine?xI(i):i}function xI(a){for(var e=a.map(_I).sort(wI),r=0,t=1;ti.end+1?e[++r]=s:s.end>i.end&&(i.end=s.end,i.index=Math.min(i.index,s.index))}e.length=r+1;var n=e.sort(EI).map(SI);return n.type=a.type,n}function _I(a,e){return{start:a.start,end:a.end,index:e}}function SI(a){return{start:a.start,end:a.end}}function EI(a,e){return a.index-e.index}function wI(a,e){return a.start-e.start}});var nc=q((Kq,kp)=>{"use strict";var wp=za(),lt=rr()("send"),ts=Ar()("send"),TI=au(),RI=Xy(),lb=Ri(),PI=_p(),OI=Sp(),ac=require("fs"),Rp=ab(),ub=nb(),kI=pi(),CI=Ep(),Ci=require("path"),II=ri(),pb=require("stream"),AI=require("util"),NI=Ci.extname,db=Ci.join,Tp=Ci.normalize,Op=Ci.resolve,rc=Ci.sep,DI=/^ *bytes=/,fb=3600*24*365*1e3,ob=/(?:^|[\\/])\.\.(?:[\\/]|$)/;kp.exports=$I;kp.exports.mime=Rp;function $I(a,e,r){return new at(a,e,r)}function at(a,e,r){pb.call(this);var t=r||{};if(this.options=t,this.path=e,this.req=a,this._acceptRanges=t.acceptRanges!==void 0?!!t.acceptRanges:!0,this._cacheControl=t.cacheControl!==void 0?!!t.cacheControl:!0,this._etag=t.etag!==void 0?!!t.etag:!0,this._dotfiles=t.dotfiles!==void 0?t.dotfiles:"ignore",this._dotfiles!=="ignore"&&this._dotfiles!=="allow"&&this._dotfiles!=="deny")throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"');this._hidden=!!t.hidden,t.hidden!==void 0&&ts("hidden: use dotfiles: '"+(this._hidden?"allow":"ignore")+"' instead"),t.dotfiles===void 0&&(this._dotfiles=void 0),this._extensions=t.extensions!==void 0?Pp(t.extensions,"extensions option"):[],this._immutable=t.immutable!==void 0?!!t.immutable:!1,this._index=t.index!==void 0?Pp(t.index,"index option"):["index.html"],this._lastModified=t.lastModified!==void 0?!!t.lastModified:!0,this._maxage=t.maxAge||t.maxage,this._maxage=typeof this._maxage=="string"?ub(this._maxage):Number(this._maxage),this._maxage=isNaN(this._maxage)?0:Math.min(Math.max(0,this._maxage),fb),this._root=t.root?Op(t.root):null,!this._root&&t.from&&this.from(t.from)}AI.inherits(at,pb);at.prototype.etag=ts.function(function(e){return this._etag=!!e,lt("etag %s",this._etag),this},"send.etag: pass etag as option");at.prototype.hidden=ts.function(function(e){return this._hidden=!!e,this._dotfiles=void 0,lt("hidden %s",this._hidden),this},"send.hidden: use dotfiles option");at.prototype.index=ts.function(function(e){var r=e?Pp(e,"paths argument"):[];return lt("index %o",e),this._index=r,this},"send.index: pass index as option");at.prototype.root=function(e){return this._root=Op(String(e)),lt("root %s",this._root),this};at.prototype.from=ts.function(at.prototype.root,"send.from: pass root as option");at.prototype.root=ts.function(at.prototype.root,"send.root: pass root as option");at.prototype.maxage=ts.function(function(e){return this._maxage=typeof e=="string"?ub(e):Number(e),this._maxage=isNaN(this._maxage)?0:Math.min(Math.max(0,this._maxage),fb),lt("max-age %d",this._maxage),this},"send.maxage: pass maxAge as option");at.prototype.error=function(e,r){if(hb(this,"error"))return this.emit("error",qI(e,r));var t=this.res,s=II.message[e]||String(e),i=mb("Error",lb(s));jI(t),r&&r.headers&&HI(t,r.headers),t.statusCode=e,t.setHeader("Content-Type","text/html; charset=UTF-8"),t.setHeader("Content-Length",Buffer.byteLength(i)),t.setHeader("Content-Security-Policy","default-src 'none'"),t.setHeader("X-Content-Type-Options","nosniff"),t.end(i)};at.prototype.hasTrailingSlash=function(){return this.path[this.path.length-1]==="/"};at.prototype.isConditionalGET=function(){return this.req.headers["if-match"]||this.req.headers["if-unmodified-since"]||this.req.headers["if-none-match"]||this.req.headers["if-modified-since"]};at.prototype.isPreconditionFailure=function(){var e=this.req,r=this.res,t=e.headers["if-match"];if(t){var s=r.getHeader("ETag");return!s||t!=="*"&&BI(t).every(function(o){return o!==s&&o!=="W/"+s&&"W/"+o!==s})}var i=sc(e.headers["if-unmodified-since"]);if(!isNaN(i)){var n=sc(r.getHeader("Last-Modified"));return isNaN(n)||n>i}return!1};at.prototype.removeContentHeaderFields=function(){var e=this.res;e.removeHeader("Content-Encoding"),e.removeHeader("Content-Language"),e.removeHeader("Content-Length"),e.removeHeader("Content-Range"),e.removeHeader("Content-Type")};at.prototype.notModified=function(){var e=this.res;lt("not modified"),this.removeContentHeaderFields(),e.statusCode=304,e.end()};at.prototype.headersAlreadySent=function(){var e=new Error("Can't set headers after they are sent.");lt("headers already sent"),this.error(500,e)};at.prototype.isCachable=function(){var e=this.res.statusCode;return e>=200&&e<300||e===304};at.prototype.onStatError=function(e){switch(e.code){case"ENAMETOOLONG":case"ENOENT":case"ENOTDIR":this.error(404,e);break;default:this.error(500,e);break}};at.prototype.isFresh=function(){return OI(this.req.headers,{etag:this.res.getHeader("ETag"),"last-modified":this.res.getHeader("Last-Modified")})};at.prototype.isRangeFresh=function(){var e=this.req.headers["if-range"];if(!e)return!0;if(e.indexOf('"')!==-1){var r=this.res.getHeader("ETag");return!!(r&&e.indexOf(r)!==-1)}var t=this.res.getHeader("Last-Modified");return sc(t)<=sc(e)};at.prototype.redirect=function(e){var r=this.res;if(hb(this,"directory")){this.emit("directory",r,e);return}if(this.hasTrailingSlash()){this.error(403);return}var t=RI(MI(this.path+"/")),s=mb("Redirecting","Redirecting to "+lb(t));r.statusCode=301,r.setHeader("Content-Type","text/html; charset=UTF-8"),r.setHeader("Content-Length",Buffer.byteLength(s)),r.setHeader("Content-Security-Policy","default-src 'none'"),r.setHeader("X-Content-Type-Options","nosniff"),r.setHeader("Location",t),r.end(s)};at.prototype.pipe=function(e){var r=this._root;this.res=e;var t=FI(this.path);if(t===-1)return this.error(400),e;if(~t.indexOf("\0"))return this.error(400),e;var s;if(r!==null){if(t&&(t=Tp("."+rc+t)),ob.test(t))return lt('malicious path "%s"',t),this.error(403),e;s=t.split(rc),t=Tp(db(r,t))}else{if(ob.test(t))return lt('malicious path "%s"',t),this.error(403),e;s=Tp(t).split(rc),t=Op(t)}if(LI(s)){var i=this._dotfiles;switch(i===void 0&&(i=s[s.length-1][0]==="."?this._hidden?"allow":"ignore":"allow"),lt('%s dotfile "%s"',i,t),i){case"allow":break;case"deny":return this.error(403),e;case"ignore":default:return this.error(404),e}}return this._index.length&&this.hasTrailingSlash()?(this.sendIndex(t),e):(this.sendFile(t),e)};at.prototype.send=function(e,r){var t=r.size,s=this.options,i={},n=this.res,o=this.req,l=o.headers.range,c=s.start||0;if(zI(n)){this.headersAlreadySent();return}if(lt('pipe "%s"',e),this.setHeader(e,r),this.type(e),this.isConditionalGET()){if(this.isPreconditionFailure()){this.error(412);return}if(this.isCachable()&&this.isFresh()){this.notModified();return}}if(t=Math.max(0,t-c),s.end!==void 0){var u=s.end-c+1;t>u&&(t=u)}if(this._acceptRanges&&DI.test(l)){if(l=CI(t,l,{combine:!0}),this.isRangeFresh()||(lt("range stale"),l=-2),l===-1)return lt("range unsatisfiable"),n.setHeader("Content-Range",cb("bytes",t)),this.error(416,{headers:{"Content-Range":n.getHeader("Content-Range")}});l!==-2&&l.length===1&&(lt("range %j",l),n.statusCode=206,n.setHeader("Content-Range",cb("bytes",t,l[0])),c+=l[0].start,t=l[0].end-l[0].start+1)}for(var p in s)i[p]=s[p];if(i.start=c,i.end=Math.max(c,c+t-1),n.setHeader("Content-Length",t),o.method==="HEAD"){n.end();return}this.stream(e,i)};at.prototype.sendFile=function(e){var r=0,t=this;lt('stat "%s"',e),ac.stat(e,function(n,o){if(n&&n.code==="ENOENT"&&!NI(e)&&e[e.length-1]!==rc)return s(n);if(n)return t.onStatError(n);if(o.isDirectory())return t.redirect(e);t.emit("file",e,o),t.send(e,o)});function s(i){if(t._extensions.length<=r)return i?t.onStatError(i):t.error(404);var n=e+"."+t._extensions[r++];lt('stat "%s"',n),ac.stat(n,function(o,l){if(o)return s(o);if(l.isDirectory())return s();t.emit("file",n,l),t.send(n,l)})}};at.prototype.sendIndex=function(e){var r=-1,t=this;function s(i){if(++r>=t._index.length)return i?t.onStatError(i):t.error(404);var n=db(e,t._index[r]);lt('stat "%s"',n),ac.stat(n,function(o,l){if(o)return s(o);if(l.isDirectory())return s();t.emit("file",n,l),t.send(n,l)})}s()};at.prototype.stream=function(e,r){var t=this,s=this.res,i=ac.createReadStream(e,r);this.emit("stream",i),i.pipe(s);function n(){TI(i,!0)}kI(s,n),i.on("error",function(l){n(),t.onStatError(l)}),i.on("end",function(){t.emit("end")})};at.prototype.type=function(e){var r=this.res;if(!r.getHeader("Content-Type")){var t=Rp.lookup(e);if(!t){lt("no content-type");return}var s=Rp.charsets.lookup(t);lt("content-type %s",t),r.setHeader("Content-Type",t+(s?"; charset="+s:""))}};at.prototype.setHeader=function(e,r){var t=this.res;if(this.emit("headers",t,e,r),this._acceptRanges&&!t.getHeader("Accept-Ranges")&&(lt("accept ranges"),t.setHeader("Accept-Ranges","bytes")),this._cacheControl&&!t.getHeader("Cache-Control")){var s="public, max-age="+Math.floor(this._maxage/1e3);this._immutable&&(s+=", immutable"),lt("cache-control %s",s),t.setHeader("Cache-Control",s)}if(this._lastModified&&!t.getHeader("Last-Modified")){var i=r.mtime.toUTCString();lt("modified %s",i),t.setHeader("Last-Modified",i)}if(this._etag&&!t.getHeader("ETag")){var n=PI(r);lt("etag %s",n),t.setHeader("ETag",n)}};function jI(a){for(var e=UI(a),r=0;r1?"/"+a.substr(e):a}function LI(a){for(var e=0;e1&&r[0]===".")return!0}return!1}function cb(a,e,r){return a+" "+(r?r.start+"-"+r.end:"*")+"/"+e}function mb(a,e){return` @@ -38,8 +38,8 @@ return fn.apply(this, arguments)
`+e+`
-`}function Yk(a,e){return e?e instanceof Error?tp(a,e,{expose:!1}):tp(a,e):tp(a)}function Jk(a){try{return decodeURIComponent(a)}catch{return-1}}function e4(a){return typeof a.getHeaderNames!="function"?Object.keys(a._headers||{}):a.getHeaderNames()}function Hy(a,e){var r=typeof a.listenerCount!="function"?a.listeners(e).length:a.listenerCount(e);return r>0}function t4(a){return typeof a.headersSent!="boolean"?!!a._header:a.headersSent}function sp(a,e){for(var r=[].concat(a||[]),t=0;t{"use strict";By.exports=s4;function s4(a){if(!a)throw new TypeError("argument req is required");var e=i4(a.headers["x-forwarded-for"]||""),r=n4(a),t=[r].concat(e);return t}function n4(a){return a.socket?a.socket.remoteAddress:a.connection.remoteAddress}function i4(a){for(var e=a.length,r=[],t=a.length,s=a.length-1;s>=0;s--)switch(a.charCodeAt(s)){case 32:t===e&&(t=e=s);break;case 44:t!==e&&r.push(a.substring(t,e)),t=e=s;break;default:t=s;break}return t!==e&&r.push(a.substring(t,e)),r}});var Wy=L((Gy,bi)=>{(function(){var a,e,r,t,s,i,n,o,l;e={},o=this,typeof bi<"u"&&bi!==null&&bi.exports?bi.exports=e:o.ipaddr=e,n=function(c,u,p,m){var f,h;if(c.length!==u.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(f=0;m>0;){if(h=p-m,h<0&&(h=0),c[f]>>h!==u[f]>>h)return!1;m-=p,f+=1}return!0},e.subnetMatch=function(c,u,p){var m,f,h,d,v;p==null&&(p="unicast");for(h in u)for(d=u[h],d[0]&&!(d[0]instanceof Array)&&(d=[d]),m=0,f=d.length;m=0;p=m+=-1)if(f=this.octets[p],f in v){if(d=v[f],h&&d!==0)return null;d!==8&&(h=!0),u+=d}else return null;return 32-u},c})(),r="(0?\\d+|0x[a-f0-9]+)",t={fourOctet:new RegExp("^"+r+"\\."+r+"\\."+r+"\\."+r+"$","i"),longValue:new RegExp("^"+r+"$","i")},e.IPv4.parser=function(c){var u,p,m,f,h;if(p=function(d){return d[0]==="0"&&d[1]!=="x"?parseInt(d,8):parseInt(d)},u=c.match(t.fourOctet))return(function(){var d,v,x,b;for(x=u.slice(1,6),b=[],d=0,v=x.length;d4294967295||h<0)throw new Error("ipaddr: address outside defined range");return(function(){var d,v;for(v=[],f=d=0;d<=24;f=d+=8)v.push(h>>f&255);return v})().reverse()}else return null},e.IPv6=(function(){function c(u,p){var m,f,h,d,v,x;if(u.length===16)for(this.parts=[],m=f=0;f<=14;m=f+=2)this.parts.push(u[m]<<8|u[m+1]);else if(u.length===8)this.parts=u;else throw new Error("ipaddr: ipv6 part count should be 8 or 16");for(x=this.parts,h=0,d=x.length;hp&&(u=m.index,p=m[0].length);return p<0?h:h.substring(0,u)+"::"+h.substring(u+p)},c.prototype.toByteArray=function(){var u,p,m,f,h;for(u=[],h=this.parts,p=0,m=h.length;p>8),u.push(f&255);return u},c.prototype.toNormalizedString=function(){var u,p,m;return u=(function(){var f,h,d,v;for(d=this.parts,v=[],f=0,h=d.length;f>8,u&255,p>>8,p&255])},c.prototype.prefixLengthFromSubnetMask=function(){var u,p,m,f,h,d,v;for(v={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},u=0,h=!1,p=m=7;m>=0;p=m+=-1)if(f=this.parts[p],f in v){if(d=v[f],h&&d!==0)return null;d!==16&&(h=!0),u+=d}else return null;return 128-u},c})(),s="(?:[0-9a-f]+::?)+",l="%[0-9a-z]{1,}",i={zoneIndex:new RegExp(l,"i"),native:new RegExp("^(::)?("+s+")?([0-9a-f]+)?(::)?("+l+")?$","i"),transitional:new RegExp("^((?:"+s+")|(?:::)(?:"+s+")?)"+(r+"\\."+r+"\\."+r+"\\."+r)+("("+l+")?$"),"i")},a=function(c,u){var p,m,f,h,d,v;if(c.indexOf("::")!==c.lastIndexOf("::"))return null;for(v=(c.match(i.zoneIndex)||[])[0],v&&(v=v.substring(1),c=c.replace(/%.+$/,"")),p=0,m=-1;(m=c.indexOf(":",m+1))>=0;)p++;if(c.substr(0,2)==="::"&&p--,c.substr(-2,2)==="::"&&p--,p>u)return null;for(d=u-p,h=":";d--;)h+="0:";return c=c.replace("::",h),c[0]===":"&&(c=c.slice(1)),c[c.length-1]===":"&&(c=c.slice(0,-1)),u=(function(){var x,b,E,O;for(E=c.split(":"),O=[],x=0,b=E.length;x=0&&u<=32))return m=[this.parse(p[1]),u],Object.defineProperty(m,"toString",{value:function(){return this.join("/")}}),m;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},e.IPv4.subnetMaskFromPrefixLength=function(c){var u,p,m;if(c=parseInt(c),c<0||c>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(m=[0,0,0,0],p=0,u=Math.floor(c/8);p=0&&u<=128))return m=[this.parse(p[1]),u],Object.defineProperty(m,"toString",{value:function(){return this.join("/")}}),m;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},e.isValid=function(c){return e.IPv6.isValid(c)||e.IPv4.isValid(c)},e.parse=function(c){if(e.IPv6.isValid(c))return e.IPv6.parse(c);if(e.IPv4.isValid(c))return e.IPv4.parse(c);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},e.parseCIDR=function(c){var u;try{return e.IPv6.parseCIDR(c)}catch(p){u=p;try{return e.IPv4.parseCIDR(c)}catch(m){throw u=m,new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},e.fromByteArray=function(c){var u;if(u=c.length,u===4)return new e.IPv4(c);if(u===16)return new e.IPv6(c);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},e.process=function(c){var u;return u=this.parse(c),u.kind()==="ipv6"&&u.isIPv4MappedAddress()?u.toIPv4Address():u}}).call(Gy)});var op=L((rq,Ko)=>{"use strict";Ko.exports=f4;Ko.exports.all=Xy;Ko.exports.compile=Qy;var o4=Vy(),Ky=Wy(),c4=/^[0-9]+$/,Wo=Ky.isValid,Zo=Ky.parse,Zy={linklocal:["169.254.0.0/16","fe80::/10"],loopback:["127.0.0.1/8","::1/128"],uniquelocal:["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16","fc00::/7"]};function Xy(a,e){var r=o4(a);if(!e)return r;typeof e!="function"&&(e=Qy(e));for(var t=0;ts)throw new TypeError("invalid range on address: "+a);return[t,i]}function d4(a){var e=Zo(a),r=e.kind();return r==="ipv4"?e.prefixLengthFromSubnetMask():null}function f4(a,e){if(!a)throw new TypeError("req argument is required");if(!e)throw new TypeError("trust argument is required");var r=Xy(a,e),t=r[r.length-1];return t}function m4(){return!1}function h4(a){return function(r){if(!Wo(r))return!1;for(var t=Zo(r),s,i=t.kind(),n=0;n{"use strict";var Yy=Uo().Buffer,g4=Qu(),Jy=zn(),eb=kr()("express"),y4=hi(),b4=Go().mime,x4=Yu(),_4=op(),E4=Ao(),w4=require("querystring");Ot.etag=tb({weak:!1});Ot.wetag=tb({weak:!0});Ot.isAbsolute=function(a){if(a[0]==="/"||a[1]===":"&&(a[2]==="\\"||a[2]==="/")||a.substring(0,2)==="\\\\")return!0};Ot.flatten=eb.function(y4,"utils.flatten: use array-flatten npm module instead");Ot.normalizeType=function(a){return~a.indexOf("/")?S4(a):{value:b4.lookup(a),params:{}}};Ot.normalizeTypes=function(a){for(var e=[],r=0;r{"use strict";var R4=$g(),O4=Wu(),lp=$o(),C4=cy(),k4=Zu(),Xo=tr()("express:application"),A4=my(),I4=require("http"),N4=_a().compileETag,j4=_a().compileQueryParser,D4=_a().compileTrust,$4=kr()("express"),M4=hi(),cp=vi(),L4=require("path").resolve,un=Hn(),q4=Object.prototype.hasOwnProperty,pp=Array.prototype.slice,mt=rb=ab.exports={},up="@@symbol:trust_proxy_default";mt.init=function(){this.cache={},this.engines={},this.settings={},this.defaultConfiguration()};mt.defaultConfiguration=function(){var e=process.env.NODE_ENV||"development";this.enable("x-powered-by"),this.set("etag","weak"),this.set("env",e),this.set("query parser","extended"),this.set("subdomain offset",2),this.set("trust proxy",!1),Object.defineProperty(this.settings,up,{configurable:!0,value:!0}),Xo("booting in %s mode",e),this.on("mount",function(t){this.settings[up]===!0&&typeof t.settings["trust proxy fn"]=="function"&&(delete this.settings["trust proxy"],delete this.settings["trust proxy fn"]),un(this.request,t.request),un(this.response,t.response),un(this.engines,t.engines),un(this.settings,t.settings)}),this.locals=Object.create(null),this.mountpath="/",this.locals.settings=this.settings,this.set("view",A4),this.set("views",L4("views")),this.set("jsonp callback name","callback"),e==="production"&&this.enable("view cache"),Object.defineProperty(this,"router",{get:function(){throw new Error(`'app.router' is deprecated! -Please see the 3.x to 4.x migration guide for details on how to update your app.`)}})};mt.lazyrouter=function(){this._router||(this._router=new O4({caseSensitive:this.enabled("case sensitive routing"),strict:this.enabled("strict routing")}),this._router.use(k4(this.get("query parser fn"))),this._router.use(C4.init(this)))};mt.handle=function(e,r,t){var s=this._router,i=t||R4(e,r,{env:this.get("env"),onerror:F4.bind(this)});if(!s){Xo("no routes defined on app"),i();return}s.handle(e,r,i)};mt.use=function(e){var r=0,t="/";if(typeof e!="function"){for(var s=e;Array.isArray(s)&&s.length!==0;)s=s[0];typeof s!="function"&&(r=1,t=e)}var i=M4(pp.call(arguments,r));if(i.length===0)throw new TypeError("app.use() requires a middleware function");this.lazyrouter();var n=this._router;return i.forEach(function(o){if(!o||!o.handle||!o.set)return n.use(t,o);Xo(".use app under %s",t),o.mountpath=t,o.parent=this,n.use(t,function(c,u,p){var m=c.app;o.handle(c,u,function(f){un(c,m.request),un(u,m.response),p(f)})}),o.emit("mount",this)},this),this};mt.route=function(e){return this.lazyrouter(),this._router.route(e)};mt.engine=function(e,r){if(typeof r!="function")throw new Error("callback function required");var t=e[0]!=="."?"."+e:e;return this.engines[t]=r,this};mt.param=function(e,r){if(this.lazyrouter(),Array.isArray(e)){for(var t=0;t1?'directories "'+c.root.slice(0,-1).join('", "')+'" or "'+c.root[c.root.length-1]+'"':'directory "'+c.root+'"',m=new Error('Failed to lookup view "'+e+'" in views '+p);return m.view=c,i(m)}l.cache&&(s[e]=c)}U4(c,l,i)};mt.listen=function(){var e=I4.createServer(this);return e.listen.apply(e,arguments)};function F4(a){this.get("env")!=="test"&&console.error(a.stack||a.toString())}function U4(a,e,r){try{a.render(e,r)}catch(t){r(t)}}});var cb=L((sq,dp)=>{"use strict";dp.exports=ob;dp.exports.preferredCharsets=ob;var z4=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function H4(a){for(var e=a.split(","),r=0,t=0;r0}});var fb=L((nq,fp)=>{"use strict";fp.exports=db;fp.exports.preferredEncodings=db;var Z4=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function K4(a){for(var e=a.split(","),r=!1,t=1,s=0,i=0;s0}});var yb=L((iq,mp)=>{"use strict";mp.exports=gb;mp.exports.preferredLanguages=gb;var J4=/^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/;function eA(a){for(var e=a.split(","),r=0,t=0;r0}});var Sb=L((oq,hp)=>{"use strict";hp.exports=Eb;hp.exports.preferredMediaTypes=Eb;var sA=/^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/;function nA(a){for(var e=uA(a),r=0,t=0;r0)if(i.every(function(n){return e.params[n]=="*"||(e.params[n]||"").toLowerCase()==(t.params[n]||"").toLowerCase()}))s|=1;else return null;return{i:r,o:e.i,q:e.q,s}}function Eb(a,e){var r=nA(a===void 0?"*/*":a||"");if(!e)return r.filter(xb).sort(bb).map(cA);var t=e.map(function(i,n){return iA(i,r,n)});return t.filter(xb).sort(bb).map(function(i){return e[t.indexOf(i)]})}function bb(a,e){return e.q-a.q||e.s-a.s||a.o-e.o||a.i-e.i||0}function cA(a){return a.type+"/"+a.subtype}function xb(a){return a.q>0}function wb(a){for(var e=0,r=0;(r=a.indexOf('"',r))!==-1;)e++,r++;return e}function lA(a){var e=a.indexOf("="),r,t;return e===-1?r=a:(r=a.substr(0,e),t=a.substr(e+1)),[r,t]}function uA(a){for(var e=a.split(","),r=1,t=0;r{"use strict";var dA=cb(),fA=fb(),mA=yb(),hA=Sb();vp.exports=rt;vp.exports.Negotiator=rt;function rt(a){if(!(this instanceof rt))return new rt(a);this.request=a}rt.prototype.charset=function(e){var r=this.charsets(e);return r&&r[0]};rt.prototype.charsets=function(e){return dA(this.request.headers["accept-charset"],e)};rt.prototype.encoding=function(e){var r=this.encodings(e);return r&&r[0]};rt.prototype.encodings=function(e){return fA(this.request.headers["accept-encoding"],e)};rt.prototype.language=function(e){var r=this.languages(e);return r&&r[0]};rt.prototype.languages=function(e){return mA(this.request.headers["accept-language"],e)};rt.prototype.mediaType=function(e){var r=this.mediaTypes(e);return r&&r[0]};rt.prototype.mediaTypes=function(e){return hA(this.request.headers.accept,e)};rt.prototype.preferredCharset=rt.prototype.charset;rt.prototype.preferredCharsets=rt.prototype.charsets;rt.prototype.preferredEncoding=rt.prototype.encoding;rt.prototype.preferredEncodings=rt.prototype.encodings;rt.prototype.preferredLanguage=rt.prototype.language;rt.prototype.preferredLanguages=rt.prototype.languages;rt.prototype.preferredMediaType=rt.prototype.mediaType;rt.prototype.preferredMediaTypes=rt.prototype.mediaTypes});var Rb=L((lq,Tb)=>{"use strict";var vA=Pb(),gA=du();Tb.exports=Kt;function Kt(a){if(!(this instanceof Kt))return new Kt(a);this.headers=a.headers,this.negotiator=new vA(a)}Kt.prototype.type=Kt.prototype.types=function(a){var e=a;if(e&&!Array.isArray(e)){e=new Array(arguments.length);for(var r=0;r{"use strict";var Qo=Rb(),xi=kr()("express"),xA=require("net").isIP,_A=Ws(),EA=require("http"),wA=Ju(),SA=ep(),PA=tn(),Ob=op(),at=Object.create(EA.IncomingMessage.prototype);Cb.exports=at;at.get=at.header=function(e){if(!e)throw new TypeError("name argument is required to req.get");if(typeof e!="string")throw new TypeError("name must be a string to req.get");var r=e.toLowerCase();switch(r){case"referer":case"referrer":return this.headers.referrer||this.headers.referer;default:return this.headers[r]}};at.accepts=function(){var a=Qo(this);return a.types.apply(a,arguments)};at.acceptsEncodings=function(){var a=Qo(this);return a.encodings.apply(a,arguments)};at.acceptsEncoding=xi.function(at.acceptsEncodings,"req.acceptsEncoding: Use acceptsEncodings instead");at.acceptsCharsets=function(){var a=Qo(this);return a.charsets.apply(a,arguments)};at.acceptsCharset=xi.function(at.acceptsCharsets,"req.acceptsCharset: Use acceptsCharsets instead");at.acceptsLanguages=function(){var a=Qo(this);return a.languages.apply(a,arguments)};at.acceptsLanguage=xi.function(at.acceptsLanguages,"req.acceptsLanguage: Use acceptsLanguages instead");at.range=function(e,r){var t=this.get("Range");if(t)return SA(e,t,r)};at.param=function(e,r){var t=this.params||{},s=this.body||{},i=this.query||{},n=arguments.length===1?"name":"name, default";return xi("req.param("+n+"): Use req.params, req.body, or req.query instead"),t[e]!=null&&t.hasOwnProperty(e)?t[e]:s[e]!=null?s[e]:i[e]!=null?i[e]:r};at.is=function(e){var r=e;if(!Array.isArray(e)){r=new Array(arguments.length);for(var t=0;t=200&&r<300||r===304?wA(this.headers,{etag:e.get("ETag"),"last-modified":e.get("Last-Modified")}):!1});Sr(at,"stale",function(){return!this.fresh});Sr(at,"xhr",function(){var e=this.get("X-Requested-With")||"";return e.toLowerCase()==="xmlhttprequest"});function Sr(a,e,r){Object.defineProperty(a,e,{configurable:!0,enumerable:!0,get:r})}});var Nb=L(Yo=>{var Ib=require("crypto");Yo.sign=function(a,e){if(typeof a!="string")throw new TypeError("Cookie value must be provided as a string.");if(typeof e!="string")throw new TypeError("Secret string must be provided.");return a+"."+Ib.createHmac("sha256",e).update(a).digest("base64").replace(/\=+$/,"")};Yo.unsign=function(a,e){if(typeof a!="string")throw new TypeError("Signed cookie string must be provided.");if(typeof e!="string")throw new TypeError("Secret string must be provided.");var r=a.slice(0,a.lastIndexOf(".")),t=Yo.sign(r,e);return Ab(t)==Ab(a)?r:!1};function Ab(a){return Ib.createHash("sha1").update(a).digest("hex")}});var $b=L(gp=>{"use strict";gp.parse=AA;gp.serialize=IA;var TA=Object.prototype.toString,RA=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,OA=/^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/,CA=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,kA=/^[\u0020-\u003A\u003D-\u007E]*$/;function AA(a,e){if(typeof a!="string")throw new TypeError("argument str must be a string");var r={},t=a.length;if(t<2)return r;var s=e&&e.decode||NA,i=0,n=0,o=0;do{if(n=a.indexOf("=",i),n===-1)break;if(o=a.indexOf(";",i),o===-1)o=t;else if(n>o){i=a.lastIndexOf(";",n-1)+1;continue}var l=jb(a,i,n),c=Db(a,n,l),u=a.slice(l,c);if(!r.hasOwnProperty(u)){var p=jb(a,n+1,o),m=Db(a,o,p);a.charCodeAt(p)===34&&a.charCodeAt(m-1)===34&&(p++,m--);var f=a.slice(p,m);r[u]=DA(f,s)}i=o+1}while(ir;){var t=a.charCodeAt(--e);if(t!==32&&t!==9)return e+1}return r}function IA(a,e,r){var t=r&&r.encode||encodeURIComponent;if(typeof t!="function")throw new TypeError("option encode is invalid");if(!RA.test(a))throw new TypeError("argument name is invalid");var s=t(e);if(!OA.test(s))throw new TypeError("argument val is invalid");var i=a+"="+s;if(!r)return i;if(r.maxAge!=null){var n=Math.floor(r.maxAge);if(!isFinite(n))throw new TypeError("option maxAge is invalid");i+="; Max-Age="+n}if(r.domain){if(!CA.test(r.domain))throw new TypeError("option domain is invalid");i+="; Domain="+r.domain}if(r.path){if(!kA.test(r.path))throw new TypeError("option path is invalid");i+="; Path="+r.path}if(r.expires){var o=r.expires;if(!jA(o)||isNaN(o.valueOf()))throw new TypeError("option expires is invalid");i+="; Expires="+o.toUTCString()}if(r.httpOnly&&(i+="; HttpOnly"),r.secure&&(i+="; Secure"),r.partitioned&&(i+="; Partitioned"),r.priority){var l=typeof r.priority=="string"?r.priority.toLowerCase():r.priority;switch(l){case"low":i+="; Priority=Low";break;case"medium":i+="; Priority=Medium";break;case"high":i+="; Priority=High";break;default:throw new TypeError("option priority is invalid")}}if(r.sameSite){var c=typeof r.sameSite=="string"?r.sameSite.toLowerCase():r.sameSite;switch(c){case!0:i+="; SameSite=Strict";break;case"lax":i+="; SameSite=Lax";break;case"strict":i+="; SameSite=Strict";break;case"none":i+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}}return i}function NA(a){return a.indexOf("%")!==-1?decodeURIComponent(a):a}function jA(a){return TA.call(a)==="[object Date]"}function DA(a,e){try{return e(a)}catch{return a}}});var bp=L((fq,yp)=>{"use strict";yp.exports=MA;yp.exports.append=Lb;var $A=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function Lb(a,e){if(typeof a!="string")throw new TypeError("header argument is required");if(!e)throw new TypeError("field argument is required");for(var r=Array.isArray(e)?e:Mb(String(e)),t=0;t{"use strict";var _i=Uo().Buffer,qb=Qu(),LA=Ma(),$t=kr()("express"),qA=jo(),FA=mi(),UA=require("http"),zA=_a().isAbsolute,HA=Jn(),Fb=require("path"),Jo=Bn(),Ub=vi(),BA=Nb().sign,VA=_a().normalizeType,GA=_a().normalizeTypes,WA=_a().setCharset,ZA=$b(),xp=Go(),KA=Fb.extname,zb=xp.mime,XA=Fb.resolve,QA=bp(),nt=Object.create(UA.ServerResponse.prototype);Vb.exports=nt;var YA=/;\s*charset\s*=/;nt.status=function(e){return(typeof e=="string"||Math.floor(e)!==e)&&e>99&&e<1e3&&$t("res.status("+JSON.stringify(e)+"): use res.status("+Math.floor(e)+") instead"),this.statusCode=e,this};nt.links=function(a){var e=this.get("Link")||"";return e&&(e+=", "),this.set("Link",e+Object.keys(a).map(function(r){return"<"+a[r]+'>; rel="'+r+'"'}).join(", "))};nt.send=function(e){var r=e,t,s=this.req,i,n=this.app;switch(arguments.length===2&&(typeof arguments[0]!="number"&&typeof arguments[1]=="number"?($t("res.send(body, status): Use res.status(status).send(body) instead"),this.statusCode=arguments[1]):($t("res.send(status, body): Use res.status(status).send(body) instead"),this.statusCode=arguments[0],r=arguments[1])),typeof r=="number"&&arguments.length===1&&(this.get("Content-Type")||this.type("txt"),$t("res.send(status): Use res.sendStatus(status) instead"),this.statusCode=r,r=Jo.message[r]),typeof r){case"string":this.get("Content-Type")||this.type("html");break;case"boolean":case"number":case"object":if(r===null)r="";else if(_i.isBuffer(r))this.get("Content-Type")||this.type("bin");else return this.json(r);break}typeof r=="string"&&(t="utf8",i=this.get("Content-Type"),typeof i=="string"&&this.set("Content-Type",WA(i,"utf-8")));var o=n.get("etag fn"),l=!this.get("ETag")&&typeof o=="function",c;r!==void 0&&(_i.isBuffer(r)?c=r.length:!l&&r.length<1e3?c=_i.byteLength(r,t):(r=_i.from(r,t),t=void 0,c=r.length),this.set("Content-Length",c));var u;return l&&c!==void 0&&(u=o(r,t))&&this.set("ETag",u),s.fresh&&(this.statusCode=304),(this.statusCode===204||this.statusCode===304)&&(this.removeHeader("Content-Type"),this.removeHeader("Content-Length"),this.removeHeader("Transfer-Encoding"),r=""),this.statusCode===205&&(this.set("Content-Length","0"),this.removeHeader("Transfer-Encoding"),r=""),s.method==="HEAD"?this.end():this.end(r,t),this};nt.json=function(e){var r=e;arguments.length===2&&(typeof arguments[1]=="number"?($t("res.json(obj, status): Use res.status(status).json(obj) instead"),this.statusCode=arguments[1]):($t("res.json(status, obj): Use res.status(status).json(obj) instead"),this.statusCode=arguments[0],r=arguments[1]));var t=this.app,s=t.get("json escape"),i=t.get("json replacer"),n=t.get("json spaces"),o=Bb(r,i,n,s);return this.get("Content-Type")||this.set("Content-Type","application/json"),this.send(o)};nt.jsonp=function(e){var r=e;arguments.length===2&&(typeof arguments[1]=="number"?($t("res.jsonp(obj, status): Use res.status(status).jsonp(obj) instead"),this.statusCode=arguments[1]):($t("res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead"),this.statusCode=arguments[0],r=arguments[1]));var t=this.app,s=t.get("json escape"),i=t.get("json replacer"),n=t.get("json spaces"),o=Bb(r,i,n,s),l=this.req.query[t.get("jsonp callback name")];return this.get("Content-Type")||(this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","application/json")),Array.isArray(l)&&(l=l[0]),typeof l=="string"&&l.length!==0&&(this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","text/javascript"),l=l.replace(/[^\[\]\w$.]/g,""),o===void 0?o="":typeof o=="string"&&(o=o.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")),o="/**/ typeof "+l+" === 'function' && "+l+"("+o+");"),this.send(o)};nt.sendStatus=function(e){var r=Jo.message[e]||String(e);return this.statusCode=e,this.type("txt"),this.send(r)};nt.sendFile=function(e,r,t){var s=t,i=this.req,n=this,o=i.next,l=r||{};if(!e)throw new TypeError("path argument is required to res.sendFile");if(typeof e!="string")throw new TypeError("path must be a string to res.sendFile");if(typeof r=="function"&&(s=r,l={}),!l.root&&!zA(e))throw new TypeError("path must be absolute or specify root to res.sendFile");var c=encodeURI(e),u=xp(i,c,l);Hb(n,u,l,function(p){if(s)return s(p);if(p&&p.code==="EISDIR")return o();p&&p.code!=="ECONNABORTED"&&p.syscall!=="write"&&o(p)})};nt.sendfile=function(a,e,r){var t=r,s=this.req,i=this,n=s.next,o=e||{};typeof e=="function"&&(t=e,o={});var l=xp(s,a,o);Hb(i,l,o,function(c){if(t)return t(c);if(c&&c.code==="EISDIR")return n();c&&c.code!=="ECONNABORTED"&&c.syscall!=="write"&&n(c)})};nt.sendfile=$t.function(nt.sendfile,"res.sendfile: Use res.sendFile instead");nt.download=function(e,r,t,s){var i=s,n=r,o=t||null;typeof r=="function"?(i=r,n=null,o=null):typeof t=="function"&&(i=t,o=null),typeof r=="object"&&(typeof t=="function"||t===void 0)&&(n=null,o=r);var l={"Content-Disposition":qb(n||e)};if(o&&o.headers)for(var c=Object.keys(o.headers),u=0;u0?e.accepts(t):!1;return this.vary("Accept"),s?(this.set("Content-Type",VA(s).value),a[s](e,this,r)):a.default?a.default(e,this,r):r(LA(406,{types:GA(t).map(function(i){return i.value})})),this};nt.attachment=function(e){return e&&this.type(KA(e)),this.set("Content-Disposition",qb(e)),this};nt.append=function(e,r){var t=this.get(e),s=r;return t&&(s=Array.isArray(t)?t.concat(r):Array.isArray(r)?[t].concat(r):[t,r]),this.set(e,s)};nt.set=nt.header=function(e,r){if(arguments.length===2){var t=Array.isArray(r)?r.map(String):String(r);if(e.toLowerCase()==="content-type"){if(Array.isArray(t))throw new TypeError("Content-Type cannot be set to an Array");if(!YA.test(t)){var s=zb.charsets.lookup(t.split(";")[0]);s&&(t+="; charset="+s.toLowerCase())}}this.setHeader(e,t)}else for(var i in e)this.set(i,e[i]);return this};nt.get=function(a){return this.getHeader(a)};nt.clearCookie=function(e,r){r&&(r.maxAge&&$t('res.clearCookie: Passing "options.maxAge" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'),r.expires&&$t('res.clearCookie: Passing "options.expires" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'));var t=Ub({expires:new Date(1),path:"/"},r);return this.cookie(e,"",t)};nt.cookie=function(a,e,r){var t=Ub({},r),s=this.req.secret,i=t.signed;if(i&&!s)throw new Error('cookieParser("secret") required for signed cookies');var n=typeof e=="object"?"j:"+JSON.stringify(e):String(e);if(i&&(n="s:"+BA(n,s)),t.maxAge!=null){var o=t.maxAge-0;isNaN(o)||(t.expires=new Date(Date.now()+o),t.maxAge=Math.floor(o/1e3))}return t.path==null&&(t.path="/"),this.append("Set-Cookie",ZA.serialize(a,String(n),t)),this};nt.location=function(e){var r;return e==="back"?($t('res.location("back"): use res.location(req.get("Referrer") || "/") and refer to https://dub.sh/security-redirect for best practices'),r=this.req.get("Referrer")||"/"):r=String(e),this.set("Location",qA(r))};nt.redirect=function(e){var r=e,t,s=302;arguments.length===2&&(typeof arguments[0]=="number"?(s=arguments[0],r=arguments[1]):($t("res.redirect(url, status): Use res.redirect(status, url) instead"),s=arguments[1])),r=this.location(r).get("Location"),this.format({text:function(){t=Jo.message[s]+". Redirecting to "+r},html:function(){var i=FA(r);t="

"+Jo.message[s]+". Redirecting to "+i+"

"},default:function(){t=""}}),this.statusCode=s,this.set("Content-Length",_i.byteLength(t)),this.req.method==="HEAD"?this.end():this.end(t)};nt.vary=function(a){return!a||Array.isArray(a)&&!a.length?($t("res.vary(): Provide a field name"),this):(QA(this,a),this)};nt.render=function(e,r,t){var s=this.req.app,i=t,n=r||{},o=this.req,l=this;typeof r=="function"&&(i=r,n={}),n._locals=l.locals,i=i||function(c,u){if(c)return o.next(c);l.send(u)},s.render(e,n,i)};function Hb(a,e,r,t){var s=!1,i;function n(){if(!s){s=!0;var f=new Error("Request aborted");f.code="ECONNABORTED",t(f)}}function o(){if(!s){s=!0;var f=new Error("EISDIR, read");f.code="EISDIR",t(f)}}function l(f){s||(s=!0,t(f))}function c(){s||(s=!0,t())}function u(){i=!1}function p(f){if(f&&f.code==="ECONNRESET")return n();if(f)return l(f);s||setImmediate(function(){if(i!==!1&&!s){n();return}s||(s=!0,t())})}function m(){i=!0}e.on("directory",o),e.on("end",c),e.on("error",l),e.on("file",u),e.on("stream",m),HA(a,p),r.headers&&e.on("headers",function(h){for(var d=r.headers,v=Object.keys(d),x=0;x&]/g,function(i){switch(i.charCodeAt(0)){case 60:return"\\u003c";case 62:return"\\u003e";case 38:return"\\u0026";default:return i}})),s}});var Zb=L((hq,Ep)=>{"use strict";var JA=jo(),eI=mi(),_p=tn(),tI=require("path").resolve,Wb=Go(),rI=require("url");Ep.exports=aI;Ep.exports.mime=Wb.mime;function aI(a,e){if(!a)throw new TypeError("root path required");if(typeof a!="string")throw new TypeError("root path must be a string");var r=Object.create(e||null),t=r.fallthrough!==!1,s=r.redirect!==!1,i=r.setHeaders;if(i&&typeof i!="function")throw new TypeError("option setHeaders must be function");r.maxage=r.maxage||r.maxAge||0,r.root=tI(a);var n=s?oI():iI();return function(l,c,u){if(l.method!=="GET"&&l.method!=="HEAD"){if(t)return u();c.statusCode=405,c.setHeader("Allow","GET, HEAD"),c.setHeader("Content-Length","0"),c.end();return}var p=!t,m=_p.original(l),f=_p(l).pathname;f==="/"&&m.pathname.substr(-1)!=="/"&&(f="");var h=Wb(l,f,r);h.on("directory",n),i&&h.on("headers",i),t&&h.on("file",function(){p=!0}),h.on("error",function(v){if(p||!(v.statusCode<500)){u(v);return}u()}),h.pipe(c)}}function sI(a){for(var e=0;e1?"/"+a.substr(e):a}function nI(a,e){return` +`}function qI(a,e){return e?e instanceof Error?wp(a,e,{expose:!1}):wp(a,e):wp(a)}function FI(a){try{return decodeURIComponent(a)}catch{return-1}}function UI(a){return typeof a.getHeaderNames!="function"?Object.keys(a._headers||{}):a.getHeaderNames()}function hb(a,e){var r=typeof a.listenerCount!="function"?a.listeners(e).length:a.listenerCount(e);return r>0}function zI(a){return typeof a.headersSent!="boolean"?!!a._header:a.headersSent}function Pp(a,e){for(var r=[].concat(a||[]),t=0;t{"use strict";vb.exports=VI;function VI(a){if(!a)throw new TypeError("argument req is required");var e=WI(a.headers["x-forwarded-for"]||""),r=GI(a),t=[r].concat(e);return t}function GI(a){return a.socket?a.socket.remoteAddress:a.connection.remoteAddress}function WI(a){for(var e=a.length,r=[],t=a.length,s=a.length-1;s>=0;s--)switch(a.charCodeAt(s)){case 32:t===e&&(t=e=s);break;case 44:t!==e&&r.push(a.substring(t,e)),t=e=s;break;default:t=s;break}return t!==e&&r.push(a.substring(t,e)),r}});var bb=q((yb,Ii)=>{(function(){var a,e,r,t,s,i,n,o,l;e={},o=this,typeof Ii<"u"&&Ii!==null&&Ii.exports?Ii.exports=e:o.ipaddr=e,n=function(c,u,p,f){var d,v;if(c.length!==u.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(d=0;f>0;){if(v=p-f,v<0&&(v=0),c[d]>>v!==u[d]>>v)return!1;f-=p,d+=1}return!0},e.subnetMatch=function(c,u,p){var f,d,v,h,m;p==null&&(p="unicast");for(v in u)for(h=u[v],h[0]&&!(h[0]instanceof Array)&&(h=[h]),f=0,d=h.length;f=0;p=f+=-1)if(d=this.octets[p],d in m){if(h=m[d],v&&h!==0)return null;h!==8&&(v=!0),u+=h}else return null;return 32-u},c})(),r="(0?\\d+|0x[a-f0-9]+)",t={fourOctet:new RegExp("^"+r+"\\."+r+"\\."+r+"\\."+r+"$","i"),longValue:new RegExp("^"+r+"$","i")},e.IPv4.parser=function(c){var u,p,f,d,v;if(p=function(h){return h[0]==="0"&&h[1]!=="x"?parseInt(h,8):parseInt(h)},u=c.match(t.fourOctet))return(function(){var h,m,y,g;for(y=u.slice(1,6),g=[],h=0,m=y.length;h4294967295||v<0)throw new Error("ipaddr: address outside defined range");return(function(){var h,m;for(m=[],d=h=0;h<=24;d=h+=8)m.push(v>>d&255);return m})().reverse()}else return null},e.IPv6=(function(){function c(u,p){var f,d,v,h,m,y;if(u.length===16)for(this.parts=[],f=d=0;d<=14;f=d+=2)this.parts.push(u[f]<<8|u[f+1]);else if(u.length===8)this.parts=u;else throw new Error("ipaddr: ipv6 part count should be 8 or 16");for(y=this.parts,v=0,h=y.length;vp&&(u=f.index,p=f[0].length);return p<0?v:v.substring(0,u)+"::"+v.substring(u+p)},c.prototype.toByteArray=function(){var u,p,f,d,v;for(u=[],v=this.parts,p=0,f=v.length;p>8),u.push(d&255);return u},c.prototype.toNormalizedString=function(){var u,p,f;return u=(function(){var d,v,h,m;for(h=this.parts,m=[],d=0,v=h.length;d>8,u&255,p>>8,p&255])},c.prototype.prefixLengthFromSubnetMask=function(){var u,p,f,d,v,h,m;for(m={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},u=0,v=!1,p=f=7;f>=0;p=f+=-1)if(d=this.parts[p],d in m){if(h=m[d],v&&h!==0)return null;h!==16&&(v=!0),u+=h}else return null;return 128-u},c})(),s="(?:[0-9a-f]+::?)+",l="%[0-9a-z]{1,}",i={zoneIndex:new RegExp(l,"i"),native:new RegExp("^(::)?("+s+")?([0-9a-f]+)?(::)?("+l+")?$","i"),transitional:new RegExp("^((?:"+s+")|(?:::)(?:"+s+")?)"+(r+"\\."+r+"\\."+r+"\\."+r)+("("+l+")?$"),"i")},a=function(c,u){var p,f,d,v,h,m;if(c.indexOf("::")!==c.lastIndexOf("::"))return null;for(m=(c.match(i.zoneIndex)||[])[0],m&&(m=m.substring(1),c=c.replace(/%.+$/,"")),p=0,f=-1;(f=c.indexOf(":",f+1))>=0;)p++;if(c.substr(0,2)==="::"&&p--,c.substr(-2,2)==="::"&&p--,p>u)return null;for(h=u-p,v=":";h--;)v+="0:";return c=c.replace("::",v),c[0]===":"&&(c=c.slice(1)),c[c.length-1]===":"&&(c=c.slice(0,-1)),u=(function(){var y,g,b,w;for(b=c.split(":"),w=[],y=0,g=b.length;y=0&&u<=32))return f=[this.parse(p[1]),u],Object.defineProperty(f,"toString",{value:function(){return this.join("/")}}),f;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},e.IPv4.subnetMaskFromPrefixLength=function(c){var u,p,f;if(c=parseInt(c),c<0||c>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(f=[0,0,0,0],p=0,u=Math.floor(c/8);p=0&&u<=128))return f=[this.parse(p[1]),u],Object.defineProperty(f,"toString",{value:function(){return this.join("/")}}),f;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},e.isValid=function(c){return e.IPv6.isValid(c)||e.IPv4.isValid(c)},e.parse=function(c){if(e.IPv6.isValid(c))return e.IPv6.parse(c);if(e.IPv4.isValid(c))return e.IPv4.parse(c);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},e.parseCIDR=function(c){var u;try{return e.IPv6.parseCIDR(c)}catch(p){u=p;try{return e.IPv4.parseCIDR(c)}catch(f){throw u=f,new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},e.fromByteArray=function(c){var u;if(u=c.length,u===4)return new e.IPv4(c);if(u===16)return new e.IPv6(c);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},e.process=function(c){var u;return u=this.parse(c),u.kind()==="ipv6"&&u.isIPv4MappedAddress()?u.toIPv4Address():u}}).call(yb)});var Cp=q((Yq,cc)=>{"use strict";cc.exports=eA;cc.exports.all=Sb;cc.exports.compile=Eb;var ZI=gb(),_b=bb(),XI=/^[0-9]+$/,ic=_b.isValid,oc=_b.parse,xb={linklocal:["169.254.0.0/16","fe80::/10"],loopback:["127.0.0.1/8","::1/128"],uniquelocal:["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16","fc00::/7"]};function Sb(a,e){var r=ZI(a);if(!e)return r;typeof e!="function"&&(e=Eb(e));for(var t=0;ts)throw new TypeError("invalid range on address: "+a);return[t,i]}function YI(a){var e=oc(a),r=e.kind();return r==="ipv4"?e.prefixLengthFromSubnetMask():null}function eA(a,e){if(!a)throw new TypeError("req argument is required");if(!e)throw new TypeError("trust argument is required");var r=Sb(a,e),t=r[r.length-1];return t}function tA(){return!1}function rA(a){return function(r){if(!ic(r))return!1;for(var t=oc(r),s,i=t.kind(),n=0;n{"use strict";var wb=ec().Buffer,sA=xp(),Tb=ei(),Rb=Ar()("express"),nA=Pi(),iA=nc().mime,oA=_p(),cA=Cp(),lA=Ho(),uA=require("querystring");It.etag=Pb({weak:!1});It.wetag=Pb({weak:!0});It.isAbsolute=function(a){if(a[0]==="/"||a[1]===":"&&(a[2]==="\\"||a[2]==="/")||a.substring(0,2)==="\\\\")return!0};It.flatten=Rb.function(nA,"utils.flatten: use array-flatten npm module instead");It.normalizeType=function(a){return~a.indexOf("/")?pA(a):{value:iA.lookup(a),params:{}}};It.normalizeTypes=function(a){for(var e=[],r=0;r{"use strict";var mA=cy(),hA=vp(),Ap=Xo(),vA=Dy(),gA=gp(),lc=rr()("express:application"),yA=Fy(),bA=require("http"),xA=Ta().compileETag,_A=Ta().compileQueryParser,SA=Ta().compileTrust,EA=Ar()("express"),wA=Pi(),Ip=Oi(),TA=require("path").resolve,gn=ti(),RA=Object.prototype.hasOwnProperty,Dp=Array.prototype.slice,vt=Ob=kb.exports={},Np="@@symbol:trust_proxy_default";vt.init=function(){this.cache={},this.engines={},this.settings={},this.defaultConfiguration()};vt.defaultConfiguration=function(){var e=process.env.NODE_ENV||"development";this.enable("x-powered-by"),this.set("etag","weak"),this.set("env",e),this.set("query parser","extended"),this.set("subdomain offset",2),this.set("trust proxy",!1),Object.defineProperty(this.settings,Np,{configurable:!0,value:!0}),lc("booting in %s mode",e),this.on("mount",function(t){this.settings[Np]===!0&&typeof t.settings["trust proxy fn"]=="function"&&(delete this.settings["trust proxy"],delete this.settings["trust proxy fn"]),gn(this.request,t.request),gn(this.response,t.response),gn(this.engines,t.engines),gn(this.settings,t.settings)}),this.locals=Object.create(null),this.mountpath="/",this.locals.settings=this.settings,this.set("view",yA),this.set("views",TA("views")),this.set("jsonp callback name","callback"),e==="production"&&this.enable("view cache"),Object.defineProperty(this,"router",{get:function(){throw new Error(`'app.router' is deprecated! +Please see the 3.x to 4.x migration guide for details on how to update your app.`)}})};vt.lazyrouter=function(){this._router||(this._router=new hA({caseSensitive:this.enabled("case sensitive routing"),strict:this.enabled("strict routing")}),this._router.use(gA(this.get("query parser fn"))),this._router.use(vA.init(this)))};vt.handle=function(e,r,t){var s=this._router,i=t||mA(e,r,{env:this.get("env"),onerror:PA.bind(this)});if(!s){lc("no routes defined on app"),i();return}s.handle(e,r,i)};vt.use=function(e){var r=0,t="/";if(typeof e!="function"){for(var s=e;Array.isArray(s)&&s.length!==0;)s=s[0];typeof s!="function"&&(r=1,t=e)}var i=wA(Dp.call(arguments,r));if(i.length===0)throw new TypeError("app.use() requires a middleware function");this.lazyrouter();var n=this._router;return i.forEach(function(o){if(!o||!o.handle||!o.set)return n.use(t,o);lc(".use app under %s",t),o.mountpath=t,o.parent=this,n.use(t,function(c,u,p){var f=c.app;o.handle(c,u,function(d){gn(c,f.request),gn(u,f.response),p(d)})}),o.emit("mount",this)},this),this};vt.route=function(e){return this.lazyrouter(),this._router.route(e)};vt.engine=function(e,r){if(typeof r!="function")throw new Error("callback function required");var t=e[0]!=="."?"."+e:e;return this.engines[t]=r,this};vt.param=function(e,r){if(this.lazyrouter(),Array.isArray(e)){for(var t=0;t1?'directories "'+c.root.slice(0,-1).join('", "')+'" or "'+c.root[c.root.length-1]+'"':'directory "'+c.root+'"',f=new Error('Failed to lookup view "'+e+'" in views '+p);return f.view=c,i(f)}l.cache&&(s[e]=c)}OA(c,l,i)};vt.listen=function(){var e=bA.createServer(this);return e.listen.apply(e,arguments)};function PA(a){this.get("env")!=="test"&&console.error(a.stack||a.toString())}function OA(a,e,r){try{a.render(e,r)}catch(t){r(t)}}});var Db=q((tF,$p)=>{"use strict";$p.exports=Nb;$p.exports.preferredCharsets=Nb;var kA=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function CA(a){for(var e=a.split(","),r=0,t=0;r0}});var qb=q((rF,jp)=>{"use strict";jp.exports=Lb;jp.exports.preferredEncodings=Lb;var $A=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function jA(a){for(var e=a.split(","),r=!1,t=1,s=0,i=0;s0}});var Hb=q((aF,Mp)=>{"use strict";Mp.exports=Bb;Mp.exports.preferredLanguages=Bb;var FA=/^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/;function UA(a){for(var e=a.split(","),r=0,t=0;r0}});var Qb=q((sF,Lp)=>{"use strict";Lp.exports=Zb;Lp.exports.preferredMediaTypes=Zb;var VA=/^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/;function GA(a){for(var e=KA(a),r=0,t=0;r0)if(i.every(function(n){return e.params[n]=="*"||(e.params[n]||"").toLowerCase()==(t.params[n]||"").toLowerCase()}))s|=1;else return null;return{i:r,o:e.i,q:e.q,s}}function Zb(a,e){var r=GA(a===void 0?"*/*":a||"");if(!e)return r.filter(Gb).sort(Vb).map(XA);var t=e.map(function(i,n){return WA(i,r,n)});return t.filter(Gb).sort(Vb).map(function(i){return e[t.indexOf(i)]})}function Vb(a,e){return e.q-a.q||e.s-a.s||a.o-e.o||a.i-e.i||0}function XA(a){return a.type+"/"+a.subtype}function Gb(a){return a.q>0}function Xb(a){for(var e=0,r=0;(r=a.indexOf('"',r))!==-1;)e++,r++;return e}function QA(a){var e=a.indexOf("="),r,t;return e===-1?r=a:(r=a.substr(0,e),t=a.substr(e+1)),[r,t]}function KA(a){for(var e=a.split(","),r=1,t=0;r{"use strict";var YA=Db(),e4=qb(),t4=Hb(),r4=Qb();qp.exports=st;qp.exports.Negotiator=st;function st(a){if(!(this instanceof st))return new st(a);this.request=a}st.prototype.charset=function(e){var r=this.charsets(e);return r&&r[0]};st.prototype.charsets=function(e){return YA(this.request.headers["accept-charset"],e)};st.prototype.encoding=function(e){var r=this.encodings(e);return r&&r[0]};st.prototype.encodings=function(e){return e4(this.request.headers["accept-encoding"],e)};st.prototype.language=function(e){var r=this.languages(e);return r&&r[0]};st.prototype.languages=function(e){return t4(this.request.headers["accept-language"],e)};st.prototype.mediaType=function(e){var r=this.mediaTypes(e);return r&&r[0]};st.prototype.mediaTypes=function(e){return r4(this.request.headers.accept,e)};st.prototype.preferredCharset=st.prototype.charset;st.prototype.preferredCharsets=st.prototype.charsets;st.prototype.preferredEncoding=st.prototype.encoding;st.prototype.preferredEncodings=st.prototype.encodings;st.prototype.preferredLanguage=st.prototype.language;st.prototype.preferredLanguages=st.prototype.languages;st.prototype.preferredMediaType=st.prototype.mediaType;st.prototype.preferredMediaTypes=st.prototype.mediaTypes});var Yb=q((iF,Jb)=>{"use strict";var a4=Kb(),s4=$u();Jb.exports=Qt;function Qt(a){if(!(this instanceof Qt))return new Qt(a);this.headers=a.headers,this.negotiator=new a4(a)}Qt.prototype.type=Qt.prototype.types=function(a){var e=a;if(e&&!Array.isArray(e)){e=new Array(arguments.length);for(var r=0;r{"use strict";var uc=Yb(),Ai=Ar()("express"),o4=require("net").isIP,c4=en(),l4=require("http"),u4=Sp(),p4=Ep(),d4=ln(),ex=Cp(),nt=Object.create(l4.IncomingMessage.prototype);tx.exports=nt;nt.get=nt.header=function(e){if(!e)throw new TypeError("name argument is required to req.get");if(typeof e!="string")throw new TypeError("name must be a string to req.get");var r=e.toLowerCase();switch(r){case"referer":case"referrer":return this.headers.referrer||this.headers.referer;default:return this.headers[r]}};nt.accepts=function(){var a=uc(this);return a.types.apply(a,arguments)};nt.acceptsEncodings=function(){var a=uc(this);return a.encodings.apply(a,arguments)};nt.acceptsEncoding=Ai.function(nt.acceptsEncodings,"req.acceptsEncoding: Use acceptsEncodings instead");nt.acceptsCharsets=function(){var a=uc(this);return a.charsets.apply(a,arguments)};nt.acceptsCharset=Ai.function(nt.acceptsCharsets,"req.acceptsCharset: Use acceptsCharsets instead");nt.acceptsLanguages=function(){var a=uc(this);return a.languages.apply(a,arguments)};nt.acceptsLanguage=Ai.function(nt.acceptsLanguages,"req.acceptsLanguage: Use acceptsLanguages instead");nt.range=function(e,r){var t=this.get("Range");if(t)return p4(e,t,r)};nt.param=function(e,r){var t=this.params||{},s=this.body||{},i=this.query||{},n=arguments.length===1?"name":"name, default";return Ai("req.param("+n+"): Use req.params, req.body, or req.query instead"),t[e]!=null&&t.hasOwnProperty(e)?t[e]:s[e]!=null?s[e]:i[e]!=null?i[e]:r};nt.is=function(e){var r=e;if(!Array.isArray(e)){r=new Array(arguments.length);for(var t=0;t=200&&r<300||r===304?u4(this.headers,{etag:e.get("ETag"),"last-modified":e.get("Last-Modified")}):!1});Rr(nt,"stale",function(){return!this.fresh});Rr(nt,"xhr",function(){var e=this.get("X-Requested-With")||"";return e.toLowerCase()==="xmlhttprequest"});function Rr(a,e,r){Object.defineProperty(a,e,{configurable:!0,enumerable:!0,get:r})}});var nx=q(pc=>{var sx=require("crypto");pc.sign=function(a,e){if(typeof a!="string")throw new TypeError("Cookie value must be provided as a string.");if(typeof e!="string")throw new TypeError("Secret string must be provided.");return a+"."+sx.createHmac("sha256",e).update(a).digest("base64").replace(/\=+$/,"")};pc.unsign=function(a,e){if(typeof a!="string")throw new TypeError("Signed cookie string must be provided.");if(typeof e!="string")throw new TypeError("Secret string must be provided.");var r=a.slice(0,a.lastIndexOf(".")),t=pc.sign(r,e);return ax(t)==ax(a)?r:!1};function ax(a){return sx.createHash("sha1").update(a).digest("hex")}});var cx=q(Fp=>{"use strict";Fp.parse=y4;Fp.serialize=b4;var f4=Object.prototype.toString,m4=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,h4=/^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/,v4=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,g4=/^[\u0020-\u003A\u003D-\u007E]*$/;function y4(a,e){if(typeof a!="string")throw new TypeError("argument str must be a string");var r={},t=a.length;if(t<2)return r;var s=e&&e.decode||x4,i=0,n=0,o=0;do{if(n=a.indexOf("=",i),n===-1)break;if(o=a.indexOf(";",i),o===-1)o=t;else if(n>o){i=a.lastIndexOf(";",n-1)+1;continue}var l=ix(a,i,n),c=ox(a,n,l),u=a.slice(l,c);if(!r.hasOwnProperty(u)){var p=ix(a,n+1,o),f=ox(a,o,p);a.charCodeAt(p)===34&&a.charCodeAt(f-1)===34&&(p++,f--);var d=a.slice(p,f);r[u]=S4(d,s)}i=o+1}while(ir;){var t=a.charCodeAt(--e);if(t!==32&&t!==9)return e+1}return r}function b4(a,e,r){var t=r&&r.encode||encodeURIComponent;if(typeof t!="function")throw new TypeError("option encode is invalid");if(!m4.test(a))throw new TypeError("argument name is invalid");var s=t(e);if(!h4.test(s))throw new TypeError("argument val is invalid");var i=a+"="+s;if(!r)return i;if(r.maxAge!=null){var n=Math.floor(r.maxAge);if(!isFinite(n))throw new TypeError("option maxAge is invalid");i+="; Max-Age="+n}if(r.domain){if(!v4.test(r.domain))throw new TypeError("option domain is invalid");i+="; Domain="+r.domain}if(r.path){if(!g4.test(r.path))throw new TypeError("option path is invalid");i+="; Path="+r.path}if(r.expires){var o=r.expires;if(!_4(o)||isNaN(o.valueOf()))throw new TypeError("option expires is invalid");i+="; Expires="+o.toUTCString()}if(r.httpOnly&&(i+="; HttpOnly"),r.secure&&(i+="; Secure"),r.partitioned&&(i+="; Partitioned"),r.priority){var l=typeof r.priority=="string"?r.priority.toLowerCase():r.priority;switch(l){case"low":i+="; Priority=Low";break;case"medium":i+="; Priority=Medium";break;case"high":i+="; Priority=High";break;default:throw new TypeError("option priority is invalid")}}if(r.sameSite){var c=typeof r.sameSite=="string"?r.sameSite.toLowerCase():r.sameSite;switch(c){case!0:i+="; SameSite=Strict";break;case"lax":i+="; SameSite=Lax";break;case"strict":i+="; SameSite=Strict";break;case"none":i+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}}return i}function x4(a){return a.indexOf("%")!==-1?decodeURIComponent(a):a}function _4(a){return f4.call(a)==="[object Date]"}function S4(a,e){try{return e(a)}catch{return a}}});var zp=q((uF,Up)=>{"use strict";Up.exports=w4;Up.exports.append=ux;var E4=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function ux(a,e){if(typeof a!="string")throw new TypeError("header argument is required");if(!e)throw new TypeError("field argument is required");for(var r=Array.isArray(e)?e:lx(String(e)),t=0;t{"use strict";var Ni=ec().Buffer,px=xp(),T4=za(),Lt=Ar()("express"),R4=Wo(),P4=Ri(),O4=require("http"),k4=Ta().isAbsolute,C4=pi(),dx=require("path"),dc=ri(),fx=Oi(),I4=nx().sign,A4=Ta().normalizeType,N4=Ta().normalizeTypes,D4=Ta().setCharset,$4=cx(),Bp=nc(),j4=dx.extname,mx=Bp.mime,M4=dx.resolve,L4=zp(),ot=Object.create(O4.ServerResponse.prototype);gx.exports=ot;var q4=/;\s*charset\s*=/;ot.status=function(e){return(typeof e=="string"||Math.floor(e)!==e)&&e>99&&e<1e3&&Lt("res.status("+JSON.stringify(e)+"): use res.status("+Math.floor(e)+") instead"),this.statusCode=e,this};ot.links=function(a){var e=this.get("Link")||"";return e&&(e+=", "),this.set("Link",e+Object.keys(a).map(function(r){return"<"+a[r]+'>; rel="'+r+'"'}).join(", "))};ot.send=function(e){var r=e,t,s=this.req,i,n=this.app;switch(arguments.length===2&&(typeof arguments[0]!="number"&&typeof arguments[1]=="number"?(Lt("res.send(body, status): Use res.status(status).send(body) instead"),this.statusCode=arguments[1]):(Lt("res.send(status, body): Use res.status(status).send(body) instead"),this.statusCode=arguments[0],r=arguments[1])),typeof r=="number"&&arguments.length===1&&(this.get("Content-Type")||this.type("txt"),Lt("res.send(status): Use res.sendStatus(status) instead"),this.statusCode=r,r=dc.message[r]),typeof r){case"string":this.get("Content-Type")||this.type("html");break;case"boolean":case"number":case"object":if(r===null)r="";else if(Ni.isBuffer(r))this.get("Content-Type")||this.type("bin");else return this.json(r);break}typeof r=="string"&&(t="utf8",i=this.get("Content-Type"),typeof i=="string"&&this.set("Content-Type",D4(i,"utf-8")));var o=n.get("etag fn"),l=!this.get("ETag")&&typeof o=="function",c;r!==void 0&&(Ni.isBuffer(r)?c=r.length:!l&&r.length<1e3?c=Ni.byteLength(r,t):(r=Ni.from(r,t),t=void 0,c=r.length),this.set("Content-Length",c));var u;return l&&c!==void 0&&(u=o(r,t))&&this.set("ETag",u),s.fresh&&(this.statusCode=304),(this.statusCode===204||this.statusCode===304)&&(this.removeHeader("Content-Type"),this.removeHeader("Content-Length"),this.removeHeader("Transfer-Encoding"),r=""),this.statusCode===205&&(this.set("Content-Length","0"),this.removeHeader("Transfer-Encoding"),r=""),s.method==="HEAD"?this.end():this.end(r,t),this};ot.json=function(e){var r=e;arguments.length===2&&(typeof arguments[1]=="number"?(Lt("res.json(obj, status): Use res.status(status).json(obj) instead"),this.statusCode=arguments[1]):(Lt("res.json(status, obj): Use res.status(status).json(obj) instead"),this.statusCode=arguments[0],r=arguments[1]));var t=this.app,s=t.get("json escape"),i=t.get("json replacer"),n=t.get("json spaces"),o=vx(r,i,n,s);return this.get("Content-Type")||this.set("Content-Type","application/json"),this.send(o)};ot.jsonp=function(e){var r=e;arguments.length===2&&(typeof arguments[1]=="number"?(Lt("res.jsonp(obj, status): Use res.status(status).jsonp(obj) instead"),this.statusCode=arguments[1]):(Lt("res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead"),this.statusCode=arguments[0],r=arguments[1]));var t=this.app,s=t.get("json escape"),i=t.get("json replacer"),n=t.get("json spaces"),o=vx(r,i,n,s),l=this.req.query[t.get("jsonp callback name")];return this.get("Content-Type")||(this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","application/json")),Array.isArray(l)&&(l=l[0]),typeof l=="string"&&l.length!==0&&(this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","text/javascript"),l=l.replace(/[^\[\]\w$.]/g,""),o===void 0?o="":typeof o=="string"&&(o=o.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")),o="/**/ typeof "+l+" === 'function' && "+l+"("+o+");"),this.send(o)};ot.sendStatus=function(e){var r=dc.message[e]||String(e);return this.statusCode=e,this.type("txt"),this.send(r)};ot.sendFile=function(e,r,t){var s=t,i=this.req,n=this,o=i.next,l=r||{};if(!e)throw new TypeError("path argument is required to res.sendFile");if(typeof e!="string")throw new TypeError("path must be a string to res.sendFile");if(typeof r=="function"&&(s=r,l={}),!l.root&&!k4(e))throw new TypeError("path must be absolute or specify root to res.sendFile");var c=encodeURI(e),u=Bp(i,c,l);hx(n,u,l,function(p){if(s)return s(p);if(p&&p.code==="EISDIR")return o();p&&p.code!=="ECONNABORTED"&&p.syscall!=="write"&&o(p)})};ot.sendfile=function(a,e,r){var t=r,s=this.req,i=this,n=s.next,o=e||{};typeof e=="function"&&(t=e,o={});var l=Bp(s,a,o);hx(i,l,o,function(c){if(t)return t(c);if(c&&c.code==="EISDIR")return n();c&&c.code!=="ECONNABORTED"&&c.syscall!=="write"&&n(c)})};ot.sendfile=Lt.function(ot.sendfile,"res.sendfile: Use res.sendFile instead");ot.download=function(e,r,t,s){var i=s,n=r,o=t||null;typeof r=="function"?(i=r,n=null,o=null):typeof t=="function"&&(i=t,o=null),typeof r=="object"&&(typeof t=="function"||t===void 0)&&(n=null,o=r);var l={"Content-Disposition":px(n||e)};if(o&&o.headers)for(var c=Object.keys(o.headers),u=0;u0?e.accepts(t):!1;return this.vary("Accept"),s?(this.set("Content-Type",A4(s).value),a[s](e,this,r)):a.default?a.default(e,this,r):r(T4(406,{types:N4(t).map(function(i){return i.value})})),this};ot.attachment=function(e){return e&&this.type(j4(e)),this.set("Content-Disposition",px(e)),this};ot.append=function(e,r){var t=this.get(e),s=r;return t&&(s=Array.isArray(t)?t.concat(r):Array.isArray(r)?[t].concat(r):[t,r]),this.set(e,s)};ot.set=ot.header=function(e,r){if(arguments.length===2){var t=Array.isArray(r)?r.map(String):String(r);if(e.toLowerCase()==="content-type"){if(Array.isArray(t))throw new TypeError("Content-Type cannot be set to an Array");if(!q4.test(t)){var s=mx.charsets.lookup(t.split(";")[0]);s&&(t+="; charset="+s.toLowerCase())}}this.setHeader(e,t)}else for(var i in e)this.set(i,e[i]);return this};ot.get=function(a){return this.getHeader(a)};ot.clearCookie=function(e,r){r&&(r.maxAge&&Lt('res.clearCookie: Passing "options.maxAge" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'),r.expires&&Lt('res.clearCookie: Passing "options.expires" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'));var t=fx({expires:new Date(1),path:"/"},r);return this.cookie(e,"",t)};ot.cookie=function(a,e,r){var t=fx({},r),s=this.req.secret,i=t.signed;if(i&&!s)throw new Error('cookieParser("secret") required for signed cookies');var n=typeof e=="object"?"j:"+JSON.stringify(e):String(e);if(i&&(n="s:"+I4(n,s)),t.maxAge!=null){var o=t.maxAge-0;isNaN(o)||(t.expires=new Date(Date.now()+o),t.maxAge=Math.floor(o/1e3))}return t.path==null&&(t.path="/"),this.append("Set-Cookie",$4.serialize(a,String(n),t)),this};ot.location=function(e){var r;return e==="back"?(Lt('res.location("back"): use res.location(req.get("Referrer") || "/") and refer to https://dub.sh/security-redirect for best practices'),r=this.req.get("Referrer")||"/"):r=String(e),this.set("Location",R4(r))};ot.redirect=function(e){var r=e,t,s=302;arguments.length===2&&(typeof arguments[0]=="number"?(s=arguments[0],r=arguments[1]):(Lt("res.redirect(url, status): Use res.redirect(status, url) instead"),s=arguments[1])),r=this.location(r).get("Location"),this.format({text:function(){t=dc.message[s]+". Redirecting to "+r},html:function(){var i=P4(r);t="

"+dc.message[s]+". Redirecting to "+i+"

"},default:function(){t=""}}),this.statusCode=s,this.set("Content-Length",Ni.byteLength(t)),this.req.method==="HEAD"?this.end():this.end(t)};ot.vary=function(a){return!a||Array.isArray(a)&&!a.length?(Lt("res.vary(): Provide a field name"),this):(L4(this,a),this)};ot.render=function(e,r,t){var s=this.req.app,i=t,n=r||{},o=this.req,l=this;typeof r=="function"&&(i=r,n={}),n._locals=l.locals,i=i||function(c,u){if(c)return o.next(c);l.send(u)},s.render(e,n,i)};function hx(a,e,r,t){var s=!1,i;function n(){if(!s){s=!0;var d=new Error("Request aborted");d.code="ECONNABORTED",t(d)}}function o(){if(!s){s=!0;var d=new Error("EISDIR, read");d.code="EISDIR",t(d)}}function l(d){s||(s=!0,t(d))}function c(){s||(s=!0,t())}function u(){i=!1}function p(d){if(d&&d.code==="ECONNRESET")return n();if(d)return l(d);s||setImmediate(function(){if(i!==!1&&!s){n();return}s||(s=!0,t())})}function f(){i=!0}e.on("directory",o),e.on("end",c),e.on("error",l),e.on("file",u),e.on("stream",f),C4(a,p),r.headers&&e.on("headers",function(v){for(var h=r.headers,m=Object.keys(h),y=0;y&]/g,function(i){switch(i.charCodeAt(0)){case 60:return"\\u003c";case 62:return"\\u003e";case 38:return"\\u0026";default:return i}})),s}});var xx=q((dF,Vp)=>{"use strict";var F4=Wo(),U4=Ri(),Hp=ln(),z4=require("path").resolve,bx=nc(),B4=require("url");Vp.exports=H4;Vp.exports.mime=bx.mime;function H4(a,e){if(!a)throw new TypeError("root path required");if(typeof a!="string")throw new TypeError("root path must be a string");var r=Object.create(e||null),t=r.fallthrough!==!1,s=r.redirect!==!1,i=r.setHeaders;if(i&&typeof i!="function")throw new TypeError("option setHeaders must be function");r.maxage=r.maxage||r.maxAge||0,r.root=z4(a);var n=s?Z4():W4();return function(l,c,u){if(l.method!=="GET"&&l.method!=="HEAD"){if(t)return u();c.statusCode=405,c.setHeader("Allow","GET, HEAD"),c.setHeader("Content-Length","0"),c.end();return}var p=!t,f=Hp.original(l),d=Hp(l).pathname;d==="/"&&f.pathname.substr(-1)!=="/"&&(d="");var v=bx(l,d,r);v.on("directory",n),i&&v.on("headers",i),t&&v.on("file",function(){p=!0}),v.on("error",function(m){if(p||!(m.statusCode<500)){u(m);return}u()}),v.pipe(c)}}function V4(a){for(var e=0;e1?"/"+a.substr(e):a}function G4(a,e){return` @@ -49,11 +49,9 @@ Please see the 3.x to 4.x migration guide for details on how to update your app.
`+e+`
-`}function iI(){return function(){this.error(404)}}function oI(){return function(e){if(this.hasTrailingSlash()){this.error(404);return}var r=_p.original(this.req);r.path=null,r.pathname=sI(r.pathname+"/");var t=JA(rI.format(r)),s=nI("Redirecting","Redirecting to "+eI(t));e.statusCode=301,e.setHeader("Content-Type","text/html; charset=UTF-8"),e.setHeader("Content-Length",Buffer.byteLength(s)),e.setHeader("Content-Security-Policy","default-src 'none'"),e.setHeader("X-Content-Type-Options","nosniff"),e.setHeader("Location",t),e.end(s)}}});var ex=L((Mt,Jb)=>{"use strict";var ec=Eg(),cI=require("events").EventEmitter,Kb=Sg(),Xb=sb(),lI=Vu(),uI=Wu(),Qb=kb(),Yb=Gb();Mt=Jb.exports=pI;function pI(){var a=function(e,r,t){a.handle(e,r,t)};return Kb(a,cI.prototype,!1),Kb(a,Xb,!1),a.request=Object.create(Qb,{app:{configurable:!0,enumerable:!0,writable:!0,value:a}}),a.response=Object.create(Yb,{app:{configurable:!0,enumerable:!0,writable:!0,value:a}}),a.init(),a}Mt.application=Xb;Mt.request=Qb;Mt.response=Yb;Mt.Route=lI;Mt.Router=uI;Mt.json=ec.json;Mt.query=Zu();Mt.raw=ec.raw;Mt.static=Zb();Mt.text=ec.text;Mt.urlencoded=ec.urlencoded;var dI=["bodyParser","compress","cookieSession","session","logger","cookieParser","favicon","responseTime","errorHandler","timeout","methodOverride","vhost","csrf","directory","limit","multipart","staticCache"];dI.forEach(function(a){Object.defineProperty(Mt,a,{get:function(){throw new Error("Most middleware (like "+a+") is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.")},configurable:!0})})});var rx=L((vq,tx)=>{"use strict";tx.exports=ex()});var nx=L((gq,sx)=>{"use strict";var ax=Object.getOwnPropertySymbols,fI=Object.prototype.hasOwnProperty,mI=Object.prototype.propertyIsEnumerable;function hI(a){if(a==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(a)}function vI(){try{if(!Object.assign)return!1;var a=new String("abc");if(a[5]="de",Object.getOwnPropertyNames(a)[0]==="5")return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;var t=Object.getOwnPropertyNames(e).map(function(i){return e[i]});if(t.join("")!=="0123456789")return!1;var s={};return"abcdefghijklmnopqrst".split("").forEach(function(i){s[i]=i}),Object.keys(Object.assign({},s)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}sx.exports=vI()?Object.assign:function(a,e){for(var r,t=hI(a),s,i=1;i{(function(){"use strict";var a=nx(),e=bp(),r={origin:"*",methods:"GET,HEAD,PUT,PATCH,POST,DELETE",preflightContinue:!1,optionsSuccessStatus:204};function t(h){return typeof h=="string"||h instanceof String}function s(h,d){if(Array.isArray(d)){for(var v=0;v{(function(a,e){typeof bc=="object"&&typeof Ux<"u"?e(bc):typeof define=="function"&&define.amd?define(["exports"],e):e(a.URI=a.URI||{})})(bc,(function(a){"use strict";function e(){for(var j=arguments.length,R=Array(j),y=0;y1){R[0]=R[0].slice(0,-1);for(var g=R.length-1,S=1;S= 0x80 (not a basic code point)","invalid-input":"Invalid input"},I=f-h,q=Math.floor,M=String.fromCharCode;function k(j){throw new RangeError($[j])}function T(j,R){for(var y=[],g=j.length;g--;)y[g]=R(j[g]);return y}function N(j,R){var y=j.split("@"),g="";y.length>1&&(g=y[0]+"@",j=y[1]),j=j.replace(A,".");var S=j.split("."),D=T(S,R).join(".");return g+D}function z(j){for(var R=[],y=0,g=j.length;y=55296&&S<=56319&&y>1,R+=q(R/y);R>I*d>>1;S+=f)R=q(R/I);return q(S+(I+1)*R/(R+v))},V=function(R){var y=[],g=R.length,S=0,D=E,F=b,K=R.lastIndexOf(O);K<0&&(K=0);for(var ne=0;ne=128&&k("not-basic"),y.push(R.charCodeAt(ne));for(var ge=K>0?K+1:0;ge=g&&k("invalid-input");var Te=G(R.charCodeAt(ge++));(Te>=f||Te>q((m-S)/Ie))&&k("overflow"),S+=Te*Ie;var ye=ve<=F?h:ve>=F+d?d:ve-F;if(Teq(m/Re)&&k("overflow"),Ie*=Re}var de=y.length+1;F=Q(S-pe,de,pe==0),q(S/de)>m-D&&k("overflow"),D+=q(S/de),S%=de,y.splice(S++,0,D)}return String.fromCodePoint.apply(String,y)},re=function(R){var y=[];R=z(R);var g=R.length,S=E,D=0,F=b,K=!0,ne=!1,ge=void 0;try{for(var pe=R[Symbol.iterator](),Ie;!(K=(Ie=pe.next()).done);K=!0){var ve=Ie.value;ve<128&&y.push(M(ve))}}catch(It){ne=!0,ge=It}finally{try{!K&&pe.return&&pe.return()}finally{if(ne)throw ge}}var Te=y.length,ye=Te;for(Te&&y.push(O);ye=S&&stq((m-D)/qe)&&k("overflow"),D+=(Re-S)*qe,S=Re;var it=!0,dt=!1,ft=void 0;try{for(var Bt=R[Symbol.iterator](),At;!(it=(At=Bt.next()).done);it=!0){var Or=At.value;if(Orm&&k("overflow"),Or==S){for(var yr=D,br=f;;br+=f){var St=br<=F?h:br>=F+d?d:br-F;if(yr>6|192).toString(16).toUpperCase()+"%"+(R&63|128).toString(16).toUpperCase():y="%"+(R>>12|224).toString(16).toUpperCase()+"%"+(R>>6&63|128).toString(16).toUpperCase()+"%"+(R&63|128).toString(16).toUpperCase(),y}function Ce(j){for(var R="",y=0,g=j.length;y=194&&S<224){if(g-y>=6){var D=parseInt(j.substr(y+4,2),16);R+=String.fromCharCode((S&31)<<6|D&63)}else R+=j.substr(y,6);y+=6}else if(S>=224){if(g-y>=9){var F=parseInt(j.substr(y+4,2),16),K=parseInt(j.substr(y+7,2),16);R+=String.fromCharCode((S&15)<<12|(F&63)<<6|K&63)}else R+=j.substr(y,9);y+=9}else R+=j.substr(y,3),y+=3}return R}function U(j,R){function y(g){var S=Ce(g);return S.match(R.UNRESERVED)?S:g}return j.scheme&&(j.scheme=String(j.scheme).replace(R.PCT_ENCODED,y).toLowerCase().replace(R.NOT_SCHEME,"")),j.userinfo!==void 0&&(j.userinfo=String(j.userinfo).replace(R.PCT_ENCODED,y).replace(R.NOT_USERINFO,xe).replace(R.PCT_ENCODED,s)),j.host!==void 0&&(j.host=String(j.host).replace(R.PCT_ENCODED,y).toLowerCase().replace(R.NOT_HOST,xe).replace(R.PCT_ENCODED,s)),j.path!==void 0&&(j.path=String(j.path).replace(R.PCT_ENCODED,y).replace(j.scheme?R.NOT_PATH:R.NOT_PATH_NOSCHEME,xe).replace(R.PCT_ENCODED,s)),j.query!==void 0&&(j.query=String(j.query).replace(R.PCT_ENCODED,y).replace(R.NOT_QUERY,xe).replace(R.PCT_ENCODED,s)),j.fragment!==void 0&&(j.fragment=String(j.fragment).replace(R.PCT_ENCODED,y).replace(R.NOT_FRAGMENT,xe).replace(R.PCT_ENCODED,s)),j}function W(j){return j.replace(/^0*(.*)/,"$1")||"0"}function ee(j,R){var y=j.match(R.IPV4ADDRESS)||[],g=u(y,2),S=g[1];return S?S.split(".").map(W).join("."):j}function ue(j,R){var y=j.match(R.IPV6ADDRESS)||[],g=u(y,3),S=g[1],D=g[2];if(S){for(var F=S.toLowerCase().split("::").reverse(),K=u(F,2),ne=K[0],ge=K[1],pe=ge?ge.split(":").map(W):[],Ie=ne.split(":").map(W),ve=R.IPV4ADDRESS.test(Ie[Ie.length-1]),Te=ve?7:8,ye=Ie.length-Te,Re=Array(Te),de=0;de1){var Le=Re.slice(0,je.index),st=Re.slice(je.index+je.length);pt=Le.join(":")+"::"+st.join(":")}else pt=Re.join(":");return D&&(pt+="%"+D),pt}else return j}var Z=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,X="".match(/(){0}/)[1]===void 0;function ie(j){var R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},y={},g=R.iri!==!1?c:l;R.reference==="suffix"&&(j=(R.scheme?R.scheme+":":"")+"//"+j);var S=j.match(Z);if(S){X?(y.scheme=S[1],y.userinfo=S[3],y.host=S[4],y.port=parseInt(S[5],10),y.path=S[6]||"",y.query=S[7],y.fragment=S[8],isNaN(y.port)&&(y.port=S[5])):(y.scheme=S[1]||void 0,y.userinfo=j.indexOf("@")!==-1?S[3]:void 0,y.host=j.indexOf("//")!==-1?S[4]:void 0,y.port=parseInt(S[5],10),y.path=S[6]||"",y.query=j.indexOf("?")!==-1?S[7]:void 0,y.fragment=j.indexOf("#")!==-1?S[8]:void 0,isNaN(y.port)&&(y.port=j.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?S[4]:void 0)),y.host&&(y.host=ue(ee(y.host,g),g)),y.scheme===void 0&&y.userinfo===void 0&&y.host===void 0&&y.port===void 0&&!y.path&&y.query===void 0?y.reference="same-document":y.scheme===void 0?y.reference="relative":y.fragment===void 0?y.reference="absolute":y.reference="uri",R.reference&&R.reference!=="suffix"&&R.reference!==y.reference&&(y.error=y.error||"URI is not a "+R.reference+" reference.");var D=Me[(R.scheme||y.scheme||"").toLowerCase()];if(!R.unicodeSupport&&(!D||!D.unicodeSupport)){if(y.host&&(R.domainHost||D&&D.domainHost))try{y.host=be.toASCII(y.host.replace(g.PCT_ENCODED,Ce).toLowerCase())}catch(F){y.error=y.error||"Host's domain name can not be converted to ASCII via punycode: "+F}U(y,l)}else U(y,g);D&&D.parse&&D.parse(y,R)}else y.error=y.error||"URI can not be parsed.";return y}function Ae(j,R){var y=R.iri!==!1?c:l,g=[];return j.userinfo!==void 0&&(g.push(j.userinfo),g.push("@")),j.host!==void 0&&g.push(ue(ee(String(j.host),y),y).replace(y.IPV6ADDRESS,function(S,D,F){return"["+D+(F?"%25"+F:"")+"]"})),(typeof j.port=="number"||typeof j.port=="string")&&(g.push(":"),g.push(String(j.port))),g.length?g.join(""):void 0}var he=/^\.\.?\//,We=/^\/\.(\/|$)/,Ze=/^\/\.\.(\/|$)/,Ee=/^\/?(?:.|\n)*?(?=\/|$)/;function Je(j){for(var R=[];j.length;)if(j.match(he))j=j.replace(he,"");else if(j.match(We))j=j.replace(We,"/");else if(j.match(Ze))j=j.replace(Ze,"/"),R.pop();else if(j==="."||j==="..")j="";else{var y=j.match(Ee);if(y){var g=y[0];j=j.slice(g.length),R.push(g)}else throw new Error("Unexpected dot segment condition")}return R.join("")}function Ue(j){var R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},y=R.iri?c:l,g=[],S=Me[(R.scheme||j.scheme||"").toLowerCase()];if(S&&S.serialize&&S.serialize(j,R),j.host&&!y.IPV6ADDRESS.test(j.host)){if(R.domainHost||S&&S.domainHost)try{j.host=R.iri?be.toUnicode(j.host):be.toASCII(j.host.replace(y.PCT_ENCODED,Ce).toLowerCase())}catch(K){j.error=j.error||"Host's domain name can not be converted to "+(R.iri?"Unicode":"ASCII")+" via punycode: "+K}}U(j,y),R.reference!=="suffix"&&j.scheme&&(g.push(j.scheme),g.push(":"));var D=Ae(j,R);if(D!==void 0&&(R.reference!=="suffix"&&g.push("//"),g.push(D),j.path&&j.path.charAt(0)!=="/"&&g.push("/")),j.path!==void 0){var F=j.path;!R.absolutePath&&(!S||!S.absolutePath)&&(F=Je(F)),D===void 0&&(F=F.replace(/^\/\//,"/%2F")),g.push(F)}return j.query!==void 0&&(g.push("?"),g.push(j.query)),j.fragment!==void 0&&(g.push("#"),g.push(j.fragment)),g.join("")}function Xe(j,R){var y=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},g=arguments[3],S={};return g||(j=ie(Ue(j,y),y),R=ie(Ue(R,y),y)),y=y||{},!y.tolerant&&R.scheme?(S.scheme=R.scheme,S.userinfo=R.userinfo,S.host=R.host,S.port=R.port,S.path=Je(R.path||""),S.query=R.query):(R.userinfo!==void 0||R.host!==void 0||R.port!==void 0?(S.userinfo=R.userinfo,S.host=R.host,S.port=R.port,S.path=Je(R.path||""),S.query=R.query):(R.path?(R.path.charAt(0)==="/"?S.path=Je(R.path):((j.userinfo!==void 0||j.host!==void 0||j.port!==void 0)&&!j.path?S.path="/"+R.path:j.path?S.path=j.path.slice(0,j.path.lastIndexOf("/")+1)+R.path:S.path=R.path,S.path=Je(S.path)),S.query=R.query):(S.path=j.path,R.query!==void 0?S.query=R.query:S.query=j.query),S.userinfo=j.userinfo,S.host=j.host,S.port=j.port),S.scheme=j.scheme),S.fragment=R.fragment,S}function Ve(j,R,y){var g=n({scheme:"null"},y);return Ue(Xe(ie(j,g),ie(R,g),g,!0),g)}function Ke(j,R){return typeof j=="string"?j=Ue(ie(j,R),R):t(j)==="object"&&(j=ie(Ue(j,R),R)),j}function bt(j,R,y){return typeof j=="string"?j=Ue(ie(j,y),y):t(j)==="object"&&(j=Ue(j,y)),typeof R=="string"?R=Ue(ie(R,y),y):t(R)==="object"&&(R=Ue(R,y)),j===R}function xt(j,R){return j&&j.toString().replace(!R||!R.iri?l.ESCAPE:c.ESCAPE,xe)}function wt(j,R){return j&&j.toString().replace(!R||!R.iri?l.PCT_ENCODED:c.PCT_ENCODED,Ce)}var Vr={scheme:"http",domainHost:!0,parse:function(R,y){return R.host||(R.error=R.error||"HTTP URIs must have a host."),R},serialize:function(R,y){var g=String(R.scheme).toLowerCase()==="https";return(R.port===(g?443:80)||R.port==="")&&(R.port=void 0),R.path||(R.path="/"),R}},kt={scheme:"https",domainHost:Vr.domainHost,parse:Vr.parse,serialize:Vr.serialize};function oa(j){return typeof j.secure=="boolean"?j.secure:String(j.scheme).toLowerCase()==="wss"}var ca={scheme:"ws",domainHost:!0,parse:function(R,y){var g=R;return g.secure=oa(g),g.resourceName=(g.path||"/")+(g.query?"?"+g.query:""),g.path=void 0,g.query=void 0,g},serialize:function(R,y){if((R.port===(oa(R)?443:80)||R.port==="")&&(R.port=void 0),typeof R.secure=="boolean"&&(R.scheme=R.secure?"wss":"ws",R.secure=void 0),R.resourceName){var g=R.resourceName.split("?"),S=u(g,2),D=S[0],F=S[1];R.path=D&&D!=="/"?D:void 0,R.query=F,R.resourceName=void 0}return R.fragment=void 0,R}},$n={scheme:"wss",domainHost:ca.domainHost,parse:ca.parse,serialize:ca.serialize},Na={},Ui=!0,zi="[A-Za-z0-9\\-\\.\\_\\~"+(Ui?"\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF":"")+"]",Yt="[0-9A-Fa-f]",Hi=r(r("%[EFef]"+Yt+"%"+Yt+Yt+"%"+Yt+Yt)+"|"+r("%[89A-Fa-f]"+Yt+"%"+Yt+Yt)+"|"+r("%"+Yt+Yt)),Jt="[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]",ml="[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",hl=e(ml,'[\\"\\\\]'),vl="[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]",gl=new RegExp(zi,"g"),la=new RegExp(Hi,"g"),yl=new RegExp(e("[^]",Jt,"[\\.]",'[\\"]',hl),"g"),Gr=new RegExp(e("[^]",zi,vl),"g"),bl=Gr;function Ds(j){var R=Ce(j);return R.match(gl)?R:j}var Bi={scheme:"mailto",parse:function(R,y){var g=R,S=g.to=g.path?g.path.split(","):[];if(g.path=void 0,g.query){for(var D=!1,F={},K=g.query.split("&"),ne=0,ge=K.length;ne{"use strict";Hx.exports=function a(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var t,s,i;if(Array.isArray(e)){if(t=e.length,t!=r.length)return!1;for(s=t;s--!==0;)if(!a(e[s],r[s]))return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(i=Object.keys(e),t=i.length,t!==Object.keys(r).length)return!1;for(s=t;s--!==0;)if(!Object.prototype.hasOwnProperty.call(r,i[s]))return!1;for(s=t;s--!==0;){var n=i[s];if(!a(e[n],r[n]))return!1}return!0}return e!==e&&r!==r}});var Vx=L((gF,Bx)=>{"use strict";Bx.exports=function(e){for(var r=0,t=e.length,s=0,i;s=55296&&i<=56319&&s{"use strict";Zx.exports={copy:TN,checkDataType:Vp,checkDataTypes:RN,coerceToTypes:ON,toHash:Wp,getProperty:Zp,escapeQuotes:Kp,equal:xc(),ucs2length:Vx(),varOccurences:AN,varReplace:IN,schemaHasRules:NN,schemaHasRulesExcept:jN,schemaUnknownRules:DN,toQuotedString:Gp,getPathExpr:$N,getPath:MN,getData:FN,unescapeFragment:UN,unescapeJsonPointer:Qp,escapeFragment:zN,escapeJsonPointer:Xp};function TN(a,e){e=e||{};for(var r in a)e[r]=a[r];return e}function Vp(a,e,r,t){var s=t?" !== ":" === ",i=t?" || ":" && ",n=t?"!":"",o=t?"":"!";switch(a){case"null":return e+s+"null";case"array":return n+"Array.isArray("+e+")";case"object":return"("+n+e+i+"typeof "+e+s+'"object"'+i+o+"Array.isArray("+e+"))";case"integer":return"(typeof "+e+s+'"number"'+i+o+"("+e+" % 1)"+i+e+s+e+(r?i+n+"isFinite("+e+")":"")+")";case"number":return"(typeof "+e+s+'"'+a+'"'+(r?i+n+"isFinite("+e+")":"")+")";default:return"typeof "+e+s+'"'+a+'"'}}function RN(a,e,r){switch(a.length){case 1:return Vp(a[0],e,r,!0);default:var t="",s=Wp(a);s.array&&s.object&&(t=s.null?"(":"(!"+e+" || ",t+="typeof "+e+' !== "object")',delete s.null,delete s.array,delete s.object),s.number&&delete s.integer;for(var i in s)t+=(t?" && ":"")+Vp(i,e,r,!0);return t}}var Gx=Wp(["string","number","integer","boolean","null"]);function ON(a,e){if(Array.isArray(e)){for(var r=[],t=0;t=e)throw new Error("Cannot access property/index "+t+" levels up, current level is "+e);return r[e-t]}if(t>e)throw new Error("Cannot access data "+t+" levels up, current level is "+e);if(i="data"+(e-t||""),!s)return i}for(var o=i,l=s.split("/"),c=0;c{"use strict";var HN=ms();Kx.exports=BN;function BN(a){HN.copy(a,this)}});var Qx=L((xF,Xx)=>{"use strict";var Ra=Xx.exports=function(a,e,r){typeof e=="function"&&(r=e,e={}),r=e.cb||r;var t=typeof r=="function"?r:r.pre||function(){},s=r.post||function(){};_c(e,t,s,a,"",a)};Ra.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0};Ra.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};Ra.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};Ra.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function _c(a,e,r,t,s,i,n,o,l,c){if(t&&typeof t=="object"&&!Array.isArray(t)){e(t,s,i,n,o,l,c);for(var u in t){var p=t[u];if(Array.isArray(p)){if(u in Ra.arrayKeywords)for(var m=0;m{"use strict";var Oi=zx(),Yx=xc(),Pc=ms(),Ec=Yp(),GN=Qx();t0.exports=Ca;Ca.normalizeId=Oa;Ca.fullPath=wc;Ca.url=Sc;Ca.ids=QN;Ca.inlineRef=Jp;Ca.schema=Tc;function Ca(a,e,r){var t=this._refs[r];if(typeof t=="string")if(this._refs[t])t=this._refs[t];else return Ca.call(this,a,e,t);if(t=t||this._schemas[r],t instanceof Ec)return Jp(t.schema,this._opts.inlineRefs)?t.schema:t.validate||this._compile(t);var s=Tc.call(this,e,r),i,n,o;return s&&(i=s.schema,e=s.root,o=s.baseId),i instanceof Ec?n=i.validate||a.call(this,i.schema,e,void 0,o):i!==void 0&&(n=Jp(i,this._opts.inlineRefs)?i:a.call(this,i,e,void 0,o)),n}function Tc(a,e){var r=Oi.parse(e),t=e0(r),s=wc(this._getId(a.schema));if(Object.keys(a.schema).length===0||t!==s){var i=Oa(t),n=this._refs[i];if(typeof n=="string")return WN.call(this,a,n,r);if(n instanceof Ec)n.validate||this._compile(n),a=n;else if(n=this._schemas[i],n instanceof Ec){if(n.validate||this._compile(n),i==Oa(e))return{schema:n,root:a,baseId:s};a=n}else return;if(!a.schema)return;s=wc(this._getId(a.schema))}return Jx.call(this,r,s,a.schema,a)}function WN(a,e,r){var t=Tc.call(this,a,e);if(t){var s=t.schema,i=t.baseId;a=t.root;var n=this._getId(s);return n&&(i=Sc(i,n)),Jx.call(this,r,i,s,a)}}var ZN=Pc.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function Jx(a,e,r,t){if(a.fragment=a.fragment||"",a.fragment.slice(0,1)=="/"){for(var s=a.fragment.split("/"),i=1;i{"use strict";var rd=Rc();a0.exports={Validation:r0(YN),MissingRef:r0(ad)};function YN(a){this.message="validation failed",this.errors=a,this.ajv=this.validation=!0}ad.message=function(a,e){return"can't resolve reference "+e+" from id "+a};function ad(a,e,r){this.message=r||ad.message(a,e),this.missingRef=rd.url(a,e),this.missingSchema=rd.normalizeId(rd.fullPath(this.missingRef))}function r0(a){return a.prototype=Object.create(Error.prototype),a.prototype.constructor=a,a}});var sd=L((wF,s0)=>{"use strict";s0.exports=function(a,e){e||(e={}),typeof e=="function"&&(e={cmp:e});var r=typeof e.cycles=="boolean"?e.cycles:!1,t=e.cmp&&(function(i){return function(n){return function(o,l){var c={key:o,value:n[o]},u={key:l,value:n[l]};return i(c,u)}}})(e.cmp),s=[];return(function i(n){if(n&&n.toJSON&&typeof n.toJSON=="function"&&(n=n.toJSON()),n!==void 0){if(typeof n=="number")return isFinite(n)?""+n:"null";if(typeof n!="object")return JSON.stringify(n);var o,l;if(Array.isArray(n)){for(l="[",o=0;o{"use strict";n0.exports=function(e,r,t){var s="",i=e.schema.$async===!0,n=e.util.schemaHasRulesExcept(e.schema,e.RULES.all,"$ref"),o=e.self._getId(e.schema);if(e.opts.strictKeywords){var l=e.util.schemaUnknownRules(e.schema,e.RULES.keywords);if(l){var c="unknown keyword: "+l;if(e.opts.strictKeywords==="log")e.logger.warn(c);else throw new Error(c)}}if(e.isTop&&(s+=" var validate = ",i&&(e.async=!0,s+="async "),s+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",o&&(e.opts.sourceCode||e.opts.processCode)&&(s+=" "+("/*# sourceURL="+o+" */")+" ")),typeof e.schema=="boolean"||!(n||e.schema.$ref)){var r="false schema",u=e.level,p=e.dataLevel,m=e.schema[r],f=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,C=!e.opts.allErrors,$,d="data"+(p||""),O="valid"+u;if(e.schema===!1){e.isTop?C=!0:s+=" var "+O+" = false; ";var v=v||[];v.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+($||"false schema")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: {} ",e.opts.messages!==!1&&(s+=" , message: 'boolean schema is false' "),e.opts.verbose&&(s+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),s+=" } "):s+=" {} ";var x=s;s=v.pop(),!e.compositeRule&&C?e.async?s+=" throw new ValidationError(["+x+"]); ":s+=" validate.errors = ["+x+"]; return false; ":s+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else e.isTop?i?s+=" return data; ":s+=" validate.errors = null; return true; ":s+=" var "+O+" = true; ";return e.isTop&&(s+=" }; return validate; "),s}if(e.isTop){var b=e.isTop,u=e.level=0,p=e.dataLevel=0,d="data";if(e.rootId=e.resolve.fullPath(e.self._getId(e.root.schema)),e.baseId=e.baseId||e.rootId,delete e.isTop,e.dataPathArr=[""],e.schema.default!==void 0&&e.opts.useDefaults&&e.opts.strictDefaults){var E="default is ignored in the schema root";if(e.opts.strictDefaults==="log")e.logger.warn(E);else throw new Error(E)}s+=" var vErrors = null; ",s+=" var errors = 0; ",s+=" if (rootData === undefined) rootData = data; "}else{var u=e.level,p=e.dataLevel,d="data"+(p||"");if(o&&(e.baseId=e.resolve.url(e.baseId,o)),i&&!e.async)throw new Error("async schema in sync schema");s+=" var errs_"+u+" = errors;"}var O="valid"+u,C=!e.opts.allErrors,P="",A="",$,I=e.schema.type,q=Array.isArray(I);if(I&&e.opts.nullable&&e.schema.nullable===!0&&(q?I.indexOf("null")==-1&&(I=I.concat("null")):I!="null"&&(I=[I,"null"],q=!0)),q&&I.length==1&&(I=I[0],q=!1),e.schema.$ref&&n){if(e.opts.extendRefs=="fail")throw new Error('$ref: validation keywords used in schema at path "'+e.errSchemaPath+'" (see option extendRefs)');e.opts.extendRefs!==!0&&(n=!1,e.logger.warn('$ref: keywords ignored in schema at path "'+e.errSchemaPath+'"'))}if(e.schema.$comment&&e.opts.$comment&&(s+=" "+e.RULES.all.$comment.code(e,"$comment")),I){if(e.opts.coerceTypes)var M=e.util.coerceToTypes(e.opts.coerceTypes,I);var k=e.RULES.types[I];if(M||q||k===!0||k&&!Ee(k)){var f=e.schemaPath+".type",h=e.errSchemaPath+"/type",f=e.schemaPath+".type",h=e.errSchemaPath+"/type",T=q?"checkDataTypes":"checkDataType";if(s+=" if ("+e.util[T](I,d,e.opts.strictNumbers,!0)+") { ",M){var N="dataType"+u,z="coerced"+u;s+=" var "+N+" = typeof "+d+"; var "+z+" = undefined; ",e.opts.coerceTypes=="array"&&(s+=" if ("+N+" == 'object' && Array.isArray("+d+") && "+d+".length == 1) { "+d+" = "+d+"[0]; "+N+" = typeof "+d+"; if ("+e.util.checkDataType(e.schema.type,d,e.opts.strictNumbers)+") "+z+" = "+d+"; } "),s+=" if ("+z+" !== undefined) ; ";var B=M;if(B)for(var G,te=-1,Q=B.length-1;te{"use strict";var Cc=Rc(),Ac=ms(),o0=Oc(),JN=sd(),i0=nd(),e8=Ac.ucs2length,t8=xc(),r8=o0.Validation;l0.exports=id;function id(a,e,r,t){var s=this,i=this._opts,n=[void 0],o={},l=[],c={},u=[],p={},m=[];e=e||{schema:a,refVal:n,refs:o};var f=a8.call(this,a,e,t),h=this._compilations[f.index];if(f.compiling)return h.callValidate=E;var d=this._formats,v=this.RULES;try{var x=O(a,e,r,t);h.validate=x;var b=h.callValidate;return b&&(b.schema=x.schema,b.errors=null,b.refs=x.refs,b.refVal=x.refVal,b.root=x.root,b.$async=x.$async,i.sourceCode&&(b.source=x.source)),x}finally{s8.call(this,a,e,t)}function E(){var T=h.validate,N=T.apply(this,arguments);return E.errors=T.errors,N}function O(T,N,z,B){var G=!N||N&&N.schema==T;if(N.schema!=e.schema)return id.call(s,T,N,z,B);var te=T.$async===!0,Q=i0({isTop:!0,schema:T,isRoot:G,baseId:B,root:N,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:o0.MissingRef,RULES:v,validate:i0,util:Ac,resolve:Cc,resolveRef:C,usePattern:q,useDefault:M,useCustomRule:k,opts:i,formats:d,logger:s.logger,self:s});Q=kc(n,o8)+kc(l,n8)+kc(u,i8)+kc(m,c8)+Q,i.processCode&&(Q=i.processCode(Q,T));var V;try{var re=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",Q);V=re(s,v,d,e,n,u,m,t8,e8,r8),n[0]=V}catch(ce){throw s.logger.error("Error compiling schema, function code:",Q),ce}return V.schema=T,V.errors=null,V.refs=o,V.refVal=n,V.root=G?V:N,te&&(V.$async=!0),i.sourceCode===!0&&(V.source={code:Q,patterns:l,defaults:u}),V}function C(T,N,z){N=Cc.url(T,N);var B=o[N],G,te;if(B!==void 0)return G=n[B],te="refVal["+B+"]",I(G,te);if(!z&&e.refs){var Q=e.refs[N];if(Q!==void 0)return G=e.refVal[Q],te=P(N,G),I(G,te)}te=P(N);var V=Cc.call(s,O,e,N);if(V===void 0){var re=r&&r[N];re&&(V=Cc.inlineRef(re,i.inlineRefs)?re:id.call(s,re,e,r,T))}if(V===void 0)A(N);else return $(N,V),I(V,te)}function P(T,N){var z=n.length;return n[z]=N,o[T]=z,"refVal"+z}function A(T){delete o[T]}function $(T,N){var z=o[T];n[z]=N}function I(T,N){return typeof T=="object"||typeof T=="boolean"?{code:N,schema:T,inline:!0}:{code:N,$async:T&&!!T.$async}}function q(T){var N=c[T];return N===void 0&&(N=c[T]=l.length,l[N]=T),"pattern"+N}function M(T){switch(typeof T){case"boolean":case"number":return""+T;case"string":return Ac.toQuotedString(T);case"object":if(T===null)return"null";var N=JN(T),z=p[N];return z===void 0&&(z=p[N]=u.length,u[z]=T),"default"+z}}function k(T,N,z,B){if(s._opts.validateSchema!==!1){var G=T.definition.dependencies;if(G&&!G.every(function(xe){return Object.prototype.hasOwnProperty.call(z,xe)}))throw new Error("parent schema must have all required keywords: "+G.join(","));var te=T.definition.validateSchema;if(te){var Q=te(N);if(!Q){var V="keyword schema is invalid: "+s.errorsText(te.errors);if(s._opts.validateSchema=="log")s.logger.error(V);else throw new Error(V)}}}var re=T.definition.compile,ce=T.definition.inline,Be=T.definition.macro,be;if(re)be=re.call(s,N,z,B);else if(Be)be=Be.call(s,N,z,B),i.validateSchema!==!1&&s.validateSchema(be,!0);else if(ce)be=ce.call(s,B,T.keyword,N,z);else if(be=T.definition.validate,!be)return;if(be===void 0)throw new Error('custom keyword "'+T.keyword+'"failed to compile');var Me=m.length;return m[Me]=be,{code:"customRule"+Me,validate:be}}}function a8(a,e,r){var t=c0.call(this,a,e,r);return t>=0?{index:t,compiling:!0}:(t=this._compilations.length,this._compilations[t]={schema:a,root:e,baseId:r},{index:t,compiling:!1})}function s8(a,e,r){var t=c0.call(this,a,e,r);t>=0&&this._compilations.splice(t,1)}function c0(a,e,r){for(var t=0;t{"use strict";var Ic=p0.exports=function(){this._cache={}};Ic.prototype.put=function(e,r){this._cache[e]=r};Ic.prototype.get=function(e){return this._cache[e]};Ic.prototype.del=function(e){delete this._cache[e]};Ic.prototype.clear=function(){this._cache={}}});var S0=L((RF,w0)=>{"use strict";var l8=ms(),u8=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,p8=[0,31,28,31,30,31,30,31,31,30,31,30,31],d8=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,f0=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,f8=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,m8=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,m0=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,h0=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,v0=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,g0=/^(?:\/(?:[^~/]|~0|~1)*)*$/,y0=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,b0=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;w0.exports=Nc;function Nc(a){return a=a=="full"?"full":"fast",l8.copy(Nc[a])}Nc.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":m0,url:h0,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:f0,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:E0,uuid:v0,"json-pointer":g0,"json-pointer-uri-fragment":y0,"relative-json-pointer":b0};Nc.full={date:x0,time:_0,"date-time":g8,uri:b8,"uri-reference":m8,"uri-template":m0,url:h0,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:f0,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:E0,uuid:v0,"json-pointer":g0,"json-pointer-uri-fragment":y0,"relative-json-pointer":b0};function h8(a){return a%4===0&&(a%100!==0||a%400===0)}function x0(a){var e=a.match(u8);if(!e)return!1;var r=+e[1],t=+e[2],s=+e[3];return t>=1&&t<=12&&s>=1&&s<=(t==2&&h8(r)?29:p8[t])}function _0(a,e){var r=a.match(d8);if(!r)return!1;var t=r[1],s=r[2],i=r[3],n=r[5];return(t<=23&&s<=59&&i<=59||t==23&&s==59&&i==60)&&(!e||n)}var v8=/t|\s/i;function g8(a){var e=a.split(v8);return e.length==2&&x0(e[0])&&_0(e[1],!0)}var y8=/\/|:/;function b8(a){return y8.test(a)&&f8.test(a)}var x8=/[^\\]\\Z/;function E0(a){if(x8.test(a))return!1;try{return new RegExp(a),!0}catch{return!1}}});var T0=L((OF,P0)=>{"use strict";P0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(n||""),p="valid"+i,m,f;if(o=="#"||o=="#/")e.isRoot?(m=e.async,f="validate"):(m=e.root.schema.$async===!0,f="root.refVal[0]");else{var h=e.resolveRef(e.baseId,o,e.isRoot);if(h===void 0){var d=e.MissingRefError.message(e.baseId,o);if(e.opts.missingRefs=="fail"){e.logger.error(d);var v=v||[];v.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { ref: '"+e.util.escapeQuotes(o)+"' } ",e.opts.messages!==!1&&(s+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(o)+"' "),e.opts.verbose&&(s+=" , schema: "+e.util.toQuotedString(o)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),s+=" } "):s+=" {} ";var x=s;s=v.pop(),!e.compositeRule&&c?e.async?s+=" throw new ValidationError(["+x+"]); ":s+=" validate.errors = ["+x+"]; return false; ":s+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(s+=" if (false) { ")}else if(e.opts.missingRefs=="ignore")e.logger.warn(d),c&&(s+=" if (true) { ");else throw new e.MissingRefError(e.baseId,o,d)}else if(h.inline){var b=e.util.copy(e);b.level++;var E="valid"+b.level;b.schema=h.schema,b.schemaPath="",b.errSchemaPath=o;var O=e.validate(b).replace(/validate\.schema/g,h.code);s+=" "+O+" ",c&&(s+=" if ("+E+") { ")}else m=h.$async===!0||e.async&&h.$async!==!1,f=h.code}if(f){var v=v||[];v.push(s),s="",e.opts.passContext?s+=" "+f+".call(this, ":s+=" "+f+"( ",s+=" "+u+", (dataPath || '')",e.errorPath!='""'&&(s+=" + "+e.errorPath);var C=n?"data"+(n-1||""):"parentData",P=n?e.dataPathArr[n]:"parentDataProperty";s+=" , "+C+" , "+P+", rootData) ";var A=s;if(s=v.pop(),m){if(!e.async)throw new Error("async schema referenced by sync schema");c&&(s+=" var "+p+"; "),s+=" try { await "+A+"; ",c&&(s+=" "+p+" = true; "),s+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",c&&(s+=" "+p+" = false; "),s+=" } ",c&&(s+=" if ("+p+") { ")}else s+=" if (!"+A+") { if (vErrors === null) vErrors = "+f+".errors; else vErrors = vErrors.concat("+f+".errors); errors = vErrors.length; } ",c&&(s+=" else { ")}return s}});var O0=L((CF,R0)=>{"use strict";R0.exports=function(e,r,t){var s=" ",i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),o=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c=e.util.copy(e),u="";c.level++;var p="valid"+c.level,m=c.baseId,f=!0,h=i;if(h)for(var d,v=-1,x=h.length-1;v0||d===!1:e.util.schemaHasRules(d,e.RULES.all))&&(f=!1,c.schema=d,c.schemaPath=n+"["+v+"]",c.errSchemaPath=o+"/"+v,s+=" "+e.validate(c)+" ",c.baseId=m,l&&(s+=" if ("+p+") { ",u+="}"));return l&&(f?s+=" if (true) { ":s+=" "+u.slice(0,-1)+" "),s}});var k0=L((kF,C0)=>{"use strict";C0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),m="valid"+i,f="errs__"+i,h=e.util.copy(e),d="";h.level++;var v="valid"+h.level,x=o.every(function($){return e.opts.strictKeywords?typeof $=="object"&&Object.keys($).length>0||$===!1:e.util.schemaHasRules($,e.RULES.all)});if(x){var b=h.baseId;s+=" var "+f+" = errors; var "+m+" = false; ";var E=e.compositeRule;e.compositeRule=h.compositeRule=!0;var O=o;if(O)for(var C,P=-1,A=O.length-1;P{"use strict";A0.exports=function(e,r,t){var s=" ",i=e.schema[r],n=e.errSchemaPath+"/"+r,o=!e.opts.allErrors,l=e.util.toQuotedString(i);return e.opts.$comment===!0?s+=" console.log("+l+");":typeof e.opts.$comment=="function"&&(s+=" self._opts.$comment("+l+", "+e.util.toQuotedString(n)+", validate.root.schema);"),s}});var j0=L((IF,N0)=>{"use strict";N0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),m="valid"+i,f=e.opts.$data&&o&&o.$data,h;f?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",h="schema"+i):h=o,f||(s+=" var schema"+i+" = validate.schema"+l+";"),s+="var "+m+" = equal("+p+", schema"+i+"); if (!"+m+") { ";var d=d||[];d.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { allowedValue: schema"+i+" } ",e.opts.messages!==!1&&(s+=" , message: 'should be equal to constant' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var v=s;return s=d.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+v+"]); ":s+=" validate.errors = ["+v+"]; return false; ":s+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" }",u&&(s+=" else { "),s}});var $0=L((NF,D0)=>{"use strict";D0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),m="valid"+i,f="errs__"+i,h=e.util.copy(e),d="";h.level++;var v="valid"+h.level,x="i"+i,b=h.dataLevel=e.dataLevel+1,E="data"+b,O=e.baseId,C=e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all);if(s+="var "+f+" = errors;var "+m+";",C){var P=e.compositeRule;e.compositeRule=h.compositeRule=!0,h.schema=o,h.schemaPath=l,h.errSchemaPath=c,s+=" var "+v+" = false; for (var "+x+" = 0; "+x+" < "+p+".length; "+x+"++) { ",h.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0);var A=p+"["+x+"]";h.dataPathArr[b]=x;var $=e.validate(h);h.baseId=O,e.util.varOccurences($,E)<2?s+=" "+e.util.varReplace($,E,A)+" ":s+=" var "+E+" = "+A+"; "+$+" ",s+=" if ("+v+") break; } ",e.compositeRule=h.compositeRule=P,s+=" "+d+" if (!"+v+") {"}else s+=" if ("+p+".length == 0) {";var I=I||[];I.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: {} ",e.opts.messages!==!1&&(s+=" , message: 'should contain a valid item' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var q=s;return s=I.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+q+"]); ":s+=" validate.errors = ["+q+"]; return false; ":s+=" var err = "+q+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else { ",C&&(s+=" errors = "+f+"; if (vErrors !== null) { if ("+f+") vErrors.length = "+f+"; else vErrors = null; } "),e.opts.allErrors&&(s+=" } "),s}});var L0=L((jF,M0)=>{"use strict";M0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),m="errs__"+i,f=e.util.copy(e),h="";f.level++;var d="valid"+f.level,v={},x={},b=e.opts.ownProperties;for(P in o)if(P!="__proto__"){var E=o[P],O=Array.isArray(E)?x:v;O[P]=E}s+="var "+m+" = errors;";var C=e.errorPath;s+="var missing"+i+";";for(var P in x)if(O=x[P],O.length){if(s+=" if ( "+p+e.util.getProperty(P)+" !== undefined ",b&&(s+=" && Object.prototype.hasOwnProperty.call("+p+", '"+e.util.escapeQuotes(P)+"') "),u){s+=" && ( ";var A=O;if(A)for(var $,I=-1,q=A.length-1;I0||E===!1:e.util.schemaHasRules(E,e.RULES.all))&&(s+=" "+d+" = true; if ( "+p+e.util.getProperty(P)+" !== undefined ",b&&(s+=" && Object.prototype.hasOwnProperty.call("+p+", '"+e.util.escapeQuotes(P)+"') "),s+=") { ",f.schema=E,f.schemaPath=l+e.util.getProperty(P),f.errSchemaPath=c+"/"+e.util.escapeFragment(P),s+=" "+e.validate(f)+" ",f.baseId=V,s+=" } ",u&&(s+=" if ("+d+") { ",h+="}"))}return u&&(s+=" "+h+" if ("+m+" == errors) {"),s}});var F0=L((DF,q0)=>{"use strict";q0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),m="valid"+i,f=e.opts.$data&&o&&o.$data,h;f?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",h="schema"+i):h=o;var d="i"+i,v="schema"+i;f||(s+=" var "+v+" = validate.schema"+l+";"),s+="var "+m+";",f&&(s+=" if (schema"+i+" === undefined) "+m+" = true; else if (!Array.isArray(schema"+i+")) "+m+" = false; else {"),s+=""+m+" = false;for (var "+d+"=0; "+d+"<"+v+".length; "+d+"++) if (equal("+p+", "+v+"["+d+"])) { "+m+" = true; break; }",f&&(s+=" } "),s+=" if (!"+m+") { ";var x=x||[];x.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { allowedValues: schema"+i+" } ",e.opts.messages!==!1&&(s+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var b=s;return s=x.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+b+"]); ":s+=" validate.errors = ["+b+"]; return false; ":s+=" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" }",u&&(s+=" else { "),s}});var z0=L(($F,U0)=>{"use strict";U0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||"");if(e.opts.format===!1)return u&&(s+=" if (true) { "),s;var m=e.opts.$data&&o&&o.$data,f;m?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",f="schema"+i):f=o;var h=e.opts.unknownFormats,d=Array.isArray(h);if(m){var v="format"+i,x="isObject"+i,b="formatType"+i;s+=" var "+v+" = formats["+f+"]; var "+x+" = typeof "+v+" == 'object' && !("+v+" instanceof RegExp) && "+v+".validate; var "+b+" = "+x+" && "+v+".type || 'string'; if ("+x+") { ",e.async&&(s+=" var async"+i+" = "+v+".async; "),s+=" "+v+" = "+v+".validate; } if ( ",m&&(s+=" ("+f+" !== undefined && typeof "+f+" != 'string') || "),s+=" (",h!="ignore"&&(s+=" ("+f+" && !"+v+" ",d&&(s+=" && self._opts.unknownFormats.indexOf("+f+") == -1 "),s+=") || "),s+=" ("+v+" && "+b+" == '"+t+"' && !(typeof "+v+" == 'function' ? ",e.async?s+=" (async"+i+" ? await "+v+"("+p+") : "+v+"("+p+")) ":s+=" "+v+"("+p+") ",s+=" : "+v+".test("+p+"))))) {"}else{var v=e.formats[o];if(!v){if(h=="ignore")return e.logger.warn('unknown format "'+o+'" ignored in schema at path "'+e.errSchemaPath+'"'),u&&(s+=" if (true) { "),s;if(d&&h.indexOf(o)>=0)return u&&(s+=" if (true) { "),s;throw new Error('unknown format "'+o+'" is used in schema at path "'+e.errSchemaPath+'"')}var x=typeof v=="object"&&!(v instanceof RegExp)&&v.validate,b=x&&v.type||"string";if(x){var E=v.async===!0;v=v.validate}if(b!=t)return u&&(s+=" if (true) { "),s;if(E){if(!e.async)throw new Error("async format in sync schema");var O="formats"+e.util.getProperty(o)+".validate";s+=" if (!(await "+O+"("+p+"))) { "}else{s+=" if (! ";var O="formats"+e.util.getProperty(o);x&&(O+=".validate"),typeof v=="function"?s+=" "+O+"("+p+") ":s+=" "+O+".test("+p+") ",s+=") { "}}var C=C||[];C.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { format: ",m?s+=""+f:s+=""+e.util.toQuotedString(o),s+=" } ",e.opts.messages!==!1&&(s+=` , message: 'should match format "`,m?s+="' + "+f+" + '":s+=""+e.util.escapeQuotes(o),s+=`"' `),e.opts.verbose&&(s+=" , schema: ",m?s+="validate.schema"+l:s+=""+e.util.toQuotedString(o),s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var P=s;return s=C.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+P+"]); ":s+=" validate.errors = ["+P+"]; return false; ":s+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",u&&(s+=" else { "),s}});var B0=L((MF,H0)=>{"use strict";H0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),m="valid"+i,f="errs__"+i,h=e.util.copy(e);h.level++;var d="valid"+h.level,v=e.schema.then,x=e.schema.else,b=v!==void 0&&(e.opts.strictKeywords?typeof v=="object"&&Object.keys(v).length>0||v===!1:e.util.schemaHasRules(v,e.RULES.all)),E=x!==void 0&&(e.opts.strictKeywords?typeof x=="object"&&Object.keys(x).length>0||x===!1:e.util.schemaHasRules(x,e.RULES.all)),O=h.baseId;if(b||E){var C;h.createErrors=!1,h.schema=o,h.schemaPath=l,h.errSchemaPath=c,s+=" var "+f+" = errors; var "+m+" = true; ";var P=e.compositeRule;e.compositeRule=h.compositeRule=!0,s+=" "+e.validate(h)+" ",h.baseId=O,h.createErrors=!0,s+=" errors = "+f+"; if (vErrors !== null) { if ("+f+") vErrors.length = "+f+"; else vErrors = null; } ",e.compositeRule=h.compositeRule=P,b?(s+=" if ("+d+") { ",h.schema=e.schema.then,h.schemaPath=e.schemaPath+".then",h.errSchemaPath=e.errSchemaPath+"/then",s+=" "+e.validate(h)+" ",h.baseId=O,s+=" "+m+" = "+d+"; ",b&&E?(C="ifClause"+i,s+=" var "+C+" = 'then'; "):C="'then'",s+=" } ",E&&(s+=" else { ")):s+=" if (!"+d+") { ",E&&(h.schema=e.schema.else,h.schemaPath=e.schemaPath+".else",h.errSchemaPath=e.errSchemaPath+"/else",s+=" "+e.validate(h)+" ",h.baseId=O,s+=" "+m+" = "+d+"; ",b&&E?(C="ifClause"+i,s+=" var "+C+" = 'else'; "):C="'else'",s+=" } "),s+=" if (!"+m+") { var err = ",e.createErrors!==!1?(s+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { failingKeyword: "+C+" } ",e.opts.messages!==!1&&(s+=` , message: 'should match "' + `+C+` + '" schema' `),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ",s+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&u&&(e.async?s+=" throw new ValidationError(vErrors); ":s+=" validate.errors = vErrors; return false; "),s+=" } ",u&&(s+=" else { ")}else u&&(s+=" if (true) { ");return s}});var G0=L((LF,V0)=>{"use strict";V0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),m="valid"+i,f="errs__"+i,h=e.util.copy(e),d="";h.level++;var v="valid"+h.level,x="i"+i,b=h.dataLevel=e.dataLevel+1,E="data"+b,O=e.baseId;if(s+="var "+f+" = errors;var "+m+";",Array.isArray(o)){var C=e.schema.additionalItems;if(C===!1){s+=" "+m+" = "+p+".length <= "+o.length+"; ";var P=c;c=e.errSchemaPath+"/additionalItems",s+=" if (!"+m+") { ";var A=A||[];A.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+o.length+" } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT have more than "+o.length+" items' "),e.opts.verbose&&(s+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var $=s;s=A.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+$+"]); ":s+=" validate.errors = ["+$+"]; return false; ":s+=" var err = "+$+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",c=P,u&&(d+="}",s+=" else { ")}var I=o;if(I){for(var q,M=-1,k=I.length-1;M0||q===!1:e.util.schemaHasRules(q,e.RULES.all)){s+=" "+v+" = true; if ("+p+".length > "+M+") { ";var T=p+"["+M+"]";h.schema=q,h.schemaPath=l+"["+M+"]",h.errSchemaPath=c+"/"+M,h.errorPath=e.util.getPathExpr(e.errorPath,M,e.opts.jsonPointers,!0),h.dataPathArr[b]=M;var N=e.validate(h);h.baseId=O,e.util.varOccurences(N,E)<2?s+=" "+e.util.varReplace(N,E,T)+" ":s+=" var "+E+" = "+T+"; "+N+" ",s+=" } ",u&&(s+=" if ("+v+") { ",d+="}")}}if(typeof C=="object"&&(e.opts.strictKeywords?typeof C=="object"&&Object.keys(C).length>0||C===!1:e.util.schemaHasRules(C,e.RULES.all))){h.schema=C,h.schemaPath=e.schemaPath+".additionalItems",h.errSchemaPath=e.errSchemaPath+"/additionalItems",s+=" "+v+" = true; if ("+p+".length > "+o.length+") { for (var "+x+" = "+o.length+"; "+x+" < "+p+".length; "+x+"++) { ",h.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0);var T=p+"["+x+"]";h.dataPathArr[b]=x;var N=e.validate(h);h.baseId=O,e.util.varOccurences(N,E)<2?s+=" "+e.util.varReplace(N,E,T)+" ":s+=" var "+E+" = "+T+"; "+N+" ",u&&(s+=" if (!"+v+") break; "),s+=" } } ",u&&(s+=" if ("+v+") { ",d+="}")}}else if(e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){h.schema=o,h.schemaPath=l,h.errSchemaPath=c,s+=" for (var "+x+" = 0; "+x+" < "+p+".length; "+x+"++) { ",h.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0);var T=p+"["+x+"]";h.dataPathArr[b]=x;var N=e.validate(h);h.baseId=O,e.util.varOccurences(N,E)<2?s+=" "+e.util.varReplace(N,E,T)+" ":s+=" var "+E+" = "+T+"; "+N+" ",u&&(s+=" if (!"+v+") break; "),s+=" }"}return u&&(s+=" "+d+" if ("+f+" == errors) {"),s}});var od=L((qF,W0)=>{"use strict";W0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,O,p="data"+(n||""),m=e.opts.$data&&o&&o.$data,f;m?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",f="schema"+i):f=o;var h=r=="maximum",d=h?"exclusiveMaximum":"exclusiveMinimum",v=e.schema[d],x=e.opts.$data&&v&&v.$data,b=h?"<":">",E=h?">":"<",O=void 0;if(!(m||typeof o=="number"||o===void 0))throw new Error(r+" must be number");if(!(x||v===void 0||typeof v=="number"||typeof v=="boolean"))throw new Error(d+" must be number or boolean");if(x){var C=e.util.getData(v.$data,n,e.dataPathArr),P="exclusive"+i,A="exclType"+i,$="exclIsNumber"+i,I="op"+i,q="' + "+I+" + '";s+=" var schemaExcl"+i+" = "+C+"; ",C="schemaExcl"+i,s+=" var "+P+"; var "+A+" = typeof "+C+"; if ("+A+" != 'boolean' && "+A+" != 'undefined' && "+A+" != 'number') { ";var O=d,M=M||[];M.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(O||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: {} ",e.opts.messages!==!1&&(s+=" , message: '"+d+" should be boolean' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var k=s;s=M.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+k+"]); ":s+=" validate.errors = ["+k+"]; return false; ":s+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else if ( ",m&&(s+=" ("+f+" !== undefined && typeof "+f+" != 'number') || "),s+=" "+A+" == 'number' ? ( ("+P+" = "+f+" === undefined || "+C+" "+b+"= "+f+") ? "+p+" "+E+"= "+C+" : "+p+" "+E+" "+f+" ) : ( ("+P+" = "+C+" === true) ? "+p+" "+E+"= "+f+" : "+p+" "+E+" "+f+" ) || "+p+" !== "+p+") { var op"+i+" = "+P+" ? '"+b+"' : '"+b+"='; ",o===void 0&&(O=d,c=e.errSchemaPath+"/"+d,f=C,m=x)}else{var $=typeof v=="number",q=b;if($&&m){var I="'"+q+"'";s+=" if ( ",m&&(s+=" ("+f+" !== undefined && typeof "+f+" != 'number') || "),s+=" ( "+f+" === undefined || "+v+" "+b+"= "+f+" ? "+p+" "+E+"= "+v+" : "+p+" "+E+" "+f+" ) || "+p+" !== "+p+") { "}else{$&&o===void 0?(P=!0,O=d,c=e.errSchemaPath+"/"+d,f=v,E+="="):($&&(f=Math[h?"min":"max"](v,o)),v===($?f:!0)?(P=!0,O=d,c=e.errSchemaPath+"/"+d,E+="="):(P=!1,q+="="));var I="'"+q+"'";s+=" if ( ",m&&(s+=" ("+f+" !== undefined && typeof "+f+" != 'number') || "),s+=" "+p+" "+E+" "+f+" || "+p+" !== "+p+") { "}}O=O||r;var M=M||[];M.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(O||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { comparison: "+I+", limit: "+f+", exclusive: "+P+" } ",e.opts.messages!==!1&&(s+=" , message: 'should be "+q+" ",m?s+="' + "+f:s+=""+f+"'"),e.opts.verbose&&(s+=" , schema: ",m?s+="validate.schema"+l:s+=""+o,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var k=s;return s=M.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+k+"]); ":s+=" validate.errors = ["+k+"]; return false; ":s+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",u&&(s+=" else { "),s}});var cd=L((FF,Z0)=>{"use strict";Z0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,d,p="data"+(n||""),m=e.opts.$data&&o&&o.$data,f;if(m?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",f="schema"+i):f=o,!(m||typeof o=="number"))throw new Error(r+" must be number");var h=r=="maxItems"?">":"<";s+="if ( ",m&&(s+=" ("+f+" !== undefined && typeof "+f+" != 'number') || "),s+=" "+p+".length "+h+" "+f+") { ";var d=r,v=v||[];v.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(d||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+f+" } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT have ",r=="maxItems"?s+="more":s+="fewer",s+=" than ",m?s+="' + "+f+" + '":s+=""+o,s+=" items' "),e.opts.verbose&&(s+=" , schema: ",m?s+="validate.schema"+l:s+=""+o,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var x=s;return s=v.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+x+"]); ":s+=" validate.errors = ["+x+"]; return false; ":s+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}});var ld=L((UF,K0)=>{"use strict";K0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,d,p="data"+(n||""),m=e.opts.$data&&o&&o.$data,f;if(m?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",f="schema"+i):f=o,!(m||typeof o=="number"))throw new Error(r+" must be number");var h=r=="maxLength"?">":"<";s+="if ( ",m&&(s+=" ("+f+" !== undefined && typeof "+f+" != 'number') || "),e.opts.unicode===!1?s+=" "+p+".length ":s+=" ucs2length("+p+") ",s+=" "+h+" "+f+") { ";var d=r,v=v||[];v.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(d||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+f+" } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT be ",r=="maxLength"?s+="longer":s+="shorter",s+=" than ",m?s+="' + "+f+" + '":s+=""+o,s+=" characters' "),e.opts.verbose&&(s+=" , schema: ",m?s+="validate.schema"+l:s+=""+o,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var x=s;return s=v.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+x+"]); ":s+=" validate.errors = ["+x+"]; return false; ":s+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}});var ud=L((zF,X0)=>{"use strict";X0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,d,p="data"+(n||""),m=e.opts.$data&&o&&o.$data,f;if(m?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",f="schema"+i):f=o,!(m||typeof o=="number"))throw new Error(r+" must be number");var h=r=="maxProperties"?">":"<";s+="if ( ",m&&(s+=" ("+f+" !== undefined && typeof "+f+" != 'number') || "),s+=" Object.keys("+p+").length "+h+" "+f+") { ";var d=r,v=v||[];v.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(d||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+f+" } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT have ",r=="maxProperties"?s+="more":s+="fewer",s+=" than ",m?s+="' + "+f+" + '":s+=""+o,s+=" properties' "),e.opts.verbose&&(s+=" , schema: ",m?s+="validate.schema"+l:s+=""+o,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var x=s;return s=v.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+x+"]); ":s+=" validate.errors = ["+x+"]; return false; ":s+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}});var Y0=L((HF,Q0)=>{"use strict";Q0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),m=e.opts.$data&&o&&o.$data,f;if(m?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",f="schema"+i):f=o,!(m||typeof o=="number"))throw new Error(r+" must be number");s+="var division"+i+";if (",m&&(s+=" "+f+" !== undefined && ( typeof "+f+" != 'number' || "),s+=" (division"+i+" = "+p+" / "+f+", ",e.opts.multipleOfPrecision?s+=" Math.abs(Math.round(division"+i+") - division"+i+") > 1e-"+e.opts.multipleOfPrecision+" ":s+=" division"+i+" !== parseInt(division"+i+") ",s+=" ) ",m&&(s+=" ) "),s+=" ) { ";var h=h||[];h.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { multipleOf: "+f+" } ",e.opts.messages!==!1&&(s+=" , message: 'should be multiple of ",m?s+="' + "+f:s+=""+f+"'"),e.opts.verbose&&(s+=" , schema: ",m?s+="validate.schema"+l:s+=""+o,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var d=s;return s=h.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+d+"]); ":s+=" validate.errors = ["+d+"]; return false; ":s+=" var err = "+d+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}});var e_=L((BF,J0)=>{"use strict";J0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),m="errs__"+i,f=e.util.copy(e);f.level++;var h="valid"+f.level;if(e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){f.schema=o,f.schemaPath=l,f.errSchemaPath=c,s+=" var "+m+" = errors; ";var d=e.compositeRule;e.compositeRule=f.compositeRule=!0,f.createErrors=!1;var v;f.opts.allErrors&&(v=f.opts.allErrors,f.opts.allErrors=!1),s+=" "+e.validate(f)+" ",f.createErrors=!0,v&&(f.opts.allErrors=v),e.compositeRule=f.compositeRule=d,s+=" if ("+h+") { ";var x=x||[];x.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: {} ",e.opts.messages!==!1&&(s+=" , message: 'should NOT be valid' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var b=s;s=x.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+b+"]); ":s+=" validate.errors = ["+b+"]; return false; ":s+=" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else { errors = "+m+"; if (vErrors !== null) { if ("+m+") vErrors.length = "+m+"; else vErrors = null; } ",e.opts.allErrors&&(s+=" } ")}else s+=" var err = ",e.createErrors!==!1?(s+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: {} ",e.opts.messages!==!1&&(s+=" , message: 'should NOT be valid' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ",s+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u&&(s+=" if (false) { ");return s}});var r_=L((VF,t_)=>{"use strict";t_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),m="valid"+i,f="errs__"+i,h=e.util.copy(e),d="";h.level++;var v="valid"+h.level,x=h.baseId,b="prevValid"+i,E="passingSchemas"+i;s+="var "+f+" = errors , "+b+" = false , "+m+" = false , "+E+" = null; ";var O=e.compositeRule;e.compositeRule=h.compositeRule=!0;var C=o;if(C)for(var P,A=-1,$=C.length-1;A<$;)P=C[A+=1],(e.opts.strictKeywords?typeof P=="object"&&Object.keys(P).length>0||P===!1:e.util.schemaHasRules(P,e.RULES.all))?(h.schema=P,h.schemaPath=l+"["+A+"]",h.errSchemaPath=c+"/"+A,s+=" "+e.validate(h)+" ",h.baseId=x):s+=" var "+v+" = true; ",A&&(s+=" if ("+v+" && "+b+") { "+m+" = false; "+E+" = ["+E+", "+A+"]; } else { ",d+="}"),s+=" if ("+v+") { "+m+" = "+b+" = true; "+E+" = "+A+"; }";return e.compositeRule=h.compositeRule=O,s+=""+d+"if (!"+m+") { var err = ",e.createErrors!==!1?(s+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { passingSchemas: "+E+" } ",e.opts.messages!==!1&&(s+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ",s+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&u&&(e.async?s+=" throw new ValidationError(vErrors); ":s+=" validate.errors = vErrors; return false; "),s+="} else { errors = "+f+"; if (vErrors !== null) { if ("+f+") vErrors.length = "+f+"; else vErrors = null; }",e.opts.allErrors&&(s+=" } "),s}});var s_=L((GF,a_)=>{"use strict";a_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),m=e.opts.$data&&o&&o.$data,f;m?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",f="schema"+i):f=o;var h=m?"(new RegExp("+f+"))":e.usePattern(o);s+="if ( ",m&&(s+=" ("+f+" !== undefined && typeof "+f+" != 'string') || "),s+=" !"+h+".test("+p+") ) { ";var d=d||[];d.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { pattern: ",m?s+=""+f:s+=""+e.util.toQuotedString(o),s+=" } ",e.opts.messages!==!1&&(s+=` , message: 'should match pattern "`,m?s+="' + "+f+" + '":s+=""+e.util.escapeQuotes(o),s+=`"' `),e.opts.verbose&&(s+=" , schema: ",m?s+="validate.schema"+l:s+=""+e.util.toQuotedString(o),s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var v=s;return s=d.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+v+"]); ":s+=" validate.errors = ["+v+"]; return false; ":s+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}});var i_=L((WF,n_)=>{"use strict";n_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),m="errs__"+i,f=e.util.copy(e),h="";f.level++;var d="valid"+f.level,v="key"+i,x="idx"+i,b=f.dataLevel=e.dataLevel+1,E="data"+b,O="dataProperties"+i,C=Object.keys(o||{}).filter(te),P=e.schema.patternProperties||{},A=Object.keys(P).filter(te),$=e.schema.additionalProperties,I=C.length||A.length,q=$===!1,M=typeof $=="object"&&Object.keys($).length,k=e.opts.removeAdditional,T=q||M||k,N=e.opts.ownProperties,z=e.baseId,B=e.schema.required;if(B&&!(e.opts.$data&&B.$data)&&B.length8)s+=" || validate.schema"+l+".hasOwnProperty("+v+") ";else{var Q=C;if(Q)for(var V,re=-1,ce=Q.length-1;re0||Ee===!1:e.util.schemaHasRules(Ee,e.RULES.all)){var Je=e.util.getProperty(V),X=p+Je,Ue=Ae&&Ee.default!==void 0;f.schema=Ee,f.schemaPath=l+Je,f.errSchemaPath=c+"/"+e.util.escapeFragment(V),f.errorPath=e.util.getPath(e.errorPath,V,e.opts.jsonPointers),f.dataPathArr[b]=e.util.toQuotedString(V);var ie=e.validate(f);if(f.baseId=z,e.util.varOccurences(ie,E)<2){ie=e.util.varReplace(ie,E,X);var Xe=X}else{var Xe=E;s+=" var "+E+" = "+X+"; "}if(Ue)s+=" "+ie+" ";else{if(G&&G[V]){s+=" if ( "+Xe+" === undefined ",N&&(s+=" || ! Object.prototype.hasOwnProperty.call("+p+", '"+e.util.escapeQuotes(V)+"') "),s+=") { "+d+" = false; ";var Ce=e.errorPath,W=c,Ve=e.util.escapeQuotes(V);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(Ce,V,e.opts.jsonPointers)),c=e.errSchemaPath+"/required";var ee=ee||[];ee.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { missingProperty: '"+Ve+"' } ",e.opts.messages!==!1&&(s+=" , message: '",e.opts._errorDataPathProperty?s+="is a required property":s+="should have required property \\'"+Ve+"\\'",s+="' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var ue=s;s=ee.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+ue+"]); ":s+=" validate.errors = ["+ue+"]; return false; ":s+=" var err = "+ue+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c=W,e.errorPath=Ce,s+=" } else { "}else u?(s+=" if ( "+Xe+" === undefined ",N&&(s+=" || ! Object.prototype.hasOwnProperty.call("+p+", '"+e.util.escapeQuotes(V)+"') "),s+=") { "+d+" = true; } else { "):(s+=" if ("+Xe+" !== undefined ",N&&(s+=" && Object.prototype.hasOwnProperty.call("+p+", '"+e.util.escapeQuotes(V)+"') "),s+=" ) { ");s+=" "+ie+" } "}}u&&(s+=" if ("+d+") { ",h+="}")}}if(A.length){var Ke=A;if(Ke)for(var be,bt=-1,xt=Ke.length-1;bt0||Ee===!1:e.util.schemaHasRules(Ee,e.RULES.all)){f.schema=Ee,f.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(be),f.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(be),N?s+=" "+O+" = "+O+" || Object.keys("+p+"); for (var "+x+"=0; "+x+"<"+O+".length; "+x+"++) { var "+v+" = "+O+"["+x+"]; ":s+=" for (var "+v+" in "+p+") { ",s+=" if ("+e.usePattern(be)+".test("+v+")) { ",f.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers);var X=p+"["+v+"]";f.dataPathArr[b]=v;var ie=e.validate(f);f.baseId=z,e.util.varOccurences(ie,E)<2?s+=" "+e.util.varReplace(ie,E,X)+" ":s+=" var "+E+" = "+X+"; "+ie+" ",u&&(s+=" if (!"+d+") break; "),s+=" } ",u&&(s+=" else "+d+" = true; "),s+=" } ",u&&(s+=" if ("+d+") { ",h+="}")}}}return u&&(s+=" "+h+" if ("+m+" == errors) {"),s}});var c_=L((ZF,o_)=>{"use strict";o_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),m="errs__"+i,f=e.util.copy(e),h="";f.level++;var d="valid"+f.level;if(s+="var "+m+" = errors;",e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){f.schema=o,f.schemaPath=l,f.errSchemaPath=c;var v="key"+i,x="idx"+i,b="i"+i,E="' + "+v+" + '",O=f.dataLevel=e.dataLevel+1,C="data"+O,P="dataProperties"+i,A=e.opts.ownProperties,$=e.baseId;A&&(s+=" var "+P+" = undefined; "),A?s+=" "+P+" = "+P+" || Object.keys("+p+"); for (var "+x+"=0; "+x+"<"+P+".length; "+x+"++) { var "+v+" = "+P+"["+x+"]; ":s+=" for (var "+v+" in "+p+") { ",s+=" var startErrs"+i+" = errors; ";var I=v,q=e.compositeRule;e.compositeRule=f.compositeRule=!0;var M=e.validate(f);f.baseId=$,e.util.varOccurences(M,C)<2?s+=" "+e.util.varReplace(M,C,I)+" ":s+=" var "+C+" = "+I+"; "+M+" ",e.compositeRule=f.compositeRule=q,s+=" if (!"+d+") { for (var "+b+"=startErrs"+i+"; "+b+"{"use strict";l_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),m="valid"+i,f=e.opts.$data&&o&&o.$data,h;f?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",h="schema"+i):h=o;var d="schema"+i;if(!f)if(o.length0||C===!1:e.util.schemaHasRules(C,e.RULES.all))||(v[v.length]=b)}}else var v=o;if(f||v.length){var P=e.errorPath,A=f||v.length>=e.opts.loopRequired,$=e.opts.ownProperties;if(u)if(s+=" var missing"+i+"; ",A){f||(s+=" var "+d+" = validate.schema"+l+"; ");var I="i"+i,q="schema"+i+"["+I+"]",M="' + "+q+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(P,q,e.opts.jsonPointers)),s+=" var "+m+" = true; ",f&&(s+=" if (schema"+i+" === undefined) "+m+" = true; else if (!Array.isArray(schema"+i+")) "+m+" = false; else {"),s+=" for (var "+I+" = 0; "+I+" < "+d+".length; "+I+"++) { "+m+" = "+p+"["+d+"["+I+"]] !== undefined ",$&&(s+=" && Object.prototype.hasOwnProperty.call("+p+", "+d+"["+I+"]) "),s+="; if (!"+m+") break; } ",f&&(s+=" } "),s+=" if (!"+m+") { ";var k=k||[];k.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { missingProperty: '"+M+"' } ",e.opts.messages!==!1&&(s+=" , message: '",e.opts._errorDataPathProperty?s+="is a required property":s+="should have required property \\'"+M+"\\'",s+="' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var T=s;s=k.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+T+"]); ":s+=" validate.errors = ["+T+"]; return false; ":s+=" var err = "+T+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else { "}else{s+=" if ( ";var N=v;if(N)for(var z,I=-1,B=N.length-1;I{"use strict";p_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),m="valid"+i,f=e.opts.$data&&o&&o.$data,h;if(f?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",h="schema"+i):h=o,(o||f)&&e.opts.uniqueItems!==!1){f&&(s+=" var "+m+"; if ("+h+" === false || "+h+" === undefined) "+m+" = true; else if (typeof "+h+" != 'boolean') "+m+" = false; else { "),s+=" var i = "+p+".length , "+m+" = true , j; if (i > 1) { ";var d=e.schema.items&&e.schema.items.type,v=Array.isArray(d);if(!d||d=="object"||d=="array"||v&&(d.indexOf("object")>=0||d.indexOf("array")>=0))s+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+p+"[i], "+p+"[j])) { "+m+" = false; break outer; } } } ";else{s+=" var itemIndices = {}, item; for (;i--;) { var item = "+p+"[i]; ";var x="checkDataType"+(v?"s":"");s+=" if ("+e.util[x](d,"item",e.opts.strictNumbers,!0)+") continue; ",v&&(s+=` if (typeof item == 'string') item = '"' + item; `),s+=" if (typeof itemIndices[item] == 'number') { "+m+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}s+=" } ",f&&(s+=" } "),s+=" if (!"+m+") { ";var b=b||[];b.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { i: i, j: j } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(s+=" , schema: ",f?s+="validate.schema"+l:s+=""+o,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var E=s;s=b.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+E+"]); ":s+=" validate.errors = ["+E+"]; return false; ":s+=" var err = "+E+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",u&&(s+=" else { ")}else u&&(s+=" if (true) { ");return s}});var m_=L((QF,f_)=>{"use strict";f_.exports={$ref:T0(),allOf:O0(),anyOf:k0(),$comment:I0(),const:j0(),contains:$0(),dependencies:L0(),enum:F0(),format:z0(),if:B0(),items:G0(),maximum:od(),minimum:od(),maxItems:cd(),minItems:cd(),maxLength:ld(),minLength:ld(),maxProperties:ud(),minProperties:ud(),multipleOf:Y0(),not:e_(),oneOf:r_(),pattern:s_(),properties:i_(),propertyNames:c_(),required:u_(),uniqueItems:d_(),validate:nd()}});var g_=L((YF,v_)=>{"use strict";var h_=m_(),pd=ms().toHash;v_.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],r=["type","$comment"],t=["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"],s=["number","integer","string","array","object","boolean","null"];return e.all=pd(r),e.types=pd(s),e.forEach(function(i){i.rules=i.rules.map(function(n){var o;if(typeof n=="object"){var l=Object.keys(n)[0];o=n[l],n=l,o.forEach(function(u){r.push(u),e.all[u]=!0})}r.push(n);var c=e.all[n]={keyword:n,code:h_[n],implements:o};return c}),e.all.$comment={keyword:"$comment",code:h_.$comment},i.type&&(e.types[i.type]=i)}),e.keywords=pd(r.concat(t)),e.custom={},e}});var x_=L((JF,b_)=>{"use strict";var y_=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];b_.exports=function(a,e){for(var r=0;r{"use strict";var _8=Oc().MissingRef;E_.exports=__;function __(a,e,r){var t=this;if(typeof this._opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");typeof e=="function"&&(r=e,e=void 0);var s=i(a).then(function(){var o=t._addSchema(a,void 0,e);return o.validate||n(o)});return r&&s.then(function(o){r(null,o)},r),s;function i(o){var l=o.$schema;return l&&!t.getSchema(l)?__.call(t,{$ref:l},!0):Promise.resolve()}function n(o){try{return t._compile(o)}catch(c){if(c instanceof _8)return l(c);throw c}function l(c){var u=c.missingSchema;if(f(u))throw new Error("Schema "+u+" is loaded but "+c.missingRef+" cannot be resolved");var p=t._loadingSchemas[u];return p||(p=t._loadingSchemas[u]=t._opts.loadSchema(u),p.then(m,m)),p.then(function(h){if(!f(u))return i(h).then(function(){f(u)||t.addSchema(h,u,void 0,e)})}).then(function(){return n(o)});function m(){delete t._loadingSchemas[u]}function f(h){return t._refs[h]||t._schemas[h]}}}}});var P_=L((t3,S_)=>{"use strict";S_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p,m="data"+(n||""),f="valid"+i,h="errs__"+i,d=e.opts.$data&&o&&o.$data,v;d?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",v="schema"+i):v=o;var x=this,b="definition"+i,E=x.definition,O="",C,P,A,$,I;if(d&&E.$data){I="keywordValidate"+i;var q=E.validateSchema;s+=" var "+b+" = RULES.custom['"+r+"'].definition; var "+I+" = "+b+".validate;"}else{if($=e.useCustomRule(x,o,e.schema,e),!$)return;v="validate.schema"+l,I=$.code,C=E.compile,P=E.inline,A=E.macro}var M=I+".errors",k="i"+i,T="ruleErr"+i,N=E.async;if(N&&!e.async)throw new Error("async keyword in sync schema");if(P||A||(s+=""+M+" = null;"),s+="var "+h+" = errors;var "+f+";",d&&E.$data&&(O+="}",s+=" if ("+v+" === undefined) { "+f+" = true; } else { ",q&&(O+="}",s+=" "+f+" = "+b+".validateSchema("+v+"); if ("+f+") { ")),P)E.statements?s+=" "+$.validate+" ":s+=" "+f+" = "+$.validate+"; ";else if(A){var z=e.util.copy(e),O="";z.level++;var B="valid"+z.level;z.schema=$.validate,z.schemaPath="";var G=e.compositeRule;e.compositeRule=z.compositeRule=!0;var te=e.validate(z).replace(/validate\.schema/g,I);e.compositeRule=z.compositeRule=G,s+=" "+te}else{var Q=Q||[];Q.push(s),s="",s+=" "+I+".call( ",e.opts.passContext?s+="this":s+="self",C||E.schema===!1?s+=" , "+m+" ":s+=" , "+v+" , "+m+" , validate.schema"+e.schemaPath+" ",s+=" , (dataPath || '')",e.errorPath!='""'&&(s+=" + "+e.errorPath);var V=n?"data"+(n-1||""):"parentData",re=n?e.dataPathArr[n]:"parentDataProperty";s+=" , "+V+" , "+re+" , rootData ) ";var ce=s;s=Q.pop(),E.errors===!1?(s+=" "+f+" = ",N&&(s+="await "),s+=""+ce+"; "):N?(M="customErrors"+i,s+=" var "+M+" = null; try { "+f+" = await "+ce+"; } catch (e) { "+f+" = false; if (e instanceof ValidationError) "+M+" = e.errors; else throw e; } "):s+=" "+M+" = null; "+f+" = "+ce+"; "}if(E.modifying&&(s+=" if ("+V+") "+m+" = "+V+"["+re+"];"),s+=""+O,E.valid)u&&(s+=" if (true) { ");else{s+=" if ( ",E.valid===void 0?(s+=" !",A?s+=""+B:s+=""+f):s+=" "+!E.valid+" ",s+=") { ",p=x.keyword;var Q=Q||[];Q.push(s),s="";var Q=Q||[];Q.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(p||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { keyword: '"+x.keyword+"' } ",e.opts.messages!==!1&&(s+=` , message: 'should pass "`+x.keyword+`" keyword validation' `),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),s+=" } "):s+=" {} ";var Be=s;s=Q.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+Be+"]); ":s+=" validate.errors = ["+Be+"]; return false; ":s+=" var err = "+Be+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var be=s;s=Q.pop(),P?E.errors?E.errors!="full"&&(s+=" for (var "+k+"="+h+"; "+k+"{E8.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var O_=L((a3,R_)=>{"use strict";var T_=dd();R_.exports={$id:"https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:T_.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:T_.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}});var k_=L((s3,C_)=>{"use strict";var w8=/^[a-z_$][a-z0-9_$-]*$/i,S8=P_(),P8=O_();C_.exports={add:T8,get:R8,remove:O8,validate:fd};function T8(a,e){var r=this.RULES;if(r.keywords[a])throw new Error("Keyword "+a+" is already defined");if(!w8.test(a))throw new Error("Keyword "+a+" is not a valid identifier");if(e){this.validateKeyword(e,!0);var t=e.type;if(Array.isArray(t))for(var s=0;s{C8.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON Schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var U_=L((i3,F_)=>{"use strict";var N_=u0(),hs=Rc(),k8=d0(),j_=Yp(),A8=sd(),I8=S0(),N8=g_(),D_=x_(),$_=ms();F_.exports=ut;ut.prototype.validate=D8;ut.prototype.compile=$8;ut.prototype.addSchema=M8;ut.prototype.addMetaSchema=L8;ut.prototype.validateSchema=q8;ut.prototype.getSchema=U8;ut.prototype.removeSchema=H8;ut.prototype.addFormat=Q8;ut.prototype.errorsText=X8;ut.prototype._addSchema=B8;ut.prototype._compile=V8;ut.prototype.compileAsync=w_();var $c=k_();ut.prototype.addKeyword=$c.add;ut.prototype.getKeyword=$c.get;ut.prototype.removeKeyword=$c.remove;ut.prototype.validateKeyword=$c.validate;var M_=Oc();ut.ValidationError=M_.Validation;ut.MissingRefError=M_.MissingRef;ut.$dataMetaSchema=D_;var Dc="http://json-schema.org/draft-07/schema",I_=["removeAdditional","useDefaults","coerceTypes","strictDefaults"],j8=["/properties"];function ut(a){if(!(this instanceof ut))return new ut(a);a=this._opts=$_.copy(a)||{},aj(this),this._schemas={},this._refs={},this._fragments={},this._formats=I8(a.format),this._cache=a.cache||new k8,this._loadingSchemas={},this._compilations=[],this.RULES=N8(),this._getId=G8(a),a.loopRequired=a.loopRequired||1/0,a.errorDataPath=="property"&&(a._errorDataPathProperty=!0),a.serialize===void 0&&(a.serialize=A8),this._metaOpts=rj(this),a.formats&&ej(this),a.keywords&&tj(this),Y8(this),typeof a.meta=="object"&&this.addMetaSchema(a.meta),a.nullable&&this.addKeyword("nullable",{metaSchema:{type:"boolean"}}),J8(this)}function D8(a,e){var r;if(typeof a=="string"){if(r=this.getSchema(a),!r)throw new Error('no schema with key or ref "'+a+'"')}else{var t=this._addSchema(a);r=t.validate||this._compile(t)}var s=r(e);return r.$async!==!0&&(this.errors=r.errors),s}function $8(a,e){var r=this._addSchema(a,void 0,e);return r.validate||this._compile(r)}function M8(a,e,r,t){if(Array.isArray(a)){for(var s=0;s{G_.exports=V_;V_.sync=nj;var H_=require("fs");function sj(a,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var t=0;t{Q_.exports=K_;K_.sync=ij;var Z_=require("fs");function K_(a,e,r){Z_.stat(a,function(t,s){r(t,t?!1:X_(s,e))})}function ij(a,e){return X_(Z_.statSync(a),e)}function X_(a,e){return a.isFile()&&oj(a,e)}function oj(a,e){var r=a.mode,t=a.uid,s=a.gid,i=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),n=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),o=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=o|l,p=r&c||r&l&&s===n||r&o&&t===i||r&u&&i===0;return p}});var eE=L((f3,J_)=>{var d3=require("fs"),Mc;process.platform==="win32"||global.TESTING_WINDOWS?Mc=W_():Mc=Y_();J_.exports=hd;hd.sync=cj;function hd(a,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(t,s){hd(a,e||{},function(i,n){i?s(i):t(n)})})}Mc(a,e||{},function(t,s){t&&(t.code==="EACCES"||e&&e.ignoreErrors)&&(t=null,s=!1),r(t,s)})}function cj(a,e){try{return Mc.sync(a,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var oE=L((m3,iE)=>{var xn=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",tE=require("path"),lj=xn?";":":",rE=eE(),aE=a=>Object.assign(new Error(`not found: ${a}`),{code:"ENOENT"}),sE=(a,e)=>{let r=e.colon||lj,t=a.match(/\//)||xn&&a.match(/\\/)?[""]:[...xn?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],s=xn?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",i=xn?s.split(r):[""];return xn&&a.indexOf(".")!==-1&&i[0]!==""&&i.unshift(""),{pathEnv:t,pathExt:i,pathExtExe:s}},nE=(a,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:t,pathExt:s,pathExtExe:i}=sE(a,e),n=[],o=c=>new Promise((u,p)=>{if(c===t.length)return e.all&&n.length?u(n):p(aE(a));let m=t[c],f=/^".*"$/.test(m)?m.slice(1,-1):m,h=tE.join(f,a),d=!f&&/^\.[\\\/]/.test(a)?a.slice(0,2)+h:h;u(l(d,c,0))}),l=(c,u,p)=>new Promise((m,f)=>{if(p===s.length)return m(o(u+1));let h=s[p];rE(c+h,{pathExt:i},(d,v)=>{if(!d&&v)if(e.all)n.push(c+h);else return m(c+h);return m(l(c,u,p+1))})});return r?o(0).then(c=>r(null,c),r):o(0)},uj=(a,e)=>{e=e||{};let{pathEnv:r,pathExt:t,pathExtExe:s}=sE(a,e),i=[];for(let n=0;n{"use strict";var cE=(a={})=>{let e=a.env||process.env;return(a.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(t=>t.toUpperCase()==="PATH")||"Path"};vd.exports=cE;vd.exports.default=cE});var fE=L((v3,dE)=>{"use strict";var uE=require("path"),pj=oE(),dj=lE();function pE(a,e){let r=a.options.env||process.env,t=process.cwd(),s=a.options.cwd!=null,i=s&&process.chdir!==void 0&&!process.chdir.disabled;if(i)try{process.chdir(a.options.cwd)}catch{}let n;try{n=pj.sync(a.command,{path:r[dj({env:r})],pathExt:e?uE.delimiter:void 0})}catch{}finally{i&&process.chdir(t)}return n&&(n=uE.resolve(s?a.options.cwd:"",n)),n}function fj(a){return pE(a)||pE(a,!0)}dE.exports=fj});var mE=L((g3,yd)=>{"use strict";var gd=/([()\][%!^"`<>&|;, *?])/g;function mj(a){return a=a.replace(gd,"^$1"),a}function hj(a,e){return a=`${a}`,a=a.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),a=a.replace(/(?=(\\+?)?)\1$/,"$1$1"),a=`"${a}"`,a=a.replace(gd,"^$1"),e&&(a=a.replace(gd,"^$1")),a}yd.exports.command=mj;yd.exports.argument=hj});var vE=L((y3,hE)=>{"use strict";hE.exports=/^#!(.*)/});var yE=L((b3,gE)=>{"use strict";var vj=vE();gE.exports=(a="")=>{let e=a.match(vj);if(!e)return null;let[r,t]=e[0].replace(/#! ?/,"").split(" "),s=r.split("/").pop();return s==="env"?t:t?`${s} ${t}`:s}});var xE=L((x3,bE)=>{"use strict";var bd=require("fs"),gj=yE();function yj(a){let r=Buffer.alloc(150),t;try{t=bd.openSync(a,"r"),bd.readSync(t,r,0,150,0),bd.closeSync(t)}catch{}return gj(r.toString())}bE.exports=yj});var SE=L((_3,wE)=>{"use strict";var bj=require("path"),_E=fE(),EE=mE(),xj=xE(),_j=process.platform==="win32",Ej=/\.(?:com|exe)$/i,wj=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Sj(a){a.file=_E(a);let e=a.file&&xj(a.file);return e?(a.args.unshift(a.file),a.command=e,_E(a)):a.file}function Pj(a){if(!_j)return a;let e=Sj(a),r=!Ej.test(e);if(a.options.forceShell||r){let t=wj.test(e);a.command=bj.normalize(a.command),a.command=EE.command(a.command),a.args=a.args.map(i=>EE.argument(i,t));let s=[a.command].concat(a.args).join(" ");a.args=["/d","/s","/c",`"${s}"`],a.command=process.env.comspec||"cmd.exe",a.options.windowsVerbatimArguments=!0}return a}function Tj(a,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let t={command:a,args:e,options:r,file:void 0,original:{command:a,args:e}};return r.shell?t:Pj(t)}wE.exports=Tj});var RE=L((E3,TE)=>{"use strict";var xd=process.platform==="win32";function _d(a,e){return Object.assign(new Error(`${e} ${a.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${a.command}`,path:a.command,spawnargs:a.args})}function Rj(a,e){if(!xd)return;let r=a.emit;a.emit=function(t,s){if(t==="exit"){let i=PE(s,e);if(i)return r.call(a,"error",i)}return r.apply(a,arguments)}}function PE(a,e){return xd&&a===1&&!e.file?_d(e.original,"spawn"):null}function Oj(a,e){return xd&&a===1&&!e.file?_d(e.original,"spawnSync"):null}TE.exports={hookChildProcess:Rj,verifyENOENT:PE,verifyENOENTSync:Oj,notFoundError:_d}});var kE=L((w3,_n)=>{"use strict";var OE=require("child_process"),Ed=SE(),wd=RE();function CE(a,e,r){let t=Ed(a,e,r),s=OE.spawn(t.command,t.args,t.options);return wd.hookChildProcess(s,t),s}function Cj(a,e,r){let t=Ed(a,e,r),s=OE.spawnSync(t.command,t.args,t.options);return s.error=s.error||wd.verifyENOENTSync(s.status,t),s}_n.exports=CE;_n.exports.spawn=CE;_n.exports.sync=Cj;_n.exports._parse=Ed;_n.exports._enoent=wd});var U$={};Jd(U$,{WorkerService:()=>Fi,default:()=>F$});module.exports=hw(U$);var dl=Nt(rx(),1),sw=Nt(ox(),1),gr=Nt(require("path"),1),vt=require("fs"),fl=require("os");var _t=require("path"),wp=require("os"),Sp=require("fs");var cx=require("url"),bI={};function gI(){return typeof __dirname<"u"?__dirname:(0,_t.dirname)((0,cx.fileURLToPath)(bI.url))}var yI=gI(),Pr=process.env.CLAUDE_MEM_DATA_DIR||(0,_t.join)((0,wp.homedir)(),".claude-mem"),Pp=process.env.CLAUDE_CONFIG_DIR||(0,_t.join)((0,wp.homedir)(),".claude"),xq=(0,_t.join)(Pr,"archives"),_q=(0,_t.join)(Pr,"logs"),Eq=(0,_t.join)(Pr,"trash"),wq=(0,_t.join)(Pr,"backups"),Sq=(0,_t.join)(Pr,"settings.json"),tc=(0,_t.join)(Pr,"claude-mem.db"),Pq=(0,_t.join)(Pr,"vector-db"),Tq=(0,_t.join)(Pp,"settings.json"),Rq=(0,_t.join)(Pp,"commands"),Oq=(0,_t.join)(Pp,"CLAUDE.md");function rc(a){(0,Sp.mkdirSync)(a,{recursive:!0})}function Ea(){return(0,_t.join)(yI,"..","..")}var lx=Nt(require("path"),1),ux=require("os"),ac=require("fs");function sc(){try{let a=lx.default.join((0,ux.homedir)(),".claude-mem","settings.json");if((0,ac.existsSync)(a)){let e=JSON.parse((0,ac.readFileSync)(a,"utf-8")),r=parseInt(e.env?.CLAUDE_MEM_WORKER_PORT,10);if(!isNaN(r))return r}}catch{}return parseInt(process.env.CLAUDE_MEM_WORKER_PORT||"37777",10)}var Tp=(i=>(i[i.DEBUG=0]="DEBUG",i[i.INFO=1]="INFO",i[i.WARN=2]="WARN",i[i.ERROR=3]="ERROR",i[i.SILENT=4]="SILENT",i))(Tp||{}),Rp=class{level;useColor;constructor(){let e=process.env.CLAUDE_MEM_LOG_LEVEL?.toUpperCase()||"INFO";this.level=Tp[e]??1,this.useColor=process.stdout.isTTY??!1}correlationId(e,r){return`obs-${e}-${r}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.level===0?`${e.message} -${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Object.keys(e);return r.length===0?"{}":r.length<=3?JSON.stringify(e):`{${r.length} keys: ${r.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,r){if(!r)return e;try{let t=typeof r=="string"?JSON.parse(r):r;if(e==="Bash"&&t.command){let s=t.command.length>50?t.command.substring(0,50)+"...":t.command;return`${e}(${s})`}if(e==="Read"&&t.file_path){let s=t.file_path.split("/").pop()||t.file_path;return`${e}(${s})`}if(e==="Edit"&&t.file_path){let s=t.file_path.split("/").pop()||t.file_path;return`${e}(${s})`}if(e==="Write"&&t.file_path){let s=t.file_path.split("/").pop()||t.file_path;return`${e}(${s})`}return e}catch{return e}}log(e,r,t,s,i){if(e0&&(p=` {${Object.entries(v).map(([b,E])=>`${b}=${E}`).join(", ")}}`)}let m=`[${n}] [${o}] [${l}] ${c}${t}${p}${u}`;e===3?console.error(m):console.log(m)}debug(e,r,t,s){this.log(0,e,r,t,s)}info(e,r,t,s){this.log(1,e,r,t,s)}warn(e,r,t,s){this.log(2,e,r,t,s)}error(e,r,t,s){this.log(3,e,r,t,s)}dataIn(e,r,t,s){this.info(e,`\u2192 ${r}`,t,s)}dataOut(e,r,t,s){this.info(e,`\u2190 ${r}`,t,s)}success(e,r,t,s){this.info(e,`\u2713 ${r}`,t,s)}failure(e,r,t,s){this.error(e,`\u2717 ${r}`,t,s)}timing(e,r,t,s){this.info(e,`\u23F1 ${r}`,s,{duration:`${t}ms`})}},H=new Rp;var _={};Jd(_,{BRAND:()=>VI,DIRTY:()=>Qa,EMPTY_PATH:()=>wI,INVALID:()=>_e,NEVER:()=>C2,OK:()=>Pt,ParseStatus:()=>Et,Schema:()=>Fe,ZodAny:()=>Pa,ZodArray:()=>ea,ZodBigInt:()=>Ja,ZodBoolean:()=>es,ZodBranded:()=>wi,ZodCatch:()=>ps,ZodDate:()=>ts,ZodDefault:()=>us,ZodDiscriminatedUnion:()=>oc,ZodEffects:()=>or,ZodEnum:()=>cs,ZodError:()=>Lt,ZodFirstPartyTypeKind:()=>Se,ZodFunction:()=>lc,ZodIntersection:()=>ns,ZodIssueCode:()=>Y,ZodLazy:()=>is,ZodLiteral:()=>os,ZodMap:()=>vn,ZodNaN:()=>yn,ZodNativeEnum:()=>ls,ZodNever:()=>Tr,ZodNull:()=>as,ZodNullable:()=>qr,ZodNumber:()=>Ya,ZodObject:()=>qt,ZodOptional:()=>nr,ZodParsedType:()=>oe,ZodPipeline:()=>Si,ZodPromise:()=>Ta,ZodReadonly:()=>ds,ZodRecord:()=>cc,ZodSchema:()=>Fe,ZodSet:()=>gn,ZodString:()=>Sa,ZodSymbol:()=>mn,ZodTransformer:()=>or,ZodTuple:()=>Lr,ZodType:()=>Fe,ZodUndefined:()=>rs,ZodUnion:()=>ss,ZodUnknown:()=>Jr,ZodVoid:()=>hn,addIssueToContext:()=>ae,any:()=>e2,array:()=>s2,bigint:()=>KI,boolean:()=>_x,coerce:()=>O2,custom:()=>yx,date:()=>XI,datetimeRegex:()=>vx,defaultErrorMap:()=>Qr,discriminatedUnion:()=>c2,effect:()=>x2,enum:()=>g2,function:()=>m2,getErrorMap:()=>pn,getParsedType:()=>Mr,instanceof:()=>WI,intersection:()=>l2,isAborted:()=>nc,isAsync:()=>dn,isDirty:()=>ic,isValid:()=>wa,late:()=>GI,lazy:()=>h2,literal:()=>v2,makeIssue:()=>Ei,map:()=>d2,nan:()=>ZI,nativeEnum:()=>y2,never:()=>r2,null:()=>JI,nullable:()=>E2,number:()=>xx,object:()=>n2,objectUtil:()=>Op,oboolean:()=>R2,onumber:()=>T2,optional:()=>_2,ostring:()=>P2,pipeline:()=>S2,preprocess:()=>w2,promise:()=>b2,quotelessJson:()=>xI,record:()=>p2,set:()=>f2,setErrorMap:()=>EI,strictObject:()=>i2,string:()=>bx,symbol:()=>QI,transformer:()=>x2,tuple:()=>u2,undefined:()=>YI,union:()=>o2,unknown:()=>t2,util:()=>He,void:()=>a2});var He;(function(a){a.assertEqual=s=>{};function e(s){}a.assertIs=e;function r(s){throw new Error}a.assertNever=r,a.arrayToEnum=s=>{let i={};for(let n of s)i[n]=n;return i},a.getValidEnumValues=s=>{let i=a.objectKeys(s).filter(o=>typeof s[s[o]]!="number"),n={};for(let o of i)n[o]=s[o];return a.objectValues(n)},a.objectValues=s=>a.objectKeys(s).map(function(i){return s[i]}),a.objectKeys=typeof Object.keys=="function"?s=>Object.keys(s):s=>{let i=[];for(let n in s)Object.prototype.hasOwnProperty.call(s,n)&&i.push(n);return i},a.find=(s,i)=>{for(let n of s)if(i(n))return n},a.isInteger=typeof Number.isInteger=="function"?s=>Number.isInteger(s):s=>typeof s=="number"&&Number.isFinite(s)&&Math.floor(s)===s;function t(s,i=" | "){return s.map(n=>typeof n=="string"?`'${n}'`:n).join(i)}a.joinValues=t,a.jsonStringifyReplacer=(s,i)=>typeof i=="bigint"?i.toString():i})(He||(He={}));var Op;(function(a){a.mergeShapes=(e,r)=>({...e,...r})})(Op||(Op={}));var oe=He.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Mr=a=>{switch(typeof a){case"undefined":return oe.undefined;case"string":return oe.string;case"number":return Number.isNaN(a)?oe.nan:oe.number;case"boolean":return oe.boolean;case"function":return oe.function;case"bigint":return oe.bigint;case"symbol":return oe.symbol;case"object":return Array.isArray(a)?oe.array:a===null?oe.null:a.then&&typeof a.then=="function"&&a.catch&&typeof a.catch=="function"?oe.promise:typeof Map<"u"&&a instanceof Map?oe.map:typeof Set<"u"&&a instanceof Set?oe.set:typeof Date<"u"&&a instanceof Date?oe.date:oe.object;default:return oe.unknown}};var Y=He.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),xI=a=>JSON.stringify(a,null,2).replace(/"([^"]+)":/g,"$1:"),Lt=class a extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=t=>{this.issues=[...this.issues,t]},this.addIssues=(t=[])=>{this.issues=[...this.issues,...t]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=e}format(e){let r=e||function(i){return i.message},t={_errors:[]},s=i=>{for(let n of i.issues)if(n.code==="invalid_union")n.unionErrors.map(s);else if(n.code==="invalid_return_type")s(n.returnTypeError);else if(n.code==="invalid_arguments")s(n.argumentsError);else if(n.path.length===0)t._errors.push(r(n));else{let o=t,l=0;for(;lr.message){let r={},t=[];for(let s of this.issues)if(s.path.length>0){let i=s.path[0];r[i]=r[i]||[],r[i].push(e(s))}else t.push(e(s));return{formErrors:t,fieldErrors:r}}get formErrors(){return this.flatten()}};Lt.create=a=>new Lt(a);var _I=(a,e)=>{let r;switch(a.code){case Y.invalid_type:a.received===oe.undefined?r="Required":r=`Expected ${a.expected}, received ${a.received}`;break;case Y.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(a.expected,He.jsonStringifyReplacer)}`;break;case Y.unrecognized_keys:r=`Unrecognized key(s) in object: ${He.joinValues(a.keys,", ")}`;break;case Y.invalid_union:r="Invalid input";break;case Y.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${He.joinValues(a.options)}`;break;case Y.invalid_enum_value:r=`Invalid enum value. Expected ${He.joinValues(a.options)}, received '${a.received}'`;break;case Y.invalid_arguments:r="Invalid function arguments";break;case Y.invalid_return_type:r="Invalid function return type";break;case Y.invalid_date:r="Invalid date";break;case Y.invalid_string:typeof a.validation=="object"?"includes"in a.validation?(r=`Invalid input: must include "${a.validation.includes}"`,typeof a.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${a.validation.position}`)):"startsWith"in a.validation?r=`Invalid input: must start with "${a.validation.startsWith}"`:"endsWith"in a.validation?r=`Invalid input: must end with "${a.validation.endsWith}"`:He.assertNever(a.validation):a.validation!=="regex"?r=`Invalid ${a.validation}`:r="Invalid";break;case Y.too_small:a.type==="array"?r=`Array must contain ${a.exact?"exactly":a.inclusive?"at least":"more than"} ${a.minimum} element(s)`:a.type==="string"?r=`String must contain ${a.exact?"exactly":a.inclusive?"at least":"over"} ${a.minimum} character(s)`:a.type==="number"?r=`Number must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${a.minimum}`:a.type==="bigint"?r=`Number must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${a.minimum}`:a.type==="date"?r=`Date must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(a.minimum))}`:r="Invalid input";break;case Y.too_big:a.type==="array"?r=`Array must contain ${a.exact?"exactly":a.inclusive?"at most":"less than"} ${a.maximum} element(s)`:a.type==="string"?r=`String must contain ${a.exact?"exactly":a.inclusive?"at most":"under"} ${a.maximum} character(s)`:a.type==="number"?r=`Number must be ${a.exact?"exactly":a.inclusive?"less than or equal to":"less than"} ${a.maximum}`:a.type==="bigint"?r=`BigInt must be ${a.exact?"exactly":a.inclusive?"less than or equal to":"less than"} ${a.maximum}`:a.type==="date"?r=`Date must be ${a.exact?"exactly":a.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(a.maximum))}`:r="Invalid input";break;case Y.custom:r="Invalid input";break;case Y.invalid_intersection_types:r="Intersection results could not be merged";break;case Y.not_multiple_of:r=`Number must be a multiple of ${a.multipleOf}`;break;case Y.not_finite:r="Number must be finite";break;default:r=e.defaultError,He.assertNever(a)}return{message:r}},Qr=_I;var px=Qr;function EI(a){px=a}function pn(){return px}var Ei=a=>{let{data:e,path:r,errorMaps:t,issueData:s}=a,i=[...r,...s.path||[]],n={...s,path:i};if(s.message!==void 0)return{...s,path:i,message:s.message};let o="",l=t.filter(c=>!!c).slice().reverse();for(let c of l)o=c(n,{data:e,defaultError:o}).message;return{...s,path:i,message:o}},wI=[];function ae(a,e){let r=pn(),t=Ei({issueData:e,data:a.data,path:a.path,errorMaps:[a.common.contextualErrorMap,a.schemaErrorMap,r,r===Qr?void 0:Qr].filter(s=>!!s)});a.common.issues.push(t)}var Et=class a{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,r){let t=[];for(let s of r){if(s.status==="aborted")return _e;s.status==="dirty"&&e.dirty(),t.push(s.value)}return{status:e.value,value:t}}static async mergeObjectAsync(e,r){let t=[];for(let s of r){let i=await s.key,n=await s.value;t.push({key:i,value:n})}return a.mergeObjectSync(e,t)}static mergeObjectSync(e,r){let t={};for(let s of r){let{key:i,value:n}=s;if(i.status==="aborted"||n.status==="aborted")return _e;i.status==="dirty"&&e.dirty(),n.status==="dirty"&&e.dirty(),i.value!=="__proto__"&&(typeof n.value<"u"||s.alwaysSet)&&(t[i.value]=n.value)}return{status:e.value,value:t}}},_e=Object.freeze({status:"aborted"}),Qa=a=>({status:"dirty",value:a}),Pt=a=>({status:"valid",value:a}),nc=a=>a.status==="aborted",ic=a=>a.status==="dirty",wa=a=>a.status==="valid",dn=a=>typeof Promise<"u"&&a instanceof Promise;var fe;(function(a){a.errToObj=e=>typeof e=="string"?{message:e}:e||{},a.toString=e=>typeof e=="string"?e:e?.message})(fe||(fe={}));var ir=class{constructor(e,r,t,s){this._cachedPath=[],this.parent=e,this.data=r,this._path=t,this._key=s}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},dx=(a,e)=>{if(wa(e))return{success:!0,data:e.value};if(!a.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let r=new Lt(a.common.issues);return this._error=r,this._error}}};function De(a){if(!a)return{};let{errorMap:e,invalid_type_error:r,required_error:t,description:s}=a;if(e&&(r||t))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:s}:{errorMap:(n,o)=>{let{message:l}=a;return n.code==="invalid_enum_value"?{message:l??o.defaultError}:typeof o.data>"u"?{message:l??t??o.defaultError}:n.code!=="invalid_type"?{message:o.defaultError}:{message:l??r??o.defaultError}},description:s}}var Fe=class{get description(){return this._def.description}_getType(e){return Mr(e.data)}_getOrReturnCtx(e,r){return r||{common:e.parent.common,data:e.data,parsedType:Mr(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new Et,ctx:{common:e.parent.common,data:e.data,parsedType:Mr(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let r=this._parse(e);if(dn(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(e){let r=this._parse(e);return Promise.resolve(r)}parse(e,r){let t=this.safeParse(e,r);if(t.success)return t.data;throw t.error}safeParse(e,r){let t={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Mr(e)},s=this._parseSync({data:e,path:t.path,parent:t});return dx(t,s)}"~validate"(e){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Mr(e)};if(!this["~standard"].async)try{let t=this._parseSync({data:e,path:[],parent:r});return wa(t)?{value:t.value}:{issues:r.common.issues}}catch(t){t?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),r.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:r}).then(t=>wa(t)?{value:t.value}:{issues:r.common.issues})}async parseAsync(e,r){let t=await this.safeParseAsync(e,r);if(t.success)return t.data;throw t.error}async safeParseAsync(e,r){let t={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Mr(e)},s=this._parse({data:e,path:t.path,parent:t}),i=await(dn(s)?s:Promise.resolve(s));return dx(t,i)}refine(e,r){let t=s=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(s):r;return this._refinement((s,i)=>{let n=e(s),o=()=>i.addIssue({code:Y.custom,...t(s)});return typeof Promise<"u"&&n instanceof Promise?n.then(l=>l?!0:(o(),!1)):n?!0:(o(),!1)})}refinement(e,r){return this._refinement((t,s)=>e(t)?!0:(s.addIssue(typeof r=="function"?r(t,s):r),!1))}_refinement(e){return new or({schema:this,typeName:Se.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:r=>this["~validate"](r)}}optional(){return nr.create(this,this._def)}nullable(){return qr.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ea.create(this)}promise(){return Ta.create(this,this._def)}or(e){return ss.create([this,e],this._def)}and(e){return ns.create(this,e,this._def)}transform(e){return new or({...De(this._def),schema:this,typeName:Se.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let r=typeof e=="function"?e:()=>e;return new us({...De(this._def),innerType:this,defaultValue:r,typeName:Se.ZodDefault})}brand(){return new wi({typeName:Se.ZodBranded,type:this,...De(this._def)})}catch(e){let r=typeof e=="function"?e:()=>e;return new ps({...De(this._def),innerType:this,catchValue:r,typeName:Se.ZodCatch})}describe(e){let r=this.constructor;return new r({...this._def,description:e})}pipe(e){return Si.create(this,e)}readonly(){return ds.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},SI=/^c[^\s-]{8,}$/i,PI=/^[0-9a-z]+$/,TI=/^[0-9A-HJKMNP-TV-Z]{26}$/i,RI=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,OI=/^[a-z0-9_-]{21}$/i,CI=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,kI=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,AI=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,II="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Cp,NI=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,jI=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,DI=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,$I=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,MI=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,LI=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,mx="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",qI=new RegExp(`^${mx}$`);function hx(a){let e="[0-5]\\d";a.precision?e=`${e}\\.\\d{${a.precision}}`:a.precision==null&&(e=`${e}(\\.\\d+)?`);let r=a.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${r}`}function FI(a){return new RegExp(`^${hx(a)}$`)}function vx(a){let e=`${mx}T${hx(a)}`,r=[];return r.push(a.local?"Z?":"Z"),a.offset&&r.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${r.join("|")})`,new RegExp(`^${e}$`)}function UI(a,e){return!!((e==="v4"||!e)&&NI.test(a)||(e==="v6"||!e)&&DI.test(a))}function zI(a,e){if(!CI.test(a))return!1;try{let[r]=a.split(".");if(!r)return!1;let t=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),s=JSON.parse(atob(t));return!(typeof s!="object"||s===null||"typ"in s&&s?.typ!=="JWT"||!s.alg||e&&s.alg!==e)}catch{return!1}}function HI(a,e){return!!((e==="v4"||!e)&&jI.test(a)||(e==="v6"||!e)&&$I.test(a))}var Sa=class a extends Fe{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==oe.string){let i=this._getOrReturnCtx(e);return ae(i,{code:Y.invalid_type,expected:oe.string,received:i.parsedType}),_e}let t=new Et,s;for(let i of this._def.checks)if(i.kind==="min")e.data.lengthi.value&&(s=this._getOrReturnCtx(e,s),ae(s,{code:Y.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),t.dirty());else if(i.kind==="length"){let n=e.data.length>i.value,o=e.data.lengthe.test(s),{validation:r,code:Y.invalid_string,...fe.errToObj(t)})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...fe.errToObj(e)})}url(e){return this._addCheck({kind:"url",...fe.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...fe.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...fe.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...fe.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...fe.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...fe.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...fe.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...fe.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...fe.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...fe.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...fe.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...fe.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...fe.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...fe.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...fe.errToObj(e)})}regex(e,r){return this._addCheck({kind:"regex",regex:e,...fe.errToObj(r)})}includes(e,r){return this._addCheck({kind:"includes",value:e,position:r?.position,...fe.errToObj(r?.message)})}startsWith(e,r){return this._addCheck({kind:"startsWith",value:e,...fe.errToObj(r)})}endsWith(e,r){return this._addCheck({kind:"endsWith",value:e,...fe.errToObj(r)})}min(e,r){return this._addCheck({kind:"min",value:e,...fe.errToObj(r)})}max(e,r){return this._addCheck({kind:"max",value:e,...fe.errToObj(r)})}length(e,r){return this._addCheck({kind:"length",value:e,...fe.errToObj(r)})}nonempty(e){return this.min(1,fe.errToObj(e))}trim(){return new a({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new a({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new a({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxLength(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew Sa({checks:[],typeName:Se.ZodString,coerce:a?.coerce??!1,...De(a)});function BI(a,e){let r=(a.toString().split(".")[1]||"").length,t=(e.toString().split(".")[1]||"").length,s=r>t?r:t,i=Number.parseInt(a.toFixed(s).replace(".","")),n=Number.parseInt(e.toFixed(s).replace(".",""));return i%n/10**s}var Ya=class a extends Fe{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==oe.number){let i=this._getOrReturnCtx(e);return ae(i,{code:Y.invalid_type,expected:oe.number,received:i.parsedType}),_e}let t,s=new Et;for(let i of this._def.checks)i.kind==="int"?He.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),ae(t,{code:Y.invalid_type,expected:"integer",received:"float",message:i.message}),s.dirty()):i.kind==="min"?(i.inclusive?e.datai.value:e.data>=i.value)&&(t=this._getOrReturnCtx(e,t),ae(t,{code:Y.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),s.dirty()):i.kind==="multipleOf"?BI(e.data,i.value)!==0&&(t=this._getOrReturnCtx(e,t),ae(t,{code:Y.not_multiple_of,multipleOf:i.value,message:i.message}),s.dirty()):i.kind==="finite"?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),ae(t,{code:Y.not_finite,message:i.message}),s.dirty()):He.assertNever(i);return{status:s.value,value:e.data}}gte(e,r){return this.setLimit("min",e,!0,fe.toString(r))}gt(e,r){return this.setLimit("min",e,!1,fe.toString(r))}lte(e,r){return this.setLimit("max",e,!0,fe.toString(r))}lt(e,r){return this.setLimit("max",e,!1,fe.toString(r))}setLimit(e,r,t,s){return new a({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:t,message:fe.toString(s)}]})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:fe.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:fe.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:fe.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:fe.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:fe.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:fe.toString(r)})}finite(e){return this._addCheck({kind:"finite",message:fe.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:fe.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:fe.toString(e)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuee.kind==="int"||e.kind==="multipleOf"&&He.isInteger(e.value))}get isFinite(){let e=null,r=null;for(let t of this._def.checks){if(t.kind==="finite"||t.kind==="int"||t.kind==="multipleOf")return!0;t.kind==="min"?(r===null||t.value>r)&&(r=t.value):t.kind==="max"&&(e===null||t.valuenew Ya({checks:[],typeName:Se.ZodNumber,coerce:a?.coerce||!1,...De(a)});var Ja=class a extends Fe{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==oe.bigint)return this._getInvalidInput(e);let t,s=new Et;for(let i of this._def.checks)i.kind==="min"?(i.inclusive?e.datai.value:e.data>=i.value)&&(t=this._getOrReturnCtx(e,t),ae(t,{code:Y.too_big,type:"bigint",maximum:i.value,inclusive:i.inclusive,message:i.message}),s.dirty()):i.kind==="multipleOf"?e.data%i.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),ae(t,{code:Y.not_multiple_of,multipleOf:i.value,message:i.message}),s.dirty()):He.assertNever(i);return{status:s.value,value:e.data}}_getInvalidInput(e){let r=this._getOrReturnCtx(e);return ae(r,{code:Y.invalid_type,expected:oe.bigint,received:r.parsedType}),_e}gte(e,r){return this.setLimit("min",e,!0,fe.toString(r))}gt(e,r){return this.setLimit("min",e,!1,fe.toString(r))}lte(e,r){return this.setLimit("max",e,!0,fe.toString(r))}lt(e,r){return this.setLimit("max",e,!1,fe.toString(r))}setLimit(e,r,t,s){return new a({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:t,message:fe.toString(s)}]})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:fe.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:fe.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:fe.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:fe.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:fe.toString(r)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew Ja({checks:[],typeName:Se.ZodBigInt,coerce:a?.coerce??!1,...De(a)});var es=class extends Fe{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==oe.boolean){let t=this._getOrReturnCtx(e);return ae(t,{code:Y.invalid_type,expected:oe.boolean,received:t.parsedType}),_e}return Pt(e.data)}};es.create=a=>new es({typeName:Se.ZodBoolean,coerce:a?.coerce||!1,...De(a)});var ts=class a extends Fe{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==oe.date){let i=this._getOrReturnCtx(e);return ae(i,{code:Y.invalid_type,expected:oe.date,received:i.parsedType}),_e}if(Number.isNaN(e.data.getTime())){let i=this._getOrReturnCtx(e);return ae(i,{code:Y.invalid_date}),_e}let t=new Et,s;for(let i of this._def.checks)i.kind==="min"?e.data.getTime()i.value&&(s=this._getOrReturnCtx(e,s),ae(s,{code:Y.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),t.dirty()):He.assertNever(i);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}min(e,r){return this._addCheck({kind:"min",value:e.getTime(),message:fe.toString(r)})}max(e,r){return this._addCheck({kind:"max",value:e.getTime(),message:fe.toString(r)})}get minDate(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew ts({checks:[],coerce:a?.coerce||!1,typeName:Se.ZodDate,...De(a)});var mn=class extends Fe{_parse(e){if(this._getType(e)!==oe.symbol){let t=this._getOrReturnCtx(e);return ae(t,{code:Y.invalid_type,expected:oe.symbol,received:t.parsedType}),_e}return Pt(e.data)}};mn.create=a=>new mn({typeName:Se.ZodSymbol,...De(a)});var rs=class extends Fe{_parse(e){if(this._getType(e)!==oe.undefined){let t=this._getOrReturnCtx(e);return ae(t,{code:Y.invalid_type,expected:oe.undefined,received:t.parsedType}),_e}return Pt(e.data)}};rs.create=a=>new rs({typeName:Se.ZodUndefined,...De(a)});var as=class extends Fe{_parse(e){if(this._getType(e)!==oe.null){let t=this._getOrReturnCtx(e);return ae(t,{code:Y.invalid_type,expected:oe.null,received:t.parsedType}),_e}return Pt(e.data)}};as.create=a=>new as({typeName:Se.ZodNull,...De(a)});var Pa=class extends Fe{constructor(){super(...arguments),this._any=!0}_parse(e){return Pt(e.data)}};Pa.create=a=>new Pa({typeName:Se.ZodAny,...De(a)});var Jr=class extends Fe{constructor(){super(...arguments),this._unknown=!0}_parse(e){return Pt(e.data)}};Jr.create=a=>new Jr({typeName:Se.ZodUnknown,...De(a)});var Tr=class extends Fe{_parse(e){let r=this._getOrReturnCtx(e);return ae(r,{code:Y.invalid_type,expected:oe.never,received:r.parsedType}),_e}};Tr.create=a=>new Tr({typeName:Se.ZodNever,...De(a)});var hn=class extends Fe{_parse(e){if(this._getType(e)!==oe.undefined){let t=this._getOrReturnCtx(e);return ae(t,{code:Y.invalid_type,expected:oe.void,received:t.parsedType}),_e}return Pt(e.data)}};hn.create=a=>new hn({typeName:Se.ZodVoid,...De(a)});var ea=class a extends Fe{_parse(e){let{ctx:r,status:t}=this._processInputParams(e),s=this._def;if(r.parsedType!==oe.array)return ae(r,{code:Y.invalid_type,expected:oe.array,received:r.parsedType}),_e;if(s.exactLength!==null){let n=r.data.length>s.exactLength.value,o=r.data.lengths.maxLength.value&&(ae(r,{code:Y.too_big,maximum:s.maxLength.value,type:"array",inclusive:!0,exact:!1,message:s.maxLength.message}),t.dirty()),r.common.async)return Promise.all([...r.data].map((n,o)=>s.type._parseAsync(new ir(r,n,r.path,o)))).then(n=>Et.mergeArray(t,n));let i=[...r.data].map((n,o)=>s.type._parseSync(new ir(r,n,r.path,o)));return Et.mergeArray(t,i)}get element(){return this._def.type}min(e,r){return new a({...this._def,minLength:{value:e,message:fe.toString(r)}})}max(e,r){return new a({...this._def,maxLength:{value:e,message:fe.toString(r)}})}length(e,r){return new a({...this._def,exactLength:{value:e,message:fe.toString(r)}})}nonempty(e){return this.min(1,e)}};ea.create=(a,e)=>new ea({type:a,minLength:null,maxLength:null,exactLength:null,typeName:Se.ZodArray,...De(e)});function fn(a){if(a instanceof qt){let e={};for(let r in a.shape){let t=a.shape[r];e[r]=nr.create(fn(t))}return new qt({...a._def,shape:()=>e})}else return a instanceof ea?new ea({...a._def,type:fn(a.element)}):a instanceof nr?nr.create(fn(a.unwrap())):a instanceof qr?qr.create(fn(a.unwrap())):a instanceof Lr?Lr.create(a.items.map(e=>fn(e))):a}var qt=class a extends Fe{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),r=He.objectKeys(e);return this._cached={shape:e,keys:r},this._cached}_parse(e){if(this._getType(e)!==oe.object){let c=this._getOrReturnCtx(e);return ae(c,{code:Y.invalid_type,expected:oe.object,received:c.parsedType}),_e}let{status:t,ctx:s}=this._processInputParams(e),{shape:i,keys:n}=this._getCached(),o=[];if(!(this._def.catchall instanceof Tr&&this._def.unknownKeys==="strip"))for(let c in s.data)n.includes(c)||o.push(c);let l=[];for(let c of n){let u=i[c],p=s.data[c];l.push({key:{status:"valid",value:c},value:u._parse(new ir(s,p,s.path,c)),alwaysSet:c in s.data})}if(this._def.catchall instanceof Tr){let c=this._def.unknownKeys;if(c==="passthrough")for(let u of o)l.push({key:{status:"valid",value:u},value:{status:"valid",value:s.data[u]}});else if(c==="strict")o.length>0&&(ae(s,{code:Y.unrecognized_keys,keys:o}),t.dirty());else if(c!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let c=this._def.catchall;for(let u of o){let p=s.data[u];l.push({key:{status:"valid",value:u},value:c._parse(new ir(s,p,s.path,u)),alwaysSet:u in s.data})}}return s.common.async?Promise.resolve().then(async()=>{let c=[];for(let u of l){let p=await u.key,m=await u.value;c.push({key:p,value:m,alwaysSet:u.alwaysSet})}return c}).then(c=>Et.mergeObjectSync(t,c)):Et.mergeObjectSync(t,l)}get shape(){return this._def.shape()}strict(e){return fe.errToObj,new a({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(r,t)=>{let s=this._def.errorMap?.(r,t).message??t.defaultError;return r.code==="unrecognized_keys"?{message:fe.errToObj(e).message??s}:{message:s}}}:{}})}strip(){return new a({...this._def,unknownKeys:"strip"})}passthrough(){return new a({...this._def,unknownKeys:"passthrough"})}extend(e){return new a({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new a({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Se.ZodObject})}setKey(e,r){return this.augment({[e]:r})}catchall(e){return new a({...this._def,catchall:e})}pick(e){let r={};for(let t of He.objectKeys(e))e[t]&&this.shape[t]&&(r[t]=this.shape[t]);return new a({...this._def,shape:()=>r})}omit(e){let r={};for(let t of He.objectKeys(this.shape))e[t]||(r[t]=this.shape[t]);return new a({...this._def,shape:()=>r})}deepPartial(){return fn(this)}partial(e){let r={};for(let t of He.objectKeys(this.shape)){let s=this.shape[t];e&&!e[t]?r[t]=s:r[t]=s.optional()}return new a({...this._def,shape:()=>r})}required(e){let r={};for(let t of He.objectKeys(this.shape))if(e&&!e[t])r[t]=this.shape[t];else{let i=this.shape[t];for(;i instanceof nr;)i=i._def.innerType;r[t]=i}return new a({...this._def,shape:()=>r})}keyof(){return gx(He.objectKeys(this.shape))}};qt.create=(a,e)=>new qt({shape:()=>a,unknownKeys:"strip",catchall:Tr.create(),typeName:Se.ZodObject,...De(e)});qt.strictCreate=(a,e)=>new qt({shape:()=>a,unknownKeys:"strict",catchall:Tr.create(),typeName:Se.ZodObject,...De(e)});qt.lazycreate=(a,e)=>new qt({shape:a,unknownKeys:"strip",catchall:Tr.create(),typeName:Se.ZodObject,...De(e)});var ss=class extends Fe{_parse(e){let{ctx:r}=this._processInputParams(e),t=this._def.options;function s(i){for(let o of i)if(o.result.status==="valid")return o.result;for(let o of i)if(o.result.status==="dirty")return r.common.issues.push(...o.ctx.common.issues),o.result;let n=i.map(o=>new Lt(o.ctx.common.issues));return ae(r,{code:Y.invalid_union,unionErrors:n}),_e}if(r.common.async)return Promise.all(t.map(async i=>{let n={...r,common:{...r.common,issues:[]},parent:null};return{result:await i._parseAsync({data:r.data,path:r.path,parent:n}),ctx:n}})).then(s);{let i,n=[];for(let l of t){let c={...r,common:{...r.common,issues:[]},parent:null},u=l._parseSync({data:r.data,path:r.path,parent:c});if(u.status==="valid")return u;u.status==="dirty"&&!i&&(i={result:u,ctx:c}),c.common.issues.length&&n.push(c.common.issues)}if(i)return r.common.issues.push(...i.ctx.common.issues),i.result;let o=n.map(l=>new Lt(l));return ae(r,{code:Y.invalid_union,unionErrors:o}),_e}}get options(){return this._def.options}};ss.create=(a,e)=>new ss({options:a,typeName:Se.ZodUnion,...De(e)});var Yr=a=>a instanceof is?Yr(a.schema):a instanceof or?Yr(a.innerType()):a instanceof os?[a.value]:a instanceof cs?a.options:a instanceof ls?He.objectValues(a.enum):a instanceof us?Yr(a._def.innerType):a instanceof rs?[void 0]:a instanceof as?[null]:a instanceof nr?[void 0,...Yr(a.unwrap())]:a instanceof qr?[null,...Yr(a.unwrap())]:a instanceof wi||a instanceof ds?Yr(a.unwrap()):a instanceof ps?Yr(a._def.innerType):[],oc=class a extends Fe{_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==oe.object)return ae(r,{code:Y.invalid_type,expected:oe.object,received:r.parsedType}),_e;let t=this.discriminator,s=r.data[t],i=this.optionsMap.get(s);return i?r.common.async?i._parseAsync({data:r.data,path:r.path,parent:r}):i._parseSync({data:r.data,path:r.path,parent:r}):(ae(r,{code:Y.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[t]}),_e)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,r,t){let s=new Map;for(let i of r){let n=Yr(i.shape[e]);if(!n.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let o of n){if(s.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);s.set(o,i)}}return new a({typeName:Se.ZodDiscriminatedUnion,discriminator:e,options:r,optionsMap:s,...De(t)})}};function kp(a,e){let r=Mr(a),t=Mr(e);if(a===e)return{valid:!0,data:a};if(r===oe.object&&t===oe.object){let s=He.objectKeys(e),i=He.objectKeys(a).filter(o=>s.indexOf(o)!==-1),n={...a,...e};for(let o of i){let l=kp(a[o],e[o]);if(!l.valid)return{valid:!1};n[o]=l.data}return{valid:!0,data:n}}else if(r===oe.array&&t===oe.array){if(a.length!==e.length)return{valid:!1};let s=[];for(let i=0;i{if(nc(i)||nc(n))return _e;let o=kp(i.value,n.value);return o.valid?((ic(i)||ic(n))&&r.dirty(),{status:r.value,value:o.data}):(ae(t,{code:Y.invalid_intersection_types}),_e)};return t.common.async?Promise.all([this._def.left._parseAsync({data:t.data,path:t.path,parent:t}),this._def.right._parseAsync({data:t.data,path:t.path,parent:t})]).then(([i,n])=>s(i,n)):s(this._def.left._parseSync({data:t.data,path:t.path,parent:t}),this._def.right._parseSync({data:t.data,path:t.path,parent:t}))}};ns.create=(a,e,r)=>new ns({left:a,right:e,typeName:Se.ZodIntersection,...De(r)});var Lr=class a extends Fe{_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.parsedType!==oe.array)return ae(t,{code:Y.invalid_type,expected:oe.array,received:t.parsedType}),_e;if(t.data.lengththis._def.items.length&&(ae(t,{code:Y.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());let i=[...t.data].map((n,o)=>{let l=this._def.items[o]||this._def.rest;return l?l._parse(new ir(t,n,t.path,o)):null}).filter(n=>!!n);return t.common.async?Promise.all(i).then(n=>Et.mergeArray(r,n)):Et.mergeArray(r,i)}get items(){return this._def.items}rest(e){return new a({...this._def,rest:e})}};Lr.create=(a,e)=>{if(!Array.isArray(a))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Lr({items:a,typeName:Se.ZodTuple,rest:null,...De(e)})};var cc=class a extends Fe{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.parsedType!==oe.object)return ae(t,{code:Y.invalid_type,expected:oe.object,received:t.parsedType}),_e;let s=[],i=this._def.keyType,n=this._def.valueType;for(let o in t.data)s.push({key:i._parse(new ir(t,o,t.path,o)),value:n._parse(new ir(t,t.data[o],t.path,o)),alwaysSet:o in t.data});return t.common.async?Et.mergeObjectAsync(r,s):Et.mergeObjectSync(r,s)}get element(){return this._def.valueType}static create(e,r,t){return r instanceof Fe?new a({keyType:e,valueType:r,typeName:Se.ZodRecord,...De(t)}):new a({keyType:Sa.create(),valueType:e,typeName:Se.ZodRecord,...De(r)})}},vn=class extends Fe{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.parsedType!==oe.map)return ae(t,{code:Y.invalid_type,expected:oe.map,received:t.parsedType}),_e;let s=this._def.keyType,i=this._def.valueType,n=[...t.data.entries()].map(([o,l],c)=>({key:s._parse(new ir(t,o,t.path,[c,"key"])),value:i._parse(new ir(t,l,t.path,[c,"value"]))}));if(t.common.async){let o=new Map;return Promise.resolve().then(async()=>{for(let l of n){let c=await l.key,u=await l.value;if(c.status==="aborted"||u.status==="aborted")return _e;(c.status==="dirty"||u.status==="dirty")&&r.dirty(),o.set(c.value,u.value)}return{status:r.value,value:o}})}else{let o=new Map;for(let l of n){let c=l.key,u=l.value;if(c.status==="aborted"||u.status==="aborted")return _e;(c.status==="dirty"||u.status==="dirty")&&r.dirty(),o.set(c.value,u.value)}return{status:r.value,value:o}}}};vn.create=(a,e,r)=>new vn({valueType:e,keyType:a,typeName:Se.ZodMap,...De(r)});var gn=class a extends Fe{_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.parsedType!==oe.set)return ae(t,{code:Y.invalid_type,expected:oe.set,received:t.parsedType}),_e;let s=this._def;s.minSize!==null&&t.data.sizes.maxSize.value&&(ae(t,{code:Y.too_big,maximum:s.maxSize.value,type:"set",inclusive:!0,exact:!1,message:s.maxSize.message}),r.dirty());let i=this._def.valueType;function n(l){let c=new Set;for(let u of l){if(u.status==="aborted")return _e;u.status==="dirty"&&r.dirty(),c.add(u.value)}return{status:r.value,value:c}}let o=[...t.data.values()].map((l,c)=>i._parse(new ir(t,l,t.path,c)));return t.common.async?Promise.all(o).then(l=>n(l)):n(o)}min(e,r){return new a({...this._def,minSize:{value:e,message:fe.toString(r)}})}max(e,r){return new a({...this._def,maxSize:{value:e,message:fe.toString(r)}})}size(e,r){return this.min(e,r).max(e,r)}nonempty(e){return this.min(1,e)}};gn.create=(a,e)=>new gn({valueType:a,minSize:null,maxSize:null,typeName:Se.ZodSet,...De(e)});var lc=class a extends Fe{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==oe.function)return ae(r,{code:Y.invalid_type,expected:oe.function,received:r.parsedType}),_e;function t(o,l){return Ei({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,pn(),Qr].filter(c=>!!c),issueData:{code:Y.invalid_arguments,argumentsError:l}})}function s(o,l){return Ei({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,pn(),Qr].filter(c=>!!c),issueData:{code:Y.invalid_return_type,returnTypeError:l}})}let i={errorMap:r.common.contextualErrorMap},n=r.data;if(this._def.returns instanceof Ta){let o=this;return Pt(async function(...l){let c=new Lt([]),u=await o._def.args.parseAsync(l,i).catch(f=>{throw c.addIssue(t(l,f)),c}),p=await Reflect.apply(n,this,u);return await o._def.returns._def.type.parseAsync(p,i).catch(f=>{throw c.addIssue(s(p,f)),c})})}else{let o=this;return Pt(function(...l){let c=o._def.args.safeParse(l,i);if(!c.success)throw new Lt([t(l,c.error)]);let u=Reflect.apply(n,this,c.data),p=o._def.returns.safeParse(u,i);if(!p.success)throw new Lt([s(u,p.error)]);return p.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new a({...this._def,args:Lr.create(e).rest(Jr.create())})}returns(e){return new a({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,r,t){return new a({args:e||Lr.create([]).rest(Jr.create()),returns:r||Jr.create(),typeName:Se.ZodFunction,...De(t)})}},is=class extends Fe{get schema(){return this._def.getter()}_parse(e){let{ctx:r}=this._processInputParams(e);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};is.create=(a,e)=>new is({getter:a,typeName:Se.ZodLazy,...De(e)});var os=class extends Fe{_parse(e){if(e.data!==this._def.value){let r=this._getOrReturnCtx(e);return ae(r,{received:r.data,code:Y.invalid_literal,expected:this._def.value}),_e}return{status:"valid",value:e.data}}get value(){return this._def.value}};os.create=(a,e)=>new os({value:a,typeName:Se.ZodLiteral,...De(e)});function gx(a,e){return new cs({values:a,typeName:Se.ZodEnum,...De(e)})}var cs=class a extends Fe{_parse(e){if(typeof e.data!="string"){let r=this._getOrReturnCtx(e),t=this._def.values;return ae(r,{expected:He.joinValues(t),received:r.parsedType,code:Y.invalid_type}),_e}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let r=this._getOrReturnCtx(e),t=this._def.values;return ae(r,{received:r.data,code:Y.invalid_enum_value,options:t}),_e}return Pt(e.data)}get options(){return this._def.values}get enum(){let e={};for(let r of this._def.values)e[r]=r;return e}get Values(){let e={};for(let r of this._def.values)e[r]=r;return e}get Enum(){let e={};for(let r of this._def.values)e[r]=r;return e}extract(e,r=this._def){return a.create(e,{...this._def,...r})}exclude(e,r=this._def){return a.create(this.options.filter(t=>!e.includes(t)),{...this._def,...r})}};cs.create=gx;var ls=class extends Fe{_parse(e){let r=He.getValidEnumValues(this._def.values),t=this._getOrReturnCtx(e);if(t.parsedType!==oe.string&&t.parsedType!==oe.number){let s=He.objectValues(r);return ae(t,{expected:He.joinValues(s),received:t.parsedType,code:Y.invalid_type}),_e}if(this._cache||(this._cache=new Set(He.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let s=He.objectValues(r);return ae(t,{received:t.data,code:Y.invalid_enum_value,options:s}),_e}return Pt(e.data)}get enum(){return this._def.values}};ls.create=(a,e)=>new ls({values:a,typeName:Se.ZodNativeEnum,...De(e)});var Ta=class extends Fe{unwrap(){return this._def.type}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==oe.promise&&r.common.async===!1)return ae(r,{code:Y.invalid_type,expected:oe.promise,received:r.parsedType}),_e;let t=r.parsedType===oe.promise?r.data:Promise.resolve(r.data);return Pt(t.then(s=>this._def.type.parseAsync(s,{path:r.path,errorMap:r.common.contextualErrorMap})))}};Ta.create=(a,e)=>new Ta({type:a,typeName:Se.ZodPromise,...De(e)});var or=class extends Fe{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Se.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:r,ctx:t}=this._processInputParams(e),s=this._def.effect||null,i={addIssue:n=>{ae(t,n),n.fatal?r.abort():r.dirty()},get path(){return t.path}};if(i.addIssue=i.addIssue.bind(i),s.type==="preprocess"){let n=s.transform(t.data,i);if(t.common.async)return Promise.resolve(n).then(async o=>{if(r.value==="aborted")return _e;let l=await this._def.schema._parseAsync({data:o,path:t.path,parent:t});return l.status==="aborted"?_e:l.status==="dirty"?Qa(l.value):r.value==="dirty"?Qa(l.value):l});{if(r.value==="aborted")return _e;let o=this._def.schema._parseSync({data:n,path:t.path,parent:t});return o.status==="aborted"?_e:o.status==="dirty"?Qa(o.value):r.value==="dirty"?Qa(o.value):o}}if(s.type==="refinement"){let n=o=>{let l=s.refinement(o,i);if(t.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(t.common.async===!1){let o=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});return o.status==="aborted"?_e:(o.status==="dirty"&&r.dirty(),n(o.value),{status:r.value,value:o.value})}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then(o=>o.status==="aborted"?_e:(o.status==="dirty"&&r.dirty(),n(o.value).then(()=>({status:r.value,value:o.value}))))}if(s.type==="transform")if(t.common.async===!1){let n=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});if(!wa(n))return _e;let o=s.transform(n.value,i);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:o}}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then(n=>wa(n)?Promise.resolve(s.transform(n.value,i)).then(o=>({status:r.value,value:o})):_e);He.assertNever(s)}};or.create=(a,e,r)=>new or({schema:a,typeName:Se.ZodEffects,effect:e,...De(r)});or.createWithPreprocess=(a,e,r)=>new or({schema:e,effect:{type:"preprocess",transform:a},typeName:Se.ZodEffects,...De(r)});var nr=class extends Fe{_parse(e){return this._getType(e)===oe.undefined?Pt(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};nr.create=(a,e)=>new nr({innerType:a,typeName:Se.ZodOptional,...De(e)});var qr=class extends Fe{_parse(e){return this._getType(e)===oe.null?Pt(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};qr.create=(a,e)=>new qr({innerType:a,typeName:Se.ZodNullable,...De(e)});var us=class extends Fe{_parse(e){let{ctx:r}=this._processInputParams(e),t=r.data;return r.parsedType===oe.undefined&&(t=this._def.defaultValue()),this._def.innerType._parse({data:t,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};us.create=(a,e)=>new us({innerType:a,typeName:Se.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...De(e)});var ps=class extends Fe{_parse(e){let{ctx:r}=this._processInputParams(e),t={...r,common:{...r.common,issues:[]}},s=this._def.innerType._parse({data:t.data,path:t.path,parent:{...t}});return dn(s)?s.then(i=>({status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new Lt(t.common.issues)},input:t.data})})):{status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new Lt(t.common.issues)},input:t.data})}}removeCatch(){return this._def.innerType}};ps.create=(a,e)=>new ps({innerType:a,typeName:Se.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...De(e)});var yn=class extends Fe{_parse(e){if(this._getType(e)!==oe.nan){let t=this._getOrReturnCtx(e);return ae(t,{code:Y.invalid_type,expected:oe.nan,received:t.parsedType}),_e}return{status:"valid",value:e.data}}};yn.create=a=>new yn({typeName:Se.ZodNaN,...De(a)});var VI=Symbol("zod_brand"),wi=class extends Fe{_parse(e){let{ctx:r}=this._processInputParams(e),t=r.data;return this._def.type._parse({data:t,path:r.path,parent:r})}unwrap(){return this._def.type}},Si=class a extends Fe{_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.common.async)return(async()=>{let i=await this._def.in._parseAsync({data:t.data,path:t.path,parent:t});return i.status==="aborted"?_e:i.status==="dirty"?(r.dirty(),Qa(i.value)):this._def.out._parseAsync({data:i.value,path:t.path,parent:t})})();{let s=this._def.in._parseSync({data:t.data,path:t.path,parent:t});return s.status==="aborted"?_e:s.status==="dirty"?(r.dirty(),{status:"dirty",value:s.value}):this._def.out._parseSync({data:s.value,path:t.path,parent:t})}}static create(e,r){return new a({in:e,out:r,typeName:Se.ZodPipeline})}},ds=class extends Fe{_parse(e){let r=this._def.innerType._parse(e),t=s=>(wa(s)&&(s.value=Object.freeze(s.value)),s);return dn(r)?r.then(s=>t(s)):t(r)}unwrap(){return this._def.innerType}};ds.create=(a,e)=>new ds({innerType:a,typeName:Se.ZodReadonly,...De(e)});function fx(a,e){let r=typeof a=="function"?a(e):typeof a=="string"?{message:a}:a;return typeof r=="string"?{message:r}:r}function yx(a,e={},r){return a?Pa.create().superRefine((t,s)=>{let i=a(t);if(i instanceof Promise)return i.then(n=>{if(!n){let o=fx(e,t),l=o.fatal??r??!0;s.addIssue({code:"custom",...o,fatal:l})}});if(!i){let n=fx(e,t),o=n.fatal??r??!0;s.addIssue({code:"custom",...n,fatal:o})}}):Pa.create()}var GI={object:qt.lazycreate},Se;(function(a){a.ZodString="ZodString",a.ZodNumber="ZodNumber",a.ZodNaN="ZodNaN",a.ZodBigInt="ZodBigInt",a.ZodBoolean="ZodBoolean",a.ZodDate="ZodDate",a.ZodSymbol="ZodSymbol",a.ZodUndefined="ZodUndefined",a.ZodNull="ZodNull",a.ZodAny="ZodAny",a.ZodUnknown="ZodUnknown",a.ZodNever="ZodNever",a.ZodVoid="ZodVoid",a.ZodArray="ZodArray",a.ZodObject="ZodObject",a.ZodUnion="ZodUnion",a.ZodDiscriminatedUnion="ZodDiscriminatedUnion",a.ZodIntersection="ZodIntersection",a.ZodTuple="ZodTuple",a.ZodRecord="ZodRecord",a.ZodMap="ZodMap",a.ZodSet="ZodSet",a.ZodFunction="ZodFunction",a.ZodLazy="ZodLazy",a.ZodLiteral="ZodLiteral",a.ZodEnum="ZodEnum",a.ZodEffects="ZodEffects",a.ZodNativeEnum="ZodNativeEnum",a.ZodOptional="ZodOptional",a.ZodNullable="ZodNullable",a.ZodDefault="ZodDefault",a.ZodCatch="ZodCatch",a.ZodPromise="ZodPromise",a.ZodBranded="ZodBranded",a.ZodPipeline="ZodPipeline",a.ZodReadonly="ZodReadonly"})(Se||(Se={}));var WI=(a,e={message:`Input not instance of ${a.name}`})=>yx(r=>r instanceof a,e),bx=Sa.create,xx=Ya.create,ZI=yn.create,KI=Ja.create,_x=es.create,XI=ts.create,QI=mn.create,YI=rs.create,JI=as.create,e2=Pa.create,t2=Jr.create,r2=Tr.create,a2=hn.create,s2=ea.create,n2=qt.create,i2=qt.strictCreate,o2=ss.create,c2=oc.create,l2=ns.create,u2=Lr.create,p2=cc.create,d2=vn.create,f2=gn.create,m2=lc.create,h2=is.create,v2=os.create,g2=cs.create,y2=ls.create,b2=Ta.create,x2=or.create,_2=nr.create,E2=qr.create,w2=or.createWithPreprocess,S2=Si.create,P2=()=>bx().optional(),T2=()=>xx().optional(),R2=()=>_x().optional(),O2={string:(a=>Sa.create({...a,coerce:!0})),number:(a=>Ya.create({...a,coerce:!0})),boolean:(a=>es.create({...a,coerce:!0})),bigint:(a=>Ja.create({...a,coerce:!0})),date:(a=>ts.create({...a,coerce:!0}))};var C2=_e;var Ap="2025-06-18";var Ex=[Ap,"2025-03-26","2024-11-05","2024-10-07"],uc="2.0",wx=_.union([_.string(),_.number().int()]),Sx=_.string(),k2=_.object({progressToken:_.optional(wx)}).passthrough(),ur=_.object({_meta:_.optional(k2)}).passthrough(),Ft=_.object({method:_.string(),params:_.optional(ur)}),Pi=_.object({_meta:_.optional(_.object({}).passthrough())}).passthrough(),Fr=_.object({method:_.string(),params:_.optional(Pi)}),pr=_.object({_meta:_.optional(_.object({}).passthrough())}).passthrough(),pc=_.union([_.string(),_.number().int()]),Px=_.object({jsonrpc:_.literal(uc),id:pc}).merge(Ft).strict(),Tx=a=>Px.safeParse(a).success,Rx=_.object({jsonrpc:_.literal(uc)}).merge(Fr).strict(),Ox=a=>Rx.safeParse(a).success,Cx=_.object({jsonrpc:_.literal(uc),id:pc,result:pr}).strict(),Ip=a=>Cx.safeParse(a).success,cr;(function(a){a[a.ConnectionClosed=-32e3]="ConnectionClosed",a[a.RequestTimeout=-32001]="RequestTimeout",a[a.ParseError=-32700]="ParseError",a[a.InvalidRequest=-32600]="InvalidRequest",a[a.MethodNotFound=-32601]="MethodNotFound",a[a.InvalidParams=-32602]="InvalidParams",a[a.InternalError=-32603]="InternalError"})(cr||(cr={}));var kx=_.object({jsonrpc:_.literal(uc),id:pc,error:_.object({code:_.number().int(),message:_.string(),data:_.optional(_.unknown())})}).strict(),Ax=a=>kx.safeParse(a).success,Ix=_.union([Px,Rx,Cx,kx]),fs=pr.strict(),dc=Fr.extend({method:_.literal("notifications/cancelled"),params:Pi.extend({requestId:pc,reason:_.string().optional()})}),A2=_.object({src:_.string(),mimeType:_.optional(_.string()),sizes:_.optional(_.array(_.string()))}).passthrough(),Ti=_.object({icons:_.array(A2).optional()}).passthrough(),Ri=_.object({name:_.string(),title:_.optional(_.string())}).passthrough(),Nx=Ri.extend({version:_.string(),websiteUrl:_.optional(_.string())}).merge(Ti),I2=_.object({experimental:_.optional(_.object({}).passthrough()),sampling:_.optional(_.object({}).passthrough()),elicitation:_.optional(_.object({}).passthrough()),roots:_.optional(_.object({listChanged:_.optional(_.boolean())}).passthrough())}).passthrough(),N2=Ft.extend({method:_.literal("initialize"),params:ur.extend({protocolVersion:_.string(),capabilities:I2,clientInfo:Nx})});var j2=_.object({experimental:_.optional(_.object({}).passthrough()),logging:_.optional(_.object({}).passthrough()),completions:_.optional(_.object({}).passthrough()),prompts:_.optional(_.object({listChanged:_.optional(_.boolean())}).passthrough()),resources:_.optional(_.object({subscribe:_.optional(_.boolean()),listChanged:_.optional(_.boolean())}).passthrough()),tools:_.optional(_.object({listChanged:_.optional(_.boolean())}).passthrough())}).passthrough(),Np=pr.extend({protocolVersion:_.string(),capabilities:j2,serverInfo:Nx,instructions:_.optional(_.string())}),D2=Fr.extend({method:_.literal("notifications/initialized")});var fc=Ft.extend({method:_.literal("ping")}),$2=_.object({progress:_.number(),total:_.optional(_.number()),message:_.optional(_.string())}).passthrough(),mc=Fr.extend({method:_.literal("notifications/progress"),params:Pi.merge($2).extend({progressToken:wx})}),hc=Ft.extend({params:ur.extend({cursor:_.optional(Sx)}).optional()}),vc=pr.extend({nextCursor:_.optional(Sx)}),jx=_.object({uri:_.string(),mimeType:_.optional(_.string()),_meta:_.optional(_.object({}).passthrough())}).passthrough(),Dx=jx.extend({text:_.string()}),jp=_.string().refine(a=>{try{return atob(a),!0}catch{return!1}},{message:"Invalid Base64 string"}),$x=jx.extend({blob:jp}),Mx=Ri.extend({uri:_.string(),description:_.optional(_.string()),mimeType:_.optional(_.string()),_meta:_.optional(_.object({}).passthrough())}).merge(Ti),M2=Ri.extend({uriTemplate:_.string(),description:_.optional(_.string()),mimeType:_.optional(_.string()),_meta:_.optional(_.object({}).passthrough())}).merge(Ti),L2=hc.extend({method:_.literal("resources/list")}),Dp=vc.extend({resources:_.array(Mx)}),q2=hc.extend({method:_.literal("resources/templates/list")}),$p=vc.extend({resourceTemplates:_.array(M2)}),F2=Ft.extend({method:_.literal("resources/read"),params:ur.extend({uri:_.string()})}),Mp=pr.extend({contents:_.array(_.union([Dx,$x]))}),U2=Fr.extend({method:_.literal("notifications/resources/list_changed")}),z2=Ft.extend({method:_.literal("resources/subscribe"),params:ur.extend({uri:_.string()})}),H2=Ft.extend({method:_.literal("resources/unsubscribe"),params:ur.extend({uri:_.string()})}),B2=Fr.extend({method:_.literal("notifications/resources/updated"),params:Pi.extend({uri:_.string()})}),V2=_.object({name:_.string(),description:_.optional(_.string()),required:_.optional(_.boolean())}).passthrough(),G2=Ri.extend({description:_.optional(_.string()),arguments:_.optional(_.array(V2)),_meta:_.optional(_.object({}).passthrough())}).merge(Ti),W2=hc.extend({method:_.literal("prompts/list")}),Lp=vc.extend({prompts:_.array(G2)}),Z2=Ft.extend({method:_.literal("prompts/get"),params:ur.extend({name:_.string(),arguments:_.optional(_.record(_.string()))})}),qp=_.object({type:_.literal("text"),text:_.string(),_meta:_.optional(_.object({}).passthrough())}).passthrough(),Fp=_.object({type:_.literal("image"),data:jp,mimeType:_.string(),_meta:_.optional(_.object({}).passthrough())}).passthrough(),Up=_.object({type:_.literal("audio"),data:jp,mimeType:_.string(),_meta:_.optional(_.object({}).passthrough())}).passthrough(),K2=_.object({type:_.literal("resource"),resource:_.union([Dx,$x]),_meta:_.optional(_.object({}).passthrough())}).passthrough(),X2=Mx.extend({type:_.literal("resource_link")}),Lx=_.union([qp,Fp,Up,X2,K2]),Q2=_.object({role:_.enum(["user","assistant"]),content:Lx}).passthrough(),zp=pr.extend({description:_.optional(_.string()),messages:_.array(Q2)}),Y2=Fr.extend({method:_.literal("notifications/prompts/list_changed")}),J2=_.object({title:_.optional(_.string()),readOnlyHint:_.optional(_.boolean()),destructiveHint:_.optional(_.boolean()),idempotentHint:_.optional(_.boolean()),openWorldHint:_.optional(_.boolean())}).passthrough(),eN=Ri.extend({description:_.optional(_.string()),inputSchema:_.object({type:_.literal("object"),properties:_.optional(_.object({}).passthrough()),required:_.optional(_.array(_.string()))}).passthrough(),outputSchema:_.optional(_.object({type:_.literal("object"),properties:_.optional(_.object({}).passthrough()),required:_.optional(_.array(_.string()))}).passthrough()),annotations:_.optional(J2),_meta:_.optional(_.object({}).passthrough())}).merge(Ti),tN=hc.extend({method:_.literal("tools/list")}),Hp=vc.extend({tools:_.array(eN)}),gc=pr.extend({content:_.array(Lx).default([]),structuredContent:_.object({}).passthrough().optional(),isError:_.optional(_.boolean())}),iF=gc.or(pr.extend({toolResult:_.unknown()})),rN=Ft.extend({method:_.literal("tools/call"),params:ur.extend({name:_.string(),arguments:_.optional(_.record(_.unknown()))})}),aN=Fr.extend({method:_.literal("notifications/tools/list_changed")}),qx=_.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),sN=Ft.extend({method:_.literal("logging/setLevel"),params:ur.extend({level:qx})}),nN=Fr.extend({method:_.literal("notifications/message"),params:Pi.extend({level:qx,logger:_.optional(_.string()),data:_.unknown()})}),iN=_.object({name:_.string().optional()}).passthrough(),oN=_.object({hints:_.optional(_.array(iN)),costPriority:_.optional(_.number().min(0).max(1)),speedPriority:_.optional(_.number().min(0).max(1)),intelligencePriority:_.optional(_.number().min(0).max(1))}).passthrough(),cN=_.object({role:_.enum(["user","assistant"]),content:_.union([qp,Fp,Up])}).passthrough(),lN=Ft.extend({method:_.literal("sampling/createMessage"),params:ur.extend({messages:_.array(cN),systemPrompt:_.optional(_.string()),includeContext:_.optional(_.enum(["none","thisServer","allServers"])),temperature:_.optional(_.number()),maxTokens:_.number().int(),stopSequences:_.optional(_.array(_.string())),metadata:_.optional(_.object({}).passthrough()),modelPreferences:_.optional(oN)})}),uN=pr.extend({model:_.string(),stopReason:_.optional(_.enum(["endTurn","stopSequence","maxTokens"]).or(_.string())),role:_.enum(["user","assistant"]),content:_.discriminatedUnion("type",[qp,Fp,Up])}),pN=_.object({type:_.literal("boolean"),title:_.optional(_.string()),description:_.optional(_.string()),default:_.optional(_.boolean())}).passthrough(),dN=_.object({type:_.literal("string"),title:_.optional(_.string()),description:_.optional(_.string()),minLength:_.optional(_.number()),maxLength:_.optional(_.number()),format:_.optional(_.enum(["email","uri","date","date-time"]))}).passthrough(),fN=_.object({type:_.enum(["number","integer"]),title:_.optional(_.string()),description:_.optional(_.string()),minimum:_.optional(_.number()),maximum:_.optional(_.number())}).passthrough(),mN=_.object({type:_.literal("string"),title:_.optional(_.string()),description:_.optional(_.string()),enum:_.array(_.string()),enumNames:_.optional(_.array(_.string()))}).passthrough(),hN=_.union([pN,dN,fN,mN]),vN=Ft.extend({method:_.literal("elicitation/create"),params:ur.extend({message:_.string(),requestedSchema:_.object({type:_.literal("object"),properties:_.record(_.string(),hN),required:_.optional(_.array(_.string()))}).passthrough()})}),gN=pr.extend({action:_.enum(["accept","decline","cancel"]),content:_.optional(_.record(_.string(),_.unknown()))}),yN=_.object({type:_.literal("ref/resource"),uri:_.string()}).passthrough();var bN=_.object({type:_.literal("ref/prompt"),name:_.string()}).passthrough(),xN=Ft.extend({method:_.literal("completion/complete"),params:ur.extend({ref:_.union([bN,yN]),argument:_.object({name:_.string(),value:_.string()}).passthrough(),context:_.optional(_.object({arguments:_.optional(_.record(_.string(),_.string()))}))})}),Bp=pr.extend({completion:_.object({values:_.array(_.string()).max(100),total:_.optional(_.number().int()),hasMore:_.optional(_.boolean())}).passthrough()}),_N=_.object({uri:_.string().startsWith("file://"),name:_.optional(_.string()),_meta:_.optional(_.object({}).passthrough())}).passthrough(),EN=Ft.extend({method:_.literal("roots/list")}),wN=pr.extend({roots:_.array(_N)}),SN=Fr.extend({method:_.literal("notifications/roots/list_changed")}),oF=_.union([fc,N2,xN,sN,Z2,W2,L2,q2,F2,z2,H2,rN,tN]),cF=_.union([dc,mc,D2,SN]),lF=_.union([fs,uN,gN,wN]),uF=_.union([fc,lN,vN,EN]),pF=_.union([dc,mc,nN,B2,U2,aN,Y2]),dF=_.union([fs,Np,Bp,zp,Lp,Dp,$p,Mp,gc,Hp]),lr=class extends Error{constructor(e,r,t){super(`MCP error ${e}: ${r}`),this.code=e,this.data=t,this.name="McpError"}};var PN=6e4,yc=class{constructor(e){this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this.setNotificationHandler(dc,r=>{let t=this._requestHandlerAbortControllers.get(r.params.requestId);t?.abort(r.params.reason)}),this.setNotificationHandler(mc,r=>{this._onprogress(r)}),this.setRequestHandler(fc,r=>({}))}_setupTimeout(e,r,t,s,i=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(s,r),startTime:Date.now(),timeout:r,maxTotalTimeout:t,resetTimeoutOnProgress:i,onTimeout:s})}_resetTimeout(e){let r=this._timeoutInfo.get(e);if(!r)return!1;let t=Date.now()-r.startTime;if(r.maxTotalTimeout&&t>=r.maxTotalTimeout)throw this._timeoutInfo.delete(e),new lr(cr.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:r.maxTotalTimeout,totalElapsed:t});return clearTimeout(r.timeoutId),r.timeoutId=setTimeout(r.onTimeout,r.timeout),!0}_cleanupTimeout(e){let r=this._timeoutInfo.get(e);r&&(clearTimeout(r.timeoutId),this._timeoutInfo.delete(e))}async connect(e){var r,t,s;this._transport=e;let i=(r=this.transport)===null||r===void 0?void 0:r.onclose;this._transport.onclose=()=>{i?.(),this._onclose()};let n=(t=this.transport)===null||t===void 0?void 0:t.onerror;this._transport.onerror=l=>{n?.(l),this._onerror(l)};let o=(s=this._transport)===null||s===void 0?void 0:s.onmessage;this._transport.onmessage=(l,c)=>{o?.(l,c),Ip(l)||Ax(l)?this._onresponse(l):Tx(l)?this._onrequest(l,c):Ox(l)?this._onnotification(l):this._onerror(new Error(`Unknown message type: ${JSON.stringify(l)}`))},await this._transport.start()}_onclose(){var e;let r=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._pendingDebouncedNotifications.clear(),this._transport=void 0,(e=this.onclose)===null||e===void 0||e.call(this);let t=new lr(cr.ConnectionClosed,"Connection closed");for(let s of r.values())s(t)}_onerror(e){var r;(r=this.onerror)===null||r===void 0||r.call(this,e)}_onnotification(e){var r;let t=(r=this._notificationHandlers.get(e.method))!==null&&r!==void 0?r:this.fallbackNotificationHandler;t!==void 0&&Promise.resolve().then(()=>t(e)).catch(s=>this._onerror(new Error(`Uncaught error in notification handler: ${s}`)))}_onrequest(e,r){var t,s;let i=(t=this._requestHandlers.get(e.method))!==null&&t!==void 0?t:this.fallbackRequestHandler,n=this._transport;if(i===void 0){n?.send({jsonrpc:"2.0",id:e.id,error:{code:cr.MethodNotFound,message:"Method not found"}}).catch(c=>this._onerror(new Error(`Failed to send an error response: ${c}`)));return}let o=new AbortController;this._requestHandlerAbortControllers.set(e.id,o);let l={signal:o.signal,sessionId:n?.sessionId,_meta:(s=e.params)===null||s===void 0?void 0:s._meta,sendNotification:c=>this.notification(c,{relatedRequestId:e.id}),sendRequest:(c,u,p)=>this.request(c,u,{...p,relatedRequestId:e.id}),authInfo:r?.authInfo,requestId:e.id,requestInfo:r?.requestInfo};Promise.resolve().then(()=>i(e,l)).then(c=>{if(!o.signal.aborted)return n?.send({result:c,jsonrpc:"2.0",id:e.id})},c=>{var u;if(!o.signal.aborted)return n?.send({jsonrpc:"2.0",id:e.id,error:{code:Number.isSafeInteger(c.code)?c.code:cr.InternalError,message:(u=c.message)!==null&&u!==void 0?u:"Internal error"}})}).catch(c=>this._onerror(new Error(`Failed to send response: ${c}`))).finally(()=>{this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:r,...t}=e.params,s=Number(r),i=this._progressHandlers.get(s);if(!i){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let n=this._responseHandlers.get(s),o=this._timeoutInfo.get(s);if(o&&n&&o.resetTimeoutOnProgress)try{this._resetTimeout(s)}catch(l){n(l);return}i(t)}_onresponse(e){let r=Number(e.id),t=this._responseHandlers.get(r);if(t===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}if(this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),Ip(e))t(e);else{let s=new lr(e.error.code,e.error.message,e.error.data);t(s)}}get transport(){return this._transport}async close(){var e;await((e=this._transport)===null||e===void 0?void 0:e.close())}request(e,r,t){let{relatedRequestId:s,resumptionToken:i,onresumptiontoken:n}=t??{};return new Promise((o,l)=>{var c,u,p,m,f,h;if(!this._transport){l(new Error("Not connected"));return}((c=this._options)===null||c===void 0?void 0:c.enforceStrictCapabilities)===!0&&this.assertCapabilityForMethod(e.method),(u=t?.signal)===null||u===void 0||u.throwIfAborted();let d=this._requestMessageId++,v={...e,jsonrpc:"2.0",id:d};t?.onprogress&&(this._progressHandlers.set(d,t.onprogress),v.params={...e.params,_meta:{...((p=e.params)===null||p===void 0?void 0:p._meta)||{},progressToken:d}});let x=O=>{var C;this._responseHandlers.delete(d),this._progressHandlers.delete(d),this._cleanupTimeout(d),(C=this._transport)===null||C===void 0||C.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:d,reason:String(O)}},{relatedRequestId:s,resumptionToken:i,onresumptiontoken:n}).catch(P=>this._onerror(new Error(`Failed to send cancellation: ${P}`))),l(O)};this._responseHandlers.set(d,O=>{var C;if(!(!((C=t?.signal)===null||C===void 0)&&C.aborted)){if(O instanceof Error)return l(O);try{let P=r.parse(O.result);o(P)}catch(P){l(P)}}}),(m=t?.signal)===null||m===void 0||m.addEventListener("abort",()=>{var O;x((O=t?.signal)===null||O===void 0?void 0:O.reason)});let b=(f=t?.timeout)!==null&&f!==void 0?f:PN,E=()=>x(new lr(cr.RequestTimeout,"Request timed out",{timeout:b}));this._setupTimeout(d,b,t?.maxTotalTimeout,E,(h=t?.resetTimeoutOnProgress)!==null&&h!==void 0?h:!1),this._transport.send(v,{relatedRequestId:s,resumptionToken:i,onresumptiontoken:n}).catch(O=>{this._cleanupTimeout(d),l(O)})})}async notification(e,r){var t,s;if(!this._transport)throw new Error("Not connected");if(this.assertNotificationCapability(e.method),((s=(t=this._options)===null||t===void 0?void 0:t.debouncedNotificationMethods)!==null&&s!==void 0?s:[]).includes(e.method)&&!e.params&&!r?.relatedRequestId){if(this._pendingDebouncedNotifications.has(e.method))return;this._pendingDebouncedNotifications.add(e.method),Promise.resolve().then(()=>{var l;if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let c={...e,jsonrpc:"2.0"};(l=this._transport)===null||l===void 0||l.send(c,r).catch(u=>this._onerror(u))});return}let o={...e,jsonrpc:"2.0"};await this._transport.send(o,r)}setRequestHandler(e,r){let t=e.shape.method.value;this.assertRequestHandlerCapability(t),this._requestHandlers.set(t,(s,i)=>Promise.resolve(r(e.parse(s),i)))}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw new Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,r){this._notificationHandlers.set(e.shape.method.value,t=>Promise.resolve(r(e.parse(t))))}removeNotificationHandler(e){this._notificationHandlers.delete(e)}};function Fx(a,e){return Object.entries(e).reduce((r,[t,s])=>(s&&typeof s=="object"?r[t]=r[t]?{...r[t],...s}:s:r[t]=s,r),{...a})}var z_=Nt(U_(),1),bn=class extends yc{constructor(e,r){var t;super(r),this._clientInfo=e,this._cachedToolOutputValidators=new Map,this._capabilities=(t=r?.capabilities)!==null&&t!==void 0?t:{},this._ajv=new z_.default}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=Fx(this._capabilities,e)}assertCapability(e,r){var t;if(!(!((t=this._serverCapabilities)===null||t===void 0)&&t[e]))throw new Error(`Server does not support ${e} (required for ${r})`)}async connect(e,r){if(await super.connect(e),e.sessionId===void 0)try{let t=await this.request({method:"initialize",params:{protocolVersion:Ap,capabilities:this._capabilities,clientInfo:this._clientInfo}},Np,r);if(t===void 0)throw new Error(`Server sent invalid initialize result: ${t}`);if(!Ex.includes(t.protocolVersion))throw new Error(`Server's protocol version is not supported: ${t.protocolVersion}`);this._serverCapabilities=t.capabilities,this._serverVersion=t.serverInfo,e.setProtocolVersion&&e.setProtocolVersion(t.protocolVersion),this._instructions=t.instructions,await this.notification({method:"notifications/initialized"})}catch(t){throw this.close(),t}}getServerCapabilities(){return this._serverCapabilities}getServerVersion(){return this._serverVersion}getInstructions(){return this._instructions}assertCapabilityForMethod(e){var r,t,s,i,n;switch(e){case"logging/setLevel":if(!(!((r=this._serverCapabilities)===null||r===void 0)&&r.logging))throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!(!((t=this._serverCapabilities)===null||t===void 0)&&t.prompts))throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":case"resources/subscribe":case"resources/unsubscribe":if(!(!((s=this._serverCapabilities)===null||s===void 0)&&s.resources))throw new Error(`Server does not support resources (required for ${e})`);if(e==="resources/subscribe"&&!this._serverCapabilities.resources.subscribe)throw new Error(`Server does not support resource subscriptions (required for ${e})`);break;case"tools/call":case"tools/list":if(!(!((i=this._serverCapabilities)===null||i===void 0)&&i.tools))throw new Error(`Server does not support tools (required for ${e})`);break;case"completion/complete":if(!(!((n=this._serverCapabilities)===null||n===void 0)&&n.completions))throw new Error(`Server does not support completions (required for ${e})`);break;case"initialize":break;case"ping":break}}assertNotificationCapability(e){var r;switch(e){case"notifications/roots/list_changed":if(!(!((r=this._capabilities.roots)===null||r===void 0)&&r.listChanged))throw new Error(`Client does not support roots list changed notifications (required for ${e})`);break;case"notifications/initialized":break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){switch(e){case"sampling/createMessage":if(!this._capabilities.sampling)throw new Error(`Client does not support sampling capability (required for ${e})`);break;case"elicitation/create":if(!this._capabilities.elicitation)throw new Error(`Client does not support elicitation capability (required for ${e})`);break;case"roots/list":if(!this._capabilities.roots)throw new Error(`Client does not support roots capability (required for ${e})`);break;case"ping":break}}async ping(e){return this.request({method:"ping"},fs,e)}async complete(e,r){return this.request({method:"completion/complete",params:e},Bp,r)}async setLoggingLevel(e,r){return this.request({method:"logging/setLevel",params:{level:e}},fs,r)}async getPrompt(e,r){return this.request({method:"prompts/get",params:e},zp,r)}async listPrompts(e,r){return this.request({method:"prompts/list",params:e},Lp,r)}async listResources(e,r){return this.request({method:"resources/list",params:e},Dp,r)}async listResourceTemplates(e,r){return this.request({method:"resources/templates/list",params:e},$p,r)}async readResource(e,r){return this.request({method:"resources/read",params:e},Mp,r)}async subscribeResource(e,r){return this.request({method:"resources/subscribe",params:e},fs,r)}async unsubscribeResource(e,r){return this.request({method:"resources/unsubscribe",params:e},fs,r)}async callTool(e,r=gc,t){let s=await this.request({method:"tools/call",params:e},r,t),i=this.getToolOutputValidator(e.name);if(i){if(!s.structuredContent&&!s.isError)throw new lr(cr.InvalidRequest,`Tool ${e.name} has an output schema but did not return structured content`);if(s.structuredContent)try{if(!i(s.structuredContent))throw new lr(cr.InvalidParams,`Structured content does not match the tool's output schema: ${this._ajv.errorsText(i.errors)}`)}catch(n){throw n instanceof lr?n:new lr(cr.InvalidParams,`Failed to validate structured content: ${n instanceof Error?n.message:String(n)}`)}}return s}cacheToolOutputSchemas(e){this._cachedToolOutputValidators.clear();for(let r of e)if(r.outputSchema)try{let t=this._ajv.compile(r.outputSchema);this._cachedToolOutputValidators.set(r.name,t)}catch{}}getToolOutputValidator(e){return this._cachedToolOutputValidators.get(e)}async listTools(e,r){let t=await this.request({method:"tools/list",params:e},Hp,r);return this.cacheToolOutputSchemas(t.tools),t}async sendRootsListChanged(){return this.notification({method:"notifications/roots/list_changed"})}};var IE=Nt(kE(),1),Ci=Nt(require("node:process"),1),NE=require("node:stream");var Lc=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(` -`);if(e===-1)return null;let r=this._buffer.toString("utf8",0,e).replace(/\r$/,"");return this._buffer=this._buffer.subarray(e+1),kj(r)}clear(){this._buffer=void 0}};function kj(a){return Ix.parse(JSON.parse(a))}function AE(a){return JSON.stringify(a)+` -`}var Aj=Ci.default.platform==="win32"?["APPDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PROCESSOR_ARCHITECTURE","SYSTEMDRIVE","SYSTEMROOT","TEMP","USERNAME","USERPROFILE","PROGRAMFILES"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER"];function Ij(){let a={};for(let e of Aj){let r=Ci.default.env[e];r!==void 0&&(r.startsWith("()")||(a[e]=r))}return a}var En=class{constructor(e){this._abortController=new AbortController,this._readBuffer=new Lc,this._stderrStream=null,this._serverParams=e,(e.stderr==="pipe"||e.stderr==="overlapped")&&(this._stderrStream=new NE.PassThrough)}async start(){if(this._process)throw new Error("StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((e,r)=>{var t,s,i,n,o;this._process=(0,IE.default)(this._serverParams.command,(t=this._serverParams.args)!==null&&t!==void 0?t:[],{env:{...Ij(),...this._serverParams.env},stdio:["pipe","pipe",(s=this._serverParams.stderr)!==null&&s!==void 0?s:"inherit"],shell:!1,signal:this._abortController.signal,windowsHide:Ci.default.platform==="win32"&&Nj(),cwd:this._serverParams.cwd}),this._process.on("error",l=>{var c,u;if(l.name==="AbortError"){(c=this.onclose)===null||c===void 0||c.call(this);return}r(l),(u=this.onerror)===null||u===void 0||u.call(this,l)}),this._process.on("spawn",()=>{e()}),this._process.on("close",l=>{var c;this._process=void 0,(c=this.onclose)===null||c===void 0||c.call(this)}),(i=this._process.stdin)===null||i===void 0||i.on("error",l=>{var c;(c=this.onerror)===null||c===void 0||c.call(this,l)}),(n=this._process.stdout)===null||n===void 0||n.on("data",l=>{this._readBuffer.append(l),this.processReadBuffer()}),(o=this._process.stdout)===null||o===void 0||o.on("error",l=>{var c;(c=this.onerror)===null||c===void 0||c.call(this,l)}),this._stderrStream&&this._process.stderr&&this._process.stderr.pipe(this._stderrStream)})}get stderr(){var e,r;return this._stderrStream?this._stderrStream:(r=(e=this._process)===null||e===void 0?void 0:e.stderr)!==null&&r!==void 0?r:null}get pid(){var e,r;return(r=(e=this._process)===null||e===void 0?void 0:e.pid)!==null&&r!==void 0?r:null}processReadBuffer(){for(var e,r;;)try{let t=this._readBuffer.readMessage();if(t===null)break;(e=this.onmessage)===null||e===void 0||e.call(this,t)}catch(t){(r=this.onerror)===null||r===void 0||r.call(this,t)}}async close(){this._abortController.abort(),this._process=void 0,this._readBuffer.clear()}send(e){return new Promise(r=>{var t;if(!(!((t=this._process)===null||t===void 0)&&t.stdin))throw new Error("Not connected");let s=AE(e);this._process.stdin.write(s)?r():this._process.stdin.once("drain",r)})}};function Nj(){return"type"in Ci.default}var jE=Nt(require("better-sqlite3"),1);var wn=class{db;constructor(){rc(Pr),this.db=new jE.default(tc),this.db.pragma("journal_mode = WAL"),this.db.pragma("synchronous = NORMAL"),this.db.pragma("foreign_keys = ON"),this.initializeSchema(),this.ensureWorkerPortColumn(),this.ensurePromptTrackingColumns(),this.removeSessionSummariesUniqueConstraint(),this.addObservationHierarchicalFields(),this.makeObservationsTextNullable(),this.createUserPromptsTable(),this.ensureDiscoveryTokensColumn()}initializeSchema(){try{this.db.exec(` +`}function W4(){return function(){this.error(404)}}function Z4(){return function(e){if(this.hasTrailingSlash()){this.error(404);return}var r=Hp.original(this.req);r.path=null,r.pathname=V4(r.pathname+"/");var t=F4(B4.format(r)),s=G4("Redirecting","Redirecting to "+U4(t));e.statusCode=301,e.setHeader("Content-Type","text/html; charset=UTF-8"),e.setHeader("Content-Length",Buffer.byteLength(s)),e.setHeader("Content-Security-Policy","default-src 'none'"),e.setHeader("X-Content-Type-Options","nosniff"),e.setHeader("Location",t),e.end(s)}}});var Rx=q((qt,Tx)=>{"use strict";var fc=Zg(),X4=require("events").EventEmitter,_x=Qg(),Sx=Cb(),Q4=mp(),K4=vp(),Ex=rx(),wx=yx();qt=Tx.exports=J4;function J4(){var a=function(e,r,t){a.handle(e,r,t)};return _x(a,X4.prototype,!1),_x(a,Sx,!1),a.request=Object.create(Ex,{app:{configurable:!0,enumerable:!0,writable:!0,value:a}}),a.response=Object.create(wx,{app:{configurable:!0,enumerable:!0,writable:!0,value:a}}),a.init(),a}qt.application=Sx;qt.request=Ex;qt.response=wx;qt.Route=Q4;qt.Router=K4;qt.json=fc.json;qt.query=gp();qt.raw=fc.raw;qt.static=xx();qt.text=fc.text;qt.urlencoded=fc.urlencoded;var Y4=["bodyParser","compress","cookieSession","session","logger","cookieParser","favicon","responseTime","errorHandler","timeout","methodOverride","vhost","csrf","directory","limit","multipart","staticCache"];Y4.forEach(function(a){Object.defineProperty(qt,a,{get:function(){throw new Error("Most middleware (like "+a+") is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.")},configurable:!0})})});var Gp=q((fF,Px)=>{"use strict";Px.exports=Rx()});var n0=q((Oc,s0)=>{(function(a,e){typeof Oc=="object"&&typeof s0<"u"?e(Oc):typeof define=="function"&&define.amd?define(["exports"],e):e(a.URI=a.URI||{})})(Oc,(function(a){"use strict";function e(){for(var M=arguments.length,I=Array(M),_=0;_1){I[0]=I[0].slice(0,-1);for(var x=I.length-1,R=1;R= 0x80 (not a basic code point)","invalid-input":"Invalid input"},A=d-v,j=Math.floor,N=String.fromCharCode;function k(M){throw new RangeError(D[M])}function O(M,I){for(var _=[],x=M.length;x--;)_[x]=I(M[x]);return _}function $(M,I){var _=M.split("@"),x="";_.length>1&&(x=_[0]+"@",M=_[1]),M=M.replace(C,".");var R=M.split("."),L=O(R,I).join(".");return x+L}function F(M){for(var I=[],_=0,x=M.length;_=55296&&R<=56319&&_>1,I+=j(I/_);I>A*h>>1;R+=d)I=j(I/A);return j(R+(A+1)*I/(I+m))},V=function(I){var _=[],x=I.length,R=0,L=b,z=g,J=I.lastIndexOf(w);J<0&&(J=0);for(var le=0;le=128&&k("not-basic"),_.push(I.charCodeAt(le));for(var _e=J>0?J+1:0;_e=x&&k("invalid-input");var Ce=H(I.charCodeAt(_e++));(Ce>=d||Ce>j((f-R)/$e))&&k("overflow"),R+=Ce*$e;var we=xe<=z?v:xe>=z+h?h:xe-z;if(Cej(f/Ie)&&k("overflow"),$e*=Ie}var ve=_.length+1;z=X(R-me,ve,me==0),j(R/ve)>f-L&&k("overflow"),L+=j(R/ve),R%=ve,_.splice(R++,0,L)}return String.fromCodePoint.apply(String,_)},ae=function(I){var _=[];I=F(I);var x=I.length,R=b,L=0,z=g,J=!0,le=!1,_e=void 0;try{for(var me=I[Symbol.iterator](),$e;!(J=($e=me.next()).done);J=!0){var xe=$e.value;xe<128&&_.push(N(xe))}}catch($t){le=!0,_e=$t}finally{try{!J&&me.return&&me.return()}finally{if(le)throw _e}}var Ce=_.length,we=Ce;for(Ce&&_.push(w);we=R&&itj((f-L)/Be)&&k("overflow"),L+=(Ie-R)*Be,R=Ie;var ct=!0,mt=!1,ht=void 0;try{for(var Vt=I[Symbol.iterator](),Dt;!(ct=(Dt=Vt.next()).done);ct=!0){var Cr=Dt.value;if(Crf&&k("overflow"),Cr==R){for(var xr=L,_r=d;;_r+=d){var Pt=_r<=z?v:_r>=z+h?h:_r-z;if(xr>6|192).toString(16).toUpperCase()+"%"+(I&63|128).toString(16).toUpperCase():_="%"+(I>>12|224).toString(16).toUpperCase()+"%"+(I>>6&63|128).toString(16).toUpperCase()+"%"+(I&63|128).toString(16).toUpperCase(),_}function Te(M){for(var I="",_=0,x=M.length;_=194&&R<224){if(x-_>=6){var L=parseInt(M.substr(_+4,2),16);I+=String.fromCharCode((R&31)<<6|L&63)}else I+=M.substr(_,6);_+=6}else if(R>=224){if(x-_>=9){var z=parseInt(M.substr(_+4,2),16),J=parseInt(M.substr(_+7,2),16);I+=String.fromCharCode((R&15)<<12|(z&63)<<6|J&63)}else I+=M.substr(_,9);_+=9}else I+=M.substr(_,3),_+=3}return I}function U(M,I){function _(x){var R=Te(x);return R.match(I.UNRESERVED)?R:x}return M.scheme&&(M.scheme=String(M.scheme).replace(I.PCT_ENCODED,_).toLowerCase().replace(I.NOT_SCHEME,"")),M.userinfo!==void 0&&(M.userinfo=String(M.userinfo).replace(I.PCT_ENCODED,_).replace(I.NOT_USERINFO,be).replace(I.PCT_ENCODED,s)),M.host!==void 0&&(M.host=String(M.host).replace(I.PCT_ENCODED,_).toLowerCase().replace(I.NOT_HOST,be).replace(I.PCT_ENCODED,s)),M.path!==void 0&&(M.path=String(M.path).replace(I.PCT_ENCODED,_).replace(M.scheme?I.NOT_PATH:I.NOT_PATH_NOSCHEME,be).replace(I.PCT_ENCODED,s)),M.query!==void 0&&(M.query=String(M.query).replace(I.PCT_ENCODED,_).replace(I.NOT_QUERY,be).replace(I.PCT_ENCODED,s)),M.fragment!==void 0&&(M.fragment=String(M.fragment).replace(I.PCT_ENCODED,_).replace(I.NOT_FRAGMENT,be).replace(I.PCT_ENCODED,s)),M}function G(M){return M.replace(/^0*(.*)/,"$1")||"0"}function re(M,I){var _=M.match(I.IPV4ADDRESS)||[],x=u(_,2),R=x[1];return R?R.split(".").map(G).join("."):M}function pe(M,I){var _=M.match(I.IPV6ADDRESS)||[],x=u(_,3),R=x[1],L=x[2];if(R){for(var z=R.toLowerCase().split("::").reverse(),J=u(z,2),le=J[0],_e=J[1],me=_e?_e.split(":").map(G):[],$e=le.split(":").map(G),xe=I.IPV4ADDRESS.test($e[$e.length-1]),Ce=xe?7:8,we=$e.length-Ce,Ie=Array(Ce),ve=0;ve1){var ze=Ie.slice(0,qe.index),it=Ie.slice(qe.index+qe.length);ft=ze.join(":")+"::"+it.join(":")}else ft=Ie.join(":");return L&&(ft+="%"+L),ft}else return M}var Z=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,Q="".match(/(){0}/)[1]===void 0;function ce(M){var I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},_={},x=I.iri!==!1?c:l;I.reference==="suffix"&&(M=(I.scheme?I.scheme+":":"")+"//"+M);var R=M.match(Z);if(R){Q?(_.scheme=R[1],_.userinfo=R[3],_.host=R[4],_.port=parseInt(R[5],10),_.path=R[6]||"",_.query=R[7],_.fragment=R[8],isNaN(_.port)&&(_.port=R[5])):(_.scheme=R[1]||void 0,_.userinfo=M.indexOf("@")!==-1?R[3]:void 0,_.host=M.indexOf("//")!==-1?R[4]:void 0,_.port=parseInt(R[5],10),_.path=R[6]||"",_.query=M.indexOf("?")!==-1?R[7]:void 0,_.fragment=M.indexOf("#")!==-1?R[8]:void 0,isNaN(_.port)&&(_.port=M.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?R[4]:void 0)),_.host&&(_.host=pe(re(_.host,x),x)),_.scheme===void 0&&_.userinfo===void 0&&_.host===void 0&&_.port===void 0&&!_.path&&_.query===void 0?_.reference="same-document":_.scheme===void 0?_.reference="relative":_.fragment===void 0?_.reference="absolute":_.reference="uri",I.reference&&I.reference!=="suffix"&&I.reference!==_.reference&&(_.error=_.error||"URI is not a "+I.reference+" reference.");var L=Se[(I.scheme||_.scheme||"").toLowerCase()];if(!I.unicodeSupport&&(!L||!L.unicodeSupport)){if(_.host&&(I.domainHost||L&&L.domainHost))try{_.host=he.toASCII(_.host.replace(x.PCT_ENCODED,Te).toLowerCase())}catch(z){_.error=_.error||"Host's domain name can not be converted to ASCII via punycode: "+z}U(_,l)}else U(_,x);L&&L.parse&&L.parse(_,I)}else _.error=_.error||"URI can not be parsed.";return _}function De(M,I){var _=I.iri!==!1?c:l,x=[];return M.userinfo!==void 0&&(x.push(M.userinfo),x.push("@")),M.host!==void 0&&x.push(pe(re(String(M.host),_),_).replace(_.IPV6ADDRESS,function(R,L,z){return"["+L+(z?"%25"+z:"")+"]"})),(typeof M.port=="number"||typeof M.port=="string")&&(x.push(":"),x.push(String(M.port))),x.length?x.join(""):void 0}var fe=/^\.\.?\//,je=/^\/\.(\/|$)/,Ve=/^\/\.\.(\/|$)/,Ee=/^\/?(?:.|\n)*?(?=\/|$)/;function tt(M){for(var I=[];M.length;)if(M.match(fe))M=M.replace(fe,"");else if(M.match(je))M=M.replace(je,"/");else if(M.match(Ve))M=M.replace(Ve,"/"),I.pop();else if(M==="."||M==="..")M="";else{var _=M.match(Ee);if(_){var x=_[0];M=M.slice(x.length),I.push(x)}else throw new Error("Unexpected dot segment condition")}return I.join("")}function Ge(M){var I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},_=I.iri?c:l,x=[],R=Se[(I.scheme||M.scheme||"").toLowerCase()];if(R&&R.serialize&&R.serialize(M,I),M.host&&!_.IPV6ADDRESS.test(M.host)){if(I.domainHost||R&&R.domainHost)try{M.host=I.iri?he.toUnicode(M.host):he.toASCII(M.host.replace(_.PCT_ENCODED,Te).toLowerCase())}catch(J){M.error=M.error||"Host's domain name can not be converted to "+(I.iri?"Unicode":"ASCII")+" via punycode: "+J}}U(M,_),I.reference!=="suffix"&&M.scheme&&(x.push(M.scheme),x.push(":"));var L=De(M,I);if(L!==void 0&&(I.reference!=="suffix"&&x.push("//"),x.push(L),M.path&&M.path.charAt(0)!=="/"&&x.push("/")),M.path!==void 0){var z=M.path;!I.absolutePath&&(!R||!R.absolutePath)&&(z=tt(z)),L===void 0&&(z=z.replace(/^\/\//,"/%2F")),x.push(z)}return M.query!==void 0&&(x.push("?"),x.push(M.query)),M.fragment!==void 0&&(x.push("#"),x.push(M.fragment)),x.join("")}function Je(M,I){var _=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},x=arguments[3],R={};return x||(M=ce(Ge(M,_),_),I=ce(Ge(I,_),_)),_=_||{},!_.tolerant&&I.scheme?(R.scheme=I.scheme,R.userinfo=I.userinfo,R.host=I.host,R.port=I.port,R.path=tt(I.path||""),R.query=I.query):(I.userinfo!==void 0||I.host!==void 0||I.port!==void 0?(R.userinfo=I.userinfo,R.host=I.host,R.port=I.port,R.path=tt(I.path||""),R.query=I.query):(I.path?(I.path.charAt(0)==="/"?R.path=tt(I.path):((M.userinfo!==void 0||M.host!==void 0||M.port!==void 0)&&!M.path?R.path="/"+I.path:M.path?R.path=M.path.slice(0,M.path.lastIndexOf("/")+1)+I.path:R.path=I.path,R.path=tt(R.path)),R.query=I.query):(R.path=M.path,I.query!==void 0?R.query=I.query:R.query=M.query),R.userinfo=M.userinfo,R.host=M.host,R.port=M.port),R.scheme=M.scheme),R.fragment=I.fragment,R}function Xe(M,I,_){var x=n({scheme:"null"},_);return Ge(Je(ce(M,x),ce(I,x),x,!0),x)}function Ke(M,I){return typeof M=="string"?M=Ge(ce(M,I),I):t(M)==="object"&&(M=ce(Ge(M,I),I)),M}function _t(M,I,_){return typeof M=="string"?M=Ge(ce(M,_),_):t(M)==="object"&&(M=Ge(M,_)),typeof I=="string"?I=Ge(ce(I,_),_):t(I)==="object"&&(I=Ge(I,_)),M===I}function St(M,I){return M&&M.toString().replace(!I||!I.iri?l.ESCAPE:c.ESCAPE,be)}function Rt(M,I){return M&&M.toString().replace(!I||!I.iri?l.PCT_ENCODED:c.PCT_ENCODED,Te)}var Xr={scheme:"http",domainHost:!0,parse:function(I,_){return I.host||(I.error=I.error||"HTTP URIs must have a host."),I},serialize:function(I,_){var x=String(I.scheme).toLowerCase()==="https";return(I.port===(x?443:80)||I.port==="")&&(I.port=void 0),I.path||(I.path="/"),I}},Nt={scheme:"https",domainHost:Xr.domainHost,parse:Xr.parse,serialize:Xr.serialize};function pa(M){return typeof M.secure=="boolean"?M.secure:String(M.scheme).toLowerCase()==="wss"}var da={scheme:"ws",domainHost:!0,parse:function(I,_){var x=I;return x.secure=pa(x),x.resourceName=(x.path||"/")+(x.query?"?"+x.query:""),x.path=void 0,x.query=void 0,x},serialize:function(I,_){if((I.port===(pa(I)?443:80)||I.port==="")&&(I.port=void 0),typeof I.secure=="boolean"&&(I.scheme=I.secure?"wss":"ws",I.secure=void 0),I.resourceName){var x=I.resourceName.split("?"),R=u(x,2),L=R[0],z=R[1];I.path=L&&L!=="/"?L:void 0,I.query=z,I.resourceName=void 0}return I.fragment=void 0,I}},Zn={scheme:"wss",domainHost:da.domainHost,parse:da.parse,serialize:da.serialize},La={},eo=!0,to="[A-Za-z0-9\\-\\.\\_\\~"+(eo?"\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF":"")+"]",Yt="[0-9A-Fa-f]",ro=r(r("%[EFef]"+Yt+"%"+Yt+Yt+"%"+Yt+Yt)+"|"+r("%[89A-Fa-f]"+Yt+"%"+Yt+Yt)+"|"+r("%"+Yt+Yt)),er="[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]",jl="[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",Ml=e(jl,'[\\"\\\\]'),Ll="[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]",ql=new RegExp(to,"g"),fa=new RegExp(ro,"g"),Fl=new RegExp(e("[^]",er,"[\\.]",'[\\"]',Ml),"g"),Qr=new RegExp(e("[^]",to,Ll),"g"),Ul=Qr;function Us(M){var I=Te(M);return I.match(ql)?I:M}var ao={scheme:"mailto",parse:function(I,_){var x=I,R=x.to=x.path?x.path.split(","):[];if(x.path=void 0,x.query){for(var L=!1,z={},J=x.query.split("&"),le=0,_e=J.length;le<_e;++le){var me=J[le].split("=");switch(me[0]){case"to":for(var $e=me[1].split(","),xe=0,Ce=$e.length;xe{"use strict";i0.exports=function a(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var t,s,i;if(Array.isArray(e)){if(t=e.length,t!=r.length)return!1;for(s=t;s--!==0;)if(!a(e[s],r[s]))return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(i=Object.keys(e),t=i.length,t!==Object.keys(r).length)return!1;for(s=t;s--!==0;)if(!Object.prototype.hasOwnProperty.call(r,i[s]))return!1;for(s=t;s--!==0;){var n=i[s];if(!a(e[n],r[n]))return!1}return!0}return e!==e&&r!==r}});var c0=q((JF,o0)=>{"use strict";o0.exports=function(e){for(var r=0,t=e.length,s=0,i;s=55296&&i<=56319&&s{"use strict";p0.exports={copy:iD,checkDataType:ud,checkDataTypes:oD,coerceToTypes:cD,toHash:dd,getProperty:fd,escapeQuotes:md,equal:kc(),ucs2length:c0(),varOccurences:pD,varReplace:dD,schemaHasRules:fD,schemaHasRulesExcept:mD,schemaUnknownRules:hD,toQuotedString:pd,getPathExpr:vD,getPath:gD,getData:xD,unescapeFragment:_D,unescapeJsonPointer:vd,escapeFragment:SD,escapeJsonPointer:hd};function iD(a,e){e=e||{};for(var r in a)e[r]=a[r];return e}function ud(a,e,r,t){var s=t?" !== ":" === ",i=t?" || ":" && ",n=t?"!":"",o=t?"":"!";switch(a){case"null":return e+s+"null";case"array":return n+"Array.isArray("+e+")";case"object":return"("+n+e+i+"typeof "+e+s+'"object"'+i+o+"Array.isArray("+e+"))";case"integer":return"(typeof "+e+s+'"number"'+i+o+"("+e+" % 1)"+i+e+s+e+(r?i+n+"isFinite("+e+")":"")+")";case"number":return"(typeof "+e+s+'"'+a+'"'+(r?i+n+"isFinite("+e+")":"")+")";default:return"typeof "+e+s+'"'+a+'"'}}function oD(a,e,r){switch(a.length){case 1:return ud(a[0],e,r,!0);default:var t="",s=dd(a);s.array&&s.object&&(t=s.null?"(":"(!"+e+" || ",t+="typeof "+e+' !== "object")',delete s.null,delete s.array,delete s.object),s.number&&delete s.integer;for(var i in s)t+=(t?" && ":"")+ud(i,e,r,!0);return t}}var l0=dd(["string","number","integer","boolean","null"]);function cD(a,e){if(Array.isArray(e)){for(var r=[],t=0;t=e)throw new Error("Cannot access property/index "+t+" levels up, current level is "+e);return r[e-t]}if(t>e)throw new Error("Cannot access data "+t+" levels up, current level is "+e);if(i="data"+(e-t||""),!s)return i}for(var o=i,l=s.split("/"),c=0;c{"use strict";var ED=bs();d0.exports=wD;function wD(a){ED.copy(a,this)}});var m0=q((t3,f0)=>{"use strict";var Ca=f0.exports=function(a,e,r){typeof e=="function"&&(r=e,e={}),r=e.cb||r;var t=typeof r=="function"?r:r.pre||function(){},s=r.post||function(){};Cc(e,t,s,a,"",a)};Ca.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0};Ca.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};Ca.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};Ca.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function Cc(a,e,r,t,s,i,n,o,l,c){if(t&&typeof t=="object"&&!Array.isArray(t)){e(t,s,i,n,o,l,c);for(var u in t){var p=t[u];if(Array.isArray(p)){if(u in Ca.arrayKeywords)for(var f=0;f{"use strict";var Fi=n0(),h0=kc(),Dc=bs(),Ic=gd(),RD=m0();y0.exports=Aa;Aa.normalizeId=Ia;Aa.fullPath=Ac;Aa.url=Nc;Aa.ids=ID;Aa.inlineRef=yd;Aa.schema=$c;function Aa(a,e,r){var t=this._refs[r];if(typeof t=="string")if(this._refs[t])t=this._refs[t];else return Aa.call(this,a,e,t);if(t=t||this._schemas[r],t instanceof Ic)return yd(t.schema,this._opts.inlineRefs)?t.schema:t.validate||this._compile(t);var s=$c.call(this,e,r),i,n,o;return s&&(i=s.schema,e=s.root,o=s.baseId),i instanceof Ic?n=i.validate||a.call(this,i.schema,e,void 0,o):i!==void 0&&(n=yd(i,this._opts.inlineRefs)?i:a.call(this,i,e,void 0,o)),n}function $c(a,e){var r=Fi.parse(e),t=g0(r),s=Ac(this._getId(a.schema));if(Object.keys(a.schema).length===0||t!==s){var i=Ia(t),n=this._refs[i];if(typeof n=="string")return PD.call(this,a,n,r);if(n instanceof Ic)n.validate||this._compile(n),a=n;else if(n=this._schemas[i],n instanceof Ic){if(n.validate||this._compile(n),i==Ia(e))return{schema:n,root:a,baseId:s};a=n}else return;if(!a.schema)return;s=Ac(this._getId(a.schema))}return v0.call(this,r,s,a.schema,a)}function PD(a,e,r){var t=$c.call(this,a,e);if(t){var s=t.schema,i=t.baseId;a=t.root;var n=this._getId(s);return n&&(i=Nc(i,n)),v0.call(this,r,i,s,a)}}var OD=Dc.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function v0(a,e,r,t){if(a.fragment=a.fragment||"",a.fragment.slice(0,1)=="/"){for(var s=a.fragment.split("/"),i=1;i{"use strict";var _d=jc();x0.exports={Validation:b0(AD),MissingRef:b0(Sd)};function AD(a){this.message="validation failed",this.errors=a,this.ajv=this.validation=!0}Sd.message=function(a,e){return"can't resolve reference "+e+" from id "+a};function Sd(a,e,r){this.message=r||Sd.message(a,e),this.missingRef=_d.url(a,e),this.missingSchema=_d.normalizeId(_d.fullPath(this.missingRef))}function b0(a){return a.prototype=Object.create(Error.prototype),a.prototype.constructor=a,a}});var Ed=q((s3,_0)=>{"use strict";_0.exports=function(a,e){e||(e={}),typeof e=="function"&&(e={cmp:e});var r=typeof e.cycles=="boolean"?e.cycles:!1,t=e.cmp&&(function(i){return function(n){return function(o,l){var c={key:o,value:n[o]},u={key:l,value:n[l]};return i(c,u)}}})(e.cmp),s=[];return(function i(n){if(n&&n.toJSON&&typeof n.toJSON=="function"&&(n=n.toJSON()),n!==void 0){if(typeof n=="number")return isFinite(n)?""+n:"null";if(typeof n!="object")return JSON.stringify(n);var o,l;if(Array.isArray(n)){for(l="[",o=0;o{"use strict";S0.exports=function(e,r,t){var s="",i=e.schema.$async===!0,n=e.util.schemaHasRulesExcept(e.schema,e.RULES.all,"$ref"),o=e.self._getId(e.schema);if(e.opts.strictKeywords){var l=e.util.schemaUnknownRules(e.schema,e.RULES.keywords);if(l){var c="unknown keyword: "+l;if(e.opts.strictKeywords==="log")e.logger.warn(c);else throw new Error(c)}}if(e.isTop&&(s+=" var validate = ",i&&(e.async=!0,s+="async "),s+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",o&&(e.opts.sourceCode||e.opts.processCode)&&(s+=" "+("/*# sourceURL="+o+" */")+" ")),typeof e.schema=="boolean"||!(n||e.schema.$ref)){var r="false schema",u=e.level,p=e.dataLevel,f=e.schema[r],d=e.schemaPath+e.util.getProperty(r),v=e.errSchemaPath+"/"+r,P=!e.opts.allErrors,D,h="data"+(p||""),w="valid"+u;if(e.schema===!1){e.isTop?P=!0:s+=" var "+w+" = false; ";var m=m||[];m.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(D||"false schema")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(v)+" , params: {} ",e.opts.messages!==!1&&(s+=" , message: 'boolean schema is false' "),e.opts.verbose&&(s+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var y=s;s=m.pop(),!e.compositeRule&&P?e.async?s+=" throw new ValidationError(["+y+"]); ":s+=" validate.errors = ["+y+"]; return false; ":s+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else e.isTop?i?s+=" return data; ":s+=" validate.errors = null; return true; ":s+=" var "+w+" = true; ";return e.isTop&&(s+=" }; return validate; "),s}if(e.isTop){var g=e.isTop,u=e.level=0,p=e.dataLevel=0,h="data";if(e.rootId=e.resolve.fullPath(e.self._getId(e.root.schema)),e.baseId=e.baseId||e.rootId,delete e.isTop,e.dataPathArr=[""],e.schema.default!==void 0&&e.opts.useDefaults&&e.opts.strictDefaults){var b="default is ignored in the schema root";if(e.opts.strictDefaults==="log")e.logger.warn(b);else throw new Error(b)}s+=" var vErrors = null; ",s+=" var errors = 0; ",s+=" if (rootData === undefined) rootData = data; "}else{var u=e.level,p=e.dataLevel,h="data"+(p||"");if(o&&(e.baseId=e.resolve.url(e.baseId,o)),i&&!e.async)throw new Error("async schema in sync schema");s+=" var errs_"+u+" = errors;"}var w="valid"+u,P=!e.opts.allErrors,T="",C="",D,A=e.schema.type,j=Array.isArray(A);if(A&&e.opts.nullable&&e.schema.nullable===!0&&(j?A.indexOf("null")==-1&&(A=A.concat("null")):A!="null"&&(A=[A,"null"],j=!0)),j&&A.length==1&&(A=A[0],j=!1),e.schema.$ref&&n){if(e.opts.extendRefs=="fail")throw new Error('$ref: validation keywords used in schema at path "'+e.errSchemaPath+'" (see option extendRefs)');e.opts.extendRefs!==!0&&(n=!1,e.logger.warn('$ref: keywords ignored in schema at path "'+e.errSchemaPath+'"'))}if(e.schema.$comment&&e.opts.$comment&&(s+=" "+e.RULES.all.$comment.code(e,"$comment")),A){if(e.opts.coerceTypes)var N=e.util.coerceToTypes(e.opts.coerceTypes,A);var k=e.RULES.types[A];if(N||j||k===!0||k&&!Ee(k)){var d=e.schemaPath+".type",v=e.errSchemaPath+"/type",d=e.schemaPath+".type",v=e.errSchemaPath+"/type",O=j?"checkDataTypes":"checkDataType";if(s+=" if ("+e.util[O](A,h,e.opts.strictNumbers,!0)+") { ",N){var $="dataType"+u,F="coerced"+u;s+=" var "+$+" = typeof "+h+"; var "+F+" = undefined; ",e.opts.coerceTypes=="array"&&(s+=" if ("+$+" == 'object' && Array.isArray("+h+") && "+h+".length == 1) { "+h+" = "+h+"[0]; "+$+" = typeof "+h+"; if ("+e.util.checkDataType(e.schema.type,h,e.opts.strictNumbers)+") "+F+" = "+h+"; } "),s+=" if ("+F+" !== undefined) ; ";var B=N;if(B)for(var H,K=-1,X=B.length-1;K{"use strict";var Lc=jc(),Fc=bs(),w0=Mc(),ND=Ed(),E0=wd(),DD=Fc.ucs2length,$D=kc(),jD=w0.Validation;R0.exports=Td;function Td(a,e,r,t){var s=this,i=this._opts,n=[void 0],o={},l=[],c={},u=[],p={},f=[];e=e||{schema:a,refVal:n,refs:o};var d=MD.call(this,a,e,t),v=this._compilations[d.index];if(d.compiling)return v.callValidate=b;var h=this._formats,m=this.RULES;try{var y=w(a,e,r,t);v.validate=y;var g=v.callValidate;return g&&(g.schema=y.schema,g.errors=null,g.refs=y.refs,g.refVal=y.refVal,g.root=y.root,g.$async=y.$async,i.sourceCode&&(g.source=y.source)),y}finally{LD.call(this,a,e,t)}function b(){var O=v.validate,$=O.apply(this,arguments);return b.errors=O.errors,$}function w(O,$,F,B){var H=!$||$&&$.schema==O;if($.schema!=e.schema)return Td.call(s,O,$,F,B);var K=O.$async===!0,X=E0({isTop:!0,schema:O,isRoot:H,baseId:B,root:$,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:w0.MissingRef,RULES:m,validate:E0,util:Fc,resolve:Lc,resolveRef:P,usePattern:j,useDefault:N,useCustomRule:k,opts:i,formats:h,logger:s.logger,self:s});X=qc(n,UD)+qc(l,qD)+qc(u,FD)+qc(f,zD)+X,i.processCode&&(X=i.processCode(X,O));var V;try{var ae=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",X);V=ae(s,m,h,e,n,u,f,$D,DD,jD),n[0]=V}catch(ee){throw s.logger.error("Error compiling schema, function code:",X),ee}return V.schema=O,V.errors=null,V.refs=o,V.refVal=n,V.root=H?V:$,K&&(V.$async=!0),i.sourceCode===!0&&(V.source={code:X,patterns:l,defaults:u}),V}function P(O,$,F){$=Lc.url(O,$);var B=o[$],H,K;if(B!==void 0)return H=n[B],K="refVal["+B+"]",A(H,K);if(!F&&e.refs){var X=e.refs[$];if(X!==void 0)return H=e.refVal[X],K=T($,H),A(H,K)}K=T($);var V=Lc.call(s,w,e,$);if(V===void 0){var ae=r&&r[$];ae&&(V=Lc.inlineRef(ae,i.inlineRefs)?ae:Td.call(s,ae,e,r,O))}if(V===void 0)C($);else return D($,V),A(V,K)}function T(O,$){var F=n.length;return n[F]=$,o[O]=F,"refVal"+F}function C(O){delete o[O]}function D(O,$){var F=o[O];n[F]=$}function A(O,$){return typeof O=="object"||typeof O=="boolean"?{code:$,schema:O,inline:!0}:{code:$,$async:O&&!!O.$async}}function j(O){var $=c[O];return $===void 0&&($=c[O]=l.length,l[$]=O),"pattern"+$}function N(O){switch(typeof O){case"boolean":case"number":return""+O;case"string":return Fc.toQuotedString(O);case"object":if(O===null)return"null";var $=ND(O),F=p[$];return F===void 0&&(F=p[$]=u.length,u[F]=O),"default"+F}}function k(O,$,F,B){if(s._opts.validateSchema!==!1){var H=O.definition.dependencies;if(H&&!H.every(function(be){return Object.prototype.hasOwnProperty.call(F,be)}))throw new Error("parent schema must have all required keywords: "+H.join(","));var K=O.definition.validateSchema;if(K){var X=K($);if(!X){var V="keyword schema is invalid: "+s.errorsText(K.errors);if(s._opts.validateSchema=="log")s.logger.error(V);else throw new Error(V)}}}var ae=O.definition.compile,ee=O.definition.inline,Le=O.definition.macro,he;if(ae)he=ae.call(s,$,F,B);else if(Le)he=Le.call(s,$,F,B),i.validateSchema!==!1&&s.validateSchema(he,!0);else if(ee)he=ee.call(s,B,O.keyword,$,F);else if(he=O.definition.validate,!he)return;if(he===void 0)throw new Error('custom keyword "'+O.keyword+'"failed to compile');var Se=f.length;return f[Se]=he,{code:"customRule"+Se,validate:he}}}function MD(a,e,r){var t=T0.call(this,a,e,r);return t>=0?{index:t,compiling:!0}:(t=this._compilations.length,this._compilations[t]={schema:a,root:e,baseId:r},{index:t,compiling:!1})}function LD(a,e,r){var t=T0.call(this,a,e,r);t>=0&&this._compilations.splice(t,1)}function T0(a,e,r){for(var t=0;t{"use strict";var Uc=O0.exports=function(){this._cache={}};Uc.prototype.put=function(e,r){this._cache[e]=r};Uc.prototype.get=function(e){return this._cache[e]};Uc.prototype.del=function(e){delete this._cache[e]};Uc.prototype.clear=function(){this._cache={}}});var U0=q((c3,F0)=>{"use strict";var BD=bs(),HD=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,VD=[0,31,28,31,30,31,30,31,31,30,31,30,31],GD=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,C0=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,WD=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,ZD=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,I0=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,A0=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,N0=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,D0=/^(?:\/(?:[^~/]|~0|~1)*)*$/,$0=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,j0=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;F0.exports=zc;function zc(a){return a=a=="full"?"full":"fast",BD.copy(zc[a])}zc.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":I0,url:A0,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:C0,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:q0,uuid:N0,"json-pointer":D0,"json-pointer-uri-fragment":$0,"relative-json-pointer":j0};zc.full={date:M0,time:L0,"date-time":KD,uri:YD,"uri-reference":ZD,"uri-template":I0,url:A0,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:C0,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:q0,uuid:N0,"json-pointer":D0,"json-pointer-uri-fragment":$0,"relative-json-pointer":j0};function XD(a){return a%4===0&&(a%100!==0||a%400===0)}function M0(a){var e=a.match(HD);if(!e)return!1;var r=+e[1],t=+e[2],s=+e[3];return t>=1&&t<=12&&s>=1&&s<=(t==2&&XD(r)?29:VD[t])}function L0(a,e){var r=a.match(GD);if(!r)return!1;var t=r[1],s=r[2],i=r[3],n=r[5];return(t<=23&&s<=59&&i<=59||t==23&&s==59&&i==60)&&(!e||n)}var QD=/t|\s/i;function KD(a){var e=a.split(QD);return e.length==2&&M0(e[0])&&L0(e[1],!0)}var JD=/\/|:/;function YD(a){return JD.test(a)&&WD.test(a)}var e$=/[^\\]\\Z/;function q0(a){if(e$.test(a))return!1;try{return new RegExp(a),!0}catch{return!1}}});var B0=q((l3,z0)=>{"use strict";z0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,u="data"+(n||""),p="valid"+i,f,d;if(o=="#"||o=="#/")e.isRoot?(f=e.async,d="validate"):(f=e.root.schema.$async===!0,d="root.refVal[0]");else{var v=e.resolveRef(e.baseId,o,e.isRoot);if(v===void 0){var h=e.MissingRefError.message(e.baseId,o);if(e.opts.missingRefs=="fail"){e.logger.error(h);var m=m||[];m.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { ref: '"+e.util.escapeQuotes(o)+"' } ",e.opts.messages!==!1&&(s+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(o)+"' "),e.opts.verbose&&(s+=" , schema: "+e.util.toQuotedString(o)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),s+=" } "):s+=" {} ";var y=s;s=m.pop(),!e.compositeRule&&c?e.async?s+=" throw new ValidationError(["+y+"]); ":s+=" validate.errors = ["+y+"]; return false; ":s+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(s+=" if (false) { ")}else if(e.opts.missingRefs=="ignore")e.logger.warn(h),c&&(s+=" if (true) { ");else throw new e.MissingRefError(e.baseId,o,h)}else if(v.inline){var g=e.util.copy(e);g.level++;var b="valid"+g.level;g.schema=v.schema,g.schemaPath="",g.errSchemaPath=o;var w=e.validate(g).replace(/validate\.schema/g,v.code);s+=" "+w+" ",c&&(s+=" if ("+b+") { ")}else f=v.$async===!0||e.async&&v.$async!==!1,d=v.code}if(d){var m=m||[];m.push(s),s="",e.opts.passContext?s+=" "+d+".call(this, ":s+=" "+d+"( ",s+=" "+u+", (dataPath || '')",e.errorPath!='""'&&(s+=" + "+e.errorPath);var P=n?"data"+(n-1||""):"parentData",T=n?e.dataPathArr[n]:"parentDataProperty";s+=" , "+P+" , "+T+", rootData) ";var C=s;if(s=m.pop(),f){if(!e.async)throw new Error("async schema referenced by sync schema");c&&(s+=" var "+p+"; "),s+=" try { await "+C+"; ",c&&(s+=" "+p+" = true; "),s+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",c&&(s+=" "+p+" = false; "),s+=" } ",c&&(s+=" if ("+p+") { ")}else s+=" if (!"+C+") { if (vErrors === null) vErrors = "+d+".errors; else vErrors = vErrors.concat("+d+".errors); errors = vErrors.length; } ",c&&(s+=" else { ")}return s}});var V0=q((u3,H0)=>{"use strict";H0.exports=function(e,r,t){var s=" ",i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),o=e.errSchemaPath+"/"+r,l=!e.opts.allErrors,c=e.util.copy(e),u="";c.level++;var p="valid"+c.level,f=c.baseId,d=!0,v=i;if(v)for(var h,m=-1,y=v.length-1;m0||h===!1:e.util.schemaHasRules(h,e.RULES.all))&&(d=!1,c.schema=h,c.schemaPath=n+"["+m+"]",c.errSchemaPath=o+"/"+m,s+=" "+e.validate(c)+" ",c.baseId=f,l&&(s+=" if ("+p+") { ",u+="}"));return l&&(d?s+=" if (true) { ":s+=" "+u.slice(0,-1)+" "),s}});var W0=q((p3,G0)=>{"use strict";G0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),f="valid"+i,d="errs__"+i,v=e.util.copy(e),h="";v.level++;var m="valid"+v.level,y=o.every(function(D){return e.opts.strictKeywords?typeof D=="object"&&Object.keys(D).length>0||D===!1:e.util.schemaHasRules(D,e.RULES.all)});if(y){var g=v.baseId;s+=" var "+d+" = errors; var "+f+" = false; ";var b=e.compositeRule;e.compositeRule=v.compositeRule=!0;var w=o;if(w)for(var P,T=-1,C=w.length-1;T{"use strict";Z0.exports=function(e,r,t){var s=" ",i=e.schema[r],n=e.errSchemaPath+"/"+r,o=!e.opts.allErrors,l=e.util.toQuotedString(i);return e.opts.$comment===!0?s+=" console.log("+l+");":typeof e.opts.$comment=="function"&&(s+=" self._opts.$comment("+l+", "+e.util.toQuotedString(n)+", validate.root.schema);"),s}});var K0=q((f3,Q0)=>{"use strict";Q0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),f="valid"+i,d=e.opts.$data&&o&&o.$data,v;d?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",v="schema"+i):v=o,d||(s+=" var schema"+i+" = validate.schema"+l+";"),s+="var "+f+" = equal("+p+", schema"+i+"); if (!"+f+") { ";var h=h||[];h.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { allowedValue: schema"+i+" } ",e.opts.messages!==!1&&(s+=" , message: 'should be equal to constant' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var m=s;return s=h.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+m+"]); ":s+=" validate.errors = ["+m+"]; return false; ":s+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" }",u&&(s+=" else { "),s}});var Y0=q((m3,J0)=>{"use strict";J0.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),f="valid"+i,d="errs__"+i,v=e.util.copy(e),h="";v.level++;var m="valid"+v.level,y="i"+i,g=v.dataLevel=e.dataLevel+1,b="data"+g,w=e.baseId,P=e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all);if(s+="var "+d+" = errors;var "+f+";",P){var T=e.compositeRule;e.compositeRule=v.compositeRule=!0,v.schema=o,v.schemaPath=l,v.errSchemaPath=c,s+=" var "+m+" = false; for (var "+y+" = 0; "+y+" < "+p+".length; "+y+"++) { ",v.errorPath=e.util.getPathExpr(e.errorPath,y,e.opts.jsonPointers,!0);var C=p+"["+y+"]";v.dataPathArr[g]=y;var D=e.validate(v);v.baseId=w,e.util.varOccurences(D,b)<2?s+=" "+e.util.varReplace(D,b,C)+" ":s+=" var "+b+" = "+C+"; "+D+" ",s+=" if ("+m+") break; } ",e.compositeRule=v.compositeRule=T,s+=" "+h+" if (!"+m+") {"}else s+=" if ("+p+".length == 0) {";var A=A||[];A.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: {} ",e.opts.messages!==!1&&(s+=" , message: 'should contain a valid item' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var j=s;return s=A.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+j+"]); ":s+=" validate.errors = ["+j+"]; return false; ":s+=" var err = "+j+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else { ",P&&(s+=" errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } "),e.opts.allErrors&&(s+=" } "),s}});var t_=q((h3,e_)=>{"use strict";e_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),f="errs__"+i,d=e.util.copy(e),v="";d.level++;var h="valid"+d.level,m={},y={},g=e.opts.ownProperties;for(T in o)if(T!="__proto__"){var b=o[T],w=Array.isArray(b)?y:m;w[T]=b}s+="var "+f+" = errors;";var P=e.errorPath;s+="var missing"+i+";";for(var T in y)if(w=y[T],w.length){if(s+=" if ( "+p+e.util.getProperty(T)+" !== undefined ",g&&(s+=" && Object.prototype.hasOwnProperty.call("+p+", '"+e.util.escapeQuotes(T)+"') "),u){s+=" && ( ";var C=w;if(C)for(var D,A=-1,j=C.length-1;A0||b===!1:e.util.schemaHasRules(b,e.RULES.all))&&(s+=" "+h+" = true; if ( "+p+e.util.getProperty(T)+" !== undefined ",g&&(s+=" && Object.prototype.hasOwnProperty.call("+p+", '"+e.util.escapeQuotes(T)+"') "),s+=") { ",d.schema=b,d.schemaPath=l+e.util.getProperty(T),d.errSchemaPath=c+"/"+e.util.escapeFragment(T),s+=" "+e.validate(d)+" ",d.baseId=V,s+=" } ",u&&(s+=" if ("+h+") { ",v+="}"))}return u&&(s+=" "+v+" if ("+f+" == errors) {"),s}});var a_=q((v3,r_)=>{"use strict";r_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),f="valid"+i,d=e.opts.$data&&o&&o.$data,v;d?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",v="schema"+i):v=o;var h="i"+i,m="schema"+i;d||(s+=" var "+m+" = validate.schema"+l+";"),s+="var "+f+";",d&&(s+=" if (schema"+i+" === undefined) "+f+" = true; else if (!Array.isArray(schema"+i+")) "+f+" = false; else {"),s+=""+f+" = false;for (var "+h+"=0; "+h+"<"+m+".length; "+h+"++) if (equal("+p+", "+m+"["+h+"])) { "+f+" = true; break; }",d&&(s+=" } "),s+=" if (!"+f+") { ";var y=y||[];y.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { allowedValues: schema"+i+" } ",e.opts.messages!==!1&&(s+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var g=s;return s=y.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+g+"]); ":s+=" validate.errors = ["+g+"]; return false; ":s+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" }",u&&(s+=" else { "),s}});var n_=q((g3,s_)=>{"use strict";s_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||"");if(e.opts.format===!1)return u&&(s+=" if (true) { "),s;var f=e.opts.$data&&o&&o.$data,d;f?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",d="schema"+i):d=o;var v=e.opts.unknownFormats,h=Array.isArray(v);if(f){var m="format"+i,y="isObject"+i,g="formatType"+i;s+=" var "+m+" = formats["+d+"]; var "+y+" = typeof "+m+" == 'object' && !("+m+" instanceof RegExp) && "+m+".validate; var "+g+" = "+y+" && "+m+".type || 'string'; if ("+y+") { ",e.async&&(s+=" var async"+i+" = "+m+".async; "),s+=" "+m+" = "+m+".validate; } if ( ",f&&(s+=" ("+d+" !== undefined && typeof "+d+" != 'string') || "),s+=" (",v!="ignore"&&(s+=" ("+d+" && !"+m+" ",h&&(s+=" && self._opts.unknownFormats.indexOf("+d+") == -1 "),s+=") || "),s+=" ("+m+" && "+g+" == '"+t+"' && !(typeof "+m+" == 'function' ? ",e.async?s+=" (async"+i+" ? await "+m+"("+p+") : "+m+"("+p+")) ":s+=" "+m+"("+p+") ",s+=" : "+m+".test("+p+"))))) {"}else{var m=e.formats[o];if(!m){if(v=="ignore")return e.logger.warn('unknown format "'+o+'" ignored in schema at path "'+e.errSchemaPath+'"'),u&&(s+=" if (true) { "),s;if(h&&v.indexOf(o)>=0)return u&&(s+=" if (true) { "),s;throw new Error('unknown format "'+o+'" is used in schema at path "'+e.errSchemaPath+'"')}var y=typeof m=="object"&&!(m instanceof RegExp)&&m.validate,g=y&&m.type||"string";if(y){var b=m.async===!0;m=m.validate}if(g!=t)return u&&(s+=" if (true) { "),s;if(b){if(!e.async)throw new Error("async format in sync schema");var w="formats"+e.util.getProperty(o)+".validate";s+=" if (!(await "+w+"("+p+"))) { "}else{s+=" if (! ";var w="formats"+e.util.getProperty(o);y&&(w+=".validate"),typeof m=="function"?s+=" "+w+"("+p+") ":s+=" "+w+".test("+p+") ",s+=") { "}}var P=P||[];P.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { format: ",f?s+=""+d:s+=""+e.util.toQuotedString(o),s+=" } ",e.opts.messages!==!1&&(s+=` , message: 'should match format "`,f?s+="' + "+d+" + '":s+=""+e.util.escapeQuotes(o),s+=`"' `),e.opts.verbose&&(s+=" , schema: ",f?s+="validate.schema"+l:s+=""+e.util.toQuotedString(o),s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var T=s;return s=P.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+T+"]); ":s+=" validate.errors = ["+T+"]; return false; ":s+=" var err = "+T+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",u&&(s+=" else { "),s}});var o_=q((y3,i_)=>{"use strict";i_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),f="valid"+i,d="errs__"+i,v=e.util.copy(e);v.level++;var h="valid"+v.level,m=e.schema.then,y=e.schema.else,g=m!==void 0&&(e.opts.strictKeywords?typeof m=="object"&&Object.keys(m).length>0||m===!1:e.util.schemaHasRules(m,e.RULES.all)),b=y!==void 0&&(e.opts.strictKeywords?typeof y=="object"&&Object.keys(y).length>0||y===!1:e.util.schemaHasRules(y,e.RULES.all)),w=v.baseId;if(g||b){var P;v.createErrors=!1,v.schema=o,v.schemaPath=l,v.errSchemaPath=c,s+=" var "+d+" = errors; var "+f+" = true; ";var T=e.compositeRule;e.compositeRule=v.compositeRule=!0,s+=" "+e.validate(v)+" ",v.baseId=w,v.createErrors=!0,s+=" errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } ",e.compositeRule=v.compositeRule=T,g?(s+=" if ("+h+") { ",v.schema=e.schema.then,v.schemaPath=e.schemaPath+".then",v.errSchemaPath=e.errSchemaPath+"/then",s+=" "+e.validate(v)+" ",v.baseId=w,s+=" "+f+" = "+h+"; ",g&&b?(P="ifClause"+i,s+=" var "+P+" = 'then'; "):P="'then'",s+=" } ",b&&(s+=" else { ")):s+=" if (!"+h+") { ",b&&(v.schema=e.schema.else,v.schemaPath=e.schemaPath+".else",v.errSchemaPath=e.errSchemaPath+"/else",s+=" "+e.validate(v)+" ",v.baseId=w,s+=" "+f+" = "+h+"; ",g&&b?(P="ifClause"+i,s+=" var "+P+" = 'else'; "):P="'else'",s+=" } "),s+=" if (!"+f+") { var err = ",e.createErrors!==!1?(s+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { failingKeyword: "+P+" } ",e.opts.messages!==!1&&(s+=` , message: 'should match "' + `+P+` + '" schema' `),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ",s+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&u&&(e.async?s+=" throw new ValidationError(vErrors); ":s+=" validate.errors = vErrors; return false; "),s+=" } ",u&&(s+=" else { ")}else u&&(s+=" if (true) { ");return s}});var l_=q((b3,c_)=>{"use strict";c_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),f="valid"+i,d="errs__"+i,v=e.util.copy(e),h="";v.level++;var m="valid"+v.level,y="i"+i,g=v.dataLevel=e.dataLevel+1,b="data"+g,w=e.baseId;if(s+="var "+d+" = errors;var "+f+";",Array.isArray(o)){var P=e.schema.additionalItems;if(P===!1){s+=" "+f+" = "+p+".length <= "+o.length+"; ";var T=c;c=e.errSchemaPath+"/additionalItems",s+=" if (!"+f+") { ";var C=C||[];C.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+o.length+" } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT have more than "+o.length+" items' "),e.opts.verbose&&(s+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var D=s;s=C.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+D+"]); ":s+=" validate.errors = ["+D+"]; return false; ":s+=" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",c=T,u&&(h+="}",s+=" else { ")}var A=o;if(A){for(var j,N=-1,k=A.length-1;N0||j===!1:e.util.schemaHasRules(j,e.RULES.all)){s+=" "+m+" = true; if ("+p+".length > "+N+") { ";var O=p+"["+N+"]";v.schema=j,v.schemaPath=l+"["+N+"]",v.errSchemaPath=c+"/"+N,v.errorPath=e.util.getPathExpr(e.errorPath,N,e.opts.jsonPointers,!0),v.dataPathArr[g]=N;var $=e.validate(v);v.baseId=w,e.util.varOccurences($,b)<2?s+=" "+e.util.varReplace($,b,O)+" ":s+=" var "+b+" = "+O+"; "+$+" ",s+=" } ",u&&(s+=" if ("+m+") { ",h+="}")}}if(typeof P=="object"&&(e.opts.strictKeywords?typeof P=="object"&&Object.keys(P).length>0||P===!1:e.util.schemaHasRules(P,e.RULES.all))){v.schema=P,v.schemaPath=e.schemaPath+".additionalItems",v.errSchemaPath=e.errSchemaPath+"/additionalItems",s+=" "+m+" = true; if ("+p+".length > "+o.length+") { for (var "+y+" = "+o.length+"; "+y+" < "+p+".length; "+y+"++) { ",v.errorPath=e.util.getPathExpr(e.errorPath,y,e.opts.jsonPointers,!0);var O=p+"["+y+"]";v.dataPathArr[g]=y;var $=e.validate(v);v.baseId=w,e.util.varOccurences($,b)<2?s+=" "+e.util.varReplace($,b,O)+" ":s+=" var "+b+" = "+O+"; "+$+" ",u&&(s+=" if (!"+m+") break; "),s+=" } } ",u&&(s+=" if ("+m+") { ",h+="}")}}else if(e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){v.schema=o,v.schemaPath=l,v.errSchemaPath=c,s+=" for (var "+y+" = 0; "+y+" < "+p+".length; "+y+"++) { ",v.errorPath=e.util.getPathExpr(e.errorPath,y,e.opts.jsonPointers,!0);var O=p+"["+y+"]";v.dataPathArr[g]=y;var $=e.validate(v);v.baseId=w,e.util.varOccurences($,b)<2?s+=" "+e.util.varReplace($,b,O)+" ":s+=" var "+b+" = "+O+"; "+$+" ",u&&(s+=" if (!"+m+") break; "),s+=" }"}return u&&(s+=" "+h+" if ("+d+" == errors) {"),s}});var Rd=q((x3,u_)=>{"use strict";u_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,w,p="data"+(n||""),f=e.opts.$data&&o&&o.$data,d;f?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",d="schema"+i):d=o;var v=r=="maximum",h=v?"exclusiveMaximum":"exclusiveMinimum",m=e.schema[h],y=e.opts.$data&&m&&m.$data,g=v?"<":">",b=v?">":"<",w=void 0;if(!(f||typeof o=="number"||o===void 0))throw new Error(r+" must be number");if(!(y||m===void 0||typeof m=="number"||typeof m=="boolean"))throw new Error(h+" must be number or boolean");if(y){var P=e.util.getData(m.$data,n,e.dataPathArr),T="exclusive"+i,C="exclType"+i,D="exclIsNumber"+i,A="op"+i,j="' + "+A+" + '";s+=" var schemaExcl"+i+" = "+P+"; ",P="schemaExcl"+i,s+=" var "+T+"; var "+C+" = typeof "+P+"; if ("+C+" != 'boolean' && "+C+" != 'undefined' && "+C+" != 'number') { ";var w=h,N=N||[];N.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(w||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: {} ",e.opts.messages!==!1&&(s+=" , message: '"+h+" should be boolean' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var k=s;s=N.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+k+"]); ":s+=" validate.errors = ["+k+"]; return false; ":s+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else if ( ",f&&(s+=" ("+d+" !== undefined && typeof "+d+" != 'number') || "),s+=" "+C+" == 'number' ? ( ("+T+" = "+d+" === undefined || "+P+" "+g+"= "+d+") ? "+p+" "+b+"= "+P+" : "+p+" "+b+" "+d+" ) : ( ("+T+" = "+P+" === true) ? "+p+" "+b+"= "+d+" : "+p+" "+b+" "+d+" ) || "+p+" !== "+p+") { var op"+i+" = "+T+" ? '"+g+"' : '"+g+"='; ",o===void 0&&(w=h,c=e.errSchemaPath+"/"+h,d=P,f=y)}else{var D=typeof m=="number",j=g;if(D&&f){var A="'"+j+"'";s+=" if ( ",f&&(s+=" ("+d+" !== undefined && typeof "+d+" != 'number') || "),s+=" ( "+d+" === undefined || "+m+" "+g+"= "+d+" ? "+p+" "+b+"= "+m+" : "+p+" "+b+" "+d+" ) || "+p+" !== "+p+") { "}else{D&&o===void 0?(T=!0,w=h,c=e.errSchemaPath+"/"+h,d=m,b+="="):(D&&(d=Math[v?"min":"max"](m,o)),m===(D?d:!0)?(T=!0,w=h,c=e.errSchemaPath+"/"+h,b+="="):(T=!1,j+="="));var A="'"+j+"'";s+=" if ( ",f&&(s+=" ("+d+" !== undefined && typeof "+d+" != 'number') || "),s+=" "+p+" "+b+" "+d+" || "+p+" !== "+p+") { "}}w=w||r;var N=N||[];N.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(w||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { comparison: "+A+", limit: "+d+", exclusive: "+T+" } ",e.opts.messages!==!1&&(s+=" , message: 'should be "+j+" ",f?s+="' + "+d:s+=""+d+"'"),e.opts.verbose&&(s+=" , schema: ",f?s+="validate.schema"+l:s+=""+o,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var k=s;return s=N.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+k+"]); ":s+=" validate.errors = ["+k+"]; return false; ":s+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",u&&(s+=" else { "),s}});var Pd=q((_3,p_)=>{"use strict";p_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,h,p="data"+(n||""),f=e.opts.$data&&o&&o.$data,d;if(f?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",d="schema"+i):d=o,!(f||typeof o=="number"))throw new Error(r+" must be number");var v=r=="maxItems"?">":"<";s+="if ( ",f&&(s+=" ("+d+" !== undefined && typeof "+d+" != 'number') || "),s+=" "+p+".length "+v+" "+d+") { ";var h=r,m=m||[];m.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(h||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+d+" } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT have ",r=="maxItems"?s+="more":s+="fewer",s+=" than ",f?s+="' + "+d+" + '":s+=""+o,s+=" items' "),e.opts.verbose&&(s+=" , schema: ",f?s+="validate.schema"+l:s+=""+o,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var y=s;return s=m.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+y+"]); ":s+=" validate.errors = ["+y+"]; return false; ":s+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}});var Od=q((S3,d_)=>{"use strict";d_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,h,p="data"+(n||""),f=e.opts.$data&&o&&o.$data,d;if(f?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",d="schema"+i):d=o,!(f||typeof o=="number"))throw new Error(r+" must be number");var v=r=="maxLength"?">":"<";s+="if ( ",f&&(s+=" ("+d+" !== undefined && typeof "+d+" != 'number') || "),e.opts.unicode===!1?s+=" "+p+".length ":s+=" ucs2length("+p+") ",s+=" "+v+" "+d+") { ";var h=r,m=m||[];m.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(h||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+d+" } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT be ",r=="maxLength"?s+="longer":s+="shorter",s+=" than ",f?s+="' + "+d+" + '":s+=""+o,s+=" characters' "),e.opts.verbose&&(s+=" , schema: ",f?s+="validate.schema"+l:s+=""+o,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var y=s;return s=m.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+y+"]); ":s+=" validate.errors = ["+y+"]; return false; ":s+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}});var kd=q((E3,f_)=>{"use strict";f_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,h,p="data"+(n||""),f=e.opts.$data&&o&&o.$data,d;if(f?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",d="schema"+i):d=o,!(f||typeof o=="number"))throw new Error(r+" must be number");var v=r=="maxProperties"?">":"<";s+="if ( ",f&&(s+=" ("+d+" !== undefined && typeof "+d+" != 'number') || "),s+=" Object.keys("+p+").length "+v+" "+d+") { ";var h=r,m=m||[];m.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(h||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+d+" } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT have ",r=="maxProperties"?s+="more":s+="fewer",s+=" than ",f?s+="' + "+d+" + '":s+=""+o,s+=" properties' "),e.opts.verbose&&(s+=" , schema: ",f?s+="validate.schema"+l:s+=""+o,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var y=s;return s=m.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+y+"]); ":s+=" validate.errors = ["+y+"]; return false; ":s+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}});var h_=q((w3,m_)=>{"use strict";m_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),f=e.opts.$data&&o&&o.$data,d;if(f?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",d="schema"+i):d=o,!(f||typeof o=="number"))throw new Error(r+" must be number");s+="var division"+i+";if (",f&&(s+=" "+d+" !== undefined && ( typeof "+d+" != 'number' || "),s+=" (division"+i+" = "+p+" / "+d+", ",e.opts.multipleOfPrecision?s+=" Math.abs(Math.round(division"+i+") - division"+i+") > 1e-"+e.opts.multipleOfPrecision+" ":s+=" division"+i+" !== parseInt(division"+i+") ",s+=" ) ",f&&(s+=" ) "),s+=" ) { ";var v=v||[];v.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { multipleOf: "+d+" } ",e.opts.messages!==!1&&(s+=" , message: 'should be multiple of ",f?s+="' + "+d:s+=""+d+"'"),e.opts.verbose&&(s+=" , schema: ",f?s+="validate.schema"+l:s+=""+o,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var h=s;return s=v.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+h+"]); ":s+=" validate.errors = ["+h+"]; return false; ":s+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}});var g_=q((T3,v_)=>{"use strict";v_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),f="errs__"+i,d=e.util.copy(e);d.level++;var v="valid"+d.level;if(e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){d.schema=o,d.schemaPath=l,d.errSchemaPath=c,s+=" var "+f+" = errors; ";var h=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.createErrors=!1;var m;d.opts.allErrors&&(m=d.opts.allErrors,d.opts.allErrors=!1),s+=" "+e.validate(d)+" ",d.createErrors=!0,m&&(d.opts.allErrors=m),e.compositeRule=d.compositeRule=h,s+=" if ("+v+") { ";var y=y||[];y.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: {} ",e.opts.messages!==!1&&(s+=" , message: 'should NOT be valid' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var g=s;s=y.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+g+"]); ":s+=" validate.errors = ["+g+"]; return false; ":s+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else { errors = "+f+"; if (vErrors !== null) { if ("+f+") vErrors.length = "+f+"; else vErrors = null; } ",e.opts.allErrors&&(s+=" } ")}else s+=" var err = ",e.createErrors!==!1?(s+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: {} ",e.opts.messages!==!1&&(s+=" , message: 'should NOT be valid' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ",s+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u&&(s+=" if (false) { ");return s}});var b_=q((R3,y_)=>{"use strict";y_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),f="valid"+i,d="errs__"+i,v=e.util.copy(e),h="";v.level++;var m="valid"+v.level,y=v.baseId,g="prevValid"+i,b="passingSchemas"+i;s+="var "+d+" = errors , "+g+" = false , "+f+" = false , "+b+" = null; ";var w=e.compositeRule;e.compositeRule=v.compositeRule=!0;var P=o;if(P)for(var T,C=-1,D=P.length-1;C0||T===!1:e.util.schemaHasRules(T,e.RULES.all))?(v.schema=T,v.schemaPath=l+"["+C+"]",v.errSchemaPath=c+"/"+C,s+=" "+e.validate(v)+" ",v.baseId=y):s+=" var "+m+" = true; ",C&&(s+=" if ("+m+" && "+g+") { "+f+" = false; "+b+" = ["+b+", "+C+"]; } else { ",h+="}"),s+=" if ("+m+") { "+f+" = "+g+" = true; "+b+" = "+C+"; }";return e.compositeRule=v.compositeRule=w,s+=""+h+"if (!"+f+") { var err = ",e.createErrors!==!1?(s+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { passingSchemas: "+b+" } ",e.opts.messages!==!1&&(s+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ",s+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&u&&(e.async?s+=" throw new ValidationError(vErrors); ":s+=" validate.errors = vErrors; return false; "),s+="} else { errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; }",e.opts.allErrors&&(s+=" } "),s}});var __=q((P3,x_)=>{"use strict";x_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),f=e.opts.$data&&o&&o.$data,d;f?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",d="schema"+i):d=o;var v=f?"(new RegExp("+d+"))":e.usePattern(o);s+="if ( ",f&&(s+=" ("+d+" !== undefined && typeof "+d+" != 'string') || "),s+=" !"+v+".test("+p+") ) { ";var h=h||[];h.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { pattern: ",f?s+=""+d:s+=""+e.util.toQuotedString(o),s+=" } ",e.opts.messages!==!1&&(s+=` , message: 'should match pattern "`,f?s+="' + "+d+" + '":s+=""+e.util.escapeQuotes(o),s+=`"' `),e.opts.verbose&&(s+=" , schema: ",f?s+="validate.schema"+l:s+=""+e.util.toQuotedString(o),s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var m=s;return s=h.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+m+"]); ":s+=" validate.errors = ["+m+"]; return false; ":s+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}});var E_=q((O3,S_)=>{"use strict";S_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),f="errs__"+i,d=e.util.copy(e),v="";d.level++;var h="valid"+d.level,m="key"+i,y="idx"+i,g=d.dataLevel=e.dataLevel+1,b="data"+g,w="dataProperties"+i,P=Object.keys(o||{}).filter(K),T=e.schema.patternProperties||{},C=Object.keys(T).filter(K),D=e.schema.additionalProperties,A=P.length||C.length,j=D===!1,N=typeof D=="object"&&Object.keys(D).length,k=e.opts.removeAdditional,O=j||N||k,$=e.opts.ownProperties,F=e.baseId,B=e.schema.required;if(B&&!(e.opts.$data&&B.$data)&&B.length8)s+=" || validate.schema"+l+".hasOwnProperty("+m+") ";else{var X=P;if(X)for(var V,ae=-1,ee=X.length-1;ae0||Ee===!1:e.util.schemaHasRules(Ee,e.RULES.all)){var tt=e.util.getProperty(V),Q=p+tt,Ge=De&&Ee.default!==void 0;d.schema=Ee,d.schemaPath=l+tt,d.errSchemaPath=c+"/"+e.util.escapeFragment(V),d.errorPath=e.util.getPath(e.errorPath,V,e.opts.jsonPointers),d.dataPathArr[g]=e.util.toQuotedString(V);var ce=e.validate(d);if(d.baseId=F,e.util.varOccurences(ce,b)<2){ce=e.util.varReplace(ce,b,Q);var Je=Q}else{var Je=b;s+=" var "+b+" = "+Q+"; "}if(Ge)s+=" "+ce+" ";else{if(H&&H[V]){s+=" if ( "+Je+" === undefined ",$&&(s+=" || ! Object.prototype.hasOwnProperty.call("+p+", '"+e.util.escapeQuotes(V)+"') "),s+=") { "+h+" = false; ";var Te=e.errorPath,G=c,Xe=e.util.escapeQuotes(V);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(Te,V,e.opts.jsonPointers)),c=e.errSchemaPath+"/required";var re=re||[];re.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { missingProperty: '"+Xe+"' } ",e.opts.messages!==!1&&(s+=" , message: '",e.opts._errorDataPathProperty?s+="is a required property":s+="should have required property \\'"+Xe+"\\'",s+="' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var pe=s;s=re.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+pe+"]); ":s+=" validate.errors = ["+pe+"]; return false; ":s+=" var err = "+pe+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c=G,e.errorPath=Te,s+=" } else { "}else u?(s+=" if ( "+Je+" === undefined ",$&&(s+=" || ! Object.prototype.hasOwnProperty.call("+p+", '"+e.util.escapeQuotes(V)+"') "),s+=") { "+h+" = true; } else { "):(s+=" if ("+Je+" !== undefined ",$&&(s+=" && Object.prototype.hasOwnProperty.call("+p+", '"+e.util.escapeQuotes(V)+"') "),s+=" ) { ");s+=" "+ce+" } "}}u&&(s+=" if ("+h+") { ",v+="}")}}if(C.length){var Ke=C;if(Ke)for(var he,_t=-1,St=Ke.length-1;_t0||Ee===!1:e.util.schemaHasRules(Ee,e.RULES.all)){d.schema=Ee,d.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(he),d.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(he),$?s+=" "+w+" = "+w+" || Object.keys("+p+"); for (var "+y+"=0; "+y+"<"+w+".length; "+y+"++) { var "+m+" = "+w+"["+y+"]; ":s+=" for (var "+m+" in "+p+") { ",s+=" if ("+e.usePattern(he)+".test("+m+")) { ",d.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers);var Q=p+"["+m+"]";d.dataPathArr[g]=m;var ce=e.validate(d);d.baseId=F,e.util.varOccurences(ce,b)<2?s+=" "+e.util.varReplace(ce,b,Q)+" ":s+=" var "+b+" = "+Q+"; "+ce+" ",u&&(s+=" if (!"+h+") break; "),s+=" } ",u&&(s+=" else "+h+" = true; "),s+=" } ",u&&(s+=" if ("+h+") { ",v+="}")}}}return u&&(s+=" "+v+" if ("+f+" == errors) {"),s}});var T_=q((k3,w_)=>{"use strict";w_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),f="errs__"+i,d=e.util.copy(e),v="";d.level++;var h="valid"+d.level;if(s+="var "+f+" = errors;",e.opts.strictKeywords?typeof o=="object"&&Object.keys(o).length>0||o===!1:e.util.schemaHasRules(o,e.RULES.all)){d.schema=o,d.schemaPath=l,d.errSchemaPath=c;var m="key"+i,y="idx"+i,g="i"+i,b="' + "+m+" + '",w=d.dataLevel=e.dataLevel+1,P="data"+w,T="dataProperties"+i,C=e.opts.ownProperties,D=e.baseId;C&&(s+=" var "+T+" = undefined; "),C?s+=" "+T+" = "+T+" || Object.keys("+p+"); for (var "+y+"=0; "+y+"<"+T+".length; "+y+"++) { var "+m+" = "+T+"["+y+"]; ":s+=" for (var "+m+" in "+p+") { ",s+=" var startErrs"+i+" = errors; ";var A=m,j=e.compositeRule;e.compositeRule=d.compositeRule=!0;var N=e.validate(d);d.baseId=D,e.util.varOccurences(N,P)<2?s+=" "+e.util.varReplace(N,P,A)+" ":s+=" var "+P+" = "+A+"; "+N+" ",e.compositeRule=d.compositeRule=j,s+=" if (!"+h+") { for (var "+g+"=startErrs"+i+"; "+g+"{"use strict";R_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),f="valid"+i,d=e.opts.$data&&o&&o.$data,v;d?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",v="schema"+i):v=o;var h="schema"+i;if(!d)if(o.length0||P===!1:e.util.schemaHasRules(P,e.RULES.all))||(m[m.length]=g)}}else var m=o;if(d||m.length){var T=e.errorPath,C=d||m.length>=e.opts.loopRequired,D=e.opts.ownProperties;if(u)if(s+=" var missing"+i+"; ",C){d||(s+=" var "+h+" = validate.schema"+l+"; ");var A="i"+i,j="schema"+i+"["+A+"]",N="' + "+j+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(T,j,e.opts.jsonPointers)),s+=" var "+f+" = true; ",d&&(s+=" if (schema"+i+" === undefined) "+f+" = true; else if (!Array.isArray(schema"+i+")) "+f+" = false; else {"),s+=" for (var "+A+" = 0; "+A+" < "+h+".length; "+A+"++) { "+f+" = "+p+"["+h+"["+A+"]] !== undefined ",D&&(s+=" && Object.prototype.hasOwnProperty.call("+p+", "+h+"["+A+"]) "),s+="; if (!"+f+") break; } ",d&&(s+=" } "),s+=" if (!"+f+") { ";var k=k||[];k.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { missingProperty: '"+N+"' } ",e.opts.messages!==!1&&(s+=" , message: '",e.opts._errorDataPathProperty?s+="is a required property":s+="should have required property \\'"+N+"\\'",s+="' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var O=s;s=k.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+O+"]); ":s+=" validate.errors = ["+O+"]; return false; ":s+=" var err = "+O+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else { "}else{s+=" if ( ";var $=m;if($)for(var F,A=-1,B=$.length-1;A{"use strict";O_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p="data"+(n||""),f="valid"+i,d=e.opts.$data&&o&&o.$data,v;if(d?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",v="schema"+i):v=o,(o||d)&&e.opts.uniqueItems!==!1){d&&(s+=" var "+f+"; if ("+v+" === false || "+v+" === undefined) "+f+" = true; else if (typeof "+v+" != 'boolean') "+f+" = false; else { "),s+=" var i = "+p+".length , "+f+" = true , j; if (i > 1) { ";var h=e.schema.items&&e.schema.items.type,m=Array.isArray(h);if(!h||h=="object"||h=="array"||m&&(h.indexOf("object")>=0||h.indexOf("array")>=0))s+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+p+"[i], "+p+"[j])) { "+f+" = false; break outer; } } } ";else{s+=" var itemIndices = {}, item; for (;i--;) { var item = "+p+"[i]; ";var y="checkDataType"+(m?"s":"");s+=" if ("+e.util[y](h,"item",e.opts.strictNumbers,!0)+") continue; ",m&&(s+=` if (typeof item == 'string') item = '"' + item; `),s+=" if (typeof itemIndices[item] == 'number') { "+f+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}s+=" } ",d&&(s+=" } "),s+=" if (!"+f+") { ";var g=g||[];g.push(s),s="",e.createErrors!==!1?(s+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { i: i, j: j } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(s+=" , schema: ",d?s+="validate.schema"+l:s+=""+o,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),s+=" } "):s+=" {} ";var b=s;s=g.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+b+"]); ":s+=" validate.errors = ["+b+"]; return false; ":s+=" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",u&&(s+=" else { ")}else u&&(s+=" if (true) { ");return s}});var I_=q((A3,C_)=>{"use strict";C_.exports={$ref:B0(),allOf:V0(),anyOf:W0(),$comment:X0(),const:K0(),contains:Y0(),dependencies:t_(),enum:a_(),format:n_(),if:o_(),items:l_(),maximum:Rd(),minimum:Rd(),maxItems:Pd(),minItems:Pd(),maxLength:Od(),minLength:Od(),maxProperties:kd(),minProperties:kd(),multipleOf:h_(),not:g_(),oneOf:b_(),pattern:__(),properties:E_(),propertyNames:T_(),required:P_(),uniqueItems:k_(),validate:wd()}});var D_=q((N3,N_)=>{"use strict";var A_=I_(),Cd=bs().toHash;N_.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],r=["type","$comment"],t=["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"],s=["number","integer","string","array","object","boolean","null"];return e.all=Cd(r),e.types=Cd(s),e.forEach(function(i){i.rules=i.rules.map(function(n){var o;if(typeof n=="object"){var l=Object.keys(n)[0];o=n[l],n=l,o.forEach(function(u){r.push(u),e.all[u]=!0})}r.push(n);var c=e.all[n]={keyword:n,code:A_[n],implements:o};return c}),e.all.$comment={keyword:"$comment",code:A_.$comment},i.type&&(e.types[i.type]=i)}),e.keywords=Cd(r.concat(t)),e.custom={},e}});var M_=q((D3,j_)=>{"use strict";var $_=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];j_.exports=function(a,e){for(var r=0;r{"use strict";var t$=Mc().MissingRef;q_.exports=L_;function L_(a,e,r){var t=this;if(typeof this._opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");typeof e=="function"&&(r=e,e=void 0);var s=i(a).then(function(){var o=t._addSchema(a,void 0,e);return o.validate||n(o)});return r&&s.then(function(o){r(null,o)},r),s;function i(o){var l=o.$schema;return l&&!t.getSchema(l)?L_.call(t,{$ref:l},!0):Promise.resolve()}function n(o){try{return t._compile(o)}catch(c){if(c instanceof t$)return l(c);throw c}function l(c){var u=c.missingSchema;if(d(u))throw new Error("Schema "+u+" is loaded but "+c.missingRef+" cannot be resolved");var p=t._loadingSchemas[u];return p||(p=t._loadingSchemas[u]=t._opts.loadSchema(u),p.then(f,f)),p.then(function(v){if(!d(u))return i(v).then(function(){d(u)||t.addSchema(v,u,void 0,e)})}).then(function(){return n(o)});function f(){delete t._loadingSchemas[u]}function d(v){return t._refs[v]||t._schemas[v]}}}}});var z_=q((j3,U_)=>{"use strict";U_.exports=function(e,r,t){var s=" ",i=e.level,n=e.dataLevel,o=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,p,f="data"+(n||""),d="valid"+i,v="errs__"+i,h=e.opts.$data&&o&&o.$data,m;h?(s+=" var schema"+i+" = "+e.util.getData(o.$data,n,e.dataPathArr)+"; ",m="schema"+i):m=o;var y=this,g="definition"+i,b=y.definition,w="",P,T,C,D,A;if(h&&b.$data){A="keywordValidate"+i;var j=b.validateSchema;s+=" var "+g+" = RULES.custom['"+r+"'].definition; var "+A+" = "+g+".validate;"}else{if(D=e.useCustomRule(y,o,e.schema,e),!D)return;m="validate.schema"+l,A=D.code,P=b.compile,T=b.inline,C=b.macro}var N=A+".errors",k="i"+i,O="ruleErr"+i,$=b.async;if($&&!e.async)throw new Error("async keyword in sync schema");if(T||C||(s+=""+N+" = null;"),s+="var "+v+" = errors;var "+d+";",h&&b.$data&&(w+="}",s+=" if ("+m+" === undefined) { "+d+" = true; } else { ",j&&(w+="}",s+=" "+d+" = "+g+".validateSchema("+m+"); if ("+d+") { ")),T)b.statements?s+=" "+D.validate+" ":s+=" "+d+" = "+D.validate+"; ";else if(C){var F=e.util.copy(e),w="";F.level++;var B="valid"+F.level;F.schema=D.validate,F.schemaPath="";var H=e.compositeRule;e.compositeRule=F.compositeRule=!0;var K=e.validate(F).replace(/validate\.schema/g,A);e.compositeRule=F.compositeRule=H,s+=" "+K}else{var X=X||[];X.push(s),s="",s+=" "+A+".call( ",e.opts.passContext?s+="this":s+="self",P||b.schema===!1?s+=" , "+f+" ":s+=" , "+m+" , "+f+" , validate.schema"+e.schemaPath+" ",s+=" , (dataPath || '')",e.errorPath!='""'&&(s+=" + "+e.errorPath);var V=n?"data"+(n-1||""):"parentData",ae=n?e.dataPathArr[n]:"parentDataProperty";s+=" , "+V+" , "+ae+" , rootData ) ";var ee=s;s=X.pop(),b.errors===!1?(s+=" "+d+" = ",$&&(s+="await "),s+=""+ee+"; "):$?(N="customErrors"+i,s+=" var "+N+" = null; try { "+d+" = await "+ee+"; } catch (e) { "+d+" = false; if (e instanceof ValidationError) "+N+" = e.errors; else throw e; } "):s+=" "+N+" = null; "+d+" = "+ee+"; "}if(b.modifying&&(s+=" if ("+V+") "+f+" = "+V+"["+ae+"];"),s+=""+w,b.valid)u&&(s+=" if (true) { ");else{s+=" if ( ",b.valid===void 0?(s+=" !",C?s+=""+B:s+=""+d):s+=" "+!b.valid+" ",s+=") { ",p=y.keyword;var X=X||[];X.push(s),s="";var X=X||[];X.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(p||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { keyword: '"+y.keyword+"' } ",e.opts.messages!==!1&&(s+=` , message: 'should pass "`+y.keyword+`" keyword validation' `),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),s+=" } "):s+=" {} ";var Le=s;s=X.pop(),!e.compositeRule&&u?e.async?s+=" throw new ValidationError(["+Le+"]); ":s+=" validate.errors = ["+Le+"]; return false; ":s+=" var err = "+Le+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var he=s;s=X.pop(),T?b.errors?b.errors!="full"&&(s+=" for (var "+k+"="+v+"; "+k+"{r$.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var V_=q((L3,H_)=>{"use strict";var B_=Id();H_.exports={$id:"https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:B_.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:B_.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}});var W_=q((q3,G_)=>{"use strict";var a$=/^[a-z_$][a-z0-9_$-]*$/i,s$=z_(),n$=V_();G_.exports={add:i$,get:o$,remove:c$,validate:Ad};function i$(a,e){var r=this.RULES;if(r.keywords[a])throw new Error("Keyword "+a+" is already defined");if(!a$.test(a))throw new Error("Keyword "+a+" is not a valid identifier");if(e){this.validateKeyword(e,!0);var t=e.type;if(Array.isArray(t))for(var s=0;s{l$.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON Schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var sS=q((U3,aS)=>{"use strict";var Q_=P0(),xs=jc(),u$=k0(),K_=gd(),p$=Ed(),d$=U0(),f$=D_(),J_=M_(),Y_=bs();aS.exports=dt;dt.prototype.validate=h$;dt.prototype.compile=v$;dt.prototype.addSchema=g$;dt.prototype.addMetaSchema=y$;dt.prototype.validateSchema=b$;dt.prototype.getSchema=_$;dt.prototype.removeSchema=E$;dt.prototype.addFormat=I$;dt.prototype.errorsText=C$;dt.prototype._addSchema=w$;dt.prototype._compile=T$;dt.prototype.compileAsync=F_();var Vc=W_();dt.prototype.addKeyword=Vc.add;dt.prototype.getKeyword=Vc.get;dt.prototype.removeKeyword=Vc.remove;dt.prototype.validateKeyword=Vc.validate;var eS=Mc();dt.ValidationError=eS.Validation;dt.MissingRefError=eS.MissingRef;dt.$dataMetaSchema=J_;var Hc="http://json-schema.org/draft-07/schema",X_=["removeAdditional","useDefaults","coerceTypes","strictDefaults"],m$=["/properties"];function dt(a){if(!(this instanceof dt))return new dt(a);a=this._opts=Y_.copy(a)||{},M$(this),this._schemas={},this._refs={},this._fragments={},this._formats=d$(a.format),this._cache=a.cache||new u$,this._loadingSchemas={},this._compilations=[],this.RULES=f$(),this._getId=R$(a),a.loopRequired=a.loopRequired||1/0,a.errorDataPath=="property"&&(a._errorDataPathProperty=!0),a.serialize===void 0&&(a.serialize=p$),this._metaOpts=j$(this),a.formats&&D$(this),a.keywords&&$$(this),A$(this),typeof a.meta=="object"&&this.addMetaSchema(a.meta),a.nullable&&this.addKeyword("nullable",{metaSchema:{type:"boolean"}}),N$(this)}function h$(a,e){var r;if(typeof a=="string"){if(r=this.getSchema(a),!r)throw new Error('no schema with key or ref "'+a+'"')}else{var t=this._addSchema(a);r=t.validate||this._compile(t)}var s=r(e);return r.$async!==!0&&(this.errors=r.errors),s}function v$(a,e){var r=this._addSchema(a,void 0,e);return r.validate||this._compile(r)}function g$(a,e,r,t){if(Array.isArray(a)){for(var s=0;s{lS.exports=cS;cS.sync=q$;var iS=require("fs");function L$(a,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var t=0;t{mS.exports=dS;dS.sync=F$;var pS=require("fs");function dS(a,e,r){pS.stat(a,function(t,s){r(t,t?!1:fS(s,e))})}function F$(a,e){return fS(pS.statSync(a),e)}function fS(a,e){return a.isFile()&&U$(a,e)}function U$(a,e){var r=a.mode,t=a.uid,s=a.gid,i=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),n=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),o=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=o|l,p=r&c||r&l&&s===n||r&o&&t===i||r&u&&i===0;return p}});var gS=q((Z3,vS)=>{var W3=require("fs"),Gc;process.platform==="win32"||global.TESTING_WINDOWS?Gc=uS():Gc=hS();vS.exports=Dd;Dd.sync=z$;function Dd(a,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(t,s){Dd(a,e||{},function(i,n){i?s(i):t(n)})})}Gc(a,e||{},function(t,s){t&&(t.code==="EACCES"||e&&e.ignoreErrors)&&(t=null,s=!1),r(t,s)})}function z$(a,e){try{return Gc.sync(a,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var wS=q((X3,ES)=>{var Pn=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",yS=require("path"),B$=Pn?";":":",bS=gS(),xS=a=>Object.assign(new Error(`not found: ${a}`),{code:"ENOENT"}),_S=(a,e)=>{let r=e.colon||B$,t=a.match(/\//)||Pn&&a.match(/\\/)?[""]:[...Pn?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],s=Pn?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",i=Pn?s.split(r):[""];return Pn&&a.indexOf(".")!==-1&&i[0]!==""&&i.unshift(""),{pathEnv:t,pathExt:i,pathExtExe:s}},SS=(a,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:t,pathExt:s,pathExtExe:i}=_S(a,e),n=[],o=c=>new Promise((u,p)=>{if(c===t.length)return e.all&&n.length?u(n):p(xS(a));let f=t[c],d=/^".*"$/.test(f)?f.slice(1,-1):f,v=yS.join(d,a),h=!d&&/^\.[\\\/]/.test(a)?a.slice(0,2)+v:v;u(l(h,c,0))}),l=(c,u,p)=>new Promise((f,d)=>{if(p===s.length)return f(o(u+1));let v=s[p];bS(c+v,{pathExt:i},(h,m)=>{if(!h&&m)if(e.all)n.push(c+v);else return f(c+v);return f(l(c,u,p+1))})});return r?o(0).then(c=>r(null,c),r):o(0)},H$=(a,e)=>{e=e||{};let{pathEnv:r,pathExt:t,pathExtExe:s}=_S(a,e),i=[];for(let n=0;n{"use strict";var TS=(a={})=>{let e=a.env||process.env;return(a.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(t=>t.toUpperCase()==="PATH")||"Path"};$d.exports=TS;$d.exports.default=TS});var CS=q((K3,kS)=>{"use strict";var PS=require("path"),V$=wS(),G$=RS();function OS(a,e){let r=a.options.env||process.env,t=process.cwd(),s=a.options.cwd!=null,i=s&&process.chdir!==void 0&&!process.chdir.disabled;if(i)try{process.chdir(a.options.cwd)}catch{}let n;try{n=V$.sync(a.command,{path:r[G$({env:r})],pathExt:e?PS.delimiter:void 0})}catch{}finally{i&&process.chdir(t)}return n&&(n=PS.resolve(s?a.options.cwd:"",n)),n}function W$(a){return OS(a)||OS(a,!0)}kS.exports=W$});var IS=q((J3,Md)=>{"use strict";var jd=/([()\][%!^"`<>&|;, *?])/g;function Z$(a){return a=a.replace(jd,"^$1"),a}function X$(a,e){return a=`${a}`,a=a.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),a=a.replace(/(?=(\\+?)?)\1$/,"$1$1"),a=`"${a}"`,a=a.replace(jd,"^$1"),e&&(a=a.replace(jd,"^$1")),a}Md.exports.command=Z$;Md.exports.argument=X$});var NS=q((Y3,AS)=>{"use strict";AS.exports=/^#!(.*)/});var $S=q((eU,DS)=>{"use strict";var Q$=NS();DS.exports=(a="")=>{let e=a.match(Q$);if(!e)return null;let[r,t]=e[0].replace(/#! ?/,"").split(" "),s=r.split("/").pop();return s==="env"?t:t?`${s} ${t}`:s}});var MS=q((tU,jS)=>{"use strict";var Ld=require("fs"),K$=$S();function J$(a){let r=Buffer.alloc(150),t;try{t=Ld.openSync(a,"r"),Ld.readSync(t,r,0,150,0),Ld.closeSync(t)}catch{}return K$(r.toString())}jS.exports=J$});var US=q((rU,FS)=>{"use strict";var Y$=require("path"),LS=CS(),qS=IS(),ej=MS(),tj=process.platform==="win32",rj=/\.(?:com|exe)$/i,aj=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function sj(a){a.file=LS(a);let e=a.file&&ej(a.file);return e?(a.args.unshift(a.file),a.command=e,LS(a)):a.file}function nj(a){if(!tj)return a;let e=sj(a),r=!rj.test(e);if(a.options.forceShell||r){let t=aj.test(e);a.command=Y$.normalize(a.command),a.command=qS.command(a.command),a.args=a.args.map(i=>qS.argument(i,t));let s=[a.command].concat(a.args).join(" ");a.args=["/d","/s","/c",`"${s}"`],a.command=process.env.comspec||"cmd.exe",a.options.windowsVerbatimArguments=!0}return a}function ij(a,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let t={command:a,args:e,options:r,file:void 0,original:{command:a,args:e}};return r.shell?t:nj(t)}FS.exports=ij});var HS=q((aU,BS)=>{"use strict";var qd=process.platform==="win32";function Fd(a,e){return Object.assign(new Error(`${e} ${a.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${a.command}`,path:a.command,spawnargs:a.args})}function oj(a,e){if(!qd)return;let r=a.emit;a.emit=function(t,s){if(t==="exit"){let i=zS(s,e);if(i)return r.call(a,"error",i)}return r.apply(a,arguments)}}function zS(a,e){return qd&&a===1&&!e.file?Fd(e.original,"spawn"):null}function cj(a,e){return qd&&a===1&&!e.file?Fd(e.original,"spawnSync"):null}BS.exports={hookChildProcess:oj,verifyENOENT:zS,verifyENOENTSync:cj,notFoundError:Fd}});var WS=q((sU,On)=>{"use strict";var VS=require("child_process"),Ud=US(),zd=HS();function GS(a,e,r){let t=Ud(a,e,r),s=VS.spawn(t.command,t.args,t.options);return zd.hookChildProcess(s,t),s}function lj(a,e,r){let t=Ud(a,e,r),s=VS.spawnSync(t.command,t.args,t.options);return s.error=s.error||zd.verifyENOENTSync(s.status,t),s}On.exports=GS;On.exports.spawn=GS;On.exports.sync=lj;On.exports._parse=Ud;On.exports._enoent=zd});function mj(){return typeof __dirname<"u"?__dirname:(0,wt.dirname)((0,KS.fileURLToPath)(vj.url))}function Xc(a){(0,Hd.mkdirSync)(a,{recursive:!0})}function Br(){return(0,wt.join)(hj,"..","..")}var wt,Bd,Hd,KS,vj,hj,Or,Vd,uU,pU,dU,fU,mU,Zc,hU,vU,gU,yU,Na=Bs(()=>{"use strict";wt=require("path"),Bd=require("os"),Hd=require("fs"),KS=require("url"),vj={};hj=mj(),Or=process.env.CLAUDE_MEM_DATA_DIR||(0,wt.join)((0,Bd.homedir)(),".claude-mem"),Vd=process.env.CLAUDE_CONFIG_DIR||(0,wt.join)((0,Bd.homedir)(),".claude"),uU=(0,wt.join)(Or,"archives"),pU=(0,wt.join)(Or,"logs"),dU=(0,wt.join)(Or,"trash"),fU=(0,wt.join)(Or,"backups"),mU=(0,wt.join)(Or,"settings.json"),Zc=(0,wt.join)(Or,"claude-mem.db"),hU=(0,wt.join)(Or,"vector-db"),vU=(0,wt.join)(Vd,"settings.json"),gU=(0,wt.join)(Vd,"commands"),yU=(0,wt.join)(Vd,"CLAUDE.md")});var Cn,In,JS,YS,eE,tE,Qc=Bs(()=>{"use strict";Cn=["bugfix","feature","refactor","discovery","decision","change"],In=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"],JS={bugfix:"\u{1F534}",feature:"\u{1F7E3}",refactor:"\u{1F504}",change:"\u2705",discovery:"\u{1F535}",decision:"\u2696\uFE0F","session-request":"\u{1F3AF}"},YS={discovery:"\u{1F50D}",change:"\u{1F6E0}\uFE0F",feature:"\u{1F6E0}\uFE0F",bugfix:"\u{1F6E0}\uFE0F",refactor:"\u{1F6E0}\uFE0F",decision:"\u2696\uFE0F"},eE=Cn.join(","),tE=In.join(",")});var Kc,Hr,zi=Bs(()=>{"use strict";Kc=require("fs");Qc();Hr=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:eE,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:tE,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"};static getAllDefaults(){return{...this.DEFAULTS}}static get(e){return process.env[e]||this.DEFAULTS[e]}static getInt(e){let r=this.get(e);return parseInt(r,10)}static getBool(e){return this.get(e)==="true"}static loadFromFile(e){if(!(0,Kc.existsSync)(e))return this.getAllDefaults();let r=(0,Kc.readFileSync)(e,"utf-8"),s=JSON.parse(r).env||{},i={...this.DEFAULTS};for(let n of Object.keys(this.DEFAULTS))s[n]!==void 0&&(i[n]=s[n]);return i}}});var Gd,Wd,W,Tt=Bs(()=>{"use strict";Gd=(i=>(i[i.DEBUG=0]="DEBUG",i[i.INFO=1]="INFO",i[i.WARN=2]="WARN",i[i.ERROR=3]="ERROR",i[i.SILENT=4]="SILENT",i))(Gd||{}),Wd=class{level;useColor;constructor(){let e=process.env.CLAUDE_MEM_LOG_LEVEL?.toUpperCase()||"INFO";this.level=Gd[e]??1,this.useColor=process.stdout.isTTY??!1}correlationId(e,r){return`obs-${e}-${r}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.level===0?`${e.message} +${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Object.keys(e);return r.length===0?"{}":r.length<=3?JSON.stringify(e):`{${r.length} keys: ${r.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,r){if(!r)return e;try{let t=typeof r=="string"?JSON.parse(r):r;if(e==="Bash"&&t.command){let s=t.command.length>50?t.command.substring(0,50)+"...":t.command;return`${e}(${s})`}if(e==="Read"&&t.file_path){let s=t.file_path.split("/").pop()||t.file_path;return`${e}(${s})`}if(e==="Edit"&&t.file_path){let s=t.file_path.split("/").pop()||t.file_path;return`${e}(${s})`}if(e==="Write"&&t.file_path){let s=t.file_path.split("/").pop()||t.file_path;return`${e}(${s})`}return e}catch{return e}}log(e,r,t,s,i){if(e0&&(p=` {${Object.entries(m).map(([g,b])=>`${g}=${b}`).join(", ")}}`)}let f=`[${n}] [${o}] [${l}] ${c}${t}${p}${u}`;e===3?console.error(f):console.log(f)}debug(e,r,t,s){this.log(0,e,r,t,s)}info(e,r,t,s){this.log(1,e,r,t,s)}warn(e,r,t,s){this.log(2,e,r,t,s)}error(e,r,t,s){this.log(3,e,r,t,s)}dataIn(e,r,t,s){this.info(e,`\u2192 ${r}`,t,s)}dataOut(e,r,t,s){this.info(e,`\u2190 ${r}`,t,s)}success(e,r,t,s){this.info(e,`\u2713 ${r}`,t,s)}failure(e,r,t,s){this.error(e,`\u2717 ${r}`,t,s)}timing(e,r,t,s){this.info(e,`\u23F1 ${r}`,s,{duration:`${t}ms`})}},W=new Wd});var sE,Da,Jc=Bs(()=>{"use strict";sE=gt(require("better-sqlite3"),1);Na();Tt();Da=class{db;constructor(){Xc(Or),this.db=new sE.default(Zc),this.db.pragma("journal_mode = WAL"),this.db.pragma("synchronous = NORMAL"),this.db.pragma("foreign_keys = ON"),this.initializeSchema(),this.ensureWorkerPortColumn(),this.ensurePromptTrackingColumns(),this.removeSessionSummariesUniqueConstraint(),this.addObservationHierarchicalFields(),this.makeObservationsTextNullable(),this.createUserPromptsTable(),this.ensureDiscoveryTokensColumn()}initializeSchema(){try{this.db.exec(` CREATE TABLE IF NOT EXISTS schema_versions ( id INTEGER PRIMARY KEY, version INTEGER UNIQUE NOT NULL, @@ -271,7 +269,17 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Obje FROM sdk_sessions WHERE project IS NOT NULL AND project != '' ORDER BY project ASC - `).all().map(t=>t.project)}getRecentSessionsWithStatus(e,r=3){return this.db.prepare(` + `).all().map(t=>t.project)}getLatestUserPrompt(e){return this.db.prepare(` + SELECT + up.*, + s.sdk_session_id, + s.project + FROM user_prompts up + JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id + WHERE up.claude_session_id = ? + ORDER BY up.created_at_epoch DESC + LIMIT 1 + `).get(e)}getRecentSessionsWithStatus(e,r=3){return this.db.prepare(` SELECT * FROM ( SELECT s.sdk_session_id, @@ -356,7 +364,7 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Obje UPDATE sdk_sessions SET sdk_session_id = ? WHERE id = ? AND sdk_session_id IS NULL - `).run(r,e).changes===0?(H.debug("DB","sdk_session_id already set, skipping update",{sessionId:e,sdkSessionId:r}),!1):!0}setWorkerPort(e,r){this.db.prepare(` + `).run(r,e).changes===0?(W.debug("DB","sdk_session_id already set, skipping update",{sessionId:e,sdkSessionId:r}),!1):!0}setWorkerPort(e,r){this.db.prepare(` UPDATE sdk_sessions SET worker_port = ? WHERE id = ? @@ -419,31 +427,31 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Obje WHERE up.id IN (${o}) ORDER BY up.created_at_epoch ${i} ${n} - `).all(...e)}getTimelineAroundTimestamp(e,r=10,t=10,s){return this.getTimelineAroundObservation(null,e,r,t,s)}getTimelineAroundObservation(e,r,t=10,s=10,i){let n=i?"AND project = ?":"",o=i?[i]:[],l,c;if(e!==null){let f=` + `).all(...e)}getTimelineAroundTimestamp(e,r=10,t=10,s){return this.getTimelineAroundObservation(null,e,r,t,s)}getTimelineAroundObservation(e,r,t=10,s=10,i){let n=i?"AND project = ?":"",o=i?[i]:[],l,c;if(e!==null){let d=` SELECT id, created_at_epoch FROM observations WHERE id <= ? ${n} ORDER BY id DESC LIMIT ? - `,h=` + `,v=` SELECT id, created_at_epoch FROM observations WHERE id >= ? ${n} ORDER BY id ASC LIMIT ? - `;try{let d=this.db.prepare(f).all(e,...o,t+1),v=this.db.prepare(h).all(e,...o,s+1);if(d.length===0&&v.length===0)return{observations:[],sessions:[],prompts:[]};l=d.length>0?d[d.length-1].created_at_epoch:r,c=v.length>0?v[v.length-1].created_at_epoch:r}catch(d){return console.error("[SessionStore] Error getting boundary observations:",d.message),{observations:[],sessions:[],prompts:[]}}}else{let f=` + `;try{let h=this.db.prepare(d).all(e,...o,t+1),m=this.db.prepare(v).all(e,...o,s+1);if(h.length===0&&m.length===0)return{observations:[],sessions:[],prompts:[]};l=h.length>0?h[h.length-1].created_at_epoch:r,c=m.length>0?m[m.length-1].created_at_epoch:r}catch(h){return console.error("[SessionStore] Error getting boundary observations:",h.message),{observations:[],sessions:[],prompts:[]}}}else{let d=` SELECT created_at_epoch FROM observations WHERE created_at_epoch <= ? ${n} ORDER BY created_at_epoch DESC LIMIT ? - `,h=` + `,v=` SELECT created_at_epoch FROM observations WHERE created_at_epoch >= ? ${n} ORDER BY created_at_epoch ASC LIMIT ? - `;try{let d=this.db.prepare(f).all(r,...o,t),v=this.db.prepare(h).all(r,...o,s+1);if(d.length===0&&v.length===0)return{observations:[],sessions:[],prompts:[]};l=d.length>0?d[d.length-1].created_at_epoch:r,c=v.length>0?v[v.length-1].created_at_epoch:r}catch(d){return console.error("[SessionStore] Error getting boundary timestamps:",d.message),{observations:[],sessions:[],prompts:[]}}}let u=` + `;try{let h=this.db.prepare(d).all(r,...o,t),m=this.db.prepare(v).all(r,...o,s+1);if(h.length===0&&m.length===0)return{observations:[],sessions:[],prompts:[]};l=h.length>0?h[h.length-1].created_at_epoch:r,c=m.length>0?m[m.length-1].created_at_epoch:r}catch(h){return console.error("[SessionStore] Error getting boundary timestamps:",h.message),{observations:[],sessions:[],prompts:[]}}}let u=` SELECT * FROM observations WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${n} @@ -453,13 +461,45 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Obje FROM session_summaries WHERE created_at_epoch >= ? AND created_at_epoch <= ? ${n} ORDER BY created_at_epoch ASC - `,m=` + `,f=` SELECT up.*, s.project, s.sdk_session_id FROM user_prompts up JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id WHERE up.created_at_epoch >= ? AND up.created_at_epoch <= ? ${n.replace("project","s.project")} ORDER BY up.created_at_epoch ASC - `;try{let f=this.db.prepare(u).all(l,c,...o),h=this.db.prepare(p).all(l,c,...o),d=this.db.prepare(m).all(l,c,...o);return{observations:f,sessions:h.map(v=>({id:v.id,sdk_session_id:v.sdk_session_id,project:v.project,request:v.request,completed:v.completed,next_steps:v.next_steps,created_at:v.created_at,created_at_epoch:v.created_at_epoch})),prompts:d.map(v=>({id:v.id,claude_session_id:v.claude_session_id,project:v.project,prompt:v.prompt_text,created_at:v.created_at,created_at_epoch:v.created_at_epoch}))}}catch(f){return console.error("[SessionStore] Error querying timeline records:",f.message),{observations:[],sessions:[],prompts:[]}}}close(){this.db.close()}};var DE=Nt(require("better-sqlite3"),1);var qc=class{db;constructor(e){e||(rc(Pr),e=tc),this.db=new DE.default(e),this.db.pragma("journal_mode = WAL"),this.ensureFTSTables()}ensureFTSTables(){try{if(this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name LIKE '%_fts'").all().some(t=>t.name==="observations_fts"||t.name==="session_summaries_fts"))return;console.error("[SessionSearch] Creating FTS5 tables..."),this.db.exec(` + `;try{let d=this.db.prepare(u).all(l,c,...o),v=this.db.prepare(p).all(l,c,...o),h=this.db.prepare(f).all(l,c,...o);return{observations:d,sessions:v.map(m=>({id:m.id,sdk_session_id:m.sdk_session_id,project:m.project,request:m.request,completed:m.completed,next_steps:m.next_steps,created_at:m.created_at,created_at_epoch:m.created_at_epoch})),prompts:h.map(m=>({id:m.id,claude_session_id:m.claude_session_id,project:m.project,prompt:m.prompt_text,created_at:m.created_at,created_at_epoch:m.created_at_epoch}))}}catch(d){return console.error("[SessionStore] Error querying timeline records:",d.message),{observations:[],sessions:[],prompts:[]}}}close(){this.db.close()}}});var Pw=q((Rz,Rw)=>{"use strict";var Tw=Object.getOwnPropertySymbols,E5=Object.prototype.hasOwnProperty,w5=Object.prototype.propertyIsEnumerable;function T5(a){if(a==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(a)}function R5(){try{if(!Object.assign)return!1;var a=new String("abc");if(a[5]="de",Object.getOwnPropertyNames(a)[0]==="5")return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;var t=Object.getOwnPropertyNames(e).map(function(i){return e[i]});if(t.join("")!=="0123456789")return!1;var s={};return"abcdefghijklmnopqrst".split("").forEach(function(i){s[i]=i}),Object.keys(Object.assign({},s)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}Rw.exports=R5()?Object.assign:function(a,e){for(var r,t=T5(a),s,i=1;i{(function(){"use strict";var a=Pw(),e=zp(),r={origin:"*",methods:"GET,HEAD,PUT,PATCH,POST,DELETE",preflightContinue:!1,optionsSuccessStatus:204};function t(v){return typeof v=="string"||v instanceof String}function s(v,h){if(Array.isArray(h)){for(var m=0;mM5});function k5(){let a=qs.default.join((0,Il.homedir)(),".claude-mem","settings.json"),e=Hr.loadFromFile(a);try{return{totalObservationCount:parseInt(e.CLAUDE_MEM_CONTEXT_OBSERVATIONS,10),fullObservationCount:parseInt(e.CLAUDE_MEM_CONTEXT_FULL_COUNT,10),sessionCount:parseInt(e.CLAUDE_MEM_CONTEXT_SESSION_COUNT,10),showReadTokens:e.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS==="true",showWorkTokens:e.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS==="true",showSavingsAmount:e.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT==="true",showSavingsPercent:e.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT==="true",observationTypes:new Set(e.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES.split(",").map(r=>r.trim()).filter(Boolean)),observationConcepts:new Set(e.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS.split(",").map(r=>r.trim()).filter(Boolean)),fullObservationField:e.CLAUDE_MEM_CONTEXT_FULL_FIELD,showLastSummary:e.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY==="true",showLastMessage:e.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE==="true"}}catch(r){return W.warn("WORKER","Failed to load context settings, using defaults",{},r),{totalObservationCount:50,fullObservationCount:5,sessionCount:10,showReadTokens:!0,showWorkTokens:!0,showSavingsAmount:!0,showSavingsPercent:!0,observationTypes:new Set(Cn),observationConcepts:new Set(In),fullObservationField:"narrative",showLastSummary:!0,showLastMessage:!1}}}function qw(a){if(!a)return[];try{let e=JSON.parse(a);return Array.isArray(e)?e:[]}catch{return[]}}function I5(a){return new Date(a).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0})}function A5(a){return new Date(a).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0})}function N5(a){return new Date(a).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric"})}function D5(a,e){return qs.default.isAbsolute(a)?qs.default.relative(e,a):a}function Cl(a,e,r,t){return e?t?[`${r}${a}:${se.reset} ${e}`,""]:[`**${a}**: ${e}`,""]:[]}function $5(a){return a.replace(/\//g,"-")}function j5(a){try{if(!(0,Gn.existsSync)(a))return{userMessage:"",assistantMessage:""};let e=(0,Gn.readFileSync)(a,"utf-8").trim();if(!e)return{userMessage:"",assistantMessage:""};let r=e.split(` +`).filter(s=>s.trim()),t="";for(let s=r.length-1;s>=0;s--)try{let i=r[s];if(!i.includes('"type":"assistant"'))continue;let n=JSON.parse(i);if(n.type==="assistant"&&n.message?.content&&Array.isArray(n.message.content)){let o="";for(let l of n.message.content)l.type==="text"&&(o+=l.text);if(o=o.replace(/[\s\S]*?<\/system-reminder>/g,"").trim(),o){t=o;break}}}catch{continue}return{userMessage:"",assistantMessage:t}}catch(e){return W.failure("WORKER","Failed to extract prior messages from transcript",{transcriptPath:a},e),{userMessage:"",assistantMessage:""}}}async function M5(a,e=!1){let r=k5(),t=a?.cwd??process.cwd(),s=t?qs.default.basename(t):"unknown-project",i=null;try{i=new Da}catch(y){if(y.code==="ERR_DLOPEN_FAILED"){try{(0,Gn.unlinkSync)(O5)}catch{}return console.error("Native module rebuild needed - restart Claude Code to auto-fix"),""}throw y}let n=Array.from(r.observationTypes),o=n.map(()=>"?").join(","),l=Array.from(r.observationConcepts),c=l.map(()=>"?").join(","),u=i.db.prepare(` + SELECT + id, sdk_session_id, type, title, subtitle, narrative, + facts, concepts, files_read, files_modified, discovery_tokens, + created_at, created_at_epoch + FROM observations + WHERE project = ? + AND type IN (${o}) + AND EXISTS ( + SELECT 1 FROM json_each(concepts) + WHERE value IN (${c}) + ) + ORDER BY created_at_epoch DESC + LIMIT ? + `).all(s,...n,...l,r.totalObservationCount),p=i.db.prepare(` + SELECT id, sdk_session_id, request, investigated, learned, completed, next_steps, created_at, created_at_epoch + FROM session_summaries + WHERE project = ? + ORDER BY created_at_epoch DESC + LIMIT ? + `).all(s,r.sessionCount+C5),f="",d="";if(r.showLastMessage&&u.length>0)try{let y=a?.session_id,g=u.find(b=>b.sdk_session_id!==y);if(g){let b=g.sdk_session_id,w=$5(t),P=qs.default.join((0,Il.homedir)(),".claude","projects",w,`${b}.jsonl`),T=j5(P);f=T.userMessage,d=T.assistantMessage}}catch{}if(u.length===0&&p.length===0)return i?.close(),e?` +${se.bright}${se.cyan}[${s}] recent context${se.reset} +${se.gray}${"\u2500".repeat(60)}${se.reset} + +${se.dim}No previous sessions found for this project yet.${se.reset} +`:`# [${s}] recent context + +No previous sessions found for this project yet.`;let v=p.slice(0,r.sessionCount),h=u,m=[];if(e?(m.push(""),m.push(`${se.bright}${se.cyan}[${s}] recent context${se.reset}`),m.push(`${se.gray}${"\u2500".repeat(60)}${se.reset}`),m.push("")):(m.push(`# [${s}] recent context`),m.push("")),h.length>0){e?m.push(`${se.dim}Legend: \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u2696\uFE0F decision${se.reset}`):m.push("**Legend:** \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u2696\uFE0F decision"),m.push(""),e?(m.push(`${se.bright}\u{1F4A1} Column Key${se.reset}`),m.push(`${se.dim} Read: Tokens to read this observation (cost to learn it now)${se.reset}`),m.push(`${se.dim} Work: Tokens spent on work that produced this record (\u{1F50D} research, \u{1F6E0}\uFE0F building, \u2696\uFE0F deciding)${se.reset}`)):(m.push("\u{1F4A1} **Column Key**:"),m.push("- **Read**: Tokens to read this observation (cost to learn it now)"),m.push("- **Work**: Tokens spent on work that produced this record (\u{1F50D} research, \u{1F6E0}\uFE0F building, \u2696\uFE0F deciding)")),m.push(""),e?(m.push(`${se.dim}\u{1F4A1} Context Index: This semantic index (titles, types, files, tokens) is usually sufficient to understand past work.${se.reset}`),m.push(""),m.push(`${se.dim}When you need implementation details, rationale, or debugging context:${se.reset}`),m.push(`${se.dim} - Use the mem-search skill to fetch full observations on-demand${se.reset}`),m.push(`${se.dim} - Critical types (\u{1F534} bugfix, \u2696\uFE0F decision) often need detailed fetching${se.reset}`),m.push(`${se.dim} - Trust this index over re-reading code for past decisions and learnings${se.reset}`)):(m.push("\u{1F4A1} **Context Index:** This semantic index (titles, types, files, tokens) is usually sufficient to understand past work."),m.push(""),m.push("When you need implementation details, rationale, or debugging context:"),m.push("- Use the mem-search skill to fetch full observations on-demand"),m.push("- Critical types (\u{1F534} bugfix, \u2696\uFE0F decision) often need detailed fetching"),m.push("- Trust this index over re-reading code for past decisions and learnings")),m.push("");let y=u.length,g=u.reduce((B,H)=>{let K=(H.title?.length||0)+(H.subtitle?.length||0)+(H.narrative?.length||0)+JSON.stringify(H.facts||[]).length;return B+Math.ceil(K/Lw)},0),b=u.reduce((B,H)=>B+(H.discovery_tokens||0),0),w=b-g,P=b>0?Math.round(w/b*100):0,T=r.showReadTokens||r.showWorkTokens||r.showSavingsAmount||r.showSavingsPercent;if(T)if(e){if(m.push(`${se.bright}${se.cyan}\u{1F4CA} Context Economics${se.reset}`),m.push(`${se.dim} Loading: ${y} observations (${g.toLocaleString()} tokens to read)${se.reset}`),m.push(`${se.dim} Work investment: ${b.toLocaleString()} tokens spent on research, building, and decisions${se.reset}`),b>0&&(r.showSavingsAmount||r.showSavingsPercent)){let B=" Your savings: ";r.showSavingsAmount&&r.showSavingsPercent?B+=`${w.toLocaleString()} tokens (${P}% reduction from reuse)`:r.showSavingsAmount?B+=`${w.toLocaleString()} tokens`:B+=`${P}% reduction from reuse`,m.push(`${se.green}${B}${se.reset}`)}m.push("")}else{if(m.push("\u{1F4CA} **Context Economics**:"),m.push(`- Loading: ${y} observations (${g.toLocaleString()} tokens to read)`),m.push(`- Work investment: ${b.toLocaleString()} tokens spent on research, building, and decisions`),b>0&&(r.showSavingsAmount||r.showSavingsPercent)){let B="- Your savings: ";r.showSavingsAmount&&r.showSavingsPercent?B+=`${w.toLocaleString()} tokens (${P}% reduction from reuse)`:r.showSavingsAmount?B+=`${w.toLocaleString()} tokens`:B+=`${P}% reduction from reuse`,m.push(B)}m.push("")}let C=p[0]?.id,D=v.map((B,H)=>{let K=H===0?null:p[H+1];return{...B,displayEpoch:K?K.created_at_epoch:B.created_at_epoch,displayTime:K?K.created_at:B.created_at,shouldShowLink:B.id!==C}}),A=new Set(u.slice(0,r.fullObservationCount).map(B=>B.id)),j=[...h.map(B=>({type:"observation",data:B})),...D.map(B=>({type:"summary",data:B}))];j.sort((B,H)=>{let K=B.type==="observation"?B.data.created_at_epoch:B.data.displayEpoch,X=H.type==="observation"?H.data.created_at_epoch:H.data.displayEpoch;return K-X});let N=new Map;for(let B of j){let H=B.type==="observation"?B.data.created_at:B.data.displayTime,K=N5(H);N.has(K)||N.set(K,[]),N.get(K).push(B)}let k=Array.from(N.entries()).sort((B,H)=>{let K=new Date(B[0]).getTime(),X=new Date(H[0]).getTime();return K-X});for(let[B,H]of k){e?(m.push(`${se.bright}${se.cyan}${B}${se.reset}`),m.push("")):(m.push(`### ${B}`),m.push(""));let K=null,X="",V=!1;for(let ae of H)if(ae.type==="summary"){V&&(m.push(""),V=!1,K=null,X="");let ee=ae.data,Le=`${ee.request||"Session started"} (${I5(ee.displayTime)})`,he=ee.shouldShowLink?`claude-mem://session-summary/${ee.id}`:"";if(e){let Se=he?`${se.dim}[${he}]${se.reset}`:"";m.push(`\u{1F3AF} ${se.yellow}#S${ee.id}${se.reset} ${Le} ${Se}`)}else{let Se=he?` [\u2192](${he})`:"";m.push(`**\u{1F3AF} #S${ee.id}** ${Le}${Se}`)}m.push("")}else{let ee=ae.data,Le=qw(ee.files_modified),he=Le.length>0&&Le[0]?D5(Le[0],t):"General";he!==K&&(V&&m.push(""),e?m.push(`${se.dim}${he}${se.reset}`):m.push(`**${he}**`),e||(m.push("| ID | Time | T | Title | Read | Work |"),m.push("|----|------|---|-------|------|------|")),K=he,V=!0,X="");let Se=A5(ee.created_at),be=ee.title||"Untitled",Te=JS[ee.type]||"\u2022",U=(ee.title?.length||0)+(ee.subtitle?.length||0)+(ee.narrative?.length||0)+JSON.stringify(ee.facts||[]).length,G=Math.ceil(U/Lw),re=ee.discovery_tokens||0,pe=YS[ee.type]||"\u{1F50D}",Z=re>0?`${pe} ${re.toLocaleString()}`:"-",Q=Se!==X,ce=Q?Se:"";if(X=Se,A.has(ee.id)){let fe=r.fullObservationField==="narrative"?ee.narrative:ee.facts?qw(ee.facts).join(` +`):null;if(e){let je=Q?`${se.dim}${Se}${se.reset}`:" ".repeat(Se.length),Ve=r.showReadTokens&&G>0?`${se.dim}(~${G}t)${se.reset}`:"",Ee=r.showWorkTokens&&re>0?`${se.dim}(${pe} ${re.toLocaleString()}t)${se.reset}`:"";m.push(` ${se.dim}#${ee.id}${se.reset} ${je} ${Te} ${se.bright}${be}${se.reset}`),fe&&m.push(` ${se.dim}${fe}${se.reset}`),(Ve||Ee)&&m.push(` ${Ve} ${Ee}`),m.push("")}else{V&&(m.push(""),V=!1),m.push(`**#${ee.id}** ${ce||"\u2033"} ${Te} **${be}**`),fe&&(m.push(""),m.push(fe),m.push(""));let je=[];r.showReadTokens&&je.push(`Read: ~${G}`),r.showWorkTokens&&je.push(`Work: ${Z}`),je.length>0&&m.push(je.join(", ")),m.push(""),K=null}}else if(e){let fe=Q?`${se.dim}${Se}${se.reset}`:" ".repeat(Se.length),je=r.showReadTokens&&G>0?`${se.dim}(~${G}t)${se.reset}`:"",Ve=r.showWorkTokens&&re>0?`${se.dim}(${pe} ${re.toLocaleString()}t)${se.reset}`:"";m.push(` ${se.dim}#${ee.id}${se.reset} ${fe} ${Te} ${be} ${je} ${Ve}`)}else{let fe=r.showReadTokens?`~${G}`:"",je=r.showWorkTokens?Z:"";m.push(`| #${ee.id} | ${ce||"\u2033"} | ${Te} | ${be} | ${fe} | ${je} |`)}}V&&m.push("")}let O=p[0],$=u[0];if(r.showLastSummary&&O&&(O.investigated||O.learned||O.completed||O.next_steps)&&(!$||O.created_at_epoch>$.created_at_epoch)&&(m.push(...Cl("Investigated",O.investigated,se.blue,e)),m.push(...Cl("Learned",O.learned,se.yellow,e)),m.push(...Cl("Completed",O.completed,se.green,e)),m.push(...Cl("Next Steps",O.next_steps,se.magenta,e))),d&&(m.push(""),m.push("---"),m.push(""),e?(m.push(`${se.bright}${se.magenta}\u{1F4CB} Previously${se.reset}`),m.push(""),m.push(`${se.dim}A: ${d}${se.reset}`)):(m.push("**\u{1F4CB} Previously**"),m.push(""),m.push(`A: ${d}`)),m.push("")),T&&b>0&&w>0){let B=Math.round(b/1e3);m.push(""),e?m.push(`${se.dim}\u{1F4B0} Access ${B}k tokens of past research & decisions for just ${g.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.${se.reset}`):m.push(`\u{1F4B0} Access ${B}k tokens of past research & decisions for just ${g.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.`)}}return i?.close(),m.join(` +`).trimEnd()}var qs,Il,Gn,O5,Lw,C5,se,Sf=Bs(()=>{"use strict";qs=gt(require("path"),1),Il=require("os"),Gn=require("fs");Jc();Qc();Tt();zi();O5=qs.default.join((0,Il.homedir)(),".claude","plugins","marketplaces","thedotmack","plugin",".install-version");Lw=4,C5=1,se={reset:"\x1B[0m",bright:"\x1B[1m",dim:"\x1B[2m",cyan:"\x1B[36m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",gray:"\x1B[90m",red:"\x1B[31m"}});var L5={};Vl(L5,{WorkerService:()=>$l});module.exports=r1(L5);var Hw=gt(Gp(),1),Vw=gt(require("path"),1);var S={};Vl(S,{BRAND:()=>T2,DIRTY:()=>rs,EMPTY_PATH:()=>a2,INVALID:()=>Re,NEVER:()=>lN,OK:()=>Ot,ParseStatus:()=>Et,Schema:()=>He,ZodAny:()=>Oa,ZodArray:()=>sa,ZodBigInt:()=>ss,ZodBoolean:()=>ns,ZodBranded:()=>$i,ZodCatch:()=>vs,ZodDate:()=>is,ZodDefault:()=>hs,ZodDiscriminatedUnion:()=>vc,ZodEffects:()=>cr,ZodEnum:()=>fs,ZodError:()=>Ft,ZodFirstPartyTypeKind:()=>Oe,ZodFunction:()=>yc,ZodIntersection:()=>us,ZodIssueCode:()=>Y,ZodLazy:()=>ps,ZodLiteral:()=>ds,ZodMap:()=>En,ZodNaN:()=>Tn,ZodNativeEnum:()=>ms,ZodNever:()=>Pr,ZodNull:()=>cs,ZodNullable:()=>Ur,ZodNumber:()=>as,ZodObject:()=>Ut,ZodOptional:()=>ir,ZodParsedType:()=>ue,ZodPipeline:()=>ji,ZodPromise:()=>ka,ZodReadonly:()=>gs,ZodRecord:()=>gc,ZodSchema:()=>He,ZodSet:()=>wn,ZodString:()=>Pa,ZodSymbol:()=>_n,ZodTransformer:()=>cr,ZodTuple:()=>Fr,ZodType:()=>He,ZodUndefined:()=>os,ZodUnion:()=>ls,ZodUnknown:()=>aa,ZodVoid:()=>Sn,addIssueToContext:()=>ne,any:()=>D2,array:()=>L2,bigint:()=>k2,boolean:()=>Lx,coerce:()=>cN,custom:()=>$x,date:()=>C2,datetimeRegex:()=>Nx,defaultErrorMap:()=>ta,discriminatedUnion:()=>z2,effect:()=>eN,enum:()=>K2,function:()=>Z2,getErrorMap:()=>yn,getParsedType:()=>qr,instanceof:()=>P2,intersection:()=>B2,isAborted:()=>mc,isAsync:()=>bn,isDirty:()=>hc,isValid:()=>Ra,late:()=>R2,lazy:()=>X2,literal:()=>Q2,makeIssue:()=>Di,map:()=>G2,nan:()=>O2,nativeEnum:()=>J2,never:()=>j2,null:()=>N2,nullable:()=>rN,number:()=>Mx,object:()=>q2,objectUtil:()=>Wp,oboolean:()=>oN,onumber:()=>iN,optional:()=>tN,ostring:()=>nN,pipeline:()=>sN,preprocess:()=>aN,promise:()=>Y2,quotelessJson:()=>e2,record:()=>V2,set:()=>W2,setErrorMap:()=>r2,strictObject:()=>F2,string:()=>jx,symbol:()=>I2,transformer:()=>eN,tuple:()=>H2,undefined:()=>A2,union:()=>U2,unknown:()=>$2,util:()=>Ze,void:()=>M2});var Ze;(function(a){a.assertEqual=s=>{};function e(s){}a.assertIs=e;function r(s){throw new Error}a.assertNever=r,a.arrayToEnum=s=>{let i={};for(let n of s)i[n]=n;return i},a.getValidEnumValues=s=>{let i=a.objectKeys(s).filter(o=>typeof s[s[o]]!="number"),n={};for(let o of i)n[o]=s[o];return a.objectValues(n)},a.objectValues=s=>a.objectKeys(s).map(function(i){return s[i]}),a.objectKeys=typeof Object.keys=="function"?s=>Object.keys(s):s=>{let i=[];for(let n in s)Object.prototype.hasOwnProperty.call(s,n)&&i.push(n);return i},a.find=(s,i)=>{for(let n of s)if(i(n))return n},a.isInteger=typeof Number.isInteger=="function"?s=>Number.isInteger(s):s=>typeof s=="number"&&Number.isFinite(s)&&Math.floor(s)===s;function t(s,i=" | "){return s.map(n=>typeof n=="string"?`'${n}'`:n).join(i)}a.joinValues=t,a.jsonStringifyReplacer=(s,i)=>typeof i=="bigint"?i.toString():i})(Ze||(Ze={}));var Wp;(function(a){a.mergeShapes=(e,r)=>({...e,...r})})(Wp||(Wp={}));var ue=Ze.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),qr=a=>{switch(typeof a){case"undefined":return ue.undefined;case"string":return ue.string;case"number":return Number.isNaN(a)?ue.nan:ue.number;case"boolean":return ue.boolean;case"function":return ue.function;case"bigint":return ue.bigint;case"symbol":return ue.symbol;case"object":return Array.isArray(a)?ue.array:a===null?ue.null:a.then&&typeof a.then=="function"&&a.catch&&typeof a.catch=="function"?ue.promise:typeof Map<"u"&&a instanceof Map?ue.map:typeof Set<"u"&&a instanceof Set?ue.set:typeof Date<"u"&&a instanceof Date?ue.date:ue.object;default:return ue.unknown}};var Y=Ze.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),e2=a=>JSON.stringify(a,null,2).replace(/"([^"]+)":/g,"$1:"),Ft=class a extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=t=>{this.issues=[...this.issues,t]},this.addIssues=(t=[])=>{this.issues=[...this.issues,...t]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=e}format(e){let r=e||function(i){return i.message},t={_errors:[]},s=i=>{for(let n of i.issues)if(n.code==="invalid_union")n.unionErrors.map(s);else if(n.code==="invalid_return_type")s(n.returnTypeError);else if(n.code==="invalid_arguments")s(n.argumentsError);else if(n.path.length===0)t._errors.push(r(n));else{let o=t,l=0;for(;lr.message){let r={},t=[];for(let s of this.issues)if(s.path.length>0){let i=s.path[0];r[i]=r[i]||[],r[i].push(e(s))}else t.push(e(s));return{formErrors:t,fieldErrors:r}}get formErrors(){return this.flatten()}};Ft.create=a=>new Ft(a);var t2=(a,e)=>{let r;switch(a.code){case Y.invalid_type:a.received===ue.undefined?r="Required":r=`Expected ${a.expected}, received ${a.received}`;break;case Y.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(a.expected,Ze.jsonStringifyReplacer)}`;break;case Y.unrecognized_keys:r=`Unrecognized key(s) in object: ${Ze.joinValues(a.keys,", ")}`;break;case Y.invalid_union:r="Invalid input";break;case Y.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${Ze.joinValues(a.options)}`;break;case Y.invalid_enum_value:r=`Invalid enum value. Expected ${Ze.joinValues(a.options)}, received '${a.received}'`;break;case Y.invalid_arguments:r="Invalid function arguments";break;case Y.invalid_return_type:r="Invalid function return type";break;case Y.invalid_date:r="Invalid date";break;case Y.invalid_string:typeof a.validation=="object"?"includes"in a.validation?(r=`Invalid input: must include "${a.validation.includes}"`,typeof a.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${a.validation.position}`)):"startsWith"in a.validation?r=`Invalid input: must start with "${a.validation.startsWith}"`:"endsWith"in a.validation?r=`Invalid input: must end with "${a.validation.endsWith}"`:Ze.assertNever(a.validation):a.validation!=="regex"?r=`Invalid ${a.validation}`:r="Invalid";break;case Y.too_small:a.type==="array"?r=`Array must contain ${a.exact?"exactly":a.inclusive?"at least":"more than"} ${a.minimum} element(s)`:a.type==="string"?r=`String must contain ${a.exact?"exactly":a.inclusive?"at least":"over"} ${a.minimum} character(s)`:a.type==="number"?r=`Number must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${a.minimum}`:a.type==="bigint"?r=`Number must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${a.minimum}`:a.type==="date"?r=`Date must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(a.minimum))}`:r="Invalid input";break;case Y.too_big:a.type==="array"?r=`Array must contain ${a.exact?"exactly":a.inclusive?"at most":"less than"} ${a.maximum} element(s)`:a.type==="string"?r=`String must contain ${a.exact?"exactly":a.inclusive?"at most":"under"} ${a.maximum} character(s)`:a.type==="number"?r=`Number must be ${a.exact?"exactly":a.inclusive?"less than or equal to":"less than"} ${a.maximum}`:a.type==="bigint"?r=`BigInt must be ${a.exact?"exactly":a.inclusive?"less than or equal to":"less than"} ${a.maximum}`:a.type==="date"?r=`Date must be ${a.exact?"exactly":a.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(a.maximum))}`:r="Invalid input";break;case Y.custom:r="Invalid input";break;case Y.invalid_intersection_types:r="Intersection results could not be merged";break;case Y.not_multiple_of:r=`Number must be a multiple of ${a.multipleOf}`;break;case Y.not_finite:r="Number must be finite";break;default:r=e.defaultError,Ze.assertNever(a)}return{message:r}},ta=t2;var Ox=ta;function r2(a){Ox=a}function yn(){return Ox}var Di=a=>{let{data:e,path:r,errorMaps:t,issueData:s}=a,i=[...r,...s.path||[]],n={...s,path:i};if(s.message!==void 0)return{...s,path:i,message:s.message};let o="",l=t.filter(c=>!!c).slice().reverse();for(let c of l)o=c(n,{data:e,defaultError:o}).message;return{...s,path:i,message:o}},a2=[];function ne(a,e){let r=yn(),t=Di({issueData:e,data:a.data,path:a.path,errorMaps:[a.common.contextualErrorMap,a.schemaErrorMap,r,r===ta?void 0:ta].filter(s=>!!s)});a.common.issues.push(t)}var Et=class a{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,r){let t=[];for(let s of r){if(s.status==="aborted")return Re;s.status==="dirty"&&e.dirty(),t.push(s.value)}return{status:e.value,value:t}}static async mergeObjectAsync(e,r){let t=[];for(let s of r){let i=await s.key,n=await s.value;t.push({key:i,value:n})}return a.mergeObjectSync(e,t)}static mergeObjectSync(e,r){let t={};for(let s of r){let{key:i,value:n}=s;if(i.status==="aborted"||n.status==="aborted")return Re;i.status==="dirty"&&e.dirty(),n.status==="dirty"&&e.dirty(),i.value!=="__proto__"&&(typeof n.value<"u"||s.alwaysSet)&&(t[i.value]=n.value)}return{status:e.value,value:t}}},Re=Object.freeze({status:"aborted"}),rs=a=>({status:"dirty",value:a}),Ot=a=>({status:"valid",value:a}),mc=a=>a.status==="aborted",hc=a=>a.status==="dirty",Ra=a=>a.status==="valid",bn=a=>typeof Promise<"u"&&a instanceof Promise;var ge;(function(a){a.errToObj=e=>typeof e=="string"?{message:e}:e||{},a.toString=e=>typeof e=="string"?e:e?.message})(ge||(ge={}));var or=class{constructor(e,r,t,s){this._cachedPath=[],this.parent=e,this.data=r,this._path=t,this._key=s}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},kx=(a,e)=>{if(Ra(e))return{success:!0,data:e.value};if(!a.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let r=new Ft(a.common.issues);return this._error=r,this._error}}};function Fe(a){if(!a)return{};let{errorMap:e,invalid_type_error:r,required_error:t,description:s}=a;if(e&&(r||t))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:s}:{errorMap:(n,o)=>{let{message:l}=a;return n.code==="invalid_enum_value"?{message:l??o.defaultError}:typeof o.data>"u"?{message:l??t??o.defaultError}:n.code!=="invalid_type"?{message:o.defaultError}:{message:l??r??o.defaultError}},description:s}}var He=class{get description(){return this._def.description}_getType(e){return qr(e.data)}_getOrReturnCtx(e,r){return r||{common:e.parent.common,data:e.data,parsedType:qr(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new Et,ctx:{common:e.parent.common,data:e.data,parsedType:qr(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let r=this._parse(e);if(bn(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(e){let r=this._parse(e);return Promise.resolve(r)}parse(e,r){let t=this.safeParse(e,r);if(t.success)return t.data;throw t.error}safeParse(e,r){let t={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:qr(e)},s=this._parseSync({data:e,path:t.path,parent:t});return kx(t,s)}"~validate"(e){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:qr(e)};if(!this["~standard"].async)try{let t=this._parseSync({data:e,path:[],parent:r});return Ra(t)?{value:t.value}:{issues:r.common.issues}}catch(t){t?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),r.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:r}).then(t=>Ra(t)?{value:t.value}:{issues:r.common.issues})}async parseAsync(e,r){let t=await this.safeParseAsync(e,r);if(t.success)return t.data;throw t.error}async safeParseAsync(e,r){let t={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:qr(e)},s=this._parse({data:e,path:t.path,parent:t}),i=await(bn(s)?s:Promise.resolve(s));return kx(t,i)}refine(e,r){let t=s=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(s):r;return this._refinement((s,i)=>{let n=e(s),o=()=>i.addIssue({code:Y.custom,...t(s)});return typeof Promise<"u"&&n instanceof Promise?n.then(l=>l?!0:(o(),!1)):n?!0:(o(),!1)})}refinement(e,r){return this._refinement((t,s)=>e(t)?!0:(s.addIssue(typeof r=="function"?r(t,s):r),!1))}_refinement(e){return new cr({schema:this,typeName:Oe.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:r=>this["~validate"](r)}}optional(){return ir.create(this,this._def)}nullable(){return Ur.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return sa.create(this)}promise(){return ka.create(this,this._def)}or(e){return ls.create([this,e],this._def)}and(e){return us.create(this,e,this._def)}transform(e){return new cr({...Fe(this._def),schema:this,typeName:Oe.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let r=typeof e=="function"?e:()=>e;return new hs({...Fe(this._def),innerType:this,defaultValue:r,typeName:Oe.ZodDefault})}brand(){return new $i({typeName:Oe.ZodBranded,type:this,...Fe(this._def)})}catch(e){let r=typeof e=="function"?e:()=>e;return new vs({...Fe(this._def),innerType:this,catchValue:r,typeName:Oe.ZodCatch})}describe(e){let r=this.constructor;return new r({...this._def,description:e})}pipe(e){return ji.create(this,e)}readonly(){return gs.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},s2=/^c[^\s-]{8,}$/i,n2=/^[0-9a-z]+$/,i2=/^[0-9A-HJKMNP-TV-Z]{26}$/i,o2=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,c2=/^[a-z0-9_-]{21}$/i,l2=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,u2=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,p2=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,d2="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Zp,f2=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,m2=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,h2=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,v2=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,g2=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,y2=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Ix="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",b2=new RegExp(`^${Ix}$`);function Ax(a){let e="[0-5]\\d";a.precision?e=`${e}\\.\\d{${a.precision}}`:a.precision==null&&(e=`${e}(\\.\\d+)?`);let r=a.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${r}`}function x2(a){return new RegExp(`^${Ax(a)}$`)}function Nx(a){let e=`${Ix}T${Ax(a)}`,r=[];return r.push(a.local?"Z?":"Z"),a.offset&&r.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${r.join("|")})`,new RegExp(`^${e}$`)}function _2(a,e){return!!((e==="v4"||!e)&&f2.test(a)||(e==="v6"||!e)&&h2.test(a))}function S2(a,e){if(!l2.test(a))return!1;try{let[r]=a.split(".");if(!r)return!1;let t=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),s=JSON.parse(atob(t));return!(typeof s!="object"||s===null||"typ"in s&&s?.typ!=="JWT"||!s.alg||e&&s.alg!==e)}catch{return!1}}function E2(a,e){return!!((e==="v4"||!e)&&m2.test(a)||(e==="v6"||!e)&&v2.test(a))}var Pa=class a extends He{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==ue.string){let i=this._getOrReturnCtx(e);return ne(i,{code:Y.invalid_type,expected:ue.string,received:i.parsedType}),Re}let t=new Et,s;for(let i of this._def.checks)if(i.kind==="min")e.data.lengthi.value&&(s=this._getOrReturnCtx(e,s),ne(s,{code:Y.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),t.dirty());else if(i.kind==="length"){let n=e.data.length>i.value,o=e.data.lengthe.test(s),{validation:r,code:Y.invalid_string,...ge.errToObj(t)})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...ge.errToObj(e)})}url(e){return this._addCheck({kind:"url",...ge.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...ge.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...ge.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...ge.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...ge.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...ge.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...ge.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...ge.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...ge.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...ge.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...ge.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...ge.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...ge.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...ge.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...ge.errToObj(e)})}regex(e,r){return this._addCheck({kind:"regex",regex:e,...ge.errToObj(r)})}includes(e,r){return this._addCheck({kind:"includes",value:e,position:r?.position,...ge.errToObj(r?.message)})}startsWith(e,r){return this._addCheck({kind:"startsWith",value:e,...ge.errToObj(r)})}endsWith(e,r){return this._addCheck({kind:"endsWith",value:e,...ge.errToObj(r)})}min(e,r){return this._addCheck({kind:"min",value:e,...ge.errToObj(r)})}max(e,r){return this._addCheck({kind:"max",value:e,...ge.errToObj(r)})}length(e,r){return this._addCheck({kind:"length",value:e,...ge.errToObj(r)})}nonempty(e){return this.min(1,ge.errToObj(e))}trim(){return new a({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new a({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new a({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxLength(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew Pa({checks:[],typeName:Oe.ZodString,coerce:a?.coerce??!1,...Fe(a)});function w2(a,e){let r=(a.toString().split(".")[1]||"").length,t=(e.toString().split(".")[1]||"").length,s=r>t?r:t,i=Number.parseInt(a.toFixed(s).replace(".","")),n=Number.parseInt(e.toFixed(s).replace(".",""));return i%n/10**s}var as=class a extends He{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==ue.number){let i=this._getOrReturnCtx(e);return ne(i,{code:Y.invalid_type,expected:ue.number,received:i.parsedType}),Re}let t,s=new Et;for(let i of this._def.checks)i.kind==="int"?Ze.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),ne(t,{code:Y.invalid_type,expected:"integer",received:"float",message:i.message}),s.dirty()):i.kind==="min"?(i.inclusive?e.datai.value:e.data>=i.value)&&(t=this._getOrReturnCtx(e,t),ne(t,{code:Y.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),s.dirty()):i.kind==="multipleOf"?w2(e.data,i.value)!==0&&(t=this._getOrReturnCtx(e,t),ne(t,{code:Y.not_multiple_of,multipleOf:i.value,message:i.message}),s.dirty()):i.kind==="finite"?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),ne(t,{code:Y.not_finite,message:i.message}),s.dirty()):Ze.assertNever(i);return{status:s.value,value:e.data}}gte(e,r){return this.setLimit("min",e,!0,ge.toString(r))}gt(e,r){return this.setLimit("min",e,!1,ge.toString(r))}lte(e,r){return this.setLimit("max",e,!0,ge.toString(r))}lt(e,r){return this.setLimit("max",e,!1,ge.toString(r))}setLimit(e,r,t,s){return new a({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:t,message:ge.toString(s)}]})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:ge.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:ge.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:ge.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:ge.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:ge.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:ge.toString(r)})}finite(e){return this._addCheck({kind:"finite",message:ge.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:ge.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:ge.toString(e)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuee.kind==="int"||e.kind==="multipleOf"&&Ze.isInteger(e.value))}get isFinite(){let e=null,r=null;for(let t of this._def.checks){if(t.kind==="finite"||t.kind==="int"||t.kind==="multipleOf")return!0;t.kind==="min"?(r===null||t.value>r)&&(r=t.value):t.kind==="max"&&(e===null||t.valuenew as({checks:[],typeName:Oe.ZodNumber,coerce:a?.coerce||!1,...Fe(a)});var ss=class a extends He{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==ue.bigint)return this._getInvalidInput(e);let t,s=new Et;for(let i of this._def.checks)i.kind==="min"?(i.inclusive?e.datai.value:e.data>=i.value)&&(t=this._getOrReturnCtx(e,t),ne(t,{code:Y.too_big,type:"bigint",maximum:i.value,inclusive:i.inclusive,message:i.message}),s.dirty()):i.kind==="multipleOf"?e.data%i.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),ne(t,{code:Y.not_multiple_of,multipleOf:i.value,message:i.message}),s.dirty()):Ze.assertNever(i);return{status:s.value,value:e.data}}_getInvalidInput(e){let r=this._getOrReturnCtx(e);return ne(r,{code:Y.invalid_type,expected:ue.bigint,received:r.parsedType}),Re}gte(e,r){return this.setLimit("min",e,!0,ge.toString(r))}gt(e,r){return this.setLimit("min",e,!1,ge.toString(r))}lte(e,r){return this.setLimit("max",e,!0,ge.toString(r))}lt(e,r){return this.setLimit("max",e,!1,ge.toString(r))}setLimit(e,r,t,s){return new a({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:t,message:ge.toString(s)}]})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:ge.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:ge.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:ge.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:ge.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:ge.toString(r)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew ss({checks:[],typeName:Oe.ZodBigInt,coerce:a?.coerce??!1,...Fe(a)});var ns=class extends He{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==ue.boolean){let t=this._getOrReturnCtx(e);return ne(t,{code:Y.invalid_type,expected:ue.boolean,received:t.parsedType}),Re}return Ot(e.data)}};ns.create=a=>new ns({typeName:Oe.ZodBoolean,coerce:a?.coerce||!1,...Fe(a)});var is=class a extends He{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==ue.date){let i=this._getOrReturnCtx(e);return ne(i,{code:Y.invalid_type,expected:ue.date,received:i.parsedType}),Re}if(Number.isNaN(e.data.getTime())){let i=this._getOrReturnCtx(e);return ne(i,{code:Y.invalid_date}),Re}let t=new Et,s;for(let i of this._def.checks)i.kind==="min"?e.data.getTime()i.value&&(s=this._getOrReturnCtx(e,s),ne(s,{code:Y.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),t.dirty()):Ze.assertNever(i);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}min(e,r){return this._addCheck({kind:"min",value:e.getTime(),message:ge.toString(r)})}max(e,r){return this._addCheck({kind:"max",value:e.getTime(),message:ge.toString(r)})}get minDate(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew is({checks:[],coerce:a?.coerce||!1,typeName:Oe.ZodDate,...Fe(a)});var _n=class extends He{_parse(e){if(this._getType(e)!==ue.symbol){let t=this._getOrReturnCtx(e);return ne(t,{code:Y.invalid_type,expected:ue.symbol,received:t.parsedType}),Re}return Ot(e.data)}};_n.create=a=>new _n({typeName:Oe.ZodSymbol,...Fe(a)});var os=class extends He{_parse(e){if(this._getType(e)!==ue.undefined){let t=this._getOrReturnCtx(e);return ne(t,{code:Y.invalid_type,expected:ue.undefined,received:t.parsedType}),Re}return Ot(e.data)}};os.create=a=>new os({typeName:Oe.ZodUndefined,...Fe(a)});var cs=class extends He{_parse(e){if(this._getType(e)!==ue.null){let t=this._getOrReturnCtx(e);return ne(t,{code:Y.invalid_type,expected:ue.null,received:t.parsedType}),Re}return Ot(e.data)}};cs.create=a=>new cs({typeName:Oe.ZodNull,...Fe(a)});var Oa=class extends He{constructor(){super(...arguments),this._any=!0}_parse(e){return Ot(e.data)}};Oa.create=a=>new Oa({typeName:Oe.ZodAny,...Fe(a)});var aa=class extends He{constructor(){super(...arguments),this._unknown=!0}_parse(e){return Ot(e.data)}};aa.create=a=>new aa({typeName:Oe.ZodUnknown,...Fe(a)});var Pr=class extends He{_parse(e){let r=this._getOrReturnCtx(e);return ne(r,{code:Y.invalid_type,expected:ue.never,received:r.parsedType}),Re}};Pr.create=a=>new Pr({typeName:Oe.ZodNever,...Fe(a)});var Sn=class extends He{_parse(e){if(this._getType(e)!==ue.undefined){let t=this._getOrReturnCtx(e);return ne(t,{code:Y.invalid_type,expected:ue.void,received:t.parsedType}),Re}return Ot(e.data)}};Sn.create=a=>new Sn({typeName:Oe.ZodVoid,...Fe(a)});var sa=class a extends He{_parse(e){let{ctx:r,status:t}=this._processInputParams(e),s=this._def;if(r.parsedType!==ue.array)return ne(r,{code:Y.invalid_type,expected:ue.array,received:r.parsedType}),Re;if(s.exactLength!==null){let n=r.data.length>s.exactLength.value,o=r.data.lengths.maxLength.value&&(ne(r,{code:Y.too_big,maximum:s.maxLength.value,type:"array",inclusive:!0,exact:!1,message:s.maxLength.message}),t.dirty()),r.common.async)return Promise.all([...r.data].map((n,o)=>s.type._parseAsync(new or(r,n,r.path,o)))).then(n=>Et.mergeArray(t,n));let i=[...r.data].map((n,o)=>s.type._parseSync(new or(r,n,r.path,o)));return Et.mergeArray(t,i)}get element(){return this._def.type}min(e,r){return new a({...this._def,minLength:{value:e,message:ge.toString(r)}})}max(e,r){return new a({...this._def,maxLength:{value:e,message:ge.toString(r)}})}length(e,r){return new a({...this._def,exactLength:{value:e,message:ge.toString(r)}})}nonempty(e){return this.min(1,e)}};sa.create=(a,e)=>new sa({type:a,minLength:null,maxLength:null,exactLength:null,typeName:Oe.ZodArray,...Fe(e)});function xn(a){if(a instanceof Ut){let e={};for(let r in a.shape){let t=a.shape[r];e[r]=ir.create(xn(t))}return new Ut({...a._def,shape:()=>e})}else return a instanceof sa?new sa({...a._def,type:xn(a.element)}):a instanceof ir?ir.create(xn(a.unwrap())):a instanceof Ur?Ur.create(xn(a.unwrap())):a instanceof Fr?Fr.create(a.items.map(e=>xn(e))):a}var Ut=class a extends He{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),r=Ze.objectKeys(e);return this._cached={shape:e,keys:r},this._cached}_parse(e){if(this._getType(e)!==ue.object){let c=this._getOrReturnCtx(e);return ne(c,{code:Y.invalid_type,expected:ue.object,received:c.parsedType}),Re}let{status:t,ctx:s}=this._processInputParams(e),{shape:i,keys:n}=this._getCached(),o=[];if(!(this._def.catchall instanceof Pr&&this._def.unknownKeys==="strip"))for(let c in s.data)n.includes(c)||o.push(c);let l=[];for(let c of n){let u=i[c],p=s.data[c];l.push({key:{status:"valid",value:c},value:u._parse(new or(s,p,s.path,c)),alwaysSet:c in s.data})}if(this._def.catchall instanceof Pr){let c=this._def.unknownKeys;if(c==="passthrough")for(let u of o)l.push({key:{status:"valid",value:u},value:{status:"valid",value:s.data[u]}});else if(c==="strict")o.length>0&&(ne(s,{code:Y.unrecognized_keys,keys:o}),t.dirty());else if(c!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let c=this._def.catchall;for(let u of o){let p=s.data[u];l.push({key:{status:"valid",value:u},value:c._parse(new or(s,p,s.path,u)),alwaysSet:u in s.data})}}return s.common.async?Promise.resolve().then(async()=>{let c=[];for(let u of l){let p=await u.key,f=await u.value;c.push({key:p,value:f,alwaysSet:u.alwaysSet})}return c}).then(c=>Et.mergeObjectSync(t,c)):Et.mergeObjectSync(t,l)}get shape(){return this._def.shape()}strict(e){return ge.errToObj,new a({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(r,t)=>{let s=this._def.errorMap?.(r,t).message??t.defaultError;return r.code==="unrecognized_keys"?{message:ge.errToObj(e).message??s}:{message:s}}}:{}})}strip(){return new a({...this._def,unknownKeys:"strip"})}passthrough(){return new a({...this._def,unknownKeys:"passthrough"})}extend(e){return new a({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new a({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Oe.ZodObject})}setKey(e,r){return this.augment({[e]:r})}catchall(e){return new a({...this._def,catchall:e})}pick(e){let r={};for(let t of Ze.objectKeys(e))e[t]&&this.shape[t]&&(r[t]=this.shape[t]);return new a({...this._def,shape:()=>r})}omit(e){let r={};for(let t of Ze.objectKeys(this.shape))e[t]||(r[t]=this.shape[t]);return new a({...this._def,shape:()=>r})}deepPartial(){return xn(this)}partial(e){let r={};for(let t of Ze.objectKeys(this.shape)){let s=this.shape[t];e&&!e[t]?r[t]=s:r[t]=s.optional()}return new a({...this._def,shape:()=>r})}required(e){let r={};for(let t of Ze.objectKeys(this.shape))if(e&&!e[t])r[t]=this.shape[t];else{let i=this.shape[t];for(;i instanceof ir;)i=i._def.innerType;r[t]=i}return new a({...this._def,shape:()=>r})}keyof(){return Dx(Ze.objectKeys(this.shape))}};Ut.create=(a,e)=>new Ut({shape:()=>a,unknownKeys:"strip",catchall:Pr.create(),typeName:Oe.ZodObject,...Fe(e)});Ut.strictCreate=(a,e)=>new Ut({shape:()=>a,unknownKeys:"strict",catchall:Pr.create(),typeName:Oe.ZodObject,...Fe(e)});Ut.lazycreate=(a,e)=>new Ut({shape:a,unknownKeys:"strip",catchall:Pr.create(),typeName:Oe.ZodObject,...Fe(e)});var ls=class extends He{_parse(e){let{ctx:r}=this._processInputParams(e),t=this._def.options;function s(i){for(let o of i)if(o.result.status==="valid")return o.result;for(let o of i)if(o.result.status==="dirty")return r.common.issues.push(...o.ctx.common.issues),o.result;let n=i.map(o=>new Ft(o.ctx.common.issues));return ne(r,{code:Y.invalid_union,unionErrors:n}),Re}if(r.common.async)return Promise.all(t.map(async i=>{let n={...r,common:{...r.common,issues:[]},parent:null};return{result:await i._parseAsync({data:r.data,path:r.path,parent:n}),ctx:n}})).then(s);{let i,n=[];for(let l of t){let c={...r,common:{...r.common,issues:[]},parent:null},u=l._parseSync({data:r.data,path:r.path,parent:c});if(u.status==="valid")return u;u.status==="dirty"&&!i&&(i={result:u,ctx:c}),c.common.issues.length&&n.push(c.common.issues)}if(i)return r.common.issues.push(...i.ctx.common.issues),i.result;let o=n.map(l=>new Ft(l));return ne(r,{code:Y.invalid_union,unionErrors:o}),Re}}get options(){return this._def.options}};ls.create=(a,e)=>new ls({options:a,typeName:Oe.ZodUnion,...Fe(e)});var ra=a=>a instanceof ps?ra(a.schema):a instanceof cr?ra(a.innerType()):a instanceof ds?[a.value]:a instanceof fs?a.options:a instanceof ms?Ze.objectValues(a.enum):a instanceof hs?ra(a._def.innerType):a instanceof os?[void 0]:a instanceof cs?[null]:a instanceof ir?[void 0,...ra(a.unwrap())]:a instanceof Ur?[null,...ra(a.unwrap())]:a instanceof $i||a instanceof gs?ra(a.unwrap()):a instanceof vs?ra(a._def.innerType):[],vc=class a extends He{_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==ue.object)return ne(r,{code:Y.invalid_type,expected:ue.object,received:r.parsedType}),Re;let t=this.discriminator,s=r.data[t],i=this.optionsMap.get(s);return i?r.common.async?i._parseAsync({data:r.data,path:r.path,parent:r}):i._parseSync({data:r.data,path:r.path,parent:r}):(ne(r,{code:Y.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[t]}),Re)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,r,t){let s=new Map;for(let i of r){let n=ra(i.shape[e]);if(!n.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let o of n){if(s.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);s.set(o,i)}}return new a({typeName:Oe.ZodDiscriminatedUnion,discriminator:e,options:r,optionsMap:s,...Fe(t)})}};function Xp(a,e){let r=qr(a),t=qr(e);if(a===e)return{valid:!0,data:a};if(r===ue.object&&t===ue.object){let s=Ze.objectKeys(e),i=Ze.objectKeys(a).filter(o=>s.indexOf(o)!==-1),n={...a,...e};for(let o of i){let l=Xp(a[o],e[o]);if(!l.valid)return{valid:!1};n[o]=l.data}return{valid:!0,data:n}}else if(r===ue.array&&t===ue.array){if(a.length!==e.length)return{valid:!1};let s=[];for(let i=0;i{if(mc(i)||mc(n))return Re;let o=Xp(i.value,n.value);return o.valid?((hc(i)||hc(n))&&r.dirty(),{status:r.value,value:o.data}):(ne(t,{code:Y.invalid_intersection_types}),Re)};return t.common.async?Promise.all([this._def.left._parseAsync({data:t.data,path:t.path,parent:t}),this._def.right._parseAsync({data:t.data,path:t.path,parent:t})]).then(([i,n])=>s(i,n)):s(this._def.left._parseSync({data:t.data,path:t.path,parent:t}),this._def.right._parseSync({data:t.data,path:t.path,parent:t}))}};us.create=(a,e,r)=>new us({left:a,right:e,typeName:Oe.ZodIntersection,...Fe(r)});var Fr=class a extends He{_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.parsedType!==ue.array)return ne(t,{code:Y.invalid_type,expected:ue.array,received:t.parsedType}),Re;if(t.data.lengththis._def.items.length&&(ne(t,{code:Y.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());let i=[...t.data].map((n,o)=>{let l=this._def.items[o]||this._def.rest;return l?l._parse(new or(t,n,t.path,o)):null}).filter(n=>!!n);return t.common.async?Promise.all(i).then(n=>Et.mergeArray(r,n)):Et.mergeArray(r,i)}get items(){return this._def.items}rest(e){return new a({...this._def,rest:e})}};Fr.create=(a,e)=>{if(!Array.isArray(a))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Fr({items:a,typeName:Oe.ZodTuple,rest:null,...Fe(e)})};var gc=class a extends He{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.parsedType!==ue.object)return ne(t,{code:Y.invalid_type,expected:ue.object,received:t.parsedType}),Re;let s=[],i=this._def.keyType,n=this._def.valueType;for(let o in t.data)s.push({key:i._parse(new or(t,o,t.path,o)),value:n._parse(new or(t,t.data[o],t.path,o)),alwaysSet:o in t.data});return t.common.async?Et.mergeObjectAsync(r,s):Et.mergeObjectSync(r,s)}get element(){return this._def.valueType}static create(e,r,t){return r instanceof He?new a({keyType:e,valueType:r,typeName:Oe.ZodRecord,...Fe(t)}):new a({keyType:Pa.create(),valueType:e,typeName:Oe.ZodRecord,...Fe(r)})}},En=class extends He{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.parsedType!==ue.map)return ne(t,{code:Y.invalid_type,expected:ue.map,received:t.parsedType}),Re;let s=this._def.keyType,i=this._def.valueType,n=[...t.data.entries()].map(([o,l],c)=>({key:s._parse(new or(t,o,t.path,[c,"key"])),value:i._parse(new or(t,l,t.path,[c,"value"]))}));if(t.common.async){let o=new Map;return Promise.resolve().then(async()=>{for(let l of n){let c=await l.key,u=await l.value;if(c.status==="aborted"||u.status==="aborted")return Re;(c.status==="dirty"||u.status==="dirty")&&r.dirty(),o.set(c.value,u.value)}return{status:r.value,value:o}})}else{let o=new Map;for(let l of n){let c=l.key,u=l.value;if(c.status==="aborted"||u.status==="aborted")return Re;(c.status==="dirty"||u.status==="dirty")&&r.dirty(),o.set(c.value,u.value)}return{status:r.value,value:o}}}};En.create=(a,e,r)=>new En({valueType:e,keyType:a,typeName:Oe.ZodMap,...Fe(r)});var wn=class a extends He{_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.parsedType!==ue.set)return ne(t,{code:Y.invalid_type,expected:ue.set,received:t.parsedType}),Re;let s=this._def;s.minSize!==null&&t.data.sizes.maxSize.value&&(ne(t,{code:Y.too_big,maximum:s.maxSize.value,type:"set",inclusive:!0,exact:!1,message:s.maxSize.message}),r.dirty());let i=this._def.valueType;function n(l){let c=new Set;for(let u of l){if(u.status==="aborted")return Re;u.status==="dirty"&&r.dirty(),c.add(u.value)}return{status:r.value,value:c}}let o=[...t.data.values()].map((l,c)=>i._parse(new or(t,l,t.path,c)));return t.common.async?Promise.all(o).then(l=>n(l)):n(o)}min(e,r){return new a({...this._def,minSize:{value:e,message:ge.toString(r)}})}max(e,r){return new a({...this._def,maxSize:{value:e,message:ge.toString(r)}})}size(e,r){return this.min(e,r).max(e,r)}nonempty(e){return this.min(1,e)}};wn.create=(a,e)=>new wn({valueType:a,minSize:null,maxSize:null,typeName:Oe.ZodSet,...Fe(e)});var yc=class a extends He{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==ue.function)return ne(r,{code:Y.invalid_type,expected:ue.function,received:r.parsedType}),Re;function t(o,l){return Di({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,yn(),ta].filter(c=>!!c),issueData:{code:Y.invalid_arguments,argumentsError:l}})}function s(o,l){return Di({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,yn(),ta].filter(c=>!!c),issueData:{code:Y.invalid_return_type,returnTypeError:l}})}let i={errorMap:r.common.contextualErrorMap},n=r.data;if(this._def.returns instanceof ka){let o=this;return Ot(async function(...l){let c=new Ft([]),u=await o._def.args.parseAsync(l,i).catch(d=>{throw c.addIssue(t(l,d)),c}),p=await Reflect.apply(n,this,u);return await o._def.returns._def.type.parseAsync(p,i).catch(d=>{throw c.addIssue(s(p,d)),c})})}else{let o=this;return Ot(function(...l){let c=o._def.args.safeParse(l,i);if(!c.success)throw new Ft([t(l,c.error)]);let u=Reflect.apply(n,this,c.data),p=o._def.returns.safeParse(u,i);if(!p.success)throw new Ft([s(u,p.error)]);return p.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new a({...this._def,args:Fr.create(e).rest(aa.create())})}returns(e){return new a({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,r,t){return new a({args:e||Fr.create([]).rest(aa.create()),returns:r||aa.create(),typeName:Oe.ZodFunction,...Fe(t)})}},ps=class extends He{get schema(){return this._def.getter()}_parse(e){let{ctx:r}=this._processInputParams(e);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};ps.create=(a,e)=>new ps({getter:a,typeName:Oe.ZodLazy,...Fe(e)});var ds=class extends He{_parse(e){if(e.data!==this._def.value){let r=this._getOrReturnCtx(e);return ne(r,{received:r.data,code:Y.invalid_literal,expected:this._def.value}),Re}return{status:"valid",value:e.data}}get value(){return this._def.value}};ds.create=(a,e)=>new ds({value:a,typeName:Oe.ZodLiteral,...Fe(e)});function Dx(a,e){return new fs({values:a,typeName:Oe.ZodEnum,...Fe(e)})}var fs=class a extends He{_parse(e){if(typeof e.data!="string"){let r=this._getOrReturnCtx(e),t=this._def.values;return ne(r,{expected:Ze.joinValues(t),received:r.parsedType,code:Y.invalid_type}),Re}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let r=this._getOrReturnCtx(e),t=this._def.values;return ne(r,{received:r.data,code:Y.invalid_enum_value,options:t}),Re}return Ot(e.data)}get options(){return this._def.values}get enum(){let e={};for(let r of this._def.values)e[r]=r;return e}get Values(){let e={};for(let r of this._def.values)e[r]=r;return e}get Enum(){let e={};for(let r of this._def.values)e[r]=r;return e}extract(e,r=this._def){return a.create(e,{...this._def,...r})}exclude(e,r=this._def){return a.create(this.options.filter(t=>!e.includes(t)),{...this._def,...r})}};fs.create=Dx;var ms=class extends He{_parse(e){let r=Ze.getValidEnumValues(this._def.values),t=this._getOrReturnCtx(e);if(t.parsedType!==ue.string&&t.parsedType!==ue.number){let s=Ze.objectValues(r);return ne(t,{expected:Ze.joinValues(s),received:t.parsedType,code:Y.invalid_type}),Re}if(this._cache||(this._cache=new Set(Ze.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let s=Ze.objectValues(r);return ne(t,{received:t.data,code:Y.invalid_enum_value,options:s}),Re}return Ot(e.data)}get enum(){return this._def.values}};ms.create=(a,e)=>new ms({values:a,typeName:Oe.ZodNativeEnum,...Fe(e)});var ka=class extends He{unwrap(){return this._def.type}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==ue.promise&&r.common.async===!1)return ne(r,{code:Y.invalid_type,expected:ue.promise,received:r.parsedType}),Re;let t=r.parsedType===ue.promise?r.data:Promise.resolve(r.data);return Ot(t.then(s=>this._def.type.parseAsync(s,{path:r.path,errorMap:r.common.contextualErrorMap})))}};ka.create=(a,e)=>new ka({type:a,typeName:Oe.ZodPromise,...Fe(e)});var cr=class extends He{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Oe.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:r,ctx:t}=this._processInputParams(e),s=this._def.effect||null,i={addIssue:n=>{ne(t,n),n.fatal?r.abort():r.dirty()},get path(){return t.path}};if(i.addIssue=i.addIssue.bind(i),s.type==="preprocess"){let n=s.transform(t.data,i);if(t.common.async)return Promise.resolve(n).then(async o=>{if(r.value==="aborted")return Re;let l=await this._def.schema._parseAsync({data:o,path:t.path,parent:t});return l.status==="aborted"?Re:l.status==="dirty"?rs(l.value):r.value==="dirty"?rs(l.value):l});{if(r.value==="aborted")return Re;let o=this._def.schema._parseSync({data:n,path:t.path,parent:t});return o.status==="aborted"?Re:o.status==="dirty"?rs(o.value):r.value==="dirty"?rs(o.value):o}}if(s.type==="refinement"){let n=o=>{let l=s.refinement(o,i);if(t.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(t.common.async===!1){let o=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});return o.status==="aborted"?Re:(o.status==="dirty"&&r.dirty(),n(o.value),{status:r.value,value:o.value})}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then(o=>o.status==="aborted"?Re:(o.status==="dirty"&&r.dirty(),n(o.value).then(()=>({status:r.value,value:o.value}))))}if(s.type==="transform")if(t.common.async===!1){let n=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});if(!Ra(n))return Re;let o=s.transform(n.value,i);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:o}}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then(n=>Ra(n)?Promise.resolve(s.transform(n.value,i)).then(o=>({status:r.value,value:o})):Re);Ze.assertNever(s)}};cr.create=(a,e,r)=>new cr({schema:a,typeName:Oe.ZodEffects,effect:e,...Fe(r)});cr.createWithPreprocess=(a,e,r)=>new cr({schema:e,effect:{type:"preprocess",transform:a},typeName:Oe.ZodEffects,...Fe(r)});var ir=class extends He{_parse(e){return this._getType(e)===ue.undefined?Ot(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};ir.create=(a,e)=>new ir({innerType:a,typeName:Oe.ZodOptional,...Fe(e)});var Ur=class extends He{_parse(e){return this._getType(e)===ue.null?Ot(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Ur.create=(a,e)=>new Ur({innerType:a,typeName:Oe.ZodNullable,...Fe(e)});var hs=class extends He{_parse(e){let{ctx:r}=this._processInputParams(e),t=r.data;return r.parsedType===ue.undefined&&(t=this._def.defaultValue()),this._def.innerType._parse({data:t,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};hs.create=(a,e)=>new hs({innerType:a,typeName:Oe.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...Fe(e)});var vs=class extends He{_parse(e){let{ctx:r}=this._processInputParams(e),t={...r,common:{...r.common,issues:[]}},s=this._def.innerType._parse({data:t.data,path:t.path,parent:{...t}});return bn(s)?s.then(i=>({status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new Ft(t.common.issues)},input:t.data})})):{status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new Ft(t.common.issues)},input:t.data})}}removeCatch(){return this._def.innerType}};vs.create=(a,e)=>new vs({innerType:a,typeName:Oe.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...Fe(e)});var Tn=class extends He{_parse(e){if(this._getType(e)!==ue.nan){let t=this._getOrReturnCtx(e);return ne(t,{code:Y.invalid_type,expected:ue.nan,received:t.parsedType}),Re}return{status:"valid",value:e.data}}};Tn.create=a=>new Tn({typeName:Oe.ZodNaN,...Fe(a)});var T2=Symbol("zod_brand"),$i=class extends He{_parse(e){let{ctx:r}=this._processInputParams(e),t=r.data;return this._def.type._parse({data:t,path:r.path,parent:r})}unwrap(){return this._def.type}},ji=class a extends He{_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.common.async)return(async()=>{let i=await this._def.in._parseAsync({data:t.data,path:t.path,parent:t});return i.status==="aborted"?Re:i.status==="dirty"?(r.dirty(),rs(i.value)):this._def.out._parseAsync({data:i.value,path:t.path,parent:t})})();{let s=this._def.in._parseSync({data:t.data,path:t.path,parent:t});return s.status==="aborted"?Re:s.status==="dirty"?(r.dirty(),{status:"dirty",value:s.value}):this._def.out._parseSync({data:s.value,path:t.path,parent:t})}}static create(e,r){return new a({in:e,out:r,typeName:Oe.ZodPipeline})}},gs=class extends He{_parse(e){let r=this._def.innerType._parse(e),t=s=>(Ra(s)&&(s.value=Object.freeze(s.value)),s);return bn(r)?r.then(s=>t(s)):t(r)}unwrap(){return this._def.innerType}};gs.create=(a,e)=>new gs({innerType:a,typeName:Oe.ZodReadonly,...Fe(e)});function Cx(a,e){let r=typeof a=="function"?a(e):typeof a=="string"?{message:a}:a;return typeof r=="string"?{message:r}:r}function $x(a,e={},r){return a?Oa.create().superRefine((t,s)=>{let i=a(t);if(i instanceof Promise)return i.then(n=>{if(!n){let o=Cx(e,t),l=o.fatal??r??!0;s.addIssue({code:"custom",...o,fatal:l})}});if(!i){let n=Cx(e,t),o=n.fatal??r??!0;s.addIssue({code:"custom",...n,fatal:o})}}):Oa.create()}var R2={object:Ut.lazycreate},Oe;(function(a){a.ZodString="ZodString",a.ZodNumber="ZodNumber",a.ZodNaN="ZodNaN",a.ZodBigInt="ZodBigInt",a.ZodBoolean="ZodBoolean",a.ZodDate="ZodDate",a.ZodSymbol="ZodSymbol",a.ZodUndefined="ZodUndefined",a.ZodNull="ZodNull",a.ZodAny="ZodAny",a.ZodUnknown="ZodUnknown",a.ZodNever="ZodNever",a.ZodVoid="ZodVoid",a.ZodArray="ZodArray",a.ZodObject="ZodObject",a.ZodUnion="ZodUnion",a.ZodDiscriminatedUnion="ZodDiscriminatedUnion",a.ZodIntersection="ZodIntersection",a.ZodTuple="ZodTuple",a.ZodRecord="ZodRecord",a.ZodMap="ZodMap",a.ZodSet="ZodSet",a.ZodFunction="ZodFunction",a.ZodLazy="ZodLazy",a.ZodLiteral="ZodLiteral",a.ZodEnum="ZodEnum",a.ZodEffects="ZodEffects",a.ZodNativeEnum="ZodNativeEnum",a.ZodOptional="ZodOptional",a.ZodNullable="ZodNullable",a.ZodDefault="ZodDefault",a.ZodCatch="ZodCatch",a.ZodPromise="ZodPromise",a.ZodBranded="ZodBranded",a.ZodPipeline="ZodPipeline",a.ZodReadonly="ZodReadonly"})(Oe||(Oe={}));var P2=(a,e={message:`Input not instance of ${a.name}`})=>$x(r=>r instanceof a,e),jx=Pa.create,Mx=as.create,O2=Tn.create,k2=ss.create,Lx=ns.create,C2=is.create,I2=_n.create,A2=os.create,N2=cs.create,D2=Oa.create,$2=aa.create,j2=Pr.create,M2=Sn.create,L2=sa.create,q2=Ut.create,F2=Ut.strictCreate,U2=ls.create,z2=vc.create,B2=us.create,H2=Fr.create,V2=gc.create,G2=En.create,W2=wn.create,Z2=yc.create,X2=ps.create,Q2=ds.create,K2=fs.create,J2=ms.create,Y2=ka.create,eN=cr.create,tN=ir.create,rN=Ur.create,aN=cr.createWithPreprocess,sN=ji.create,nN=()=>jx().optional(),iN=()=>Mx().optional(),oN=()=>Lx().optional(),cN={string:(a=>Pa.create({...a,coerce:!0})),number:(a=>as.create({...a,coerce:!0})),boolean:(a=>ns.create({...a,coerce:!0})),bigint:(a=>ss.create({...a,coerce:!0})),date:(a=>is.create({...a,coerce:!0}))};var lN=Re;var Qp="2025-06-18";var qx=[Qp,"2025-03-26","2024-11-05","2024-10-07"],bc="2.0",Fx=S.union([S.string(),S.number().int()]),Ux=S.string(),uN=S.object({progressToken:S.optional(Fx)}).passthrough(),pr=S.object({_meta:S.optional(uN)}).passthrough(),zt=S.object({method:S.string(),params:S.optional(pr)}),Mi=S.object({_meta:S.optional(S.object({}).passthrough())}).passthrough(),zr=S.object({method:S.string(),params:S.optional(Mi)}),dr=S.object({_meta:S.optional(S.object({}).passthrough())}).passthrough(),xc=S.union([S.string(),S.number().int()]),zx=S.object({jsonrpc:S.literal(bc),id:xc}).merge(zt).strict(),Bx=a=>zx.safeParse(a).success,Hx=S.object({jsonrpc:S.literal(bc)}).merge(zr).strict(),Vx=a=>Hx.safeParse(a).success,Gx=S.object({jsonrpc:S.literal(bc),id:xc,result:dr}).strict(),Kp=a=>Gx.safeParse(a).success,lr;(function(a){a[a.ConnectionClosed=-32e3]="ConnectionClosed",a[a.RequestTimeout=-32001]="RequestTimeout",a[a.ParseError=-32700]="ParseError",a[a.InvalidRequest=-32600]="InvalidRequest",a[a.MethodNotFound=-32601]="MethodNotFound",a[a.InvalidParams=-32602]="InvalidParams",a[a.InternalError=-32603]="InternalError"})(lr||(lr={}));var Wx=S.object({jsonrpc:S.literal(bc),id:xc,error:S.object({code:S.number().int(),message:S.string(),data:S.optional(S.unknown())})}).strict(),Zx=a=>Wx.safeParse(a).success,Xx=S.union([zx,Hx,Gx,Wx]),ys=dr.strict(),_c=zr.extend({method:S.literal("notifications/cancelled"),params:Mi.extend({requestId:xc,reason:S.string().optional()})}),pN=S.object({src:S.string(),mimeType:S.optional(S.string()),sizes:S.optional(S.array(S.string()))}).passthrough(),Li=S.object({icons:S.array(pN).optional()}).passthrough(),qi=S.object({name:S.string(),title:S.optional(S.string())}).passthrough(),Qx=qi.extend({version:S.string(),websiteUrl:S.optional(S.string())}).merge(Li),dN=S.object({experimental:S.optional(S.object({}).passthrough()),sampling:S.optional(S.object({}).passthrough()),elicitation:S.optional(S.object({}).passthrough()),roots:S.optional(S.object({listChanged:S.optional(S.boolean())}).passthrough())}).passthrough(),fN=zt.extend({method:S.literal("initialize"),params:pr.extend({protocolVersion:S.string(),capabilities:dN,clientInfo:Qx})});var mN=S.object({experimental:S.optional(S.object({}).passthrough()),logging:S.optional(S.object({}).passthrough()),completions:S.optional(S.object({}).passthrough()),prompts:S.optional(S.object({listChanged:S.optional(S.boolean())}).passthrough()),resources:S.optional(S.object({subscribe:S.optional(S.boolean()),listChanged:S.optional(S.boolean())}).passthrough()),tools:S.optional(S.object({listChanged:S.optional(S.boolean())}).passthrough())}).passthrough(),Jp=dr.extend({protocolVersion:S.string(),capabilities:mN,serverInfo:Qx,instructions:S.optional(S.string())}),hN=zr.extend({method:S.literal("notifications/initialized")});var Sc=zt.extend({method:S.literal("ping")}),vN=S.object({progress:S.number(),total:S.optional(S.number()),message:S.optional(S.string())}).passthrough(),Ec=zr.extend({method:S.literal("notifications/progress"),params:Mi.merge(vN).extend({progressToken:Fx})}),wc=zt.extend({params:pr.extend({cursor:S.optional(Ux)}).optional()}),Tc=dr.extend({nextCursor:S.optional(Ux)}),Kx=S.object({uri:S.string(),mimeType:S.optional(S.string()),_meta:S.optional(S.object({}).passthrough())}).passthrough(),Jx=Kx.extend({text:S.string()}),Yp=S.string().refine(a=>{try{return atob(a),!0}catch{return!1}},{message:"Invalid Base64 string"}),Yx=Kx.extend({blob:Yp}),e0=qi.extend({uri:S.string(),description:S.optional(S.string()),mimeType:S.optional(S.string()),_meta:S.optional(S.object({}).passthrough())}).merge(Li),gN=qi.extend({uriTemplate:S.string(),description:S.optional(S.string()),mimeType:S.optional(S.string()),_meta:S.optional(S.object({}).passthrough())}).merge(Li),yN=wc.extend({method:S.literal("resources/list")}),ed=Tc.extend({resources:S.array(e0)}),bN=wc.extend({method:S.literal("resources/templates/list")}),td=Tc.extend({resourceTemplates:S.array(gN)}),xN=zt.extend({method:S.literal("resources/read"),params:pr.extend({uri:S.string()})}),rd=dr.extend({contents:S.array(S.union([Jx,Yx]))}),_N=zr.extend({method:S.literal("notifications/resources/list_changed")}),SN=zt.extend({method:S.literal("resources/subscribe"),params:pr.extend({uri:S.string()})}),EN=zt.extend({method:S.literal("resources/unsubscribe"),params:pr.extend({uri:S.string()})}),wN=zr.extend({method:S.literal("notifications/resources/updated"),params:Mi.extend({uri:S.string()})}),TN=S.object({name:S.string(),description:S.optional(S.string()),required:S.optional(S.boolean())}).passthrough(),RN=qi.extend({description:S.optional(S.string()),arguments:S.optional(S.array(TN)),_meta:S.optional(S.object({}).passthrough())}).merge(Li),PN=wc.extend({method:S.literal("prompts/list")}),ad=Tc.extend({prompts:S.array(RN)}),ON=zt.extend({method:S.literal("prompts/get"),params:pr.extend({name:S.string(),arguments:S.optional(S.record(S.string()))})}),sd=S.object({type:S.literal("text"),text:S.string(),_meta:S.optional(S.object({}).passthrough())}).passthrough(),nd=S.object({type:S.literal("image"),data:Yp,mimeType:S.string(),_meta:S.optional(S.object({}).passthrough())}).passthrough(),id=S.object({type:S.literal("audio"),data:Yp,mimeType:S.string(),_meta:S.optional(S.object({}).passthrough())}).passthrough(),kN=S.object({type:S.literal("resource"),resource:S.union([Jx,Yx]),_meta:S.optional(S.object({}).passthrough())}).passthrough(),CN=e0.extend({type:S.literal("resource_link")}),t0=S.union([sd,nd,id,CN,kN]),IN=S.object({role:S.enum(["user","assistant"]),content:t0}).passthrough(),od=dr.extend({description:S.optional(S.string()),messages:S.array(IN)}),AN=zr.extend({method:S.literal("notifications/prompts/list_changed")}),NN=S.object({title:S.optional(S.string()),readOnlyHint:S.optional(S.boolean()),destructiveHint:S.optional(S.boolean()),idempotentHint:S.optional(S.boolean()),openWorldHint:S.optional(S.boolean())}).passthrough(),DN=qi.extend({description:S.optional(S.string()),inputSchema:S.object({type:S.literal("object"),properties:S.optional(S.object({}).passthrough()),required:S.optional(S.array(S.string()))}).passthrough(),outputSchema:S.optional(S.object({type:S.literal("object"),properties:S.optional(S.object({}).passthrough()),required:S.optional(S.array(S.string()))}).passthrough()),annotations:S.optional(NN),_meta:S.optional(S.object({}).passthrough())}).merge(Li),$N=wc.extend({method:S.literal("tools/list")}),cd=Tc.extend({tools:S.array(DN)}),Rc=dr.extend({content:S.array(t0).default([]),structuredContent:S.object({}).passthrough().optional(),isError:S.optional(S.boolean())}),UF=Rc.or(dr.extend({toolResult:S.unknown()})),jN=zt.extend({method:S.literal("tools/call"),params:pr.extend({name:S.string(),arguments:S.optional(S.record(S.unknown()))})}),MN=zr.extend({method:S.literal("notifications/tools/list_changed")}),r0=S.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),LN=zt.extend({method:S.literal("logging/setLevel"),params:pr.extend({level:r0})}),qN=zr.extend({method:S.literal("notifications/message"),params:Mi.extend({level:r0,logger:S.optional(S.string()),data:S.unknown()})}),FN=S.object({name:S.string().optional()}).passthrough(),UN=S.object({hints:S.optional(S.array(FN)),costPriority:S.optional(S.number().min(0).max(1)),speedPriority:S.optional(S.number().min(0).max(1)),intelligencePriority:S.optional(S.number().min(0).max(1))}).passthrough(),zN=S.object({role:S.enum(["user","assistant"]),content:S.union([sd,nd,id])}).passthrough(),BN=zt.extend({method:S.literal("sampling/createMessage"),params:pr.extend({messages:S.array(zN),systemPrompt:S.optional(S.string()),includeContext:S.optional(S.enum(["none","thisServer","allServers"])),temperature:S.optional(S.number()),maxTokens:S.number().int(),stopSequences:S.optional(S.array(S.string())),metadata:S.optional(S.object({}).passthrough()),modelPreferences:S.optional(UN)})}),HN=dr.extend({model:S.string(),stopReason:S.optional(S.enum(["endTurn","stopSequence","maxTokens"]).or(S.string())),role:S.enum(["user","assistant"]),content:S.discriminatedUnion("type",[sd,nd,id])}),VN=S.object({type:S.literal("boolean"),title:S.optional(S.string()),description:S.optional(S.string()),default:S.optional(S.boolean())}).passthrough(),GN=S.object({type:S.literal("string"),title:S.optional(S.string()),description:S.optional(S.string()),minLength:S.optional(S.number()),maxLength:S.optional(S.number()),format:S.optional(S.enum(["email","uri","date","date-time"]))}).passthrough(),WN=S.object({type:S.enum(["number","integer"]),title:S.optional(S.string()),description:S.optional(S.string()),minimum:S.optional(S.number()),maximum:S.optional(S.number())}).passthrough(),ZN=S.object({type:S.literal("string"),title:S.optional(S.string()),description:S.optional(S.string()),enum:S.array(S.string()),enumNames:S.optional(S.array(S.string()))}).passthrough(),XN=S.union([VN,GN,WN,ZN]),QN=zt.extend({method:S.literal("elicitation/create"),params:pr.extend({message:S.string(),requestedSchema:S.object({type:S.literal("object"),properties:S.record(S.string(),XN),required:S.optional(S.array(S.string()))}).passthrough()})}),KN=dr.extend({action:S.enum(["accept","decline","cancel"]),content:S.optional(S.record(S.string(),S.unknown()))}),JN=S.object({type:S.literal("ref/resource"),uri:S.string()}).passthrough();var YN=S.object({type:S.literal("ref/prompt"),name:S.string()}).passthrough(),eD=zt.extend({method:S.literal("completion/complete"),params:pr.extend({ref:S.union([YN,JN]),argument:S.object({name:S.string(),value:S.string()}).passthrough(),context:S.optional(S.object({arguments:S.optional(S.record(S.string(),S.string()))}))})}),ld=dr.extend({completion:S.object({values:S.array(S.string()).max(100),total:S.optional(S.number().int()),hasMore:S.optional(S.boolean())}).passthrough()}),tD=S.object({uri:S.string().startsWith("file://"),name:S.optional(S.string()),_meta:S.optional(S.object({}).passthrough())}).passthrough(),rD=zt.extend({method:S.literal("roots/list")}),aD=dr.extend({roots:S.array(tD)}),sD=zr.extend({method:S.literal("notifications/roots/list_changed")}),zF=S.union([Sc,fN,eD,LN,ON,PN,yN,bN,xN,SN,EN,jN,$N]),BF=S.union([_c,Ec,hN,sD]),HF=S.union([ys,HN,KN,aD]),VF=S.union([Sc,BN,QN,rD]),GF=S.union([_c,Ec,qN,wN,_N,MN,AN]),WF=S.union([ys,Jp,ld,od,ad,ed,td,rd,Rc,cd]),ur=class extends Error{constructor(e,r,t){super(`MCP error ${e}: ${r}`),this.code=e,this.data=t,this.name="McpError"}};var nD=6e4,Pc=class{constructor(e){this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this.setNotificationHandler(_c,r=>{let t=this._requestHandlerAbortControllers.get(r.params.requestId);t?.abort(r.params.reason)}),this.setNotificationHandler(Ec,r=>{this._onprogress(r)}),this.setRequestHandler(Sc,r=>({}))}_setupTimeout(e,r,t,s,i=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(s,r),startTime:Date.now(),timeout:r,maxTotalTimeout:t,resetTimeoutOnProgress:i,onTimeout:s})}_resetTimeout(e){let r=this._timeoutInfo.get(e);if(!r)return!1;let t=Date.now()-r.startTime;if(r.maxTotalTimeout&&t>=r.maxTotalTimeout)throw this._timeoutInfo.delete(e),new ur(lr.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:r.maxTotalTimeout,totalElapsed:t});return clearTimeout(r.timeoutId),r.timeoutId=setTimeout(r.onTimeout,r.timeout),!0}_cleanupTimeout(e){let r=this._timeoutInfo.get(e);r&&(clearTimeout(r.timeoutId),this._timeoutInfo.delete(e))}async connect(e){var r,t,s;this._transport=e;let i=(r=this.transport)===null||r===void 0?void 0:r.onclose;this._transport.onclose=()=>{i?.(),this._onclose()};let n=(t=this.transport)===null||t===void 0?void 0:t.onerror;this._transport.onerror=l=>{n?.(l),this._onerror(l)};let o=(s=this._transport)===null||s===void 0?void 0:s.onmessage;this._transport.onmessage=(l,c)=>{o?.(l,c),Kp(l)||Zx(l)?this._onresponse(l):Bx(l)?this._onrequest(l,c):Vx(l)?this._onnotification(l):this._onerror(new Error(`Unknown message type: ${JSON.stringify(l)}`))},await this._transport.start()}_onclose(){var e;let r=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._pendingDebouncedNotifications.clear(),this._transport=void 0,(e=this.onclose)===null||e===void 0||e.call(this);let t=new ur(lr.ConnectionClosed,"Connection closed");for(let s of r.values())s(t)}_onerror(e){var r;(r=this.onerror)===null||r===void 0||r.call(this,e)}_onnotification(e){var r;let t=(r=this._notificationHandlers.get(e.method))!==null&&r!==void 0?r:this.fallbackNotificationHandler;t!==void 0&&Promise.resolve().then(()=>t(e)).catch(s=>this._onerror(new Error(`Uncaught error in notification handler: ${s}`)))}_onrequest(e,r){var t,s;let i=(t=this._requestHandlers.get(e.method))!==null&&t!==void 0?t:this.fallbackRequestHandler,n=this._transport;if(i===void 0){n?.send({jsonrpc:"2.0",id:e.id,error:{code:lr.MethodNotFound,message:"Method not found"}}).catch(c=>this._onerror(new Error(`Failed to send an error response: ${c}`)));return}let o=new AbortController;this._requestHandlerAbortControllers.set(e.id,o);let l={signal:o.signal,sessionId:n?.sessionId,_meta:(s=e.params)===null||s===void 0?void 0:s._meta,sendNotification:c=>this.notification(c,{relatedRequestId:e.id}),sendRequest:(c,u,p)=>this.request(c,u,{...p,relatedRequestId:e.id}),authInfo:r?.authInfo,requestId:e.id,requestInfo:r?.requestInfo};Promise.resolve().then(()=>i(e,l)).then(c=>{if(!o.signal.aborted)return n?.send({result:c,jsonrpc:"2.0",id:e.id})},c=>{var u;if(!o.signal.aborted)return n?.send({jsonrpc:"2.0",id:e.id,error:{code:Number.isSafeInteger(c.code)?c.code:lr.InternalError,message:(u=c.message)!==null&&u!==void 0?u:"Internal error"}})}).catch(c=>this._onerror(new Error(`Failed to send response: ${c}`))).finally(()=>{this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:r,...t}=e.params,s=Number(r),i=this._progressHandlers.get(s);if(!i){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let n=this._responseHandlers.get(s),o=this._timeoutInfo.get(s);if(o&&n&&o.resetTimeoutOnProgress)try{this._resetTimeout(s)}catch(l){n(l);return}i(t)}_onresponse(e){let r=Number(e.id),t=this._responseHandlers.get(r);if(t===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}if(this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),Kp(e))t(e);else{let s=new ur(e.error.code,e.error.message,e.error.data);t(s)}}get transport(){return this._transport}async close(){var e;await((e=this._transport)===null||e===void 0?void 0:e.close())}request(e,r,t){let{relatedRequestId:s,resumptionToken:i,onresumptiontoken:n}=t??{};return new Promise((o,l)=>{var c,u,p,f,d,v;if(!this._transport){l(new Error("Not connected"));return}((c=this._options)===null||c===void 0?void 0:c.enforceStrictCapabilities)===!0&&this.assertCapabilityForMethod(e.method),(u=t?.signal)===null||u===void 0||u.throwIfAborted();let h=this._requestMessageId++,m={...e,jsonrpc:"2.0",id:h};t?.onprogress&&(this._progressHandlers.set(h,t.onprogress),m.params={...e.params,_meta:{...((p=e.params)===null||p===void 0?void 0:p._meta)||{},progressToken:h}});let y=w=>{var P;this._responseHandlers.delete(h),this._progressHandlers.delete(h),this._cleanupTimeout(h),(P=this._transport)===null||P===void 0||P.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:h,reason:String(w)}},{relatedRequestId:s,resumptionToken:i,onresumptiontoken:n}).catch(T=>this._onerror(new Error(`Failed to send cancellation: ${T}`))),l(w)};this._responseHandlers.set(h,w=>{var P;if(!(!((P=t?.signal)===null||P===void 0)&&P.aborted)){if(w instanceof Error)return l(w);try{let T=r.parse(w.result);o(T)}catch(T){l(T)}}}),(f=t?.signal)===null||f===void 0||f.addEventListener("abort",()=>{var w;y((w=t?.signal)===null||w===void 0?void 0:w.reason)});let g=(d=t?.timeout)!==null&&d!==void 0?d:nD,b=()=>y(new ur(lr.RequestTimeout,"Request timed out",{timeout:g}));this._setupTimeout(h,g,t?.maxTotalTimeout,b,(v=t?.resetTimeoutOnProgress)!==null&&v!==void 0?v:!1),this._transport.send(m,{relatedRequestId:s,resumptionToken:i,onresumptiontoken:n}).catch(w=>{this._cleanupTimeout(h),l(w)})})}async notification(e,r){var t,s;if(!this._transport)throw new Error("Not connected");if(this.assertNotificationCapability(e.method),((s=(t=this._options)===null||t===void 0?void 0:t.debouncedNotificationMethods)!==null&&s!==void 0?s:[]).includes(e.method)&&!e.params&&!r?.relatedRequestId){if(this._pendingDebouncedNotifications.has(e.method))return;this._pendingDebouncedNotifications.add(e.method),Promise.resolve().then(()=>{var l;if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let c={...e,jsonrpc:"2.0"};(l=this._transport)===null||l===void 0||l.send(c,r).catch(u=>this._onerror(u))});return}let o={...e,jsonrpc:"2.0"};await this._transport.send(o,r)}setRequestHandler(e,r){let t=e.shape.method.value;this.assertRequestHandlerCapability(t),this._requestHandlers.set(t,(s,i)=>Promise.resolve(r(e.parse(s),i)))}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw new Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,r){this._notificationHandlers.set(e.shape.method.value,t=>Promise.resolve(r(e.parse(t))))}removeNotificationHandler(e){this._notificationHandlers.delete(e)}};function a0(a,e){return Object.entries(e).reduce((r,[t,s])=>(s&&typeof s=="object"?r[t]=r[t]?{...r[t],...s}:s:r[t]=s,r),{...a})}var nS=gt(sS(),1),Rn=class extends Pc{constructor(e,r){var t;super(r),this._clientInfo=e,this._cachedToolOutputValidators=new Map,this._capabilities=(t=r?.capabilities)!==null&&t!==void 0?t:{},this._ajv=new nS.default}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=a0(this._capabilities,e)}assertCapability(e,r){var t;if(!(!((t=this._serverCapabilities)===null||t===void 0)&&t[e]))throw new Error(`Server does not support ${e} (required for ${r})`)}async connect(e,r){if(await super.connect(e),e.sessionId===void 0)try{let t=await this.request({method:"initialize",params:{protocolVersion:Qp,capabilities:this._capabilities,clientInfo:this._clientInfo}},Jp,r);if(t===void 0)throw new Error(`Server sent invalid initialize result: ${t}`);if(!qx.includes(t.protocolVersion))throw new Error(`Server's protocol version is not supported: ${t.protocolVersion}`);this._serverCapabilities=t.capabilities,this._serverVersion=t.serverInfo,e.setProtocolVersion&&e.setProtocolVersion(t.protocolVersion),this._instructions=t.instructions,await this.notification({method:"notifications/initialized"})}catch(t){throw this.close(),t}}getServerCapabilities(){return this._serverCapabilities}getServerVersion(){return this._serverVersion}getInstructions(){return this._instructions}assertCapabilityForMethod(e){var r,t,s,i,n;switch(e){case"logging/setLevel":if(!(!((r=this._serverCapabilities)===null||r===void 0)&&r.logging))throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!(!((t=this._serverCapabilities)===null||t===void 0)&&t.prompts))throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":case"resources/subscribe":case"resources/unsubscribe":if(!(!((s=this._serverCapabilities)===null||s===void 0)&&s.resources))throw new Error(`Server does not support resources (required for ${e})`);if(e==="resources/subscribe"&&!this._serverCapabilities.resources.subscribe)throw new Error(`Server does not support resource subscriptions (required for ${e})`);break;case"tools/call":case"tools/list":if(!(!((i=this._serverCapabilities)===null||i===void 0)&&i.tools))throw new Error(`Server does not support tools (required for ${e})`);break;case"completion/complete":if(!(!((n=this._serverCapabilities)===null||n===void 0)&&n.completions))throw new Error(`Server does not support completions (required for ${e})`);break;case"initialize":break;case"ping":break}}assertNotificationCapability(e){var r;switch(e){case"notifications/roots/list_changed":if(!(!((r=this._capabilities.roots)===null||r===void 0)&&r.listChanged))throw new Error(`Client does not support roots list changed notifications (required for ${e})`);break;case"notifications/initialized":break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){switch(e){case"sampling/createMessage":if(!this._capabilities.sampling)throw new Error(`Client does not support sampling capability (required for ${e})`);break;case"elicitation/create":if(!this._capabilities.elicitation)throw new Error(`Client does not support elicitation capability (required for ${e})`);break;case"roots/list":if(!this._capabilities.roots)throw new Error(`Client does not support roots capability (required for ${e})`);break;case"ping":break}}async ping(e){return this.request({method:"ping"},ys,e)}async complete(e,r){return this.request({method:"completion/complete",params:e},ld,r)}async setLoggingLevel(e,r){return this.request({method:"logging/setLevel",params:{level:e}},ys,r)}async getPrompt(e,r){return this.request({method:"prompts/get",params:e},od,r)}async listPrompts(e,r){return this.request({method:"prompts/list",params:e},ad,r)}async listResources(e,r){return this.request({method:"resources/list",params:e},ed,r)}async listResourceTemplates(e,r){return this.request({method:"resources/templates/list",params:e},td,r)}async readResource(e,r){return this.request({method:"resources/read",params:e},rd,r)}async subscribeResource(e,r){return this.request({method:"resources/subscribe",params:e},ys,r)}async unsubscribeResource(e,r){return this.request({method:"resources/unsubscribe",params:e},ys,r)}async callTool(e,r=Rc,t){let s=await this.request({method:"tools/call",params:e},r,t),i=this.getToolOutputValidator(e.name);if(i){if(!s.structuredContent&&!s.isError)throw new ur(lr.InvalidRequest,`Tool ${e.name} has an output schema but did not return structured content`);if(s.structuredContent)try{if(!i(s.structuredContent))throw new ur(lr.InvalidParams,`Structured content does not match the tool's output schema: ${this._ajv.errorsText(i.errors)}`)}catch(n){throw n instanceof ur?n:new ur(lr.InvalidParams,`Failed to validate structured content: ${n instanceof Error?n.message:String(n)}`)}}return s}cacheToolOutputSchemas(e){this._cachedToolOutputValidators.clear();for(let r of e)if(r.outputSchema)try{let t=this._ajv.compile(r.outputSchema);this._cachedToolOutputValidators.set(r.name,t)}catch{}}getToolOutputValidator(e){return this._cachedToolOutputValidators.get(e)}async listTools(e,r){let t=await this.request({method:"tools/list",params:e},cd,r);return this.cacheToolOutputSchemas(t.tools),t}async sendRootsListChanged(){return this.notification({method:"notifications/roots/list_changed"})}};var XS=gt(WS(),1),Ui=gt(require("node:process"),1),QS=require("node:stream");var Wc=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(` +`);if(e===-1)return null;let r=this._buffer.toString("utf8",0,e).replace(/\r$/,"");return this._buffer=this._buffer.subarray(e+1),uj(r)}clear(){this._buffer=void 0}};function uj(a){return Xx.parse(JSON.parse(a))}function ZS(a){return JSON.stringify(a)+` +`}var pj=Ui.default.platform==="win32"?["APPDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PROCESSOR_ARCHITECTURE","SYSTEMDRIVE","SYSTEMROOT","TEMP","USERNAME","USERPROFILE","PROGRAMFILES"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER"];function dj(){let a={};for(let e of pj){let r=Ui.default.env[e];r!==void 0&&(r.startsWith("()")||(a[e]=r))}return a}var kn=class{constructor(e){this._abortController=new AbortController,this._readBuffer=new Wc,this._stderrStream=null,this._serverParams=e,(e.stderr==="pipe"||e.stderr==="overlapped")&&(this._stderrStream=new QS.PassThrough)}async start(){if(this._process)throw new Error("StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((e,r)=>{var t,s,i,n,o;this._process=(0,XS.default)(this._serverParams.command,(t=this._serverParams.args)!==null&&t!==void 0?t:[],{env:{...dj(),...this._serverParams.env},stdio:["pipe","pipe",(s=this._serverParams.stderr)!==null&&s!==void 0?s:"inherit"],shell:!1,signal:this._abortController.signal,windowsHide:Ui.default.platform==="win32"&&fj(),cwd:this._serverParams.cwd}),this._process.on("error",l=>{var c,u;if(l.name==="AbortError"){(c=this.onclose)===null||c===void 0||c.call(this);return}r(l),(u=this.onerror)===null||u===void 0||u.call(this,l)}),this._process.on("spawn",()=>{e()}),this._process.on("close",l=>{var c;this._process=void 0,(c=this.onclose)===null||c===void 0||c.call(this)}),(i=this._process.stdin)===null||i===void 0||i.on("error",l=>{var c;(c=this.onerror)===null||c===void 0||c.call(this,l)}),(n=this._process.stdout)===null||n===void 0||n.on("data",l=>{this._readBuffer.append(l),this.processReadBuffer()}),(o=this._process.stdout)===null||o===void 0||o.on("error",l=>{var c;(c=this.onerror)===null||c===void 0||c.call(this,l)}),this._stderrStream&&this._process.stderr&&this._process.stderr.pipe(this._stderrStream)})}get stderr(){var e,r;return this._stderrStream?this._stderrStream:(r=(e=this._process)===null||e===void 0?void 0:e.stderr)!==null&&r!==void 0?r:null}get pid(){var e,r;return(r=(e=this._process)===null||e===void 0?void 0:e.pid)!==null&&r!==void 0?r:null}processReadBuffer(){for(var e,r;;)try{let t=this._readBuffer.readMessage();if(t===null)break;(e=this.onmessage)===null||e===void 0||e.call(this,t)}catch(t){(r=this.onerror)===null||r===void 0||r.call(this,t)}}async close(){this._abortController.abort(),this._process=void 0,this._readBuffer.clear()}send(e){return new Promise(r=>{var t;if(!(!((t=this._process)===null||t===void 0)&&t.stdin))throw new Error("Not connected");let s=ZS(e);this._process.stdin.write(s)?r():this._process.stdin.once("drain",r)})}};function fj(){return"type"in Ui.default}var rE=gt(require("path"),1),aE=require("os");Na();zi();function An(){let a=rE.default.join((0,aE.homedir)(),".claude-mem","settings.json"),e=Hr.loadFromFile(a);return parseInt(e.CLAUDE_MEM_WORKER_PORT,10)}Tt();Jc();var nE=gt(require("better-sqlite3"),1);Na();var Yc=class{db;constructor(e){e||(Xc(Or),e=Zc),this.db=new nE.default(e),this.db.pragma("journal_mode = WAL"),this.ensureFTSTables()}ensureFTSTables(){try{if(this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name LIKE '%_fts'").all().some(t=>t.name==="observations_fts"||t.name==="session_summaries_fts"))return;console.error("[SessionSearch] Creating FTS5 tables..."),this.db.exec(` CREATE VIRTUAL TABLE IF NOT EXISTS observations_fts USING fts5( title, subtitle, @@ -550,16 +590,16 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Obje WHERE ${c} ${u} LIMIT ? OFFSET ? - `;t.push(s,i);let m=this.db.prepare(p).all(...t),f=[],h={...o};delete h.type;let d=[];if(h.project&&(d.push("s.project = ?"),f.push(h.project)),h.dateRange){let{start:b,end:E}=h.dateRange;if(b){let O=typeof b=="number"?b:new Date(b).getTime();d.push("s.created_at_epoch >= ?"),f.push(O)}if(E){let O=typeof E=="number"?E:new Date(E).getTime();d.push("s.created_at_epoch <= ?"),f.push(O)}}d.push(`( + `;t.push(s,i);let f=this.db.prepare(p).all(...t),d=[],v={...o};delete v.type;let h=[];if(v.project&&(h.push("s.project = ?"),d.push(v.project)),v.dateRange){let{start:g,end:b}=v.dateRange;if(g){let w=typeof g=="number"?g:new Date(g).getTime();h.push("s.created_at_epoch >= ?"),d.push(w)}if(b){let w=typeof b=="number"?b:new Date(b).getTime();h.push("s.created_at_epoch <= ?"),d.push(w)}}h.push(`( EXISTS (SELECT 1 FROM json_each(s.files_read) WHERE value LIKE ?) OR EXISTS (SELECT 1 FROM json_each(s.files_edited) WHERE value LIKE ?) - )`),f.push(`%${e}%`,`%${e}%`);let v=` + )`),d.push(`%${e}%`,`%${e}%`);let m=` SELECT s.*, s.discovery_tokens FROM session_summaries s - WHERE ${d.join(" AND ")} + WHERE ${h.join(" AND ")} ORDER BY s.created_at_epoch DESC LIMIT ? OFFSET ? - `;f.push(s,i);let x=this.db.prepare(v).all(...f);return{observations:m,sessions:x}}findByType(e,r={}){let t=[],{limit:s=50,offset:i=0,orderBy:n="date_desc",...o}=r,l={...o,type:e},c=this.buildFilterClause(l,t,"o"),u=this.buildOrderClause(n,!1),p=` + `;d.push(s,i);let y=this.db.prepare(m).all(...d);return{observations:f,sessions:y}}findByType(e,r={}){let t=[],{limit:s=50,offset:i=0,orderBy:n="date_desc",...o}=r,l={...o,type:e},c=this.buildFilterClause(l,t,"o"),u=this.buildOrderClause(n,!1),p=` SELECT o.*, o.discovery_tokens FROM observations o WHERE ${c} @@ -583,39 +623,39 @@ ${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Obje FROM user_prompts WHERE claude_session_id = ? ORDER BY prompt_number ASC - `).all(e)}close(){this.db.close()}};var $E=Nt(require("path"),1),ME=Nt(require("os"),1),Fc=class{client=null;connected=!1;project;collectionName;VECTOR_DB_DIR;BATCH_SIZE=100;constructor(e){this.project=e,this.collectionName=`cm__${e}`,this.VECTOR_DB_DIR=$E.default.join(ME.default.homedir(),".claude-mem","vector-db")}async ensureConnection(){if(!(this.connected&&this.client)){H.info("CHROMA_SYNC","Connecting to Chroma MCP server...",{project:this.project});try{let e=process.env.CLAUDE_MEM_PYTHON_VERSION||"3.13",r=new En({command:"uvx",args:["--python",e,"chroma-mcp","--client-type","persistent","--data-dir",this.VECTOR_DB_DIR],stderr:"ignore"});this.client=new bn({name:"claude-mem-chroma-sync",version:"1.0.0"},{capabilities:{}}),await this.client.connect(r),this.connected=!0,H.info("CHROMA_SYNC","Connected to Chroma MCP server",{project:this.project})}catch(e){throw H.error("CHROMA_SYNC","Failed to connect to Chroma MCP server",{project:this.project},e),new Error(`Chroma connection failed: ${e instanceof Error?e.message:String(e)}`)}}}async ensureCollection(){if(await this.ensureConnection(),!this.client)throw new Error("Chroma client not initialized");try{await this.client.callTool({name:"chroma_get_collection_info",arguments:{collection_name:this.collectionName}}),H.debug("CHROMA_SYNC","Collection exists",{collection:this.collectionName})}catch{H.info("CHROMA_SYNC","Creating collection",{collection:this.collectionName});try{await this.client.callTool({name:"chroma_create_collection",arguments:{collection_name:this.collectionName,embedding_function_name:"default"}}),H.info("CHROMA_SYNC","Collection created",{collection:this.collectionName})}catch(r){throw H.error("CHROMA_SYNC","Failed to create collection",{collection:this.collectionName},r),new Error(`Collection creation failed: ${r instanceof Error?r.message:String(r)}`)}}}formatObservationDocs(e){let r=[],t=e.facts?JSON.parse(e.facts):[],s=e.concepts?JSON.parse(e.concepts):[],i=e.files_read?JSON.parse(e.files_read):[],n=e.files_modified?JSON.parse(e.files_modified):[],o={sqlite_id:e.id,doc_type:"observation",sdk_session_id:e.sdk_session_id,project:e.project,created_at_epoch:e.created_at_epoch,type:e.type||"discovery",title:e.title||"Untitled"};return e.subtitle&&(o.subtitle=e.subtitle),s.length>0&&(o.concepts=s.join(",")),i.length>0&&(o.files_read=i.join(",")),n.length>0&&(o.files_modified=n.join(",")),e.narrative&&r.push({id:`obs_${e.id}_narrative`,document:e.narrative,metadata:{...o,field_type:"narrative"}}),e.text&&r.push({id:`obs_${e.id}_text`,document:e.text,metadata:{...o,field_type:"text"}}),t.forEach((l,c)=>{r.push({id:`obs_${e.id}_fact_${c}`,document:l,metadata:{...o,field_type:"fact",fact_index:c}})}),r}formatSummaryDocs(e){let r=[],t={sqlite_id:e.id,doc_type:"session_summary",sdk_session_id:e.sdk_session_id,project:e.project,created_at_epoch:e.created_at_epoch,prompt_number:e.prompt_number||0};return e.request&&r.push({id:`summary_${e.id}_request`,document:e.request,metadata:{...t,field_type:"request"}}),e.investigated&&r.push({id:`summary_${e.id}_investigated`,document:e.investigated,metadata:{...t,field_type:"investigated"}}),e.learned&&r.push({id:`summary_${e.id}_learned`,document:e.learned,metadata:{...t,field_type:"learned"}}),e.completed&&r.push({id:`summary_${e.id}_completed`,document:e.completed,metadata:{...t,field_type:"completed"}}),e.next_steps&&r.push({id:`summary_${e.id}_next_steps`,document:e.next_steps,metadata:{...t,field_type:"next_steps"}}),e.notes&&r.push({id:`summary_${e.id}_notes`,document:e.notes,metadata:{...t,field_type:"notes"}}),r}async addDocuments(e){if(e.length!==0){if(await this.ensureCollection(),!this.client)throw new Error("Chroma client not initialized");try{await this.client.callTool({name:"chroma_add_documents",arguments:{collection_name:this.collectionName,documents:e.map(r=>r.document),ids:e.map(r=>r.id),metadatas:e.map(r=>r.metadata)}}),H.debug("CHROMA_SYNC","Documents added",{collection:this.collectionName,count:e.length})}catch(r){throw H.error("CHROMA_SYNC","Failed to add documents",{collection:this.collectionName,count:e.length},r),new Error(`Document add failed: ${r instanceof Error?r.message:String(r)}`)}}}async syncObservation(e,r,t,s,i,n,o=0){let l={id:e,sdk_session_id:r,project:t,text:null,type:s.type,title:s.title,subtitle:s.subtitle,facts:JSON.stringify(s.facts),narrative:s.narrative,concepts:JSON.stringify(s.concepts),files_read:JSON.stringify(s.files_read),files_modified:JSON.stringify(s.files_modified),prompt_number:i,discovery_tokens:o,created_at:new Date(n*1e3).toISOString(),created_at_epoch:n},c=this.formatObservationDocs(l);H.info("CHROMA_SYNC","Syncing observation",{observationId:e,documentCount:c.length,project:t}),await this.addDocuments(c)}async syncSummary(e,r,t,s,i,n,o=0){let l={id:e,sdk_session_id:r,project:t,request:s.request,investigated:s.investigated,learned:s.learned,completed:s.completed,next_steps:s.next_steps,notes:s.notes,prompt_number:i,discovery_tokens:o,created_at:new Date(n*1e3).toISOString(),created_at_epoch:n},c=this.formatSummaryDocs(l);H.info("CHROMA_SYNC","Syncing summary",{summaryId:e,documentCount:c.length,project:t}),await this.addDocuments(c)}formatUserPromptDoc(e){return{id:`prompt_${e.id}`,document:e.prompt_text,metadata:{sqlite_id:e.id,doc_type:"user_prompt",sdk_session_id:e.sdk_session_id,project:e.project,created_at_epoch:e.created_at_epoch,prompt_number:e.prompt_number}}}async syncUserPrompt(e,r,t,s,i,n){let o={id:e,claude_session_id:"",prompt_number:i,prompt_text:s,created_at:new Date(n*1e3).toISOString(),created_at_epoch:n,sdk_session_id:r,project:t},l=this.formatUserPromptDoc(o);H.info("CHROMA_SYNC","Syncing user prompt",{promptId:e,project:t}),await this.addDocuments([l])}async getExistingChromaIds(){if(await this.ensureConnection(),!this.client)throw new Error("Chroma client not initialized");let e=new Set,r=new Set,t=new Set,s=0,i=1e3;for(H.info("CHROMA_SYNC","Fetching existing Chroma document IDs...",{project:this.project});;)try{let o=(await this.client.callTool({name:"chroma_get_documents",arguments:{collection_name:this.collectionName,limit:i,offset:s,where:{project:this.project},include:["metadatas"]}})).content[0];if(o.type!=="text")throw new Error("Unexpected response type from chroma_get_documents");let c=JSON.parse(o.text).metadatas||[];if(c.length===0)break;for(let u of c)u.sqlite_id&&(u.doc_type==="observation"?e.add(u.sqlite_id):u.doc_type==="session_summary"?r.add(u.sqlite_id):u.doc_type==="user_prompt"&&t.add(u.sqlite_id));s+=i,H.debug("CHROMA_SYNC","Fetched batch of existing IDs",{project:this.project,offset:s,batchSize:c.length})}catch(n){throw H.error("CHROMA_SYNC","Failed to fetch existing IDs",{project:this.project},n),n}return H.info("CHROMA_SYNC","Existing IDs fetched",{project:this.project,observations:e.size,summaries:r.size,prompts:t.size}),{observations:e,summaries:r,prompts:t}}async ensureBackfilled(){H.info("CHROMA_SYNC","Starting smart backfill",{project:this.project}),await this.ensureCollection();let e=await this.getExistingChromaIds(),r=new wn;try{let t=Array.from(e.observations),s=t.length>0?`AND id NOT IN (${t.join(",")})`:"",i=r.db.prepare(` + `).all(e)}close(){this.db.close()}};Jc();Tt();var iE=gt(require("path"),1),oE=gt(require("os"),1),el=class{client=null;connected=!1;project;collectionName;VECTOR_DB_DIR;BATCH_SIZE=100;constructor(e){this.project=e,this.collectionName=`cm__${e}`,this.VECTOR_DB_DIR=iE.default.join(oE.default.homedir(),".claude-mem","vector-db")}async ensureConnection(){if(!(this.connected&&this.client)){W.info("CHROMA_SYNC","Connecting to Chroma MCP server...",{project:this.project});try{let e=new kn({command:"uvx",args:["chroma-mcp","--client-type","persistent","--data-dir",this.VECTOR_DB_DIR],stderr:"ignore"});this.client=new Rn({name:"claude-mem-chroma-sync",version:"1.0.0"},{capabilities:{}}),await this.client.connect(e),this.connected=!0,W.info("CHROMA_SYNC","Connected to Chroma MCP server",{project:this.project})}catch(e){throw W.error("CHROMA_SYNC","Failed to connect to Chroma MCP server",{project:this.project},e),new Error(`Chroma connection failed: ${e instanceof Error?e.message:String(e)}`)}}}async ensureCollection(){if(await this.ensureConnection(),!this.client)throw new Error("Chroma client not initialized");try{await this.client.callTool({name:"chroma_get_collection_info",arguments:{collection_name:this.collectionName}}),W.debug("CHROMA_SYNC","Collection exists",{collection:this.collectionName})}catch{W.info("CHROMA_SYNC","Creating collection",{collection:this.collectionName});try{await this.client.callTool({name:"chroma_create_collection",arguments:{collection_name:this.collectionName,embedding_function_name:"default"}}),W.info("CHROMA_SYNC","Collection created",{collection:this.collectionName})}catch(r){throw W.error("CHROMA_SYNC","Failed to create collection",{collection:this.collectionName},r),new Error(`Collection creation failed: ${r instanceof Error?r.message:String(r)}`)}}}formatObservationDocs(e){let r=[],t=e.facts?JSON.parse(e.facts):[],s=e.concepts?JSON.parse(e.concepts):[],i=e.files_read?JSON.parse(e.files_read):[],n=e.files_modified?JSON.parse(e.files_modified):[],o={sqlite_id:e.id,doc_type:"observation",sdk_session_id:e.sdk_session_id,project:e.project,created_at_epoch:e.created_at_epoch,type:e.type||"discovery",title:e.title||"Untitled"};return e.subtitle&&(o.subtitle=e.subtitle),s.length>0&&(o.concepts=s.join(",")),i.length>0&&(o.files_read=i.join(",")),n.length>0&&(o.files_modified=n.join(",")),e.narrative&&r.push({id:`obs_${e.id}_narrative`,document:e.narrative,metadata:{...o,field_type:"narrative"}}),e.text&&r.push({id:`obs_${e.id}_text`,document:e.text,metadata:{...o,field_type:"text"}}),t.forEach((l,c)=>{r.push({id:`obs_${e.id}_fact_${c}`,document:l,metadata:{...o,field_type:"fact",fact_index:c}})}),r}formatSummaryDocs(e){let r=[],t={sqlite_id:e.id,doc_type:"session_summary",sdk_session_id:e.sdk_session_id,project:e.project,created_at_epoch:e.created_at_epoch,prompt_number:e.prompt_number||0};return e.request&&r.push({id:`summary_${e.id}_request`,document:e.request,metadata:{...t,field_type:"request"}}),e.investigated&&r.push({id:`summary_${e.id}_investigated`,document:e.investigated,metadata:{...t,field_type:"investigated"}}),e.learned&&r.push({id:`summary_${e.id}_learned`,document:e.learned,metadata:{...t,field_type:"learned"}}),e.completed&&r.push({id:`summary_${e.id}_completed`,document:e.completed,metadata:{...t,field_type:"completed"}}),e.next_steps&&r.push({id:`summary_${e.id}_next_steps`,document:e.next_steps,metadata:{...t,field_type:"next_steps"}}),e.notes&&r.push({id:`summary_${e.id}_notes`,document:e.notes,metadata:{...t,field_type:"notes"}}),r}async addDocuments(e){if(e.length!==0){if(await this.ensureCollection(),!this.client)throw new Error("Chroma client not initialized");try{await this.client.callTool({name:"chroma_add_documents",arguments:{collection_name:this.collectionName,documents:e.map(r=>r.document),ids:e.map(r=>r.id),metadatas:e.map(r=>r.metadata)}}),W.debug("CHROMA_SYNC","Documents added",{collection:this.collectionName,count:e.length})}catch(r){throw W.error("CHROMA_SYNC","Failed to add documents",{collection:this.collectionName,count:e.length},r),new Error(`Document add failed: ${r instanceof Error?r.message:String(r)}`)}}}async syncObservation(e,r,t,s,i,n,o=0){let l={id:e,sdk_session_id:r,project:t,text:null,type:s.type,title:s.title,subtitle:s.subtitle,facts:JSON.stringify(s.facts),narrative:s.narrative,concepts:JSON.stringify(s.concepts),files_read:JSON.stringify(s.files_read),files_modified:JSON.stringify(s.files_modified),prompt_number:i,discovery_tokens:o,created_at:new Date(n*1e3).toISOString(),created_at_epoch:n},c=this.formatObservationDocs(l);W.info("CHROMA_SYNC","Syncing observation",{observationId:e,documentCount:c.length,project:t}),await this.addDocuments(c)}async syncSummary(e,r,t,s,i,n,o=0){let l={id:e,sdk_session_id:r,project:t,request:s.request,investigated:s.investigated,learned:s.learned,completed:s.completed,next_steps:s.next_steps,notes:s.notes,prompt_number:i,discovery_tokens:o,created_at:new Date(n*1e3).toISOString(),created_at_epoch:n},c=this.formatSummaryDocs(l);W.info("CHROMA_SYNC","Syncing summary",{summaryId:e,documentCount:c.length,project:t}),await this.addDocuments(c)}formatUserPromptDoc(e){return{id:`prompt_${e.id}`,document:e.prompt_text,metadata:{sqlite_id:e.id,doc_type:"user_prompt",sdk_session_id:e.sdk_session_id,project:e.project,created_at_epoch:e.created_at_epoch,prompt_number:e.prompt_number}}}async syncUserPrompt(e,r,t,s,i,n){let o={id:e,claude_session_id:"",prompt_number:i,prompt_text:s,created_at:new Date(n*1e3).toISOString(),created_at_epoch:n,sdk_session_id:r,project:t},l=this.formatUserPromptDoc(o);W.info("CHROMA_SYNC","Syncing user prompt",{promptId:e,project:t}),await this.addDocuments([l])}async getExistingChromaIds(){if(await this.ensureConnection(),!this.client)throw new Error("Chroma client not initialized");let e=new Set,r=new Set,t=new Set,s=0,i=1e3;for(W.info("CHROMA_SYNC","Fetching existing Chroma document IDs...",{project:this.project});;)try{let o=(await this.client.callTool({name:"chroma_get_documents",arguments:{collection_name:this.collectionName,limit:i,offset:s,where:{project:this.project},include:["metadatas"]}})).content[0];if(o.type!=="text")throw new Error("Unexpected response type from chroma_get_documents");let c=JSON.parse(o.text).metadatas||[];if(c.length===0)break;for(let u of c)u.sqlite_id&&(u.doc_type==="observation"?e.add(u.sqlite_id):u.doc_type==="session_summary"?r.add(u.sqlite_id):u.doc_type==="user_prompt"&&t.add(u.sqlite_id));s+=i,W.debug("CHROMA_SYNC","Fetched batch of existing IDs",{project:this.project,offset:s,batchSize:c.length})}catch(n){throw W.error("CHROMA_SYNC","Failed to fetch existing IDs",{project:this.project},n),n}return W.info("CHROMA_SYNC","Existing IDs fetched",{project:this.project,observations:e.size,summaries:r.size,prompts:t.size}),{observations:e,summaries:r,prompts:t}}async ensureBackfilled(){W.info("CHROMA_SYNC","Starting smart backfill",{project:this.project}),await this.ensureCollection();let e=await this.getExistingChromaIds(),r=new Da;try{let t=Array.from(e.observations),s=t.length>0?`AND id NOT IN (${t.join(",")})`:"",i=r.db.prepare(` SELECT * FROM observations WHERE project = ? ${s} ORDER BY id ASC `).all(this.project),n=r.db.prepare(` SELECT COUNT(*) as count FROM observations WHERE project = ? - `).get(this.project);H.info("CHROMA_SYNC","Backfilling observations",{project:this.project,missing:i.length,existing:e.observations.size,total:n.count});let o=[];for(let b of i)o.push(...this.formatObservationDocs(b));for(let b=0;b0?`AND id NOT IN (${l.join(",")})`:"",u=r.db.prepare(` + `).get(this.project);W.info("CHROMA_SYNC","Backfilling observations",{project:this.project,missing:i.length,existing:e.observations.size,total:n.count});let o=[];for(let g of i)o.push(...this.formatObservationDocs(g));for(let g=0;g0?`AND id NOT IN (${l.join(",")})`:"",u=r.db.prepare(` SELECT * FROM session_summaries WHERE project = ? ${c} ORDER BY id ASC `).all(this.project),p=r.db.prepare(` SELECT COUNT(*) as count FROM session_summaries WHERE project = ? - `).get(this.project);H.info("CHROMA_SYNC","Backfilling summaries",{project:this.project,missing:u.length,existing:e.summaries.size,total:p.count});let m=[];for(let b of u)m.push(...this.formatSummaryDocs(b));for(let b=0;b0?`AND up.id NOT IN (${f.join(",")})`:"",d=r.db.prepare(` + `).get(this.project);W.info("CHROMA_SYNC","Backfilling summaries",{project:this.project,missing:u.length,existing:e.summaries.size,total:p.count});let f=[];for(let g of u)f.push(...this.formatSummaryDocs(g));for(let g=0;g0?`AND up.id NOT IN (${d.join(",")})`:"",h=r.db.prepare(` SELECT up.*, s.project, s.sdk_session_id FROM user_prompts up JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - WHERE s.project = ? ${h} + WHERE s.project = ? ${v} ORDER BY up.id ASC - `).all(this.project),v=r.db.prepare(` + `).all(this.project),m=r.db.prepare(` SELECT COUNT(*) as count FROM user_prompts up JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id WHERE s.project = ? - `).get(this.project);H.info("CHROMA_SYNC","Backfilling user prompts",{project:this.project,missing:d.length,existing:e.prompts.size,total:v.count});let x=[];for(let b of d)x.push(this.formatUserPromptDoc(b));for(let b=0;b{H.error("DB","Chroma backfill failed (non-fatal)",{},e)}),H.info("DB","Database initialized")}async close(){if(this.chromaSync)try{await this.chromaSync.close(),this.chromaSync=null}catch(e){H.error("DB","Failed to close ChromaSync",{},e)}this.sessionStore&&(this.sessionStore.close(),this.sessionStore=null),this.sessionSearch&&(this.sessionSearch.close(),this.sessionSearch=null),H.info("DB","Database closed")}getSessionStore(){if(!this.sessionStore)throw new Error("Database not initialized");return this.sessionStore}getSessionSearch(){if(!this.sessionSearch)throw new Error("Database not initialized");return this.sessionSearch}getChromaSync(){if(!this.chromaSync)throw new Error("ChromaSync not initialized");return this.chromaSync}getSessionById(e){let r=this.getSessionStore().getSessionById(e);if(!r)throw new Error(`Session ${e} not found`);return r}markSessionComplete(e){this.getSessionStore().markSessionCompleted(e)}};var UE=require("events");var LE=require("fs"),qE=require("os"),FE=require("path"),jj=(0,FE.join)((0,qE.homedir)(),".claude-mem","silent.log");function Ut(a,e,r=""){let t=new Date().toISOString(),o=((new Error().stack||"").split(` + `).get(this.project);W.info("CHROMA_SYNC","Backfilling user prompts",{project:this.project,missing:h.length,existing:e.prompts.size,total:m.count});let y=[];for(let g of h)y.push(this.formatUserPromptDoc(g));for(let g=0;g{W.error("DB","Chroma backfill failed (non-fatal)",{},e)}),W.info("DB","Database initialized")}async close(){if(this.chromaSync)try{await this.chromaSync.close(),this.chromaSync=null}catch(e){W.error("DB","Failed to close ChromaSync",{},e)}this.sessionStore&&(this.sessionStore.close(),this.sessionStore=null),this.sessionSearch&&(this.sessionSearch.close(),this.sessionSearch=null),W.info("DB","Database closed")}getSessionStore(){if(!this.sessionStore)throw new Error("Database not initialized");return this.sessionStore}getSessionSearch(){if(!this.sessionSearch)throw new Error("Database not initialized");return this.sessionSearch}getChromaSync(){if(!this.chromaSync)throw new Error("ChromaSync not initialized");return this.chromaSync}getSessionById(e){let r=this.getSessionStore().getSessionById(e);if(!r)throw new Error(`Session ${e} not found`);return r}markSessionComplete(e){this.getSessionStore().markSessionCompleted(e)}};var pE=require("events");Tt();var cE=require("fs"),lE=require("os"),uE=require("path"),gj=(0,uE.join)((0,lE.homedir)(),".claude-mem","silent.log");function ie(a,e,r=""){let t=new Date().toISOString(),o=((new Error().stack||"").split(` `)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),l=o?`${o[1].split("/").pop()}:${o[2]}`:"unknown",c=`[${t}] [${l}] ${a}`;if(e!==void 0)try{c+=` ${JSON.stringify(e)}`}catch(u){c+=` [stringify error: ${u}]`}c+=` -`;try{(0,LE.appendFileSync)(jj,c)}catch(u){console.error("[silent-debug] Failed to write to log:",u)}return r}var zc=class{dbManager;sessions=new Map;sessionQueues=new Map;onSessionDeletedCallback;constructor(e){this.dbManager=e}setOnSessionDeleted(e){this.onSessionDeletedCallback=e}initializeSession(e,r,t){let s=this.sessions.get(e);if(s){let l=this.dbManager.getSessionById(e);return l.project&&l.project!==s.project&&(Ut("[SessionManager] Updating project from database",{sessionDbId:e,oldProject:s.project,newProject:l.project}),s.project=l.project),r?(Ut("[SessionManager] Updating userPrompt for continuation",{sessionDbId:e,promptNumber:t,oldPrompt:s.userPrompt.substring(0,80),newPrompt:r.substring(0,80)}),s.userPrompt=r,s.lastPromptNumber=t||s.lastPromptNumber):Ut("[SessionManager] No currentUserPrompt provided for existing session",{sessionDbId:e,promptNumber:t,usingCachedPrompt:s.userPrompt.substring(0,80)}),s}let i=this.dbManager.getSessionById(e),n=r||i.user_prompt;r?Ut("[SessionManager] Initializing session with fresh userPrompt",{sessionDbId:e,promptNumber:t,userPrompt:r.substring(0,80)}):Ut("[SessionManager] No currentUserPrompt provided for new session, using database",{sessionDbId:e,promptNumber:t,dbPrompt:i.user_prompt.substring(0,80)}),s={sessionDbId:e,claudeSessionId:i.claude_session_id,sdkSessionId:null,project:i.project,userPrompt:n,pendingMessages:[],abortController:new AbortController,generatorPromise:null,lastPromptNumber:t||this.dbManager.getSessionStore().getPromptCounter(e),startTime:Date.now(),cumulativeInputTokens:0,cumulativeOutputTokens:0},this.sessions.set(e,s);let o=new UE.EventEmitter;return this.sessionQueues.set(e,o),H.info("SESSION","Session initialized",{sessionId:e,project:s.project,claudeSessionId:s.claudeSessionId,queueDepth:0,hasGenerator:!1}),s}getSession(e){return this.sessions.get(e)}queueObservation(e,r){let t=this.sessions.get(e);t||(t=this.initializeSession(e));let s=t.pendingMessages.length;t.pendingMessages.push({type:"observation",tool_name:r.tool_name,tool_input:r.tool_input,tool_response:r.tool_response,prompt_number:r.prompt_number,cwd:r.cwd});let i=t.pendingMessages.length;this.sessionQueues.get(e)?.emit("message");let o=H.formatTool(r.tool_name,r.tool_input);H.info("SESSION",`Observation queued (${s}\u2192${i})`,{sessionId:e,tool:o,hasGenerator:!!t.generatorPromise})}queueSummarize(e,r,t){let s=this.sessions.get(e);s||(s=this.initializeSession(e));let i=s.pendingMessages.length;s.pendingMessages.push({type:"summarize",last_user_message:r,last_assistant_message:t});let n=s.pendingMessages.length;this.sessionQueues.get(e)?.emit("message"),H.info("SESSION",`Summarize queued (${i}\u2192${n})`,{sessionId:e,hasGenerator:!!s.generatorPromise})}async deleteSession(e){let r=this.sessions.get(e);if(!r)return;let t=Date.now()-r.startTime;r.abortController.abort(),r.generatorPromise&&await r.generatorPromise.catch(()=>{}),this.sessions.delete(e),this.sessionQueues.delete(e),H.info("SESSION","Session deleted",{sessionId:e,duration:`${(t/1e3).toFixed(1)}s`,project:r.project}),this.onSessionDeletedCallback&&this.onSessionDeletedCallback()}async shutdownAll(){let e=Array.from(this.sessions.keys());await Promise.all(e.map(r=>this.deleteSession(r)))}hasPendingMessages(){return Array.from(this.sessions.values()).some(e=>e.pendingMessages.length>0)}getActiveSessionCount(){return this.sessions.size}getTotalQueueDepth(){let e=0;for(let r of this.sessions.values())e+=r.pendingMessages.length;return e}getTotalActiveWork(){let e=0;for(let r of this.sessions.values())e+=r.pendingMessages.length,r.generatorPromise!==null&&(e+=1);return e}isAnySessionProcessing(){for(let e of this.sessions.values())if(e.pendingMessages.length>0||e.generatorPromise!==null)return!0;return!1}async*getMessageIterator(e){let r=this.sessions.get(e);r||(r=this.initializeSession(e));let t=this.sessionQueues.get(e);if(!t)throw new Error(`No emitter for session ${e}`);for(;!r.abortController.signal.aborted;)for(r.pendingMessages.length===0&&await new Promise(s=>{let i=()=>s();t.once("message",i),r.abortController.signal.addEventListener("abort",()=>{t.off("message",i),s()},{once:!0})});r.pendingMessages.length>0;){let s=r.pendingMessages.shift();if(yield s,s.type==="summarize"){H.info("SESSION","Summary yielded - ending generator",{sessionId:e});return}}}};var Hc=class{sseClients=new Set;addClient(e){this.sseClients.add(e),H.debug("WORKER","Client connected",{total:this.sseClients.size}),e.on("close",()=>{this.removeClient(e)}),this.sendToClient(e,{type:"connected",timestamp:Date.now()})}removeClient(e){this.sseClients.delete(e),H.debug("WORKER","Client disconnected",{total:this.sseClients.size})}broadcast(e){if(this.sseClients.size===0){H.debug("WORKER","SSE broadcast skipped (no clients)",{eventType:e.type});return}let r={...e,timestamp:Date.now()},t=`data: ${JSON.stringify(r)} +`;try{(0,cE.appendFileSync)(gj,c)}catch(u){console.error("[silent-debug] Failed to write to log:",u)}return r}var rl=class{dbManager;sessions=new Map;sessionQueues=new Map;onSessionDeletedCallback;constructor(e){this.dbManager=e}setOnSessionDeleted(e){this.onSessionDeletedCallback=e}initializeSession(e,r,t){let s=this.sessions.get(e);if(s){let l=this.dbManager.getSessionById(e);return l.project&&l.project!==s.project&&(ie("[SessionManager] Updating project from database",{sessionDbId:e,oldProject:s.project,newProject:l.project}),s.project=l.project),r?(ie("[SessionManager] Updating userPrompt for continuation",{sessionDbId:e,promptNumber:t,oldPrompt:s.userPrompt.substring(0,80),newPrompt:r.substring(0,80)}),s.userPrompt=r,s.lastPromptNumber=t||s.lastPromptNumber):ie("[SessionManager] No currentUserPrompt provided for existing session",{sessionDbId:e,promptNumber:t,usingCachedPrompt:s.userPrompt.substring(0,80)}),s}let i=this.dbManager.getSessionById(e),n=r||i.user_prompt;r?ie("[SessionManager] Initializing session with fresh userPrompt",{sessionDbId:e,promptNumber:t,userPrompt:r.substring(0,80)}):ie("[SessionManager] No currentUserPrompt provided for new session, using database",{sessionDbId:e,promptNumber:t,dbPrompt:i.user_prompt.substring(0,80)}),s={sessionDbId:e,claudeSessionId:i.claude_session_id,sdkSessionId:null,project:i.project,userPrompt:n,pendingMessages:[],abortController:new AbortController,generatorPromise:null,lastPromptNumber:t||this.dbManager.getSessionStore().getPromptCounter(e),startTime:Date.now(),cumulativeInputTokens:0,cumulativeOutputTokens:0},this.sessions.set(e,s);let o=new pE.EventEmitter;return this.sessionQueues.set(e,o),W.info("SESSION","Session initialized",{sessionId:e,project:s.project,claudeSessionId:s.claudeSessionId,queueDepth:0,hasGenerator:!1}),s}getSession(e){return this.sessions.get(e)}queueObservation(e,r){let t=this.sessions.get(e);t||(t=this.initializeSession(e));let s=t.pendingMessages.length;t.pendingMessages.push({type:"observation",tool_name:r.tool_name,tool_input:r.tool_input,tool_response:r.tool_response,prompt_number:r.prompt_number,cwd:r.cwd});let i=t.pendingMessages.length;this.sessionQueues.get(e)?.emit("message");let o=W.formatTool(r.tool_name,r.tool_input);W.info("SESSION",`Observation queued (${s}\u2192${i})`,{sessionId:e,tool:o,hasGenerator:!!t.generatorPromise})}queueSummarize(e,r,t){let s=this.sessions.get(e);s||(s=this.initializeSession(e));let i=s.pendingMessages.length;s.pendingMessages.push({type:"summarize",last_user_message:r,last_assistant_message:t});let n=s.pendingMessages.length;this.sessionQueues.get(e)?.emit("message"),W.info("SESSION",`Summarize queued (${i}\u2192${n})`,{sessionId:e,hasGenerator:!!s.generatorPromise})}async deleteSession(e){let r=this.sessions.get(e);if(!r)return;let t=Date.now()-r.startTime;r.abortController.abort(),r.generatorPromise&&await r.generatorPromise.catch(()=>{}),this.sessions.delete(e),this.sessionQueues.delete(e),W.info("SESSION","Session deleted",{sessionId:e,duration:`${(t/1e3).toFixed(1)}s`,project:r.project}),this.onSessionDeletedCallback&&this.onSessionDeletedCallback()}async shutdownAll(){let e=Array.from(this.sessions.keys());await Promise.all(e.map(r=>this.deleteSession(r)))}hasPendingMessages(){return Array.from(this.sessions.values()).some(e=>e.pendingMessages.length>0)}getActiveSessionCount(){return this.sessions.size}getTotalQueueDepth(){let e=0;for(let r of this.sessions.values())e+=r.pendingMessages.length;return e}getTotalActiveWork(){let e=0;for(let r of this.sessions.values())e+=r.pendingMessages.length,r.generatorPromise!==null&&(e+=1);return e}isAnySessionProcessing(){for(let e of this.sessions.values())if(e.pendingMessages.length>0||e.generatorPromise!==null)return!0;return!1}async*getMessageIterator(e){let r=this.sessions.get(e);r||(r=this.initializeSession(e));let t=this.sessionQueues.get(e);if(!t)throw new Error(`No emitter for session ${e}`);for(;!r.abortController.signal.aborted;)for(r.pendingMessages.length===0&&await new Promise(s=>{let i=()=>s();t.once("message",i),r.abortController.signal.addEventListener("abort",()=>{t.off("message",i),s()},{once:!0})});r.pendingMessages.length>0;){let s=r.pendingMessages.shift();if(yield s,s.type==="summarize"){W.info("SESSION","Summary yielded - ending generator",{sessionId:e});return}}}};Tt();var al=class{sseClients=new Set;addClient(e){this.sseClients.add(e),W.debug("WORKER","Client connected",{total:this.sseClients.size}),e.on("close",()=>{this.removeClient(e)}),this.sendToClient(e,{type:"connected",timestamp:Date.now()})}removeClient(e){this.sseClients.delete(e),W.debug("WORKER","Client disconnected",{total:this.sseClients.size})}broadcast(e){if(this.sseClients.size===0){W.debug("WORKER","SSE broadcast skipped (no clients)",{eventType:e.type});return}let r={...e,timestamp:Date.now()},t=`data: ${JSON.stringify(r)} -`;H.debug("WORKER","SSE broadcast sent",{eventType:e.type,clients:this.sseClients.size});for(let s of this.sseClients)try{s.write(t)}catch{this.sseClients.delete(s),H.debug("WORKER","Client removed due to write error")}}getClientCount(){return this.sseClients.size}sendToClient(e,r){let t=`data: ${JSON.stringify(r)} +`;W.debug("WORKER","SSE broadcast sent",{eventType:e.type,clients:this.sseClients.size});for(let s of this.sseClients)try{s.write(t)}catch{this.sseClients.delete(s),W.debug("WORKER","Client removed due to write error")}}getClientCount(){return this.sseClients.size}sendToClient(e,r){let t=`data: ${JSON.stringify(r)} -`;try{e.write(t)}catch{this.sseClients.delete(e)}}};var Q1=require("child_process"),Y1=require("os"),J1=Nt(require("path"),1),il=require("fs");function zE(a,e){let r=[],t=/([\s\S]*?)<\/observation>/g,s;for(;(s=t.exec(a))!==null;){let i=s[1],n=Ur(i,"type"),o=Ur(i,"title"),l=Ur(i,"subtitle"),c=Ur(i,"narrative"),u=Bc(i,"facts","fact"),p=Bc(i,"concepts","concept"),m=Bc(i,"files_read","file"),f=Bc(i,"files_modified","file"),h="change";n?["bugfix","feature","refactor","change","discovery","decision"].includes(n.trim())?h=n.trim():H.warn("PARSER",`Invalid observation type: ${n}, using "change"`,{correlationId:e}):H.warn("PARSER",'Observation missing type field, using "change"',{correlationId:e});let d=p.filter(v=>v!==h);d.length!==p.length&&H.warn("PARSER","Removed observation type from concepts array",{correlationId:e,type:h,originalConcepts:p,cleanedConcepts:d}),r.push({type:h,title:o,subtitle:l,facts:u,narrative:c,concepts:d,files_read:m,files_modified:f})}return r}function HE(a,e){let t=//.exec(a);if(t)return H.info("PARSER","Summary skipped",{sessionId:e,reason:t[1]}),null;let i=/([\s\S]*?)<\/summary>/.exec(a);if(!i)return null;let n=i[1],o=Ur(n,"request"),l=Ur(n,"investigated"),c=Ur(n,"learned"),u=Ur(n,"completed"),p=Ur(n,"next_steps"),m=Ur(n,"notes");return{request:o,investigated:l,learned:c,completed:u,next_steps:p,notes:m}}function Ur(a,e){let t=new RegExp(`<${e}>([^<]*)`).exec(a);if(!t)return null;let s=t[1].trim();return s===""?null:s}function Bc(a,e,r){let t=[],i=new RegExp(`<${e}>(.*?)`,"s").exec(a);if(!i)return t;let n=i[1],o=new RegExp(`<${r}>([^<]+)`,"g"),l;for(;(l=o.exec(n))!==null;)t.push(l[1].trim());return t}function BE(a,e,r){return`You are a Claude-Mem, a specialized observer tool for creating searchable memory FOR FUTURE SESSIONS. +`;try{e.write(t)}catch{this.sseClients.delete(e)}}};var _w=require("child_process"),Sw=require("os"),Ew=gt(require("path"),1);Tt();Tt();function dE(a,e){let r=[],t=/([\s\S]*?)<\/observation>/g,s;for(;(s=t.exec(a))!==null;){let i=s[1],n=Vr(i,"type"),o=Vr(i,"title"),l=Vr(i,"subtitle"),c=Vr(i,"narrative"),u=sl(i,"facts","fact"),p=sl(i,"concepts","concept"),f=sl(i,"files_read","file"),d=sl(i,"files_modified","file"),v="change";n?["bugfix","feature","refactor","change","discovery","decision"].includes(n.trim())?v=n.trim():W.warn("PARSER",`Invalid observation type: ${n}, using "change"`,{correlationId:e}):W.warn("PARSER",'Observation missing type field, using "change"',{correlationId:e});let h=p.filter(m=>m!==v);h.length!==p.length&&W.warn("PARSER","Removed observation type from concepts array",{correlationId:e,type:v,originalConcepts:p,cleanedConcepts:h}),r.push({type:v,title:o,subtitle:l,facts:u,narrative:c,concepts:h,files_read:f,files_modified:d})}return r}function fE(a,e){let t=//.exec(a);if(t)return W.info("PARSER","Summary skipped",{sessionId:e,reason:t[1]}),null;let i=/([\s\S]*?)<\/summary>/.exec(a);if(!i)return null;let n=i[1],o=Vr(n,"request"),l=Vr(n,"investigated"),c=Vr(n,"learned"),u=Vr(n,"completed"),p=Vr(n,"next_steps"),f=Vr(n,"notes");return{request:o,investigated:l,learned:c,completed:u,next_steps:p,notes:f}}function Vr(a,e){let t=new RegExp(`<${e}>([^<]*)`).exec(a);if(!t)return null;let s=t[1].trim();return s===""?null:s}function sl(a,e,r){let t=[],i=new RegExp(`<${e}>(.*?)`,"s").exec(a);if(!i)return t;let n=i[1],o=new RegExp(`<${r}>([^<]+)`,"g"),l;for(;(l=o.exec(n))!==null;)t.push(l[1].trim());return t}function mE(a,e,r){return`You are a Claude-Mem, a specialized observer tool for creating searchable memory FOR FUTURE SESSIONS. CRITICAL: Record what was LEARNED/BUILT/FIXED/DEPLOYED/CONFIGURED, not what you (the observer) are doing. @@ -730,13 +770,13 @@ Never reference yourself or your own actions. Do not output anything other than Remember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your help! MEMORY PROCESSING START -=======================`}function VE(a){let e,r;try{e=typeof a.tool_input=="string"?JSON.parse(a.tool_input):a.tool_input}catch{e=a.tool_input}try{r=typeof a.tool_output=="string"?JSON.parse(a.tool_output):a.tool_output}catch{r=a.tool_output}return` +=======================`}function hE(a){let e,r;try{e=typeof a.tool_input=="string"?JSON.parse(a.tool_input):a.tool_input}catch{e=a.tool_input}try{r=typeof a.tool_output=="string"?JSON.parse(a.tool_output):a.tool_output}catch{r=a.tool_output}return` ${a.tool_name} ${new Date(a.created_at_epoch).toISOString()}${a.cwd?` ${a.cwd}`:""} ${JSON.stringify(e,null,2)} ${JSON.stringify(r,null,2)} -`}function GE(a){return`PROGRESS SUMMARY CHECKPOINT +`}function vE(a){return`PROGRESS SUMMARY CHECKPOINT =========================== Write progress notes of what was done, what was learned, and what's next. This is a checkpoint to capture progress so far. The session is ongoing - you may receive more requests and tool executions after this summary. Write "next_steps" as the current trajectory of work (what's actively being worked on or coming up next), not as post-session future work. Always write at least a minimal summary explaining current progress, even if work is still in early stages, so that users see a summary output tied to each request. @@ -757,7 +797,7 @@ IMPORTANT! DO NOT do any work right now other than generating this next PROGRESS Never reference yourself or your own actions. Do not output anything other than the summary content formatted in the XML structure above. All other output is ignored by the system, and the system has been designed to be smart about token usage. Please spend your tokens wisely on useful summary content. -Thank you, this summary will be very useful for keeping track of our progress!`}function WE(a,e,r){return` +Thank you, this summary will be very useful for keeping track of our progress!`}function gE(a,e,r){return` Hello memory agent, you are continuing to observe the primary Claude session. @@ -847,18 +887,18 @@ Never reference yourself or your own actions. Do not output anything other than Remember that we record these observations as a way of helping us stay on track with our progress, and to help us keep important decisions and changes at the forefront of our minds! :) Thank you so much for your continued help! MEMORY PROCESSING CONTINUED -===========================`}var Rd=require("path"),d1=require("url"),f1=require("events"),h1=require("child_process"),v1=require("readline"),Oe=Nt(require("fs"),1),g1=require("fs/promises"),w1=require("path"),S1=require("os"),gs=require("path"),Ad=require("process"),P1=require("crypto"),q$={},Dj=Object.create,$j=Object.getPrototypeOf,Td=Object.defineProperty,Mj=Object.getOwnPropertyNames,Lj=Object.prototype.hasOwnProperty,qj=(a,e,r)=>{r=a!=null?Dj($j(a)):{};let t=e||!a||!a.__esModule?Td(r,"default",{value:a,enumerable:!0}):r;for(let s of Mj(a))Lj.call(t,s)||Td(t,s,{get:()=>a[s],enumerable:!0});return t},ke=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports),Fj=(a,e)=>{for(var r in e)Td(a,r,{get:e[r],enumerable:!0,configurable:!0,set:t=>e[r]=()=>t})},Uj=ke((a,e)=>{(function(r,t){typeof a=="object"&&typeof e<"u"?t(a):typeof define=="function"&&define.amd?define(["exports"],t):t(r.URI=r.URI||{})})(a,function(r){function t(){for(var y=arguments.length,g=Array(y),S=0;S1){g[0]=g[0].slice(0,-1);for(var D=g.length-1,F=1;F= 0x80 (not a basic code point)","invalid-input":"Invalid input"},M=d-v,k=Math.floor,T=String.fromCharCode;function N(y){throw new RangeError(q[y])}function z(y,g){for(var S=[],D=y.length;D--;)S[D]=g(y[D]);return S}function B(y,g){var S=y.split("@"),D="";S.length>1&&(D=S[0]+"@",y=S[1]),y=y.replace(I,".");var F=y.split("."),K=z(F,g).join(".");return D+K}function G(y){for(var g=[],S=0,D=y.length;S=55296&&F<=56319&&S>1,g+=k(g/S);g>M*x>>1;F+=d)g=k(g/M);return k(F+(M+1)*g/(g+b))},ce=function(g){var S=[],D=g.length,F=0,K=C,ne=O,ge=g.lastIndexOf(P);ge<0&&(ge=0);for(var pe=0;pe=128&&N("not-basic"),S.push(g.charCodeAt(pe));for(var Ie=ge>0?ge+1:0;Ie=D&&N("invalid-input");var Re=Q(g.charCodeAt(Ie++));(Re>=d||Re>k((h-F)/Te))&&N("overflow"),F+=Re*Te;var de=ye<=ne?v:ye>=ne+x?x:ye-ne;if(Rek(h/Qe)&&N("overflow"),Te*=Qe}var je=S.length+1;ne=re(F-ve,je,ve==0),k(F/je)>h-K&&N("overflow"),K+=k(F/je),F%=je,S.splice(F++,0,K)}return String.fromCodePoint.apply(String,S)},Be=function(g){var S=[];g=G(g);var D=g.length,F=C,K=0,ne=O,ge=!0,pe=!1,Ie=void 0;try{for(var ve=g[Symbol.iterator](),Te;!(ge=(Te=ve.next()).done);ge=!0){var ye=Te.value;ye<128&&S.push(T(ye))}}catch(Wr){pe=!0,Ie=Wr}finally{try{!ge&&ve.return&&ve.return()}finally{if(pe)throw Ie}}var Re=S.length,de=Re;for(Re&&S.push(P);de=F&&itk((h-K)/dt)&&N("overflow"),K+=(Qe-F)*dt,F=Qe;var ft=!0,Bt=!1,At=void 0;try{for(var Or=g[Symbol.iterator](),yr;!(ft=(yr=Or.next()).done);ft=!0){var br=yr.value;if(brh&&N("overflow"),br==F){for(var St=K,Vt=d;;Vt+=d){var Gt=Vt<=ne?v:Vt>=ne+x?x:Vt-ne;if(St>6|192).toString(16).toUpperCase()+"%"+(g&63|128).toString(16).toUpperCase():S="%"+(g>>12|224).toString(16).toUpperCase()+"%"+(g>>6&63|128).toString(16).toUpperCase()+"%"+(g&63|128).toString(16).toUpperCase(),S}function W(y){for(var g="",S=0,D=y.length;S=194&&F<224){if(D-S>=6){var K=parseInt(y.substr(S+4,2),16);g+=String.fromCharCode((F&31)<<6|K&63)}else g+=y.substr(S,6);S+=6}else if(F>=224){if(D-S>=9){var ne=parseInt(y.substr(S+4,2),16),ge=parseInt(y.substr(S+7,2),16);g+=String.fromCharCode((F&15)<<12|(ne&63)<<6|ge&63)}else g+=y.substr(S,9);S+=9}else g+=y.substr(S,3),S+=3}return g}function ee(y,g){function S(D){var F=W(D);return F.match(g.UNRESERVED)?F:D}return y.scheme&&(y.scheme=String(y.scheme).replace(g.PCT_ENCODED,S).toLowerCase().replace(g.NOT_SCHEME,"")),y.userinfo!==void 0&&(y.userinfo=String(y.userinfo).replace(g.PCT_ENCODED,S).replace(g.NOT_USERINFO,U).replace(g.PCT_ENCODED,n)),y.host!==void 0&&(y.host=String(y.host).replace(g.PCT_ENCODED,S).toLowerCase().replace(g.NOT_HOST,U).replace(g.PCT_ENCODED,n)),y.path!==void 0&&(y.path=String(y.path).replace(g.PCT_ENCODED,S).replace(y.scheme?g.NOT_PATH:g.NOT_PATH_NOSCHEME,U).replace(g.PCT_ENCODED,n)),y.query!==void 0&&(y.query=String(y.query).replace(g.PCT_ENCODED,S).replace(g.NOT_QUERY,U).replace(g.PCT_ENCODED,n)),y.fragment!==void 0&&(y.fragment=String(y.fragment).replace(g.PCT_ENCODED,S).replace(g.NOT_FRAGMENT,U).replace(g.PCT_ENCODED,n)),y}function ue(y){return y.replace(/^0*(.*)/,"$1")||"0"}function Z(y,g){var S=y.match(g.IPV4ADDRESS)||[],D=m(S,2),F=D[1];return F?F.split(".").map(ue).join("."):y}function X(y,g){var S=y.match(g.IPV6ADDRESS)||[],D=m(S,3),F=D[1],K=D[2];if(F){for(var ne=F.toLowerCase().split("::").reverse(),ge=m(ne,2),pe=ge[0],Ie=ge[1],ve=Ie?Ie.split(":").map(ue):[],Te=pe.split(":").map(ue),ye=g.IPV4ADDRESS.test(Te[Te.length-1]),Re=ye?7:8,de=Te.length-Re,Qe=Array(Re),je=0;je1){var qe=Qe.slice(0,Le.index),it=Qe.slice(Le.index+Le.length);st=qe.join(":")+"::"+it.join(":")}else st=Qe.join(":");return K&&(st+="%"+K),st}else return y}var ie=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,Ae="".match(/(){0}/)[1]===void 0;function he(y){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},S={},D=g.iri!==!1?p:u;g.reference==="suffix"&&(y=(g.scheme?g.scheme+":":"")+"//"+y);var F=y.match(ie);if(F){Ae?(S.scheme=F[1],S.userinfo=F[3],S.host=F[4],S.port=parseInt(F[5],10),S.path=F[6]||"",S.query=F[7],S.fragment=F[8],isNaN(S.port)&&(S.port=F[5])):(S.scheme=F[1]||void 0,S.userinfo=y.indexOf("@")!==-1?F[3]:void 0,S.host=y.indexOf("//")!==-1?F[4]:void 0,S.port=parseInt(F[5],10),S.path=F[6]||"",S.query=y.indexOf("?")!==-1?F[7]:void 0,S.fragment=y.indexOf("#")!==-1?F[8]:void 0,isNaN(S.port)&&(S.port=y.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?F[4]:void 0)),S.host&&(S.host=X(Z(S.host,D),D)),S.scheme===void 0&&S.userinfo===void 0&&S.host===void 0&&S.port===void 0&&!S.path&&S.query===void 0?S.reference="same-document":S.scheme===void 0?S.reference="relative":S.fragment===void 0?S.reference="absolute":S.reference="uri",g.reference&&g.reference!=="suffix"&&g.reference!==S.reference&&(S.error=S.error||"URI is not a "+g.reference+" reference.");var K=Ce[(g.scheme||S.scheme||"").toLowerCase()];if(!g.unicodeSupport&&(!K||!K.unicodeSupport)){if(S.host&&(g.domainHost||K&&K.domainHost))try{S.host=xe.toASCII(S.host.replace(D.PCT_ENCODED,W).toLowerCase())}catch(ne){S.error=S.error||"Host's domain name can not be converted to ASCII via punycode: "+ne}ee(S,u)}else ee(S,D);K&&K.parse&&K.parse(S,g)}else S.error=S.error||"URI can not be parsed.";return S}function We(y,g){var S=g.iri!==!1?p:u,D=[];return y.userinfo!==void 0&&(D.push(y.userinfo),D.push("@")),y.host!==void 0&&D.push(X(Z(String(y.host),S),S).replace(S.IPV6ADDRESS,function(F,K,ne){return"["+K+(ne?"%25"+ne:"")+"]"})),(typeof y.port=="number"||typeof y.port=="string")&&(D.push(":"),D.push(String(y.port))),D.length?D.join(""):void 0}var Ze=/^\.\.?\//,Ee=/^\/\.(\/|$)/,Je=/^\/\.\.(\/|$)/,Ue=/^\/?(?:.|\n)*?(?=\/|$)/;function Xe(y){for(var g=[];y.length;)if(y.match(Ze))y=y.replace(Ze,"");else if(y.match(Ee))y=y.replace(Ee,"/");else if(y.match(Je))y=y.replace(Je,"/"),g.pop();else if(y==="."||y==="..")y="";else{var S=y.match(Ue);if(S){var D=S[0];y=y.slice(D.length),g.push(D)}else throw new Error("Unexpected dot segment condition")}return g.join("")}function Ve(y){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},S=g.iri?p:u,D=[],F=Ce[(g.scheme||y.scheme||"").toLowerCase()];if(F&&F.serialize&&F.serialize(y,g),y.host&&!S.IPV6ADDRESS.test(y.host)){if(g.domainHost||F&&F.domainHost)try{y.host=g.iri?xe.toUnicode(y.host):xe.toASCII(y.host.replace(S.PCT_ENCODED,W).toLowerCase())}catch(ge){y.error=y.error||"Host's domain name can not be converted to "+(g.iri?"Unicode":"ASCII")+" via punycode: "+ge}}ee(y,S),g.reference!=="suffix"&&y.scheme&&(D.push(y.scheme),D.push(":"));var K=We(y,g);if(K!==void 0&&(g.reference!=="suffix"&&D.push("//"),D.push(K),y.path&&y.path.charAt(0)!=="/"&&D.push("/")),y.path!==void 0){var ne=y.path;!g.absolutePath&&(!F||!F.absolutePath)&&(ne=Xe(ne)),K===void 0&&(ne=ne.replace(/^\/\//,"/%2F")),D.push(ne)}return y.query!==void 0&&(D.push("?"),D.push(y.query)),y.fragment!==void 0&&(D.push("#"),D.push(y.fragment)),D.join("")}function Ke(y,g){var S=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},D=arguments[3],F={};return D||(y=he(Ve(y,S),S),g=he(Ve(g,S),S)),S=S||{},!S.tolerant&&g.scheme?(F.scheme=g.scheme,F.userinfo=g.userinfo,F.host=g.host,F.port=g.port,F.path=Xe(g.path||""),F.query=g.query):(g.userinfo!==void 0||g.host!==void 0||g.port!==void 0?(F.userinfo=g.userinfo,F.host=g.host,F.port=g.port,F.path=Xe(g.path||""),F.query=g.query):(g.path?(g.path.charAt(0)==="/"?F.path=Xe(g.path):((y.userinfo!==void 0||y.host!==void 0||y.port!==void 0)&&!y.path?F.path="/"+g.path:y.path?F.path=y.path.slice(0,y.path.lastIndexOf("/")+1)+g.path:F.path=g.path,F.path=Xe(F.path)),F.query=g.query):(F.path=y.path,g.query!==void 0?F.query=g.query:F.query=y.query),F.userinfo=y.userinfo,F.host=y.host,F.port=y.port),F.scheme=y.scheme),F.fragment=g.fragment,F}function bt(y,g,S){var D=l({scheme:"null"},S);return Ve(Ke(he(y,D),he(g,D),D,!0),D)}function xt(y,g){return typeof y=="string"?y=Ve(he(y,g),g):i(y)==="object"&&(y=he(Ve(y,g),g)),y}function wt(y,g,S){return typeof y=="string"?y=Ve(he(y,S),S):i(y)==="object"&&(y=Ve(y,S)),typeof g=="string"?g=Ve(he(g,S),S):i(g)==="object"&&(g=Ve(g,S)),y===g}function Vr(y,g){return y&&y.toString().replace(!g||!g.iri?u.ESCAPE:p.ESCAPE,U)}function kt(y,g){return y&&y.toString().replace(!g||!g.iri?u.PCT_ENCODED:p.PCT_ENCODED,W)}var oa={scheme:"http",domainHost:!0,parse:function(g,S){return g.host||(g.error=g.error||"HTTP URIs must have a host."),g},serialize:function(g,S){var D=String(g.scheme).toLowerCase()==="https";return(g.port===(D?443:80)||g.port==="")&&(g.port=void 0),g.path||(g.path="/"),g}},ca={scheme:"https",domainHost:oa.domainHost,parse:oa.parse,serialize:oa.serialize};function $n(y){return typeof y.secure=="boolean"?y.secure:String(y.scheme).toLowerCase()==="wss"}var Na={scheme:"ws",domainHost:!0,parse:function(g,S){var D=g;return D.secure=$n(D),D.resourceName=(D.path||"/")+(D.query?"?"+D.query:""),D.path=void 0,D.query=void 0,D},serialize:function(g,S){if((g.port===($n(g)?443:80)||g.port==="")&&(g.port=void 0),typeof g.secure=="boolean"&&(g.scheme=g.secure?"wss":"ws",g.secure=void 0),g.resourceName){var D=g.resourceName.split("?"),F=m(D,2),K=F[0],ne=F[1];g.path=K&&K!=="/"?K:void 0,g.query=ne,g.resourceName=void 0}return g.fragment=void 0,g}},Ui={scheme:"wss",domainHost:Na.domainHost,parse:Na.parse,serialize:Na.serialize},zi={},Yt=!0,Hi="[A-Za-z0-9\\-\\.\\_\\~"+(Yt?"\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF":"")+"]",Jt="[0-9A-Fa-f]",ml=s(s("%[EFef]"+Jt+"%"+Jt+Jt+"%"+Jt+Jt)+"|"+s("%[89A-Fa-f]"+Jt+"%"+Jt+Jt)+"|"+s("%"+Jt+Jt)),hl="[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]",vl="[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",gl=t(vl,'[\\"\\\\]'),la="[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]",yl=new RegExp(Hi,"g"),Gr=new RegExp(ml,"g"),bl=new RegExp(t("[^]",hl,"[\\.]",'[\\"]',gl),"g"),Ds=new RegExp(t("[^]",Hi,la),"g"),Bi=Ds;function Mn(y){var g=W(y);return g.match(yl)?g:y}var Ln={scheme:"mailto",parse:function(g,S){var D=g,F=D.to=D.path?D.path.split(","):[];if(D.path=void 0,D.query){for(var K=!1,ne={},ge=D.query.split("&"),pe=0,Ie=ge.length;pe{e.exports=function r(t,s){if(t===s)return!0;if(t&&s&&typeof t=="object"&&typeof s=="object"){if(t.constructor!==s.constructor)return!1;var i,n,o;if(Array.isArray(t)){if(i=t.length,i!=s.length)return!1;for(n=i;n--!==0;)if(!r(t[n],s[n]))return!1;return!0}if(t.constructor===RegExp)return t.source===s.source&&t.flags===s.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===s.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===s.toString();if(o=Object.keys(t),i=o.length,i!==Object.keys(s).length)return!1;for(n=i;n--!==0;)if(!Object.prototype.hasOwnProperty.call(s,o[n]))return!1;for(n=i;n--!==0;){var l=o[n];if(!r(t[l],s[l]))return!1}return!0}return t!==t&&s!==s}}),zj=ke((a,e)=>{e.exports=function(t){for(var s=0,i=t.length,n=0,o;n=55296&&o<=56319&&n{e.exports={copy:r,checkDataType:t,checkDataTypes:s,coerceToTypes:n,toHash:o,getProperty:u,escapeQuotes:p,equal:Ld(),ucs2length:zj(),varOccurences:m,varReplace:f,schemaHasRules:h,schemaHasRulesExcept:d,schemaUnknownRules:v,toQuotedString:x,getPathExpr:b,getPath:E,getData:P,unescapeFragment:$,unescapeJsonPointer:M,escapeFragment:I,escapeJsonPointer:q};function r(k,T){T=T||{};for(var N in k)T[N]=k[N];return T}function t(k,T,N,z){var B=z?" !== ":" === ",G=z?" || ":" && ",te=z?"!":"",Q=z?"":"!";switch(k){case"null":return T+B+"null";case"array":return te+"Array.isArray("+T+")";case"object":return"("+te+T+G+"typeof "+T+B+'"object"'+G+Q+"Array.isArray("+T+"))";case"integer":return"(typeof "+T+B+'"number"'+G+Q+"("+T+" % 1)"+G+T+B+T+(N?G+te+"isFinite("+T+")":"")+")";case"number":return"(typeof "+T+B+'"'+k+'"'+(N?G+te+"isFinite("+T+")":"")+")";default:return"typeof "+T+B+'"'+k+'"'}}function s(k,T,N){switch(k.length){case 1:return t(k[0],T,N,!0);default:var z="",B=o(k);B.array&&B.object&&(z=B.null?"(":"(!"+T+" || ",z+="typeof "+T+' !== "object")',delete B.null,delete B.array,delete B.object),B.number&&delete B.integer;for(var G in B)z+=(z?" && ":"")+t(G,T,N,!0);return z}}var i=o(["string","number","integer","boolean","null"]);function n(k,T){if(Array.isArray(T)){for(var N=[],z=0;z=T)throw new Error("Cannot access property/index "+z+" levels up, current level is "+T);return N[T-z]}if(z>T)throw new Error("Cannot access data "+z+" levels up, current level is "+T);if(G="data"+(T-z||""),!B)return G}for(var Q=G,V=B.split("/"),re=0;re{var r=In();e.exports=t;function t(s){r.copy(s,this)}}),Hj=ke((a,e)=>{var r=e.exports=function(i,n,o){typeof n=="function"&&(o=n,n={}),o=n.cb||o;var l=typeof o=="function"?o:o.pre||function(){},c=o.post||function(){};t(n,l,c,i,"",i)};r.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0},r.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},r.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},r.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function t(i,n,o,l,c,u,p,m,f,h){if(l&&typeof l=="object"&&!Array.isArray(l)){n(l,c,u,p,m,f,h);for(var d in l){var v=l[d];if(Array.isArray(v)){if(d in r.arrayKeywords)for(var x=0;x{var r=Uj(),t=Ld(),s=In(),i=c1(),n=Hj();e.exports=o,o.normalizeId=E,o.fullPath=v,o.url=O,o.ids=C,o.inlineRef=f,o.schema=l;function o(P,A,$){var I=this._refs[$];if(typeof I=="string")if(this._refs[I])I=this._refs[I];else return o.call(this,P,A,I);if(I=I||this._schemas[$],I instanceof i)return f(I.schema,this._opts.inlineRefs)?I.schema:I.validate||this._compile(I);var q=l.call(this,A,$),M,k,T;return q&&(M=q.schema,A=q.root,T=q.baseId),M instanceof i?k=M.validate||P.call(this,M.schema,A,void 0,T):M!==void 0&&(k=f(M,this._opts.inlineRefs)?M:P.call(this,M,A,void 0,T)),k}function l(P,A){var $=r.parse(A),I=x($),q=v(this._getId(P.schema));if(Object.keys(P.schema).length===0||I!==q){var M=E(I),k=this._refs[M];if(typeof k=="string")return c.call(this,P,k,$);if(k instanceof i)k.validate||this._compile(k),P=k;else if(k=this._schemas[M],k instanceof i){if(k.validate||this._compile(k),M==E(A))return{schema:k,root:P,baseId:q};P=k}else return;if(!P.schema)return;q=v(this._getId(P.schema))}return p.call(this,$,q,P.schema,P)}function c(P,A,$){var I=l.call(this,P,A);if(I){var q=I.schema,M=I.baseId;P=I.root;var k=this._getId(q);return k&&(M=O(M,k)),p.call(this,$,M,q,P)}}var u=s.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function p(P,A,$,I){if(P.fragment=P.fragment||"",P.fragment.slice(0,1)=="/"){for(var q=P.fragment.split("/"),M=1;M{var r=qd();e.exports={Validation:i(t),MissingRef:i(s)};function t(n){this.message="validation failed",this.errors=n,this.ajv=this.validation=!0}s.message=function(n,o){return"can't resolve reference "+o+" from id "+n};function s(n,o,l){this.message=l||s.message(n,o),this.missingRef=r.url(n,o),this.missingSchema=r.normalizeId(r.fullPath(this.missingRef))}function i(n){return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}}),l1=ke((a,e)=>{e.exports=function(r,t){t||(t={}),typeof t=="function"&&(t={cmp:t});var s=typeof t.cycles=="boolean"?t.cycles:!1,i=t.cmp&&(function(o){return function(l){return function(c,u){var p={key:c,value:l[c]},m={key:u,value:l[u]};return o(p,m)}}})(t.cmp),n=[];return(function o(l){if(l&&l.toJSON&&typeof l.toJSON=="function"&&(l=l.toJSON()),l!==void 0){if(typeof l=="number")return isFinite(l)?""+l:"null";if(typeof l!="object")return JSON.stringify(l);var c,u;if(Array.isArray(l)){for(u="[",c=0;c{e.exports=function(t,s,i){var n="",o=t.schema.$async===!0,l=t.util.schemaHasRulesExcept(t.schema,t.RULES.all,"$ref"),c=t.self._getId(t.schema);if(t.opts.strictKeywords){var u=t.util.schemaUnknownRules(t.schema,t.RULES.keywords);if(u){var p="unknown keyword: "+u;if(t.opts.strictKeywords==="log")t.logger.warn(p);else throw new Error(p)}}if(t.isTop&&(n+=" var validate = ",o&&(t.async=!0,n+="async "),n+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",c&&(t.opts.sourceCode||t.opts.processCode)&&(n+=" "+("/*# sourceURL="+c+" */")+" ")),typeof t.schema=="boolean"||!(l||t.schema.$ref)){var s="false schema",m=t.level,f=t.dataLevel,h=t.schema[s],d=t.schemaPath+t.util.getProperty(s),v=t.errSchemaPath+"/"+s,A=!t.opts.allErrors,q,x="data"+(f||""),P="valid"+m;if(t.schema===!1){t.isTop?A=!0:n+=" var "+P+" = false; ";var b=b||[];b.push(n),n="",t.createErrors!==!1?(n+=" { keyword: '"+(q||"false schema")+"' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(v)+" , params: {} ",t.opts.messages!==!1&&(n+=" , message: 'boolean schema is false' "),t.opts.verbose&&(n+=" , schema: false , parentSchema: validate.schema"+t.schemaPath+" , data: "+x+" "),n+=" } "):n+=" {} ";var E=n;n=b.pop(),!t.compositeRule&&A?t.async?n+=" throw new ValidationError(["+E+"]); ":n+=" validate.errors = ["+E+"]; return false; ":n+=" var err = "+E+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else t.isTop?o?n+=" return data; ":n+=" validate.errors = null; return true; ":n+=" var "+P+" = true; ";return t.isTop&&(n+=" }; return validate; "),n}if(t.isTop){var O=t.isTop,m=t.level=0,f=t.dataLevel=0,x="data";if(t.rootId=t.resolve.fullPath(t.self._getId(t.root.schema)),t.baseId=t.baseId||t.rootId,delete t.isTop,t.dataPathArr=[""],t.schema.default!==void 0&&t.opts.useDefaults&&t.opts.strictDefaults){var C="default is ignored in the schema root";if(t.opts.strictDefaults==="log")t.logger.warn(C);else throw new Error(C)}n+=" var vErrors = null; ",n+=" var errors = 0; ",n+=" if (rootData === undefined) rootData = data; "}else{var{level:m,dataLevel:f}=t,x="data"+(f||"");if(c&&(t.baseId=t.resolve.url(t.baseId,c)),o&&!t.async)throw new Error("async schema in sync schema");n+=" var errs_"+m+" = errors;"}var P="valid"+m,A=!t.opts.allErrors,$="",I="",q,M=t.schema.type,k=Array.isArray(M);if(M&&t.opts.nullable&&t.schema.nullable===!0&&(k?M.indexOf("null")==-1&&(M=M.concat("null")):M!="null"&&(M=[M,"null"],k=!0)),k&&M.length==1&&(M=M[0],k=!1),t.schema.$ref&&l){if(t.opts.extendRefs=="fail")throw new Error('$ref: validation keywords used in schema at path "'+t.errSchemaPath+'" (see option extendRefs)');t.opts.extendRefs!==!0&&(l=!1,t.logger.warn('$ref: keywords ignored in schema at path "'+t.errSchemaPath+'"'))}if(t.schema.$comment&&t.opts.$comment&&(n+=" "+t.RULES.all.$comment.code(t,"$comment")),M){if(t.opts.coerceTypes)var T=t.util.coerceToTypes(t.opts.coerceTypes,M);var N=t.RULES.types[M];if(T||k||N===!0||N&&!Ue(N)){var d=t.schemaPath+".type",v=t.errSchemaPath+"/type",d=t.schemaPath+".type",v=t.errSchemaPath+"/type",z=k?"checkDataTypes":"checkDataType";if(n+=" if ("+t.util[z](M,x,t.opts.strictNumbers,!0)+") { ",T){var B="dataType"+m,G="coerced"+m;n+=" var "+B+" = typeof "+x+"; var "+G+" = undefined; ",t.opts.coerceTypes=="array"&&(n+=" if ("+B+" == 'object' && Array.isArray("+x+") && "+x+".length == 1) { "+x+" = "+x+"[0]; "+B+" = typeof "+x+"; if ("+t.util.checkDataType(t.schema.type,x,t.opts.strictNumbers)+") "+G+" = "+x+"; } "),n+=" if ("+G+" !== undefined) ; ";var te=T;if(te)for(var Q,V=-1,re=te.length-1;V{var r=qd(),t=In(),s=Fd(),i=l1(),n=u1(),o=t.ucs2length,l=Ld(),c=s.Validation;e.exports=u;function u(E,O,C,P){var A=this,$=this._opts,I=[void 0],q={},M=[],k={},T=[],N={},z=[];O=O||{schema:E,refVal:I,refs:q};var B=p.call(this,E,O,P),G=this._compilations[B.index];if(B.compiling)return G.callValidate=ce;var te=this._formats,Q=this.RULES;try{var V=Be(E,O,C,P);G.validate=V;var re=G.callValidate;return re&&(re.schema=V.schema,re.errors=null,re.refs=V.refs,re.refVal=V.refVal,re.root=V.root,re.$async=V.$async,$.sourceCode&&(re.source=V.source)),V}finally{m.call(this,E,O,P)}function ce(){var Z=G.validate,X=Z.apply(this,arguments);return ce.errors=Z.errors,X}function Be(Z,X,ie,Ae){var he=!X||X&&X.schema==Z;if(X.schema!=O.schema)return u.call(A,Z,X,ie,Ae);var We=Z.$async===!0,Ze=n({isTop:!0,schema:Z,isRoot:he,baseId:Ae,root:X,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:s.MissingRef,RULES:Q,validate:n,util:t,resolve:r,resolveRef:be,usePattern:W,useDefault:ee,useCustomRule:ue,opts:$,formats:te,logger:A.logger,self:A});Ze=b(I,v)+b(M,h)+b(T,d)+b(z,x)+Ze,$.processCode&&(Ze=$.processCode(Ze,Z));var Ee;try{var Je=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",Ze);Ee=Je(A,Q,te,O,I,T,z,l,o,c),I[0]=Ee}catch(Ue){throw A.logger.error("Error compiling schema, function code:",Ze),Ue}return Ee.schema=Z,Ee.errors=null,Ee.refs=q,Ee.refVal=I,Ee.root=he?Ee:X,We&&(Ee.$async=!0),$.sourceCode===!0&&(Ee.source={code:Ze,patterns:M,defaults:T}),Ee}function be(Z,X,ie){X=r.url(Z,X);var Ae=q[X],he,We;if(Ae!==void 0)return he=I[Ae],We="refVal["+Ae+"]",U(he,We);if(!ie&&O.refs){var Ze=O.refs[X];if(Ze!==void 0)return he=O.refVal[Ze],We=Me(X,he),U(he,We)}We=Me(X);var Ee=r.call(A,Be,O,X);if(Ee===void 0){var Je=C&&C[X];Je&&(Ee=r.inlineRef(Je,$.inlineRefs)?Je:u.call(A,Je,O,C,Z))}if(Ee===void 0)xe(X);else return Ce(X,Ee),U(Ee,We)}function Me(Z,X){var ie=I.length;return I[ie]=X,q[Z]=ie,"refVal"+ie}function xe(Z){delete q[Z]}function Ce(Z,X){var ie=q[Z];I[ie]=X}function U(Z,X){return typeof Z=="object"||typeof Z=="boolean"?{code:X,schema:Z,inline:!0}:{code:X,$async:Z&&!!Z.$async}}function W(Z){var X=k[Z];return X===void 0&&(X=k[Z]=M.length,M[X]=Z),"pattern"+X}function ee(Z){switch(typeof Z){case"boolean":case"number":return""+Z;case"string":return t.toQuotedString(Z);case"object":if(Z===null)return"null";var X=i(Z),ie=N[X];return ie===void 0&&(ie=N[X]=T.length,T[ie]=Z),"default"+ie}}function ue(Z,X,ie,Ae){if(A._opts.validateSchema!==!1){var he=Z.definition.dependencies;if(he&&!he.every(function(bt){return Object.prototype.hasOwnProperty.call(ie,bt)}))throw new Error("parent schema must have all required keywords: "+he.join(","));var We=Z.definition.validateSchema;if(We){var Ze=We(X);if(!Ze){var Ee="keyword schema is invalid: "+A.errorsText(We.errors);if(A._opts.validateSchema=="log")A.logger.error(Ee);else throw new Error(Ee)}}}var Je=Z.definition.compile,Ue=Z.definition.inline,Xe=Z.definition.macro,Ve;if(Je)Ve=Je.call(A,X,ie,Ae);else if(Xe)Ve=Xe.call(A,X,ie,Ae),$.validateSchema!==!1&&A.validateSchema(Ve,!0);else if(Ue)Ve=Ue.call(A,Ae,Z.keyword,X,ie);else if(Ve=Z.definition.validate,!Ve)return;if(Ve===void 0)throw new Error('custom keyword "'+Z.keyword+'"failed to compile');var Ke=z.length;return z[Ke]=Ve,{code:"customRule"+Ke,validate:Ve}}}function p(E,O,C){var P=f.call(this,E,O,C);return P>=0?{index:P,compiling:!0}:(P=this._compilations.length,this._compilations[P]={schema:E,root:O,baseId:C},{index:P,compiling:!1})}function m(E,O,C){var P=f.call(this,E,O,C);P>=0&&this._compilations.splice(P,1)}function f(E,O,C){for(var P=0;P{var r=e.exports=function(){this._cache={}};r.prototype.put=function(s,i){this._cache[s]=i},r.prototype.get=function(s){return this._cache[s]},r.prototype.del=function(s){delete this._cache[s]},r.prototype.clear=function(){this._cache={}}}),Gj=ke((a,e)=>{var r=In(),t=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,s=[0,31,28,31,30,31,30,31,31,30,31,30,31],i=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,n=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,o=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,l=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,c=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,u=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,p=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,m=/^(?:\/(?:[^~/]|~0|~1)*)*$/,f=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,h=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;e.exports=d;function d(I){return I=I=="full"?"full":"fast",r.copy(d[I])}d.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":c,url:u,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:n,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:$,uuid:p,"json-pointer":m,"json-pointer-uri-fragment":f,"relative-json-pointer":h},d.full={date:x,time:b,"date-time":O,uri:P,"uri-reference":l,"uri-template":c,url:u,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:n,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:$,uuid:p,"json-pointer":m,"json-pointer-uri-fragment":f,"relative-json-pointer":h};function v(I){return I%4===0&&(I%100!==0||I%400===0)}function x(I){var q=I.match(t);if(!q)return!1;var M=+q[1],k=+q[2],T=+q[3];return k>=1&&k<=12&&T>=1&&T<=(k==2&&v(M)?29:s[k])}function b(I,q){var M=I.match(i);if(!M)return!1;var k=M[1],T=M[2],N=M[3],z=M[5];return(k<=23&&T<=59&&N<=59||k==23&&T==59&&N==60)&&(!q||z)}var E=/t|\s/i;function O(I){var q=I.split(E);return q.length==2&&x(q[0])&&b(q[1],!0)}var C=/\/|:/;function P(I){return C.test(I)&&o.test(I)}var A=/[^\\]\\Z/;function $(I){if(A.test(I))return!1;try{return new RegExp(I),!0}catch{return!1}}}),Wj=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.errSchemaPath+"/"+s,p=!t.opts.allErrors,m="data"+(l||""),f="valid"+o,h,d;if(c=="#"||c=="#/")t.isRoot?(h=t.async,d="validate"):(h=t.root.schema.$async===!0,d="root.refVal[0]");else{var v=t.resolveRef(t.baseId,c,t.isRoot);if(v===void 0){var x=t.MissingRefError.message(t.baseId,c);if(t.opts.missingRefs=="fail"){t.logger.error(x);var b=b||[];b.push(n),n="",t.createErrors!==!1?(n+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(u)+" , params: { ref: '"+t.util.escapeQuotes(c)+"' } ",t.opts.messages!==!1&&(n+=" , message: 'can\\'t resolve reference "+t.util.escapeQuotes(c)+"' "),t.opts.verbose&&(n+=" , schema: "+t.util.toQuotedString(c)+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+m+" "),n+=" } "):n+=" {} ";var E=n;n=b.pop(),!t.compositeRule&&p?t.async?n+=" throw new ValidationError(["+E+"]); ":n+=" validate.errors = ["+E+"]; return false; ":n+=" var err = "+E+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",p&&(n+=" if (false) { ")}else if(t.opts.missingRefs=="ignore")t.logger.warn(x),p&&(n+=" if (true) { ");else throw new t.MissingRefError(t.baseId,c,x)}else if(v.inline){var O=t.util.copy(t);O.level++;var C="valid"+O.level;O.schema=v.schema,O.schemaPath="",O.errSchemaPath=c;var P=t.validate(O).replace(/validate\.schema/g,v.code);n+=" "+P+" ",p&&(n+=" if ("+C+") { ")}else h=v.$async===!0||t.async&&v.$async!==!1,d=v.code}if(d){var b=b||[];b.push(n),n="",t.opts.passContext?n+=" "+d+".call(this, ":n+=" "+d+"( ",n+=" "+m+", (dataPath || '')",t.errorPath!='""'&&(n+=" + "+t.errorPath);var A=l?"data"+(l-1||""):"parentData",$=l?t.dataPathArr[l]:"parentDataProperty";n+=" , "+A+" , "+$+", rootData) ";var I=n;if(n=b.pop(),h){if(!t.async)throw new Error("async schema referenced by sync schema");p&&(n+=" var "+f+"; "),n+=" try { await "+I+"; ",p&&(n+=" "+f+" = true; "),n+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",p&&(n+=" "+f+" = false; "),n+=" } ",p&&(n+=" if ("+f+") { ")}else n+=" if (!"+I+") { if (vErrors === null) vErrors = "+d+".errors; else vErrors = vErrors.concat("+d+".errors); errors = vErrors.length; } ",p&&(n+=" else { ")}return n}}),Zj=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.schema[s],l=t.schemaPath+t.util.getProperty(s),c=t.errSchemaPath+"/"+s,u=!t.opts.allErrors,p=t.util.copy(t),m="";p.level++;var f="valid"+p.level,h=p.baseId,d=!0,v=o;if(v)for(var x,b=-1,E=v.length-1;b0||x===!1:t.util.schemaHasRules(x,t.RULES.all))&&(d=!1,p.schema=x,p.schemaPath=l+"["+b+"]",p.errSchemaPath=c+"/"+b,n+=" "+t.validate(p)+" ",p.baseId=h,u&&(n+=" if ("+f+") { ",m+="}"));return u&&(d?n+=" if (true) { ":n+=" "+m.slice(0,-1)+" "),n}}),Kj=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,f="data"+(l||""),h="valid"+o,d="errs__"+o,v=t.util.copy(t),x="";v.level++;var b="valid"+v.level,E=c.every(function(q){return t.opts.strictKeywords?typeof q=="object"&&Object.keys(q).length>0||q===!1:t.util.schemaHasRules(q,t.RULES.all)});if(E){var O=v.baseId;n+=" var "+d+" = errors; var "+h+" = false; ";var C=t.compositeRule;t.compositeRule=v.compositeRule=!0;var P=c;if(P)for(var A,$=-1,I=P.length-1;${e.exports=function(t,s,i){var n=" ",o=t.schema[s],l=t.errSchemaPath+"/"+s,c=!t.opts.allErrors,u=t.util.toQuotedString(o);return t.opts.$comment===!0?n+=" console.log("+u+");":typeof t.opts.$comment=="function"&&(n+=" self._opts.$comment("+u+", "+t.util.toQuotedString(l)+", validate.root.schema);"),n}}),Qj=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,f="data"+(l||""),h="valid"+o,d=t.opts.$data&&c&&c.$data,v;d?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",v="schema"+o):v=c,d||(n+=" var schema"+o+" = validate.schema"+u+";"),n+="var "+h+" = equal("+f+", schema"+o+"); if (!"+h+") { ";var x=x||[];x.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'const' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { allowedValue: schema"+o+" } ",t.opts.messages!==!1&&(n+=" , message: 'should be equal to constant' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ";var b=n;return n=x.pop(),!t.compositeRule&&m?t.async?n+=" throw new ValidationError(["+b+"]); ":n+=" validate.errors = ["+b+"]; return false; ":n+=" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" }",m&&(n+=" else { "),n}}),Yj=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,f="data"+(l||""),h="valid"+o,d="errs__"+o,v=t.util.copy(t),x="";v.level++;var b="valid"+v.level,E="i"+o,O=v.dataLevel=t.dataLevel+1,C="data"+O,P=t.baseId,A=t.opts.strictKeywords?typeof c=="object"&&Object.keys(c).length>0||c===!1:t.util.schemaHasRules(c,t.RULES.all);if(n+="var "+d+" = errors;var "+h+";",A){var $=t.compositeRule;t.compositeRule=v.compositeRule=!0,v.schema=c,v.schemaPath=u,v.errSchemaPath=p,n+=" var "+b+" = false; for (var "+E+" = 0; "+E+" < "+f+".length; "+E+"++) { ",v.errorPath=t.util.getPathExpr(t.errorPath,E,t.opts.jsonPointers,!0);var I=f+"["+E+"]";v.dataPathArr[O]=E;var q=t.validate(v);v.baseId=P,t.util.varOccurences(q,C)<2?n+=" "+t.util.varReplace(q,C,I)+" ":n+=" var "+C+" = "+I+"; "+q+" ",n+=" if ("+b+") break; } ",t.compositeRule=v.compositeRule=$,n+=" "+x+" if (!"+b+") {"}else n+=" if ("+f+".length == 0) {";var M=M||[];M.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: {} ",t.opts.messages!==!1&&(n+=" , message: 'should contain a valid item' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ";var k=n;return n=M.pop(),!t.compositeRule&&m?t.async?n+=" throw new ValidationError(["+k+"]); ":n+=" validate.errors = ["+k+"]; return false; ":n+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { ",A&&(n+=" errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } "),t.opts.allErrors&&(n+=" } "),n}}),Jj=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,f="data"+(l||""),h="errs__"+o,d=t.util.copy(t),v="";d.level++;var x="valid"+d.level,b={},E={},O=t.opts.ownProperties;for($ in c)if($!="__proto__"){var C=c[$],P=Array.isArray(C)?E:b;P[$]=C}n+="var "+h+" = errors;";var A=t.errorPath;n+="var missing"+o+";";for(var $ in E)if(P=E[$],P.length){if(n+=" if ( "+f+t.util.getProperty($)+" !== undefined ",O&&(n+=" && Object.prototype.hasOwnProperty.call("+f+", '"+t.util.escapeQuotes($)+"') "),m){n+=" && ( ";var I=P;if(I)for(var q,M=-1,k=I.length-1;M0||C===!1:t.util.schemaHasRules(C,t.RULES.all))&&(n+=" "+x+" = true; if ( "+f+t.util.getProperty($)+" !== undefined ",O&&(n+=" && Object.prototype.hasOwnProperty.call("+f+", '"+t.util.escapeQuotes($)+"') "),n+=") { ",d.schema=C,d.schemaPath=u+t.util.getProperty($),d.errSchemaPath=p+"/"+t.util.escapeFragment($),n+=" "+t.validate(d)+" ",d.baseId=ce,n+=" } ",m&&(n+=" if ("+x+") { ",v+="}"))}return m&&(n+=" "+v+" if ("+h+" == errors) {"),n}}),e9=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,f="data"+(l||""),h="valid"+o,d=t.opts.$data&&c&&c.$data,v;d?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",v="schema"+o):v=c;var x="i"+o,b="schema"+o;d||(n+=" var "+b+" = validate.schema"+u+";"),n+="var "+h+";",d&&(n+=" if (schema"+o+" === undefined) "+h+" = true; else if (!Array.isArray(schema"+o+")) "+h+" = false; else {"),n+=""+h+" = false;for (var "+x+"=0; "+x+"<"+b+".length; "+x+"++) if (equal("+f+", "+b+"["+x+"])) { "+h+" = true; break; }",d&&(n+=" } "),n+=" if (!"+h+") { ";var E=E||[];E.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { allowedValues: schema"+o+" } ",t.opts.messages!==!1&&(n+=" , message: 'should be equal to one of the allowed values' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ";var O=n;return n=E.pop(),!t.compositeRule&&m?t.async?n+=" throw new ValidationError(["+O+"]); ":n+=" validate.errors = ["+O+"]; return false; ":n+=" var err = "+O+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" }",m&&(n+=" else { "),n}}),t9=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,f="data"+(l||"");if(t.opts.format===!1)return m&&(n+=" if (true) { "),n;var h=t.opts.$data&&c&&c.$data,d;h?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",d="schema"+o):d=c;var v=t.opts.unknownFormats,x=Array.isArray(v);if(h){var b="format"+o,E="isObject"+o,O="formatType"+o;n+=" var "+b+" = formats["+d+"]; var "+E+" = typeof "+b+" == 'object' && !("+b+" instanceof RegExp) && "+b+".validate; var "+O+" = "+E+" && "+b+".type || 'string'; if ("+E+") { ",t.async&&(n+=" var async"+o+" = "+b+".async; "),n+=" "+b+" = "+b+".validate; } if ( ",h&&(n+=" ("+d+" !== undefined && typeof "+d+" != 'string') || "),n+=" (",v!="ignore"&&(n+=" ("+d+" && !"+b+" ",x&&(n+=" && self._opts.unknownFormats.indexOf("+d+") == -1 "),n+=") || "),n+=" ("+b+" && "+O+" == '"+i+"' && !(typeof "+b+" == 'function' ? ",t.async?n+=" (async"+o+" ? await "+b+"("+f+") : "+b+"("+f+")) ":n+=" "+b+"("+f+") ",n+=" : "+b+".test("+f+"))))) {"}else{var b=t.formats[c];if(!b){if(v=="ignore")return t.logger.warn('unknown format "'+c+'" ignored in schema at path "'+t.errSchemaPath+'"'),m&&(n+=" if (true) { "),n;if(x&&v.indexOf(c)>=0)return m&&(n+=" if (true) { "),n;throw new Error('unknown format "'+c+'" is used in schema at path "'+t.errSchemaPath+'"')}var E=typeof b=="object"&&!(b instanceof RegExp)&&b.validate,O=E&&b.type||"string";if(E){var C=b.async===!0;b=b.validate}if(O!=i)return m&&(n+=" if (true) { "),n;if(C){if(!t.async)throw new Error("async format in sync schema");var P="formats"+t.util.getProperty(c)+".validate";n+=" if (!(await "+P+"("+f+"))) { "}else{n+=" if (! ";var P="formats"+t.util.getProperty(c);E&&(P+=".validate"),typeof b=="function"?n+=" "+P+"("+f+") ":n+=" "+P+".test("+f+") ",n+=") { "}}var A=A||[];A.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'format' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { format: ",h?n+=""+d:n+=""+t.util.toQuotedString(c),n+=" } ",t.opts.messages!==!1&&(n+=` , message: 'should match format "`,h?n+="' + "+d+" + '":n+=""+t.util.escapeQuotes(c),n+=`"' `),t.opts.verbose&&(n+=" , schema: ",h?n+="validate.schema"+u:n+=""+t.util.toQuotedString(c),n+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ";var $=n;return n=A.pop(),!t.compositeRule&&m?t.async?n+=" throw new ValidationError(["+$+"]); ":n+=" validate.errors = ["+$+"]; return false; ":n+=" var err = "+$+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",m&&(n+=" else { "),n}}),r9=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,f="data"+(l||""),h="valid"+o,d="errs__"+o,v=t.util.copy(t);v.level++;var x="valid"+v.level,b=t.schema.then,E=t.schema.else,O=b!==void 0&&(t.opts.strictKeywords?typeof b=="object"&&Object.keys(b).length>0||b===!1:t.util.schemaHasRules(b,t.RULES.all)),C=E!==void 0&&(t.opts.strictKeywords?typeof E=="object"&&Object.keys(E).length>0||E===!1:t.util.schemaHasRules(E,t.RULES.all)),P=v.baseId;if(O||C){var A;v.createErrors=!1,v.schema=c,v.schemaPath=u,v.errSchemaPath=p,n+=" var "+d+" = errors; var "+h+" = true; ";var $=t.compositeRule;t.compositeRule=v.compositeRule=!0,n+=" "+t.validate(v)+" ",v.baseId=P,v.createErrors=!0,n+=" errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } ",t.compositeRule=v.compositeRule=$,O?(n+=" if ("+x+") { ",v.schema=t.schema.then,v.schemaPath=t.schemaPath+".then",v.errSchemaPath=t.errSchemaPath+"/then",n+=" "+t.validate(v)+" ",v.baseId=P,n+=" "+h+" = "+x+"; ",O&&C?(A="ifClause"+o,n+=" var "+A+" = 'then'; "):A="'then'",n+=" } ",C&&(n+=" else { ")):n+=" if (!"+x+") { ",C&&(v.schema=t.schema.else,v.schemaPath=t.schemaPath+".else",v.errSchemaPath=t.errSchemaPath+"/else",n+=" "+t.validate(v)+" ",v.baseId=P,n+=" "+h+" = "+x+"; ",O&&C?(A="ifClause"+o,n+=" var "+A+" = 'else'; "):A="'else'",n+=" } "),n+=" if (!"+h+") { var err = ",t.createErrors!==!1?(n+=" { keyword: 'if' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { failingKeyword: "+A+" } ",t.opts.messages!==!1&&(n+=` , message: 'should match "' + `+A+` + '" schema' `),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!t.compositeRule&&m&&(t.async?n+=" throw new ValidationError(vErrors); ":n+=" validate.errors = vErrors; return false; "),n+=" } ",m&&(n+=" else { ")}else m&&(n+=" if (true) { ");return n}}),a9=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,f="data"+(l||""),h="valid"+o,d="errs__"+o,v=t.util.copy(t),x="";v.level++;var b="valid"+v.level,E="i"+o,O=v.dataLevel=t.dataLevel+1,C="data"+O,P=t.baseId;if(n+="var "+d+" = errors;var "+h+";",Array.isArray(c)){var A=t.schema.additionalItems;if(A===!1){n+=" "+h+" = "+f+".length <= "+c.length+"; ";var $=p;p=t.errSchemaPath+"/additionalItems",n+=" if (!"+h+") { ";var I=I||[];I.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { limit: "+c.length+" } ",t.opts.messages!==!1&&(n+=" , message: 'should NOT have more than "+c.length+" items' "),t.opts.verbose&&(n+=" , schema: false , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ";var q=n;n=I.pop(),!t.compositeRule&&m?t.async?n+=" throw new ValidationError(["+q+"]); ":n+=" validate.errors = ["+q+"]; return false; ":n+=" var err = "+q+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",p=$,m&&(x+="}",n+=" else { ")}var M=c;if(M){for(var k,T=-1,N=M.length-1;T0||k===!1:t.util.schemaHasRules(k,t.RULES.all)){n+=" "+b+" = true; if ("+f+".length > "+T+") { ";var z=f+"["+T+"]";v.schema=k,v.schemaPath=u+"["+T+"]",v.errSchemaPath=p+"/"+T,v.errorPath=t.util.getPathExpr(t.errorPath,T,t.opts.jsonPointers,!0),v.dataPathArr[O]=T;var B=t.validate(v);v.baseId=P,t.util.varOccurences(B,C)<2?n+=" "+t.util.varReplace(B,C,z)+" ":n+=" var "+C+" = "+z+"; "+B+" ",n+=" } ",m&&(n+=" if ("+b+") { ",x+="}")}}if(typeof A=="object"&&(t.opts.strictKeywords?typeof A=="object"&&Object.keys(A).length>0||A===!1:t.util.schemaHasRules(A,t.RULES.all))){v.schema=A,v.schemaPath=t.schemaPath+".additionalItems",v.errSchemaPath=t.errSchemaPath+"/additionalItems",n+=" "+b+" = true; if ("+f+".length > "+c.length+") { for (var "+E+" = "+c.length+"; "+E+" < "+f+".length; "+E+"++) { ",v.errorPath=t.util.getPathExpr(t.errorPath,E,t.opts.jsonPointers,!0);var z=f+"["+E+"]";v.dataPathArr[O]=E;var B=t.validate(v);v.baseId=P,t.util.varOccurences(B,C)<2?n+=" "+t.util.varReplace(B,C,z)+" ":n+=" var "+C+" = "+z+"; "+B+" ",m&&(n+=" if (!"+b+") break; "),n+=" } } ",m&&(n+=" if ("+b+") { ",x+="}")}}else if(t.opts.strictKeywords?typeof c=="object"&&Object.keys(c).length>0||c===!1:t.util.schemaHasRules(c,t.RULES.all)){v.schema=c,v.schemaPath=u,v.errSchemaPath=p,n+=" for (var "+E+" = 0; "+E+" < "+f+".length; "+E+"++) { ",v.errorPath=t.util.getPathExpr(t.errorPath,E,t.opts.jsonPointers,!0);var z=f+"["+E+"]";v.dataPathArr[O]=E;var B=t.validate(v);v.baseId=P,t.util.varOccurences(B,C)<2?n+=" "+t.util.varReplace(B,C,z)+" ":n+=" var "+C+" = "+z+"; "+B+" ",m&&(n+=" if (!"+b+") break; "),n+=" }"}return m&&(n+=" "+x+" if ("+d+" == errors) {"),n}}),ZE=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,P,f="data"+(l||""),h=t.opts.$data&&c&&c.$data,d;h?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",d="schema"+o):d=c;var v=s=="maximum",x=v?"exclusiveMaximum":"exclusiveMinimum",b=t.schema[x],E=t.opts.$data&&b&&b.$data,O=v?"<":">",C=v?">":"<",P=void 0;if(!(h||typeof c=="number"||c===void 0))throw new Error(s+" must be number");if(!(E||b===void 0||typeof b=="number"||typeof b=="boolean"))throw new Error(x+" must be number or boolean");if(E){var A=t.util.getData(b.$data,l,t.dataPathArr),$="exclusive"+o,I="exclType"+o,q="exclIsNumber"+o,M="op"+o,k="' + "+M+" + '";n+=" var schemaExcl"+o+" = "+A+"; ",A="schemaExcl"+o,n+=" var "+$+"; var "+I+" = typeof "+A+"; if ("+I+" != 'boolean' && "+I+" != 'undefined' && "+I+" != 'number') { ";var P=x,T=T||[];T.push(n),n="",t.createErrors!==!1?(n+=" { keyword: '"+(P||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: {} ",t.opts.messages!==!1&&(n+=" , message: '"+x+" should be boolean' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ";var N=n;n=T.pop(),!t.compositeRule&&m?t.async?n+=" throw new ValidationError(["+N+"]); ":n+=" validate.errors = ["+N+"]; return false; ":n+=" var err = "+N+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else if ( ",h&&(n+=" ("+d+" !== undefined && typeof "+d+" != 'number') || "),n+=" "+I+" == 'number' ? ( ("+$+" = "+d+" === undefined || "+A+" "+O+"= "+d+") ? "+f+" "+C+"= "+A+" : "+f+" "+C+" "+d+" ) : ( ("+$+" = "+A+" === true) ? "+f+" "+C+"= "+d+" : "+f+" "+C+" "+d+" ) || "+f+" !== "+f+") { var op"+o+" = "+$+" ? '"+O+"' : '"+O+"='; ",c===void 0&&(P=x,p=t.errSchemaPath+"/"+x,d=A,h=E)}else{var q=typeof b=="number",k=O;if(q&&h){var M="'"+k+"'";n+=" if ( ",h&&(n+=" ("+d+" !== undefined && typeof "+d+" != 'number') || "),n+=" ( "+d+" === undefined || "+b+" "+O+"= "+d+" ? "+f+" "+C+"= "+b+" : "+f+" "+C+" "+d+" ) || "+f+" !== "+f+") { "}else{q&&c===void 0?($=!0,P=x,p=t.errSchemaPath+"/"+x,d=b,C+="="):(q&&(d=Math[v?"min":"max"](b,c)),b===(q?d:!0)?($=!0,P=x,p=t.errSchemaPath+"/"+x,C+="="):($=!1,k+="="));var M="'"+k+"'";n+=" if ( ",h&&(n+=" ("+d+" !== undefined && typeof "+d+" != 'number') || "),n+=" "+f+" "+C+" "+d+" || "+f+" !== "+f+") { "}}P=P||s;var T=T||[];T.push(n),n="",t.createErrors!==!1?(n+=" { keyword: '"+(P||"_limit")+"' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { comparison: "+M+", limit: "+d+", exclusive: "+$+" } ",t.opts.messages!==!1&&(n+=" , message: 'should be "+k+" ",h?n+="' + "+d:n+=""+d+"'"),t.opts.verbose&&(n+=" , schema: ",h?n+="validate.schema"+u:n+=""+c,n+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ";var N=n;return n=T.pop(),!t.compositeRule&&m?t.async?n+=" throw new ValidationError(["+N+"]); ":n+=" validate.errors = ["+N+"]; return false; ":n+=" var err = "+N+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",m&&(n+=" else { "),n}}),KE=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,x,f="data"+(l||""),h=t.opts.$data&&c&&c.$data,d;if(h?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",d="schema"+o):d=c,!(h||typeof c=="number"))throw new Error(s+" must be number");var v=s=="maxItems"?">":"<";n+="if ( ",h&&(n+=" ("+d+" !== undefined && typeof "+d+" != 'number') || "),n+=" "+f+".length "+v+" "+d+") { ";var x=s,b=b||[];b.push(n),n="",t.createErrors!==!1?(n+=" { keyword: '"+(x||"_limitItems")+"' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { limit: "+d+" } ",t.opts.messages!==!1&&(n+=" , message: 'should NOT have ",s=="maxItems"?n+="more":n+="fewer",n+=" than ",h?n+="' + "+d+" + '":n+=""+c,n+=" items' "),t.opts.verbose&&(n+=" , schema: ",h?n+="validate.schema"+u:n+=""+c,n+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ";var E=n;return n=b.pop(),!t.compositeRule&&m?t.async?n+=" throw new ValidationError(["+E+"]); ":n+=" validate.errors = ["+E+"]; return false; ":n+=" var err = "+E+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",m&&(n+=" else { "),n}}),XE=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,x,f="data"+(l||""),h=t.opts.$data&&c&&c.$data,d;if(h?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",d="schema"+o):d=c,!(h||typeof c=="number"))throw new Error(s+" must be number");var v=s=="maxLength"?">":"<";n+="if ( ",h&&(n+=" ("+d+" !== undefined && typeof "+d+" != 'number') || "),t.opts.unicode===!1?n+=" "+f+".length ":n+=" ucs2length("+f+") ",n+=" "+v+" "+d+") { ";var x=s,b=b||[];b.push(n),n="",t.createErrors!==!1?(n+=" { keyword: '"+(x||"_limitLength")+"' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { limit: "+d+" } ",t.opts.messages!==!1&&(n+=" , message: 'should NOT be ",s=="maxLength"?n+="longer":n+="shorter",n+=" than ",h?n+="' + "+d+" + '":n+=""+c,n+=" characters' "),t.opts.verbose&&(n+=" , schema: ",h?n+="validate.schema"+u:n+=""+c,n+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ";var E=n;return n=b.pop(),!t.compositeRule&&m?t.async?n+=" throw new ValidationError(["+E+"]); ":n+=" validate.errors = ["+E+"]; return false; ":n+=" var err = "+E+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",m&&(n+=" else { "),n}}),QE=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,x,f="data"+(l||""),h=t.opts.$data&&c&&c.$data,d;if(h?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",d="schema"+o):d=c,!(h||typeof c=="number"))throw new Error(s+" must be number");var v=s=="maxProperties"?">":"<";n+="if ( ",h&&(n+=" ("+d+" !== undefined && typeof "+d+" != 'number') || "),n+=" Object.keys("+f+").length "+v+" "+d+") { ";var x=s,b=b||[];b.push(n),n="",t.createErrors!==!1?(n+=" { keyword: '"+(x||"_limitProperties")+"' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { limit: "+d+" } ",t.opts.messages!==!1&&(n+=" , message: 'should NOT have ",s=="maxProperties"?n+="more":n+="fewer",n+=" than ",h?n+="' + "+d+" + '":n+=""+c,n+=" properties' "),t.opts.verbose&&(n+=" , schema: ",h?n+="validate.schema"+u:n+=""+c,n+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ";var E=n;return n=b.pop(),!t.compositeRule&&m?t.async?n+=" throw new ValidationError(["+E+"]); ":n+=" validate.errors = ["+E+"]; return false; ":n+=" var err = "+E+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",m&&(n+=" else { "),n}}),s9=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,f="data"+(l||""),h=t.opts.$data&&c&&c.$data,d;if(h?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",d="schema"+o):d=c,!(h||typeof c=="number"))throw new Error(s+" must be number");n+="var division"+o+";if (",h&&(n+=" "+d+" !== undefined && ( typeof "+d+" != 'number' || "),n+=" (division"+o+" = "+f+" / "+d+", ",t.opts.multipleOfPrecision?n+=" Math.abs(Math.round(division"+o+") - division"+o+") > 1e-"+t.opts.multipleOfPrecision+" ":n+=" division"+o+" !== parseInt(division"+o+") ",n+=" ) ",h&&(n+=" ) "),n+=" ) { ";var v=v||[];v.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { multipleOf: "+d+" } ",t.opts.messages!==!1&&(n+=" , message: 'should be multiple of ",h?n+="' + "+d:n+=""+d+"'"),t.opts.verbose&&(n+=" , schema: ",h?n+="validate.schema"+u:n+=""+c,n+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ";var x=n;return n=v.pop(),!t.compositeRule&&m?t.async?n+=" throw new ValidationError(["+x+"]); ":n+=" validate.errors = ["+x+"]; return false; ":n+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",m&&(n+=" else { "),n}}),n9=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,f="data"+(l||""),h="errs__"+o,d=t.util.copy(t);d.level++;var v="valid"+d.level;if(t.opts.strictKeywords?typeof c=="object"&&Object.keys(c).length>0||c===!1:t.util.schemaHasRules(c,t.RULES.all)){d.schema=c,d.schemaPath=u,d.errSchemaPath=p,n+=" var "+h+" = errors; ";var x=t.compositeRule;t.compositeRule=d.compositeRule=!0,d.createErrors=!1;var b;d.opts.allErrors&&(b=d.opts.allErrors,d.opts.allErrors=!1),n+=" "+t.validate(d)+" ",d.createErrors=!0,b&&(d.opts.allErrors=b),t.compositeRule=d.compositeRule=x,n+=" if ("+v+") { ";var E=E||[];E.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'not' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: {} ",t.opts.messages!==!1&&(n+=" , message: 'should NOT be valid' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ";var O=n;n=E.pop(),!t.compositeRule&&m?t.async?n+=" throw new ValidationError(["+O+"]); ":n+=" validate.errors = ["+O+"]; return false; ":n+=" var err = "+O+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } ",t.opts.allErrors&&(n+=" } ")}else n+=" var err = ",t.createErrors!==!1?(n+=" { keyword: 'not' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: {} ",t.opts.messages!==!1&&(n+=" , message: 'should NOT be valid' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",m&&(n+=" if (false) { ");return n}}),i9=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,f="data"+(l||""),h="valid"+o,d="errs__"+o,v=t.util.copy(t),x="";v.level++;var b="valid"+v.level,E=v.baseId,O="prevValid"+o,C="passingSchemas"+o;n+="var "+d+" = errors , "+O+" = false , "+h+" = false , "+C+" = null; ";var P=t.compositeRule;t.compositeRule=v.compositeRule=!0;var A=c;if(A)for(var $,I=-1,q=A.length-1;I0||$===!1:t.util.schemaHasRules($,t.RULES.all))?(v.schema=$,v.schemaPath=u+"["+I+"]",v.errSchemaPath=p+"/"+I,n+=" "+t.validate(v)+" ",v.baseId=E):n+=" var "+b+" = true; ",I&&(n+=" if ("+b+" && "+O+") { "+h+" = false; "+C+" = ["+C+", "+I+"]; } else { ",x+="}"),n+=" if ("+b+") { "+h+" = "+O+" = true; "+C+" = "+I+"; }";return t.compositeRule=v.compositeRule=P,n+=""+x+"if (!"+h+") { var err = ",t.createErrors!==!1?(n+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { passingSchemas: "+C+" } ",t.opts.messages!==!1&&(n+=" , message: 'should match exactly one schema in oneOf' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!t.compositeRule&&m&&(t.async?n+=" throw new ValidationError(vErrors); ":n+=" validate.errors = vErrors; return false; "),n+="} else { errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; }",t.opts.allErrors&&(n+=" } "),n}}),o9=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,f="data"+(l||""),h=t.opts.$data&&c&&c.$data,d;h?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",d="schema"+o):d=c;var v=h?"(new RegExp("+d+"))":t.usePattern(c);n+="if ( ",h&&(n+=" ("+d+" !== undefined && typeof "+d+" != 'string') || "),n+=" !"+v+".test("+f+") ) { ";var x=x||[];x.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { pattern: ",h?n+=""+d:n+=""+t.util.toQuotedString(c),n+=" } ",t.opts.messages!==!1&&(n+=` , message: 'should match pattern "`,h?n+="' + "+d+" + '":n+=""+t.util.escapeQuotes(c),n+=`"' `),t.opts.verbose&&(n+=" , schema: ",h?n+="validate.schema"+u:n+=""+t.util.toQuotedString(c),n+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ";var b=n;return n=x.pop(),!t.compositeRule&&m?t.async?n+=" throw new ValidationError(["+b+"]); ":n+=" validate.errors = ["+b+"]; return false; ":n+=" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",m&&(n+=" else { "),n}}),c9=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,f="data"+(l||""),h="errs__"+o,d=t.util.copy(t),v="";d.level++;var x="valid"+d.level,b="key"+o,E="idx"+o,O=d.dataLevel=t.dataLevel+1,C="data"+O,P="dataProperties"+o,A=Object.keys(c||{}).filter(V),$=t.schema.patternProperties||{},I=Object.keys($).filter(V),q=t.schema.additionalProperties,M=A.length||I.length,k=q===!1,T=typeof q=="object"&&Object.keys(q).length,N=t.opts.removeAdditional,z=k||T||N,B=t.opts.ownProperties,G=t.baseId,te=t.schema.required;if(te&&!(t.opts.$data&&te.$data)&&te.length8)n+=" || validate.schema"+u+".hasOwnProperty("+b+") ";else{var re=A;if(re)for(var ce,Be=-1,be=re.length-1;Be0||Ue===!1:t.util.schemaHasRules(Ue,t.RULES.all)){var Xe=t.util.getProperty(ce),Ae=f+Xe,Ve=We&&Ue.default!==void 0;d.schema=Ue,d.schemaPath=u+Xe,d.errSchemaPath=p+"/"+t.util.escapeFragment(ce),d.errorPath=t.util.getPath(t.errorPath,ce,t.opts.jsonPointers),d.dataPathArr[O]=t.util.toQuotedString(ce);var he=t.validate(d);if(d.baseId=G,t.util.varOccurences(he,C)<2){he=t.util.varReplace(he,C,Ae);var Ke=Ae}else{var Ke=C;n+=" var "+C+" = "+Ae+"; "}if(Ve)n+=" "+he+" ";else{if(Q&&Q[ce]){n+=" if ( "+Ke+" === undefined ",B&&(n+=" || ! Object.prototype.hasOwnProperty.call("+f+", '"+t.util.escapeQuotes(ce)+"') "),n+=") { "+x+" = false; ";var W=t.errorPath,ue=p,bt=t.util.escapeQuotes(ce);t.opts._errorDataPathProperty&&(t.errorPath=t.util.getPath(W,ce,t.opts.jsonPointers)),p=t.errSchemaPath+"/required";var Z=Z||[];Z.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'required' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { missingProperty: '"+bt+"' } ",t.opts.messages!==!1&&(n+=" , message: '",t.opts._errorDataPathProperty?n+="is a required property":n+="should have required property \\'"+bt+"\\'",n+="' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ";var X=n;n=Z.pop(),!t.compositeRule&&m?t.async?n+=" throw new ValidationError(["+X+"]); ":n+=" validate.errors = ["+X+"]; return false; ":n+=" var err = "+X+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",p=ue,t.errorPath=W,n+=" } else { "}else m?(n+=" if ( "+Ke+" === undefined ",B&&(n+=" || ! Object.prototype.hasOwnProperty.call("+f+", '"+t.util.escapeQuotes(ce)+"') "),n+=") { "+x+" = true; } else { "):(n+=" if ("+Ke+" !== undefined ",B&&(n+=" && Object.prototype.hasOwnProperty.call("+f+", '"+t.util.escapeQuotes(ce)+"') "),n+=" ) { ");n+=" "+he+" } "}}m&&(n+=" if ("+x+") { ",v+="}")}}if(I.length){var xt=I;if(xt)for(var xe,wt=-1,Vr=xt.length-1;wt0||Ue===!1:t.util.schemaHasRules(Ue,t.RULES.all)){d.schema=Ue,d.schemaPath=t.schemaPath+".patternProperties"+t.util.getProperty(xe),d.errSchemaPath=t.errSchemaPath+"/patternProperties/"+t.util.escapeFragment(xe),B?n+=" "+P+" = "+P+" || Object.keys("+f+"); for (var "+E+"=0; "+E+"<"+P+".length; "+E+"++) { var "+b+" = "+P+"["+E+"]; ":n+=" for (var "+b+" in "+f+") { ",n+=" if ("+t.usePattern(xe)+".test("+b+")) { ",d.errorPath=t.util.getPathExpr(t.errorPath,b,t.opts.jsonPointers);var Ae=f+"["+b+"]";d.dataPathArr[O]=b;var he=t.validate(d);d.baseId=G,t.util.varOccurences(he,C)<2?n+=" "+t.util.varReplace(he,C,Ae)+" ":n+=" var "+C+" = "+Ae+"; "+he+" ",m&&(n+=" if (!"+x+") break; "),n+=" } ",m&&(n+=" else "+x+" = true; "),n+=" } ",m&&(n+=" if ("+x+") { ",v+="}")}}}return m&&(n+=" "+v+" if ("+h+" == errors) {"),n}}),l9=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,f="data"+(l||""),h="errs__"+o,d=t.util.copy(t),v="";d.level++;var x="valid"+d.level;if(n+="var "+h+" = errors;",t.opts.strictKeywords?typeof c=="object"&&Object.keys(c).length>0||c===!1:t.util.schemaHasRules(c,t.RULES.all)){d.schema=c,d.schemaPath=u,d.errSchemaPath=p;var b="key"+o,E="idx"+o,O="i"+o,C="' + "+b+" + '",P=d.dataLevel=t.dataLevel+1,A="data"+P,$="dataProperties"+o,I=t.opts.ownProperties,q=t.baseId;I&&(n+=" var "+$+" = undefined; "),I?n+=" "+$+" = "+$+" || Object.keys("+f+"); for (var "+E+"=0; "+E+"<"+$+".length; "+E+"++) { var "+b+" = "+$+"["+E+"]; ":n+=" for (var "+b+" in "+f+") { ",n+=" var startErrs"+o+" = errors; ";var M=b,k=t.compositeRule;t.compositeRule=d.compositeRule=!0;var T=t.validate(d);d.baseId=q,t.util.varOccurences(T,A)<2?n+=" "+t.util.varReplace(T,A,M)+" ":n+=" var "+A+" = "+M+"; "+T+" ",t.compositeRule=d.compositeRule=k,n+=" if (!"+x+") { for (var "+O+"=startErrs"+o+"; "+O+"{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,f="data"+(l||""),h="valid"+o,d=t.opts.$data&&c&&c.$data,v;d?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",v="schema"+o):v=c;var x="schema"+o;if(!d)if(c.length0||A===!1:t.util.schemaHasRules(A,t.RULES.all))||(b[b.length]=O)}}else var b=c;if(d||b.length){var $=t.errorPath,I=d||b.length>=t.opts.loopRequired,q=t.opts.ownProperties;if(m)if(n+=" var missing"+o+"; ",I){d||(n+=" var "+x+" = validate.schema"+u+"; ");var M="i"+o,k="schema"+o+"["+M+"]",T="' + "+k+" + '";t.opts._errorDataPathProperty&&(t.errorPath=t.util.getPathExpr($,k,t.opts.jsonPointers)),n+=" var "+h+" = true; ",d&&(n+=" if (schema"+o+" === undefined) "+h+" = true; else if (!Array.isArray(schema"+o+")) "+h+" = false; else {"),n+=" for (var "+M+" = 0; "+M+" < "+x+".length; "+M+"++) { "+h+" = "+f+"["+x+"["+M+"]] !== undefined ",q&&(n+=" && Object.prototype.hasOwnProperty.call("+f+", "+x+"["+M+"]) "),n+="; if (!"+h+") break; } ",d&&(n+=" } "),n+=" if (!"+h+") { ";var N=N||[];N.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'required' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { missingProperty: '"+T+"' } ",t.opts.messages!==!1&&(n+=" , message: '",t.opts._errorDataPathProperty?n+="is a required property":n+="should have required property \\'"+T+"\\'",n+="' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ";var z=n;n=N.pop(),!t.compositeRule&&m?t.async?n+=" throw new ValidationError(["+z+"]); ":n+=" validate.errors = ["+z+"]; return false; ":n+=" var err = "+z+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { "}else{n+=" if ( ";var B=b;if(B)for(var G,M=-1,te=B.length-1;M{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,f="data"+(l||""),h="valid"+o,d=t.opts.$data&&c&&c.$data,v;if(d?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",v="schema"+o):v=c,(c||d)&&t.opts.uniqueItems!==!1){d&&(n+=" var "+h+"; if ("+v+" === false || "+v+" === undefined) "+h+" = true; else if (typeof "+v+" != 'boolean') "+h+" = false; else { "),n+=" var i = "+f+".length , "+h+" = true , j; if (i > 1) { ";var x=t.schema.items&&t.schema.items.type,b=Array.isArray(x);if(!x||x=="object"||x=="array"||b&&(x.indexOf("object")>=0||x.indexOf("array")>=0))n+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+f+"[i], "+f+"[j])) { "+h+" = false; break outer; } } } ";else{n+=" var itemIndices = {}, item; for (;i--;) { var item = "+f+"[i]; ";var E="checkDataType"+(b?"s":"");n+=" if ("+t.util[E](x,"item",t.opts.strictNumbers,!0)+") continue; ",b&&(n+=` if (typeof item == 'string') item = '"' + item; `),n+=" if (typeof itemIndices[item] == 'number') { "+h+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}n+=" } ",d&&(n+=" } "),n+=" if (!"+h+") { ";var O=O||[];O.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { i: i, j: j } ",t.opts.messages!==!1&&(n+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),t.opts.verbose&&(n+=" , schema: ",d?n+="validate.schema"+u:n+=""+c,n+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ";var C=n;n=O.pop(),!t.compositeRule&&m?t.async?n+=" throw new ValidationError(["+C+"]); ":n+=" validate.errors = ["+C+"]; return false; ":n+=" var err = "+C+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",m&&(n+=" else { ")}else m&&(n+=" if (true) { ");return n}}),d9=ke((a,e)=>{e.exports={$ref:Wj(),allOf:Zj(),anyOf:Kj(),$comment:Xj(),const:Qj(),contains:Yj(),dependencies:Jj(),enum:e9(),format:t9(),if:r9(),items:a9(),maximum:ZE(),minimum:ZE(),maxItems:KE(),minItems:KE(),maxLength:XE(),minLength:XE(),maxProperties:QE(),minProperties:QE(),multipleOf:s9(),not:n9(),oneOf:i9(),pattern:o9(),properties:c9(),propertyNames:l9(),required:u9(),uniqueItems:p9(),validate:u1()}}),f9=ke((a,e)=>{var r=d9(),t=In().toHash;e.exports=function(){var i=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],n=["type","$comment"],o=["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"],l=["number","integer","string","array","object","boolean","null"];return i.all=t(n),i.types=t(l),i.forEach(function(c){c.rules=c.rules.map(function(u){var p;if(typeof u=="object"){var m=Object.keys(u)[0];p=u[m],u=m,p.forEach(function(h){n.push(h),i.all[h]=!0})}n.push(u);var f=i.all[u]={keyword:u,code:r[u],implements:p};return f}),i.all.$comment={keyword:"$comment",code:r.$comment},c.type&&(i.types[c.type]=c)}),i.keywords=t(n.concat(o)),i.custom={},i}}),m9=ke((a,e)=>{var r=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];e.exports=function(t,s){for(var i=0;i{var r=Fd().MissingRef;e.exports=t;function t(s,i,n){var o=this;if(typeof this._opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");typeof i=="function"&&(n=i,i=void 0);var l=c(s).then(function(){var p=o._addSchema(s,void 0,i);return p.validate||u(p)});return n&&l.then(function(p){n(null,p)},n),l;function c(p){var m=p.$schema;return m&&!o.getSchema(m)?t.call(o,{$ref:m},!0):Promise.resolve()}function u(p){try{return o._compile(p)}catch(f){if(f instanceof r)return m(f);throw f}function m(f){var h=f.missingSchema;if(x(h))throw new Error("Schema "+h+" is loaded but "+f.missingRef+" cannot be resolved");var d=o._loadingSchemas[h];return d||(d=o._loadingSchemas[h]=o._opts.loadSchema(h),d.then(v,v)),d.then(function(b){if(!x(h))return c(b).then(function(){x(h)||o.addSchema(b,h,void 0,i)})}).then(function(){return u(p)});function v(){delete o._loadingSchemas[h]}function x(b){return o._refs[b]||o._schemas[b]}}}}}),v9=ke((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,m=!t.opts.allErrors,f,h="data"+(l||""),d="valid"+o,v="errs__"+o,x=t.opts.$data&&c&&c.$data,b;x?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",b="schema"+o):b=c;var E=this,O="definition"+o,C=E.definition,P="",A,$,I,q,M;if(x&&C.$data){M="keywordValidate"+o;var k=C.validateSchema;n+=" var "+O+" = RULES.custom['"+s+"'].definition; var "+M+" = "+O+".validate;"}else{if(q=t.useCustomRule(E,c,t.schema,t),!q)return;b="validate.schema"+u,M=q.code,A=C.compile,$=C.inline,I=C.macro}var T=M+".errors",N="i"+o,z="ruleErr"+o,B=C.async;if(B&&!t.async)throw new Error("async keyword in sync schema");if($||I||(n+=""+T+" = null;"),n+="var "+v+" = errors;var "+d+";",x&&C.$data&&(P+="}",n+=" if ("+b+" === undefined) { "+d+" = true; } else { ",k&&(P+="}",n+=" "+d+" = "+O+".validateSchema("+b+"); if ("+d+") { ")),$)C.statements?n+=" "+q.validate+" ":n+=" "+d+" = "+q.validate+"; ";else if(I){var G=t.util.copy(t),P="";G.level++;var te="valid"+G.level;G.schema=q.validate,G.schemaPath="";var Q=t.compositeRule;t.compositeRule=G.compositeRule=!0;var V=t.validate(G).replace(/validate\.schema/g,M);t.compositeRule=G.compositeRule=Q,n+=" "+V}else{var re=re||[];re.push(n),n="",n+=" "+M+".call( ",t.opts.passContext?n+="this":n+="self",A||C.schema===!1?n+=" , "+h+" ":n+=" , "+b+" , "+h+" , validate.schema"+t.schemaPath+" ",n+=" , (dataPath || '')",t.errorPath!='""'&&(n+=" + "+t.errorPath);var ce=l?"data"+(l-1||""):"parentData",Be=l?t.dataPathArr[l]:"parentDataProperty";n+=" , "+ce+" , "+Be+" , rootData ) ";var be=n;n=re.pop(),C.errors===!1?(n+=" "+d+" = ",B&&(n+="await "),n+=""+be+"; "):B?(T="customErrors"+o,n+=" var "+T+" = null; try { "+d+" = await "+be+"; } catch (e) { "+d+" = false; if (e instanceof ValidationError) "+T+" = e.errors; else throw e; } "):n+=" "+T+" = null; "+d+" = "+be+"; "}if(C.modifying&&(n+=" if ("+ce+") "+h+" = "+ce+"["+Be+"];"),n+=""+P,C.valid)m&&(n+=" if (true) { ");else{n+=" if ( ",C.valid===void 0?(n+=" !",I?n+=""+te:n+=""+d):n+=" "+!C.valid+" ",n+=") { ",f=E.keyword;var re=re||[];re.push(n),n="";var re=re||[];re.push(n),n="",t.createErrors!==!1?(n+=" { keyword: '"+(f||"custom")+"' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { keyword: '"+E.keyword+"' } ",t.opts.messages!==!1&&(n+=` , message: 'should pass "`+E.keyword+`" keyword validation' `),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var Me=n;n=re.pop(),!t.compositeRule&&m?t.async?n+=" throw new ValidationError(["+Me+"]); ":n+=" validate.errors = ["+Me+"]; return false; ":n+=" var err = "+Me+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var xe=n;n=re.pop(),$?C.errors?C.errors!="full"&&(n+=" for (var "+N+"="+v+"; "+N+"{e.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}}),g9=ke((a,e)=>{var r=p1();e.exports={$id:"https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:r.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:r.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}}),y9=ke((a,e)=>{var r=/^[a-z_$][a-z0-9_$-]*$/i,t=v9(),s=g9();e.exports={add:i,get:n,remove:o,validate:l};function i(c,u){var p=this.RULES;if(p.keywords[c])throw new Error("Keyword "+c+" is already defined");if(!r.test(c))throw new Error("Keyword "+c+" is not a valid identifier");if(u){this.validateKeyword(u,!0);var m=u.type;if(Array.isArray(m))for(var f=0;f{e.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON Schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}}),x9=ke((a,e)=>{var r=Bj(),t=qd(),s=Vj(),i=c1(),n=l1(),o=Gj(),l=f9(),c=m9(),u=In();e.exports=v,v.prototype.validate=x,v.prototype.compile=b,v.prototype.addSchema=E,v.prototype.addMetaSchema=O,v.prototype.validateSchema=C,v.prototype.getSchema=A,v.prototype.removeSchema=q,v.prototype.addFormat=Q,v.prototype.errorsText=te,v.prototype._addSchema=k,v.prototype._compile=T,v.prototype.compileAsync=h9();var p=y9();v.prototype.addKeyword=p.add,v.prototype.getKeyword=p.get,v.prototype.removeKeyword=p.remove,v.prototype.validateKeyword=p.validate;var m=Fd();v.ValidationError=m.Validation,v.MissingRefError=m.MissingRef,v.$dataMetaSchema=c;var f="http://json-schema.org/draft-07/schema",h=["removeAdditional","useDefaults","coerceTypes","strictDefaults"],d=["/properties"];function v(U){if(!(this instanceof v))return new v(U);U=this._opts=u.copy(U)||{},xe(this),this._schemas={},this._refs={},this._fragments={},this._formats=o(U.format),this._cache=U.cache||new s,this._loadingSchemas={},this._compilations=[],this.RULES=l(),this._getId=N(U),U.loopRequired=U.loopRequired||1/0,U.errorDataPath=="property"&&(U._errorDataPathProperty=!0),U.serialize===void 0&&(U.serialize=n),this._metaOpts=Me(this),U.formats&&ce(this),U.keywords&&Be(this),V(this),typeof U.meta=="object"&&this.addMetaSchema(U.meta),U.nullable&&this.addKeyword("nullable",{metaSchema:{type:"boolean"}}),re(this)}function x(U,W){var ee;if(typeof U=="string"){if(ee=this.getSchema(U),!ee)throw new Error('no schema with key or ref "'+U+'"')}else{var ue=this._addSchema(U);ee=ue.validate||this._compile(ue)}var Z=ee(W);return ee.$async!==!0&&(this.errors=ee.errors),Z}function b(U,W){var ee=this._addSchema(U,void 0,W);return ee.validate||this._compile(ee)}function E(U,W,ee,ue){if(Array.isArray(U)){for(var Z=0;Z0&&T.push("--allowedTools",P.join(",")),A.length>0&&T.push("--disallowedTools",A.join(",")),$&&Object.keys($).length>0&&T.push("--mcp-config",JSON.stringify({mcpServers:$})),r&&Object.keys(r).length>0&&T.push("--agents",JSON.stringify(r)),C&&T.push("--setting-sources",C.join(",")),I&&T.push("--strict-mcp-config"),v&&T.push("--permission-mode",v),x&&T.push("--allow-dangerously-skip-permissions"),d){if(h&&d===h)throw new Error("Fallback model cannot be the same as the main model. Please specify a different model for fallbackModel option.");T.push("--fallback-model",d)}M&&T.push("--include-partial-messages");for(let V of e)T.push("--add-dir",V);if(k&&k.length>0)for(let V of k)if(V.type==="local")T.push("--plugin-dir",V.path);else throw new Error(`Unsupported plugin type: ${V.type}`);this.options.forkSession&&T.push("--fork-session"),this.options.resumeSessionAt&&T.push("--resume-session-at",this.options.resumeSessionAt);for(let[V,re]of Object.entries(n))re===null?T.push(`--${V}`):T.push(`--${V}`,re);if(l.CLAUDE_CODE_ENTRYPOINT||(l.CLAUDE_CODE_ENTRYPOINT="sdk-ts"),!sa().existsSync(o)){let V=YE(o)?`Claude Code native binary not found at ${o}. Please ensure Claude Code is installed via native installer or specify a valid path with options.pathToClaudeCodeExecutable.`:`Claude Code executable not found at ${o}. Is options.pathToClaudeCodeExecutable set?`;throw new ReferenceError(V)}let z=YE(o),B=z?o:s,G=z?[...i,...T]:[...i,o,...T];this.logForDebugging(z?`Spawning Claude Code native binary: ${B} ${G.join(" ")}`:`Spawning Claude Code process: ${B} ${G.join(" ")}`);let te=l.DEBUG||c?"pipe":"ignore";this.child=(0,h1.spawn)(B,G,{cwd:t,stdio:["pipe","pipe",te],signal:this.abortController.signal,env:l}),this.childStdin=this.child.stdin,this.childStdout=this.child.stdout,(l.DEBUG||c)&&this.child.stderr.on("data",V=>{this.logForDebugging(V.toString())});let Q=()=>{this.child&&!this.child.killed&&this.child.kill("SIGTERM")};this.processExitHandler=Q,this.abortHandler=Q,process.on("exit",this.processExitHandler),this.abortController.signal.addEventListener("abort",this.abortHandler),this.child.on("error",V=>{this.ready=!1,this.abortController.signal.aborted?this.exitError=new vs("Claude Code process aborted by user"):(this.exitError=new Error(`Failed to spawn Claude Code process: ${V.message}`),this.logForDebugging(this.exitError.message))}),this.child.on("close",(V,re)=>{if(this.ready=!1,this.abortController.signal.aborted)this.exitError=new vs("Claude Code process aborted by user");else{let ce=this.getProcessExitError(V,re);ce&&(this.exitError=ce,this.logForDebugging(ce.message))}}),this.ready=!0}catch(e){throw this.ready=!1,e}}getProcessExitError(e,r){if(e!==0&&e!==null)return new Error(`Claude Code process exited with code ${e}`);if(r)return new Error(`Claude Code process terminated by signal ${r}`)}logForDebugging(e){process.env.DEBUG&&process.stderr.write(`${e} -`),this.options.stderr&&this.options.stderr(e)}write(e){if(this.abortController.signal.aborted)throw new vs("Operation aborted");if(!this.ready||!this.childStdin)throw new Error("ProcessTransport is not ready for writing");if(this.child?.killed||this.child?.exitCode!==null)throw new Error("Cannot write to terminated process");if(this.exitError)throw new Error(`Cannot write to process that exited with error: ${this.exitError.message}`);process.env.DEBUG_SDK&&process.stderr.write(`[ProcessTransport] Writing to stdin: ${e.substring(0,100)} -`);try{!this.childStdin.write(e)&&process.env.DEBUG_SDK&&console.warn("[ProcessTransport] Write buffer full, data queued")}catch(r){throw this.ready=!1,new Error(`Failed to write to process stdin: ${r.message}`)}}close(){this.childStdin&&(this.childStdin.end(),this.childStdin=void 0),this.processExitHandler&&(process.off("exit",this.processExitHandler),this.processExitHandler=void 0),this.abortHandler&&(this.abortController.signal.removeEventListener("abort",this.abortHandler),this.abortHandler=void 0);for(let{handler:e}of this.exitListeners)this.child?.off("exit",e);this.exitListeners=[],this.child&&!this.child.killed&&(this.child.kill("SIGTERM"),setTimeout(()=>{this.child&&!this.child.killed&&this.child.kill("SIGKILL")},5e3)),this.ready=!1}isReady(){return this.ready}async*readMessages(){if(!this.childStdout)throw new Error("ProcessTransport output stream not available");let e=(0,v1.createInterface)({input:this.childStdout});try{for await(let r of e)r.trim()&&(yield JSON.parse(r));await this.waitForExit()}catch(r){throw r}finally{e.close()}}endInput(){this.childStdin&&this.childStdin.end()}getInputStream(){return this.childStdin}onExit(e){if(!this.child)return()=>{};let r=(t,s)=>{let i=this.getProcessExitError(t,s);e(i)};return this.child.on("exit",r),this.exitListeners.push({callback:e,handler:r}),()=>{this.child&&this.child.off("exit",r);let t=this.exitListeners.findIndex(s=>s.handler===r);t!==-1&&this.exitListeners.splice(t,1)}}async waitForExit(){if(!this.child){if(this.exitError)throw this.exitError;return}if(this.child.exitCode!==null||this.child.killed){if(this.exitError)throw this.exitError;return}return new Promise((e,r)=>{let t=(i,n)=>{if(this.abortController.signal.aborted){r(new vs("Operation aborted"));return}let o=this.getProcessExitError(i,n);o?r(o):e()};this.child.once("exit",t);let s=i=>{this.child.off("exit",t),r(i)};this.child.once("error",s),this.child.once("exit",()=>{this.child.off("error",s)})})}};function YE(a){return![".js",".mjs",".tsx",".ts",".jsx"].some(r=>a.endsWith(r))}var Cd=class{returned;queue=[];readResolve;readReject;isDone=!1;hasError;started=!1;constructor(e){this.returned=e}[Symbol.asyncIterator](){if(this.started)throw new Error("Stream can only be iterated once");return this.started=!0,this}next(){return this.queue.length>0?Promise.resolve({done:!1,value:this.queue.shift()}):this.isDone?Promise.resolve({done:!0,value:void 0}):this.hasError?Promise.reject(this.hasError):new Promise((e,r)=>{this.readResolve=e,this.readReject=r})}enqueue(e){if(this.readResolve){let r=this.readResolve;this.readResolve=void 0,this.readReject=void 0,r({done:!1,value:e})}else this.queue.push(e)}done(){if(this.isDone=!0,this.readResolve){let e=this.readResolve;this.readResolve=void 0,this.readReject=void 0,e({done:!0,value:void 0})}}error(e){if(this.hasError=e,this.readReject){let r=this.readReject;this.readResolve=void 0,this.readReject=void 0,r(e)}}return(){return this.isDone=!0,this.returned&&this.returned(),Promise.resolve({done:!0,value:void 0})}},kd=class{sendMcpMessage;isClosed=!1;constructor(e){this.sendMcpMessage=e}onclose;onerror;onmessage;async start(){}async send(e){if(this.isClosed)throw new Error("Transport is closed");this.sendMcpMessage(e)}async close(){this.isClosed||(this.isClosed=!0,this.onclose?.())}},S9=typeof global=="object"&&global&&global.Object===Object&&global,P9=S9,T9=typeof self=="object"&&self&&self.Object===Object&&self,R9=P9||T9||Function("return this")(),Ud=R9,O9=Ud.Symbol,Gc=O9,b1=Object.prototype,C9=b1.hasOwnProperty,k9=b1.toString,ki=Gc?Gc.toStringTag:void 0;function A9(a){var e=C9.call(a,ki),r=a[ki];try{a[ki]=void 0;var t=!0}catch{}var s=k9.call(a);return t&&(e?a[ki]=r:delete a[ki]),s}var I9=A9,N9=Object.prototype,j9=N9.toString;function D9(a){return j9.call(a)}var $9=D9,M9="[object Null]",L9="[object Undefined]",JE=Gc?Gc.toStringTag:void 0;function q9(a){return a==null?a===void 0?L9:M9:JE&&JE in Object(a)?I9(a):$9(a)}var F9=q9;function U9(a){var e=typeof a;return a!=null&&(e=="object"||e=="function")}var x1=U9,z9="[object AsyncFunction]",H9="[object Function]",B9="[object GeneratorFunction]",V9="[object Proxy]";function G9(a){if(!x1(a))return!1;var e=F9(a);return e==H9||e==B9||e==z9||e==V9}var W9=G9,Z9=Ud["__core-js_shared__"],Sd=Z9,e1=(function(){var a=/[^.]+$/.exec(Sd&&Sd.keys&&Sd.keys.IE_PROTO||"");return a?"Symbol(src)_1."+a:""})();function K9(a){return!!e1&&e1 in a}var X9=K9,Q9=Function.prototype,Y9=Q9.toString;function J9(a){if(a!=null){try{return Y9.call(a)}catch{}try{return a+""}catch{}}return""}var eD=J9,tD=/[\\^$.*+?()[\]{}|]/g,rD=/^\[object .+?Constructor\]$/,aD=Function.prototype,sD=Object.prototype,nD=aD.toString,iD=sD.hasOwnProperty,oD=RegExp("^"+nD.call(iD).replace(tD,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function cD(a){if(!x1(a)||X9(a))return!1;var e=W9(a)?oD:rD;return e.test(eD(a))}var lD=cD;function uD(a,e){return a?.[e]}var pD=uD;function dD(a,e){var r=pD(a,e);return lD(r)?r:void 0}var _1=dD;function fD(a,e){return a===e||a!==a&&e!==e}var mD=fD,hD=_1(Object,"create"),Ai=hD;function vD(){this.__data__=Ai?Ai(null):{},this.size=0}var gD=vD;function yD(a){var e=this.has(a)&&delete this.__data__[a];return this.size-=e?1:0,e}var bD=yD,xD="__lodash_hash_undefined__",_D=Object.prototype,ED=_D.hasOwnProperty;function wD(a){var e=this.__data__;if(Ai){var r=e[a];return r===xD?void 0:r}return ED.call(e,a)?e[a]:void 0}var SD=wD,PD=Object.prototype,TD=PD.hasOwnProperty;function RD(a){var e=this.__data__;return Ai?e[a]!==void 0:TD.call(e,a)}var OD=RD,CD="__lodash_hash_undefined__";function kD(a,e){var r=this.__data__;return this.size+=this.has(a)?0:1,r[a]=Ai&&e===void 0?CD:e,this}var AD=kD;function Nn(a){var e=-1,r=a==null?0:a.length;for(this.clear();++e-1}var zD=UD;function HD(a,e){var r=this.__data__,t=Jc(r,a);return t<0?(++this.size,r.push([a,e])):r[t][1]=e,this}var BD=HD;function jn(a){var e=-1,r=a==null?0:a.length;for(this.clear();++e{if(!a||a.trim()==="")return null;let e=a.split(",").map(i=>i.trim()).filter(Boolean);if(e.length===0)return null;let r=e.some(i=>i.startsWith("!")),t=e.some(i=>!i.startsWith("!"));if(r&&t)return null;let s=e.map(i=>i.replace(/^!/,"").toLowerCase());return{include:r?[]:s,exclude:r?s:[],isExclusive:r}});function u5(a){let e=[],r=a.match(/^MCP server ["']([^"']+)["']/);if(r&&r[1])e.push("mcp"),e.push(r[1].toLowerCase());else{let i=a.match(/^([^:[]+):/);i&&i[1]&&e.push(i[1].trim().toLowerCase())}let t=a.match(/^\[([^\]]+)]/);t&&t[1]&&e.push(t[1].trim().toLowerCase()),a.toLowerCase().includes("statsig event:")&&e.push("statsig");let s=a.match(/:\s*([^:]+?)(?:\s+(?:type|mode|status|event))?:/);if(s&&s[1]){let i=s[1].trim().toLowerCase();i.length<30&&!i.includes(" ")&&e.push(i)}return Array.from(new Set(e))}function p5(a,e){return e?a.length===0?!1:e.isExclusive?!a.some(r=>e.exclude.includes(r)):a.some(r=>e.include.includes(r)):!0}function d5(a,e){if(!e)return!0;let r=u5(a);return p5(r,e)}function f5(){return process.env.CLAUDE_CONFIG_DIR??(0,w1.join)((0,S1.homedir)(),".claude")}function a1(a){if(!a)return!1;if(typeof a=="boolean")return a;let e=a.toLowerCase().trim();return["1","true","yes","on"].includes(e)}var m5={name:"BASH_MAX_OUTPUT_LENGTH",default:3e4,validate:a=>{if(!a)return{effective:3e4,status:"valid"};let t=parseInt(a,10);return isNaN(t)||t<=0?{effective:3e4,status:"invalid",message:`Invalid value "${a}" (using default: 30000)`}:t>15e4?{effective:15e4,status:"capped",message:`Capped from ${t} to 150000`}:{effective:t,status:"valid"}}},h5={name:"CLAUDE_CODE_MAX_OUTPUT_TOKENS",default:32e3,validate:a=>{if(!a)return{effective:32e3,status:"valid"};let e=parseInt(a,10);return isNaN(e)||e<=0?{effective:32e3,status:"invalid",message:`Invalid value "${a}" (using default: 32000)`}:e>32e3?{effective:32e3,status:"capped",message:`Capped from ${e} to 32000`}:{effective:e,status:"valid"}}};function v5(){return{originalCwd:(0,Ad.cwd)(),totalCostUSD:0,totalAPIDuration:0,totalAPIDurationWithoutRetries:0,totalToolDuration:0,startTime:Date.now(),lastInteractionTime:Date.now(),totalLinesAdded:0,totalLinesRemoved:0,hasUnknownModelCost:!1,cwd:(0,Ad.cwd)(),modelUsage:{},mainLoopModelOverride:void 0,maxRateLimitFallbackActive:!1,initialMainLoopModel:null,modelStrings:null,isNonInteractiveSession:!0,isInteractive:!1,clientType:"cli",sessionIngressToken:void 0,oauthTokenFromFd:void 0,apiKeyFromFd:void 0,flagSettingsPath:void 0,allowedSettingSources:["userSettings","projectSettings","localSettings","flagSettings","policySettings"],meter:null,sessionCounter:null,locCounter:null,prCounter:null,commitCounter:null,costCounter:null,tokenCounter:null,codeEditToolDecisionCounter:null,activeTimeCounter:null,sessionId:(0,P1.randomUUID)(),loggerProvider:null,eventLogger:null,meterProvider:null,tracerProvider:null,agentColorMap:new Map,agentColorIndex:0,envVarValidators:[m5,h5],lastAPIRequest:null,inMemoryErrorLog:[],inlinePlugins:[]}}var g5=v5();function y5(){return g5.sessionId}var J3=Di(()=>a1(process.env.DEBUG)||a1(process.env.DEBUG_SDK)||process.argv.includes("--debug")||process.argv.includes("-d")||T1()||process.argv.some(a=>a.startsWith("--debug="))),b5=Di(()=>{let a=process.argv.find(r=>r.startsWith("--debug="));if(!a)return null;let e=a.substring(8);return l5(e)}),T1=Di(()=>process.argv.includes("--debug-to-stderr")||process.argv.includes("-d2e"));function x5(a){if(typeof process>"u"||typeof process.versions>"u"||typeof process.versions.node>"u")return!1;let e=b5();return d5(a,e)}var _5=!1;function ta(a,{level:e}={level:"debug"}){if(!x5(a))return;_5&&a.includes(` +===========================`}zi();var Kd=require("path"),jE=require("url"),ME=require("events"),qE=require("child_process"),FE=require("readline"),Ae=gt(require("fs"),1),UE=require("fs/promises"),WE=require("path"),ZE=require("os"),Ss=require("path"),tf=require("process"),XE=require("crypto"),S5={},yj=Object.create,bj=Object.getPrototypeOf,Qd=Object.defineProperty,xj=Object.getOwnPropertyNames,_j=Object.prototype.hasOwnProperty,Sj=(a,e,r)=>{r=a!=null?yj(bj(a)):{};let t=e||!a||!a.__esModule?Qd(r,"default",{value:a,enumerable:!0}):r;for(let s of xj(a))_j.call(t,s)||Qd(t,s,{get:()=>a[s],enumerable:!0});return t},Ne=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports),Ej=(a,e)=>{for(var r in e)Qd(a,r,{get:e[r],enumerable:!0,configurable:!0,set:t=>e[r]=()=>t})},wj=Ne((a,e)=>{(function(r,t){typeof a=="object"&&typeof e<"u"?t(a):typeof define=="function"&&define.amd?define(["exports"],t):t(r.URI=r.URI||{})})(a,function(r){function t(){for(var _=arguments.length,x=Array(_),R=0;R<_;R++)x[R]=arguments[R];if(x.length>1){x[0]=x[0].slice(0,-1);for(var L=x.length-1,z=1;z= 0x80 (not a basic code point)","invalid-input":"Invalid input"},N=h-m,k=Math.floor,O=String.fromCharCode;function $(_){throw new RangeError(j[_])}function F(_,x){for(var R=[],L=_.length;L--;)R[L]=x(_[L]);return R}function B(_,x){var R=_.split("@"),L="";R.length>1&&(L=R[0]+"@",_=R[1]),_=_.replace(A,".");var z=_.split("."),J=F(z,x).join(".");return L+J}function H(_){for(var x=[],R=0,L=_.length;R=55296&&z<=56319&&R>1,x+=k(x/R);x>N*y>>1;z+=h)x=k(x/N);return k(z+(N+1)*x/(x+g))},ee=function(x){var R=[],L=x.length,z=0,J=P,le=w,_e=x.lastIndexOf(T);_e<0&&(_e=0);for(var me=0;me<_e;++me)x.charCodeAt(me)>=128&&$("not-basic"),R.push(x.charCodeAt(me));for(var $e=_e>0?_e+1:0;$e=L&&$("invalid-input");var Ie=X(x.charCodeAt($e++));(Ie>=h||Ie>k((v-z)/Ce))&&$("overflow"),z+=Ie*Ce;var ve=we<=le?m:we>=le+y?y:we-le;if(Iek(v/Ye)&&$("overflow"),Ce*=Ye}var qe=R.length+1;le=ae(z-xe,qe,xe==0),k(z/qe)>v-J&&$("overflow"),J+=k(z/qe),z%=qe,R.splice(z++,0,J)}return String.fromCodePoint.apply(String,R)},Le=function(x){var R=[];x=H(x);var L=x.length,z=P,J=0,le=w,_e=!0,me=!1,$e=void 0;try{for(var xe=x[Symbol.iterator](),Ce;!(_e=(Ce=xe.next()).done);_e=!0){var we=Ce.value;we<128&&R.push(O(we))}}catch(Kr){me=!0,$e=Kr}finally{try{!_e&&xe.return&&xe.return()}finally{if(me)throw $e}}var Ie=R.length,ve=Ie;for(Ie&&R.push(T);ve=z&&ctk((v-J)/mt)&&$("overflow"),J+=(Ye-z)*mt,z=Ye;var ht=!0,Vt=!1,Dt=void 0;try{for(var Cr=x[Symbol.iterator](),xr;!(ht=(xr=Cr.next()).done);ht=!0){var _r=xr.value;if(_rv&&$("overflow"),_r==z){for(var Pt=J,Gt=h;;Gt+=h){var Wt=Gt<=le?m:Gt>=le+y?y:Gt-le;if(Pt>6|192).toString(16).toUpperCase()+"%"+(x&63|128).toString(16).toUpperCase():R="%"+(x>>12|224).toString(16).toUpperCase()+"%"+(x>>6&63|128).toString(16).toUpperCase()+"%"+(x&63|128).toString(16).toUpperCase(),R}function G(_){for(var x="",R=0,L=_.length;R=194&&z<224){if(L-R>=6){var J=parseInt(_.substr(R+4,2),16);x+=String.fromCharCode((z&31)<<6|J&63)}else x+=_.substr(R,6);R+=6}else if(z>=224){if(L-R>=9){var le=parseInt(_.substr(R+4,2),16),_e=parseInt(_.substr(R+7,2),16);x+=String.fromCharCode((z&15)<<12|(le&63)<<6|_e&63)}else x+=_.substr(R,9);R+=9}else x+=_.substr(R,3),R+=3}return x}function re(_,x){function R(L){var z=G(L);return z.match(x.UNRESERVED)?z:L}return _.scheme&&(_.scheme=String(_.scheme).replace(x.PCT_ENCODED,R).toLowerCase().replace(x.NOT_SCHEME,"")),_.userinfo!==void 0&&(_.userinfo=String(_.userinfo).replace(x.PCT_ENCODED,R).replace(x.NOT_USERINFO,U).replace(x.PCT_ENCODED,n)),_.host!==void 0&&(_.host=String(_.host).replace(x.PCT_ENCODED,R).toLowerCase().replace(x.NOT_HOST,U).replace(x.PCT_ENCODED,n)),_.path!==void 0&&(_.path=String(_.path).replace(x.PCT_ENCODED,R).replace(_.scheme?x.NOT_PATH:x.NOT_PATH_NOSCHEME,U).replace(x.PCT_ENCODED,n)),_.query!==void 0&&(_.query=String(_.query).replace(x.PCT_ENCODED,R).replace(x.NOT_QUERY,U).replace(x.PCT_ENCODED,n)),_.fragment!==void 0&&(_.fragment=String(_.fragment).replace(x.PCT_ENCODED,R).replace(x.NOT_FRAGMENT,U).replace(x.PCT_ENCODED,n)),_}function pe(_){return _.replace(/^0*(.*)/,"$1")||"0"}function Z(_,x){var R=_.match(x.IPV4ADDRESS)||[],L=f(R,2),z=L[1];return z?z.split(".").map(pe).join("."):_}function Q(_,x){var R=_.match(x.IPV6ADDRESS)||[],L=f(R,3),z=L[1],J=L[2];if(z){for(var le=z.toLowerCase().split("::").reverse(),_e=f(le,2),me=_e[0],$e=_e[1],xe=$e?$e.split(":").map(pe):[],Ce=me.split(":").map(pe),we=x.IPV4ADDRESS.test(Ce[Ce.length-1]),Ie=we?7:8,ve=Ce.length-Ie,Ye=Array(Ie),qe=0;qe1){var Be=Ye.slice(0,ze.index),ct=Ye.slice(ze.index+ze.length);it=Be.join(":")+"::"+ct.join(":")}else it=Ye.join(":");return J&&(it+="%"+J),it}else return _}var ce=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,De="".match(/(){0}/)[1]===void 0;function fe(_){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},R={},L=x.iri!==!1?p:u;x.reference==="suffix"&&(_=(x.scheme?x.scheme+":":"")+"//"+_);var z=_.match(ce);if(z){De?(R.scheme=z[1],R.userinfo=z[3],R.host=z[4],R.port=parseInt(z[5],10),R.path=z[6]||"",R.query=z[7],R.fragment=z[8],isNaN(R.port)&&(R.port=z[5])):(R.scheme=z[1]||void 0,R.userinfo=_.indexOf("@")!==-1?z[3]:void 0,R.host=_.indexOf("//")!==-1?z[4]:void 0,R.port=parseInt(z[5],10),R.path=z[6]||"",R.query=_.indexOf("?")!==-1?z[7]:void 0,R.fragment=_.indexOf("#")!==-1?z[8]:void 0,isNaN(R.port)&&(R.port=_.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?z[4]:void 0)),R.host&&(R.host=Q(Z(R.host,L),L)),R.scheme===void 0&&R.userinfo===void 0&&R.host===void 0&&R.port===void 0&&!R.path&&R.query===void 0?R.reference="same-document":R.scheme===void 0?R.reference="relative":R.fragment===void 0?R.reference="absolute":R.reference="uri",x.reference&&x.reference!=="suffix"&&x.reference!==R.reference&&(R.error=R.error||"URI is not a "+x.reference+" reference.");var J=Te[(x.scheme||R.scheme||"").toLowerCase()];if(!x.unicodeSupport&&(!J||!J.unicodeSupport)){if(R.host&&(x.domainHost||J&&J.domainHost))try{R.host=be.toASCII(R.host.replace(L.PCT_ENCODED,G).toLowerCase())}catch(le){R.error=R.error||"Host's domain name can not be converted to ASCII via punycode: "+le}re(R,u)}else re(R,L);J&&J.parse&&J.parse(R,x)}else R.error=R.error||"URI can not be parsed.";return R}function je(_,x){var R=x.iri!==!1?p:u,L=[];return _.userinfo!==void 0&&(L.push(_.userinfo),L.push("@")),_.host!==void 0&&L.push(Q(Z(String(_.host),R),R).replace(R.IPV6ADDRESS,function(z,J,le){return"["+J+(le?"%25"+le:"")+"]"})),(typeof _.port=="number"||typeof _.port=="string")&&(L.push(":"),L.push(String(_.port))),L.length?L.join(""):void 0}var Ve=/^\.\.?\//,Ee=/^\/\.(\/|$)/,tt=/^\/\.\.(\/|$)/,Ge=/^\/?(?:.|\n)*?(?=\/|$)/;function Je(_){for(var x=[];_.length;)if(_.match(Ve))_=_.replace(Ve,"");else if(_.match(Ee))_=_.replace(Ee,"/");else if(_.match(tt))_=_.replace(tt,"/"),x.pop();else if(_==="."||_==="..")_="";else{var R=_.match(Ge);if(R){var L=R[0];_=_.slice(L.length),x.push(L)}else throw new Error("Unexpected dot segment condition")}return x.join("")}function Xe(_){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},R=x.iri?p:u,L=[],z=Te[(x.scheme||_.scheme||"").toLowerCase()];if(z&&z.serialize&&z.serialize(_,x),_.host&&!R.IPV6ADDRESS.test(_.host)){if(x.domainHost||z&&z.domainHost)try{_.host=x.iri?be.toUnicode(_.host):be.toASCII(_.host.replace(R.PCT_ENCODED,G).toLowerCase())}catch(_e){_.error=_.error||"Host's domain name can not be converted to "+(x.iri?"Unicode":"ASCII")+" via punycode: "+_e}}re(_,R),x.reference!=="suffix"&&_.scheme&&(L.push(_.scheme),L.push(":"));var J=je(_,x);if(J!==void 0&&(x.reference!=="suffix"&&L.push("//"),L.push(J),_.path&&_.path.charAt(0)!=="/"&&L.push("/")),_.path!==void 0){var le=_.path;!x.absolutePath&&(!z||!z.absolutePath)&&(le=Je(le)),J===void 0&&(le=le.replace(/^\/\//,"/%2F")),L.push(le)}return _.query!==void 0&&(L.push("?"),L.push(_.query)),_.fragment!==void 0&&(L.push("#"),L.push(_.fragment)),L.join("")}function Ke(_,x){var R=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},L=arguments[3],z={};return L||(_=fe(Xe(_,R),R),x=fe(Xe(x,R),R)),R=R||{},!R.tolerant&&x.scheme?(z.scheme=x.scheme,z.userinfo=x.userinfo,z.host=x.host,z.port=x.port,z.path=Je(x.path||""),z.query=x.query):(x.userinfo!==void 0||x.host!==void 0||x.port!==void 0?(z.userinfo=x.userinfo,z.host=x.host,z.port=x.port,z.path=Je(x.path||""),z.query=x.query):(x.path?(x.path.charAt(0)==="/"?z.path=Je(x.path):((_.userinfo!==void 0||_.host!==void 0||_.port!==void 0)&&!_.path?z.path="/"+x.path:_.path?z.path=_.path.slice(0,_.path.lastIndexOf("/")+1)+x.path:z.path=x.path,z.path=Je(z.path)),z.query=x.query):(z.path=_.path,x.query!==void 0?z.query=x.query:z.query=_.query),z.userinfo=_.userinfo,z.host=_.host,z.port=_.port),z.scheme=_.scheme),z.fragment=x.fragment,z}function _t(_,x,R){var L=l({scheme:"null"},R);return Xe(Ke(fe(_,L),fe(x,L),L,!0),L)}function St(_,x){return typeof _=="string"?_=Xe(fe(_,x),x):i(_)==="object"&&(_=fe(Xe(_,x),x)),_}function Rt(_,x,R){return typeof _=="string"?_=Xe(fe(_,R),R):i(_)==="object"&&(_=Xe(_,R)),typeof x=="string"?x=Xe(fe(x,R),R):i(x)==="object"&&(x=Xe(x,R)),_===x}function Xr(_,x){return _&&_.toString().replace(!x||!x.iri?u.ESCAPE:p.ESCAPE,U)}function Nt(_,x){return _&&_.toString().replace(!x||!x.iri?u.PCT_ENCODED:p.PCT_ENCODED,G)}var pa={scheme:"http",domainHost:!0,parse:function(x,R){return x.host||(x.error=x.error||"HTTP URIs must have a host."),x},serialize:function(x,R){var L=String(x.scheme).toLowerCase()==="https";return(x.port===(L?443:80)||x.port==="")&&(x.port=void 0),x.path||(x.path="/"),x}},da={scheme:"https",domainHost:pa.domainHost,parse:pa.parse,serialize:pa.serialize};function Zn(_){return typeof _.secure=="boolean"?_.secure:String(_.scheme).toLowerCase()==="wss"}var La={scheme:"ws",domainHost:!0,parse:function(x,R){var L=x;return L.secure=Zn(L),L.resourceName=(L.path||"/")+(L.query?"?"+L.query:""),L.path=void 0,L.query=void 0,L},serialize:function(x,R){if((x.port===(Zn(x)?443:80)||x.port==="")&&(x.port=void 0),typeof x.secure=="boolean"&&(x.scheme=x.secure?"wss":"ws",x.secure=void 0),x.resourceName){var L=x.resourceName.split("?"),z=f(L,2),J=z[0],le=z[1];x.path=J&&J!=="/"?J:void 0,x.query=le,x.resourceName=void 0}return x.fragment=void 0,x}},eo={scheme:"wss",domainHost:La.domainHost,parse:La.parse,serialize:La.serialize},to={},Yt=!0,ro="[A-Za-z0-9\\-\\.\\_\\~"+(Yt?"\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF":"")+"]",er="[0-9A-Fa-f]",jl=s(s("%[EFef]"+er+"%"+er+er+"%"+er+er)+"|"+s("%[89A-Fa-f]"+er+"%"+er+er)+"|"+s("%"+er+er)),Ml="[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]",Ll="[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",ql=t(Ll,'[\\"\\\\]'),fa="[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]",Fl=new RegExp(ro,"g"),Qr=new RegExp(jl,"g"),Ul=new RegExp(t("[^]",Ml,"[\\.]",'[\\"]',ql),"g"),Us=new RegExp(t("[^]",ro,fa),"g"),ao=Us;function Xn(_){var x=G(_);return x.match(Fl)?x:_}var Qn={scheme:"mailto",parse:function(x,R){var L=x,z=L.to=L.path?L.path.split(","):[];if(L.path=void 0,L.query){for(var J=!1,le={},_e=L.query.split("&"),me=0,$e=_e.length;me<$e;++me){var xe=_e[me].split("=");switch(xe[0]){case"to":for(var Ce=xe[1].split(","),we=0,Ie=Ce.length;we{e.exports=function r(t,s){if(t===s)return!0;if(t&&s&&typeof t=="object"&&typeof s=="object"){if(t.constructor!==s.constructor)return!1;var i,n,o;if(Array.isArray(t)){if(i=t.length,i!=s.length)return!1;for(n=i;n--!==0;)if(!r(t[n],s[n]))return!1;return!0}if(t.constructor===RegExp)return t.source===s.source&&t.flags===s.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===s.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===s.toString();if(o=Object.keys(t),i=o.length,i!==Object.keys(s).length)return!1;for(n=i;n--!==0;)if(!Object.prototype.hasOwnProperty.call(s,o[n]))return!1;for(n=i;n--!==0;){var l=o[n];if(!r(t[l],s[l]))return!1}return!0}return t!==t&&s!==s}}),Tj=Ne((a,e)=>{e.exports=function(t){for(var s=0,i=t.length,n=0,o;n=55296&&o<=56319&&n{e.exports={copy:r,checkDataType:t,checkDataTypes:s,coerceToTypes:n,toHash:o,getProperty:u,escapeQuotes:p,equal:lf(),ucs2length:Tj(),varOccurences:f,varReplace:d,schemaHasRules:v,schemaHasRulesExcept:h,schemaUnknownRules:m,toQuotedString:y,getPathExpr:g,getPath:b,getData:T,unescapeFragment:D,unescapeJsonPointer:N,escapeFragment:A,escapeJsonPointer:j};function r(k,O){O=O||{};for(var $ in k)O[$]=k[$];return O}function t(k,O,$,F){var B=F?" !== ":" === ",H=F?" || ":" && ",K=F?"!":"",X=F?"":"!";switch(k){case"null":return O+B+"null";case"array":return K+"Array.isArray("+O+")";case"object":return"("+K+O+H+"typeof "+O+B+'"object"'+H+X+"Array.isArray("+O+"))";case"integer":return"(typeof "+O+B+'"number"'+H+X+"("+O+" % 1)"+H+O+B+O+($?H+K+"isFinite("+O+")":"")+")";case"number":return"(typeof "+O+B+'"'+k+'"'+($?H+K+"isFinite("+O+")":"")+")";default:return"typeof "+O+B+'"'+k+'"'}}function s(k,O,$){switch(k.length){case 1:return t(k[0],O,$,!0);default:var F="",B=o(k);B.array&&B.object&&(F=B.null?"(":"(!"+O+" || ",F+="typeof "+O+' !== "object")',delete B.null,delete B.array,delete B.object),B.number&&delete B.integer;for(var H in B)F+=(F?" && ":"")+t(H,O,$,!0);return F}}var i=o(["string","number","integer","boolean","null"]);function n(k,O){if(Array.isArray(O)){for(var $=[],F=0;F=O)throw new Error("Cannot access property/index "+F+" levels up, current level is "+O);return $[O-F]}if(F>O)throw new Error("Cannot access data "+F+" levels up, current level is "+O);if(H="data"+(O-F||""),!B)return H}for(var X=H,V=B.split("/"),ae=0;ae{var r=Un();e.exports=t;function t(s){r.copy(s,this)}}),Rj=Ne((a,e)=>{var r=e.exports=function(i,n,o){typeof n=="function"&&(o=n,n={}),o=n.cb||o;var l=typeof o=="function"?o:o.pre||function(){},c=o.post||function(){};t(n,l,c,i,"",i)};r.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0},r.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},r.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},r.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function t(i,n,o,l,c,u,p,f,d,v){if(l&&typeof l=="object"&&!Array.isArray(l)){n(l,c,u,p,f,d,v);for(var h in l){var m=l[h];if(Array.isArray(m)){if(h in r.arrayKeywords)for(var y=0;y{var r=wj(),t=lf(),s=Un(),i=AE(),n=Rj();e.exports=o,o.normalizeId=b,o.fullPath=m,o.url=w,o.ids=P,o.inlineRef=d,o.schema=l;function o(T,C,D){var A=this._refs[D];if(typeof A=="string")if(this._refs[A])A=this._refs[A];else return o.call(this,T,C,A);if(A=A||this._schemas[D],A instanceof i)return d(A.schema,this._opts.inlineRefs)?A.schema:A.validate||this._compile(A);var j=l.call(this,C,D),N,k,O;return j&&(N=j.schema,C=j.root,O=j.baseId),N instanceof i?k=N.validate||T.call(this,N.schema,C,void 0,O):N!==void 0&&(k=d(N,this._opts.inlineRefs)?N:T.call(this,N,C,void 0,O)),k}function l(T,C){var D=r.parse(C),A=y(D),j=m(this._getId(T.schema));if(Object.keys(T.schema).length===0||A!==j){var N=b(A),k=this._refs[N];if(typeof k=="string")return c.call(this,T,k,D);if(k instanceof i)k.validate||this._compile(k),T=k;else if(k=this._schemas[N],k instanceof i){if(k.validate||this._compile(k),N==b(C))return{schema:k,root:T,baseId:j};T=k}else return;if(!T.schema)return;j=m(this._getId(T.schema))}return p.call(this,D,j,T.schema,T)}function c(T,C,D){var A=l.call(this,T,C);if(A){var j=A.schema,N=A.baseId;T=A.root;var k=this._getId(j);return k&&(N=w(N,k)),p.call(this,D,N,j,T)}}var u=s.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function p(T,C,D,A){if(T.fragment=T.fragment||"",T.fragment.slice(0,1)=="/"){for(var j=T.fragment.split("/"),N=1;N{var r=uf();e.exports={Validation:i(t),MissingRef:i(s)};function t(n){this.message="validation failed",this.errors=n,this.ajv=this.validation=!0}s.message=function(n,o){return"can't resolve reference "+o+" from id "+n};function s(n,o,l){this.message=l||s.message(n,o),this.missingRef=r.url(n,o),this.missingSchema=r.normalizeId(r.fullPath(this.missingRef))}function i(n){return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}}),NE=Ne((a,e)=>{e.exports=function(r,t){t||(t={}),typeof t=="function"&&(t={cmp:t});var s=typeof t.cycles=="boolean"?t.cycles:!1,i=t.cmp&&(function(o){return function(l){return function(c,u){var p={key:c,value:l[c]},f={key:u,value:l[u]};return o(p,f)}}})(t.cmp),n=[];return(function o(l){if(l&&l.toJSON&&typeof l.toJSON=="function"&&(l=l.toJSON()),l!==void 0){if(typeof l=="number")return isFinite(l)?""+l:"null";if(typeof l!="object")return JSON.stringify(l);var c,u;if(Array.isArray(l)){for(u="[",c=0;c{e.exports=function(t,s,i){var n="",o=t.schema.$async===!0,l=t.util.schemaHasRulesExcept(t.schema,t.RULES.all,"$ref"),c=t.self._getId(t.schema);if(t.opts.strictKeywords){var u=t.util.schemaUnknownRules(t.schema,t.RULES.keywords);if(u){var p="unknown keyword: "+u;if(t.opts.strictKeywords==="log")t.logger.warn(p);else throw new Error(p)}}if(t.isTop&&(n+=" var validate = ",o&&(t.async=!0,n+="async "),n+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",c&&(t.opts.sourceCode||t.opts.processCode)&&(n+=" "+("/*# sourceURL="+c+" */")+" ")),typeof t.schema=="boolean"||!(l||t.schema.$ref)){var s="false schema",f=t.level,d=t.dataLevel,v=t.schema[s],h=t.schemaPath+t.util.getProperty(s),m=t.errSchemaPath+"/"+s,C=!t.opts.allErrors,j,y="data"+(d||""),T="valid"+f;if(t.schema===!1){t.isTop?C=!0:n+=" var "+T+" = false; ";var g=g||[];g.push(n),n="",t.createErrors!==!1?(n+=" { keyword: '"+(j||"false schema")+"' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(m)+" , params: {} ",t.opts.messages!==!1&&(n+=" , message: 'boolean schema is false' "),t.opts.verbose&&(n+=" , schema: false , parentSchema: validate.schema"+t.schemaPath+" , data: "+y+" "),n+=" } "):n+=" {} ";var b=n;n=g.pop(),!t.compositeRule&&C?t.async?n+=" throw new ValidationError(["+b+"]); ":n+=" validate.errors = ["+b+"]; return false; ":n+=" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else t.isTop?o?n+=" return data; ":n+=" validate.errors = null; return true; ":n+=" var "+T+" = true; ";return t.isTop&&(n+=" }; return validate; "),n}if(t.isTop){var w=t.isTop,f=t.level=0,d=t.dataLevel=0,y="data";if(t.rootId=t.resolve.fullPath(t.self._getId(t.root.schema)),t.baseId=t.baseId||t.rootId,delete t.isTop,t.dataPathArr=[""],t.schema.default!==void 0&&t.opts.useDefaults&&t.opts.strictDefaults){var P="default is ignored in the schema root";if(t.opts.strictDefaults==="log")t.logger.warn(P);else throw new Error(P)}n+=" var vErrors = null; ",n+=" var errors = 0; ",n+=" if (rootData === undefined) rootData = data; "}else{var{level:f,dataLevel:d}=t,y="data"+(d||"");if(c&&(t.baseId=t.resolve.url(t.baseId,c)),o&&!t.async)throw new Error("async schema in sync schema");n+=" var errs_"+f+" = errors;"}var T="valid"+f,C=!t.opts.allErrors,D="",A="",j,N=t.schema.type,k=Array.isArray(N);if(N&&t.opts.nullable&&t.schema.nullable===!0&&(k?N.indexOf("null")==-1&&(N=N.concat("null")):N!="null"&&(N=[N,"null"],k=!0)),k&&N.length==1&&(N=N[0],k=!1),t.schema.$ref&&l){if(t.opts.extendRefs=="fail")throw new Error('$ref: validation keywords used in schema at path "'+t.errSchemaPath+'" (see option extendRefs)');t.opts.extendRefs!==!0&&(l=!1,t.logger.warn('$ref: keywords ignored in schema at path "'+t.errSchemaPath+'"'))}if(t.schema.$comment&&t.opts.$comment&&(n+=" "+t.RULES.all.$comment.code(t,"$comment")),N){if(t.opts.coerceTypes)var O=t.util.coerceToTypes(t.opts.coerceTypes,N);var $=t.RULES.types[N];if(O||k||$===!0||$&&!Ge($)){var h=t.schemaPath+".type",m=t.errSchemaPath+"/type",h=t.schemaPath+".type",m=t.errSchemaPath+"/type",F=k?"checkDataTypes":"checkDataType";if(n+=" if ("+t.util[F](N,y,t.opts.strictNumbers,!0)+") { ",O){var B="dataType"+f,H="coerced"+f;n+=" var "+B+" = typeof "+y+"; var "+H+" = undefined; ",t.opts.coerceTypes=="array"&&(n+=" if ("+B+" == 'object' && Array.isArray("+y+") && "+y+".length == 1) { "+y+" = "+y+"[0]; "+B+" = typeof "+y+"; if ("+t.util.checkDataType(t.schema.type,y,t.opts.strictNumbers)+") "+H+" = "+y+"; } "),n+=" if ("+H+" !== undefined) ; ";var K=O;if(K)for(var X,V=-1,ae=K.length-1;V{var r=uf(),t=Un(),s=pf(),i=NE(),n=DE(),o=t.ucs2length,l=lf(),c=s.Validation;e.exports=u;function u(b,w,P,T){var C=this,D=this._opts,A=[void 0],j={},N=[],k={},O=[],$={},F=[];w=w||{schema:b,refVal:A,refs:j};var B=p.call(this,b,w,T),H=this._compilations[B.index];if(B.compiling)return H.callValidate=ee;var K=this._formats,X=this.RULES;try{var V=Le(b,w,P,T);H.validate=V;var ae=H.callValidate;return ae&&(ae.schema=V.schema,ae.errors=null,ae.refs=V.refs,ae.refVal=V.refVal,ae.root=V.root,ae.$async=V.$async,D.sourceCode&&(ae.source=V.source)),V}finally{f.call(this,b,w,T)}function ee(){var Z=H.validate,Q=Z.apply(this,arguments);return ee.errors=Z.errors,Q}function Le(Z,Q,ce,De){var fe=!Q||Q&&Q.schema==Z;if(Q.schema!=w.schema)return u.call(C,Z,Q,ce,De);var je=Z.$async===!0,Ve=n({isTop:!0,schema:Z,isRoot:fe,baseId:De,root:Q,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:s.MissingRef,RULES:X,validate:n,util:t,resolve:r,resolveRef:he,usePattern:G,useDefault:re,useCustomRule:pe,opts:D,formats:K,logger:C.logger,self:C});Ve=g(A,m)+g(N,v)+g(O,h)+g(F,y)+Ve,D.processCode&&(Ve=D.processCode(Ve,Z));var Ee;try{var tt=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",Ve);Ee=tt(C,X,K,w,A,O,F,l,o,c),A[0]=Ee}catch(Ge){throw C.logger.error("Error compiling schema, function code:",Ve),Ge}return Ee.schema=Z,Ee.errors=null,Ee.refs=j,Ee.refVal=A,Ee.root=fe?Ee:Q,je&&(Ee.$async=!0),D.sourceCode===!0&&(Ee.source={code:Ve,patterns:N,defaults:O}),Ee}function he(Z,Q,ce){Q=r.url(Z,Q);var De=j[Q],fe,je;if(De!==void 0)return fe=A[De],je="refVal["+De+"]",U(fe,je);if(!ce&&w.refs){var Ve=w.refs[Q];if(Ve!==void 0)return fe=w.refVal[Ve],je=Se(Q,fe),U(fe,je)}je=Se(Q);var Ee=r.call(C,Le,w,Q);if(Ee===void 0){var tt=P&&P[Q];tt&&(Ee=r.inlineRef(tt,D.inlineRefs)?tt:u.call(C,tt,w,P,Z))}if(Ee===void 0)be(Q);else return Te(Q,Ee),U(Ee,je)}function Se(Z,Q){var ce=A.length;return A[ce]=Q,j[Z]=ce,"refVal"+ce}function be(Z){delete j[Z]}function Te(Z,Q){var ce=j[Z];A[ce]=Q}function U(Z,Q){return typeof Z=="object"||typeof Z=="boolean"?{code:Q,schema:Z,inline:!0}:{code:Q,$async:Z&&!!Z.$async}}function G(Z){var Q=k[Z];return Q===void 0&&(Q=k[Z]=N.length,N[Q]=Z),"pattern"+Q}function re(Z){switch(typeof Z){case"boolean":case"number":return""+Z;case"string":return t.toQuotedString(Z);case"object":if(Z===null)return"null";var Q=i(Z),ce=$[Q];return ce===void 0&&(ce=$[Q]=O.length,O[ce]=Z),"default"+ce}}function pe(Z,Q,ce,De){if(C._opts.validateSchema!==!1){var fe=Z.definition.dependencies;if(fe&&!fe.every(function(_t){return Object.prototype.hasOwnProperty.call(ce,_t)}))throw new Error("parent schema must have all required keywords: "+fe.join(","));var je=Z.definition.validateSchema;if(je){var Ve=je(Q);if(!Ve){var Ee="keyword schema is invalid: "+C.errorsText(je.errors);if(C._opts.validateSchema=="log")C.logger.error(Ee);else throw new Error(Ee)}}}var tt=Z.definition.compile,Ge=Z.definition.inline,Je=Z.definition.macro,Xe;if(tt)Xe=tt.call(C,Q,ce,De);else if(Je)Xe=Je.call(C,Q,ce,De),D.validateSchema!==!1&&C.validateSchema(Xe,!0);else if(Ge)Xe=Ge.call(C,De,Z.keyword,Q,ce);else if(Xe=Z.definition.validate,!Xe)return;if(Xe===void 0)throw new Error('custom keyword "'+Z.keyword+'"failed to compile');var Ke=F.length;return F[Ke]=Xe,{code:"customRule"+Ke,validate:Xe}}}function p(b,w,P){var T=d.call(this,b,w,P);return T>=0?{index:T,compiling:!0}:(T=this._compilations.length,this._compilations[T]={schema:b,root:w,baseId:P},{index:T,compiling:!1})}function f(b,w,P){var T=d.call(this,b,w,P);T>=0&&this._compilations.splice(T,1)}function d(b,w,P){for(var T=0;T{var r=e.exports=function(){this._cache={}};r.prototype.put=function(s,i){this._cache[s]=i},r.prototype.get=function(s){return this._cache[s]},r.prototype.del=function(s){delete this._cache[s]},r.prototype.clear=function(){this._cache={}}}),kj=Ne((a,e)=>{var r=Un(),t=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,s=[0,31,28,31,30,31,30,31,31,30,31,30,31],i=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,n=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,o=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,l=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,c=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,u=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,p=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,f=/^(?:\/(?:[^~/]|~0|~1)*)*$/,d=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,v=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;e.exports=h;function h(A){return A=A=="full"?"full":"fast",r.copy(h[A])}h.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":c,url:u,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:n,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:D,uuid:p,"json-pointer":f,"json-pointer-uri-fragment":d,"relative-json-pointer":v},h.full={date:y,time:g,"date-time":w,uri:T,"uri-reference":l,"uri-template":c,url:u,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:n,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:D,uuid:p,"json-pointer":f,"json-pointer-uri-fragment":d,"relative-json-pointer":v};function m(A){return A%4===0&&(A%100!==0||A%400===0)}function y(A){var j=A.match(t);if(!j)return!1;var N=+j[1],k=+j[2],O=+j[3];return k>=1&&k<=12&&O>=1&&O<=(k==2&&m(N)?29:s[k])}function g(A,j){var N=A.match(i);if(!N)return!1;var k=N[1],O=N[2],$=N[3],F=N[5];return(k<=23&&O<=59&&$<=59||k==23&&O==59&&$==60)&&(!j||F)}var b=/t|\s/i;function w(A){var j=A.split(b);return j.length==2&&y(j[0])&&g(j[1],!0)}var P=/\/|:/;function T(A){return P.test(A)&&o.test(A)}var C=/[^\\]\\Z/;function D(A){if(C.test(A))return!1;try{return new RegExp(A),!0}catch{return!1}}}),Cj=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.errSchemaPath+"/"+s,p=!t.opts.allErrors,f="data"+(l||""),d="valid"+o,v,h;if(c=="#"||c=="#/")t.isRoot?(v=t.async,h="validate"):(v=t.root.schema.$async===!0,h="root.refVal[0]");else{var m=t.resolveRef(t.baseId,c,t.isRoot);if(m===void 0){var y=t.MissingRefError.message(t.baseId,c);if(t.opts.missingRefs=="fail"){t.logger.error(y);var g=g||[];g.push(n),n="",t.createErrors!==!1?(n+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(u)+" , params: { ref: '"+t.util.escapeQuotes(c)+"' } ",t.opts.messages!==!1&&(n+=" , message: 'can\\'t resolve reference "+t.util.escapeQuotes(c)+"' "),t.opts.verbose&&(n+=" , schema: "+t.util.toQuotedString(c)+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+f+" "),n+=" } "):n+=" {} ";var b=n;n=g.pop(),!t.compositeRule&&p?t.async?n+=" throw new ValidationError(["+b+"]); ":n+=" validate.errors = ["+b+"]; return false; ":n+=" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",p&&(n+=" if (false) { ")}else if(t.opts.missingRefs=="ignore")t.logger.warn(y),p&&(n+=" if (true) { ");else throw new t.MissingRefError(t.baseId,c,y)}else if(m.inline){var w=t.util.copy(t);w.level++;var P="valid"+w.level;w.schema=m.schema,w.schemaPath="",w.errSchemaPath=c;var T=t.validate(w).replace(/validate\.schema/g,m.code);n+=" "+T+" ",p&&(n+=" if ("+P+") { ")}else v=m.$async===!0||t.async&&m.$async!==!1,h=m.code}if(h){var g=g||[];g.push(n),n="",t.opts.passContext?n+=" "+h+".call(this, ":n+=" "+h+"( ",n+=" "+f+", (dataPath || '')",t.errorPath!='""'&&(n+=" + "+t.errorPath);var C=l?"data"+(l-1||""):"parentData",D=l?t.dataPathArr[l]:"parentDataProperty";n+=" , "+C+" , "+D+", rootData) ";var A=n;if(n=g.pop(),v){if(!t.async)throw new Error("async schema referenced by sync schema");p&&(n+=" var "+d+"; "),n+=" try { await "+A+"; ",p&&(n+=" "+d+" = true; "),n+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",p&&(n+=" "+d+" = false; "),n+=" } ",p&&(n+=" if ("+d+") { ")}else n+=" if (!"+A+") { if (vErrors === null) vErrors = "+h+".errors; else vErrors = vErrors.concat("+h+".errors); errors = vErrors.length; } ",p&&(n+=" else { ")}return n}}),Ij=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.schema[s],l=t.schemaPath+t.util.getProperty(s),c=t.errSchemaPath+"/"+s,u=!t.opts.allErrors,p=t.util.copy(t),f="";p.level++;var d="valid"+p.level,v=p.baseId,h=!0,m=o;if(m)for(var y,g=-1,b=m.length-1;g0||y===!1:t.util.schemaHasRules(y,t.RULES.all))&&(h=!1,p.schema=y,p.schemaPath=l+"["+g+"]",p.errSchemaPath=c+"/"+g,n+=" "+t.validate(p)+" ",p.baseId=v,u&&(n+=" if ("+d+") { ",f+="}"));return u&&(h?n+=" if (true) { ":n+=" "+f.slice(0,-1)+" "),n}}),Aj=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,d="data"+(l||""),v="valid"+o,h="errs__"+o,m=t.util.copy(t),y="";m.level++;var g="valid"+m.level,b=c.every(function(j){return t.opts.strictKeywords?typeof j=="object"&&Object.keys(j).length>0||j===!1:t.util.schemaHasRules(j,t.RULES.all)});if(b){var w=m.baseId;n+=" var "+h+" = errors; var "+v+" = false; ";var P=t.compositeRule;t.compositeRule=m.compositeRule=!0;var T=c;if(T)for(var C,D=-1,A=T.length-1;D{e.exports=function(t,s,i){var n=" ",o=t.schema[s],l=t.errSchemaPath+"/"+s,c=!t.opts.allErrors,u=t.util.toQuotedString(o);return t.opts.$comment===!0?n+=" console.log("+u+");":typeof t.opts.$comment=="function"&&(n+=" self._opts.$comment("+u+", "+t.util.toQuotedString(l)+", validate.root.schema);"),n}}),Dj=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,d="data"+(l||""),v="valid"+o,h=t.opts.$data&&c&&c.$data,m;h?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",m="schema"+o):m=c,h||(n+=" var schema"+o+" = validate.schema"+u+";"),n+="var "+v+" = equal("+d+", schema"+o+"); if (!"+v+") { ";var y=y||[];y.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'const' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { allowedValue: schema"+o+" } ",t.opts.messages!==!1&&(n+=" , message: 'should be equal to constant' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ";var g=n;return n=y.pop(),!t.compositeRule&&f?t.async?n+=" throw new ValidationError(["+g+"]); ":n+=" validate.errors = ["+g+"]; return false; ":n+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" }",f&&(n+=" else { "),n}}),$j=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,d="data"+(l||""),v="valid"+o,h="errs__"+o,m=t.util.copy(t),y="";m.level++;var g="valid"+m.level,b="i"+o,w=m.dataLevel=t.dataLevel+1,P="data"+w,T=t.baseId,C=t.opts.strictKeywords?typeof c=="object"&&Object.keys(c).length>0||c===!1:t.util.schemaHasRules(c,t.RULES.all);if(n+="var "+h+" = errors;var "+v+";",C){var D=t.compositeRule;t.compositeRule=m.compositeRule=!0,m.schema=c,m.schemaPath=u,m.errSchemaPath=p,n+=" var "+g+" = false; for (var "+b+" = 0; "+b+" < "+d+".length; "+b+"++) { ",m.errorPath=t.util.getPathExpr(t.errorPath,b,t.opts.jsonPointers,!0);var A=d+"["+b+"]";m.dataPathArr[w]=b;var j=t.validate(m);m.baseId=T,t.util.varOccurences(j,P)<2?n+=" "+t.util.varReplace(j,P,A)+" ":n+=" var "+P+" = "+A+"; "+j+" ",n+=" if ("+g+") break; } ",t.compositeRule=m.compositeRule=D,n+=" "+y+" if (!"+g+") {"}else n+=" if ("+d+".length == 0) {";var N=N||[];N.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: {} ",t.opts.messages!==!1&&(n+=" , message: 'should contain a valid item' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ";var k=n;return n=N.pop(),!t.compositeRule&&f?t.async?n+=" throw new ValidationError(["+k+"]); ":n+=" validate.errors = ["+k+"]; return false; ":n+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { ",C&&(n+=" errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } "),t.opts.allErrors&&(n+=" } "),n}}),jj=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,d="data"+(l||""),v="errs__"+o,h=t.util.copy(t),m="";h.level++;var y="valid"+h.level,g={},b={},w=t.opts.ownProperties;for(D in c)if(D!="__proto__"){var P=c[D],T=Array.isArray(P)?b:g;T[D]=P}n+="var "+v+" = errors;";var C=t.errorPath;n+="var missing"+o+";";for(var D in b)if(T=b[D],T.length){if(n+=" if ( "+d+t.util.getProperty(D)+" !== undefined ",w&&(n+=" && Object.prototype.hasOwnProperty.call("+d+", '"+t.util.escapeQuotes(D)+"') "),f){n+=" && ( ";var A=T;if(A)for(var j,N=-1,k=A.length-1;N0||P===!1:t.util.schemaHasRules(P,t.RULES.all))&&(n+=" "+y+" = true; if ( "+d+t.util.getProperty(D)+" !== undefined ",w&&(n+=" && Object.prototype.hasOwnProperty.call("+d+", '"+t.util.escapeQuotes(D)+"') "),n+=") { ",h.schema=P,h.schemaPath=u+t.util.getProperty(D),h.errSchemaPath=p+"/"+t.util.escapeFragment(D),n+=" "+t.validate(h)+" ",h.baseId=ee,n+=" } ",f&&(n+=" if ("+y+") { ",m+="}"))}return f&&(n+=" "+m+" if ("+v+" == errors) {"),n}}),Mj=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,d="data"+(l||""),v="valid"+o,h=t.opts.$data&&c&&c.$data,m;h?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",m="schema"+o):m=c;var y="i"+o,g="schema"+o;h||(n+=" var "+g+" = validate.schema"+u+";"),n+="var "+v+";",h&&(n+=" if (schema"+o+" === undefined) "+v+" = true; else if (!Array.isArray(schema"+o+")) "+v+" = false; else {"),n+=""+v+" = false;for (var "+y+"=0; "+y+"<"+g+".length; "+y+"++) if (equal("+d+", "+g+"["+y+"])) { "+v+" = true; break; }",h&&(n+=" } "),n+=" if (!"+v+") { ";var b=b||[];b.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { allowedValues: schema"+o+" } ",t.opts.messages!==!1&&(n+=" , message: 'should be equal to one of the allowed values' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ";var w=n;return n=b.pop(),!t.compositeRule&&f?t.async?n+=" throw new ValidationError(["+w+"]); ":n+=" validate.errors = ["+w+"]; return false; ":n+=" var err = "+w+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" }",f&&(n+=" else { "),n}}),Lj=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,d="data"+(l||"");if(t.opts.format===!1)return f&&(n+=" if (true) { "),n;var v=t.opts.$data&&c&&c.$data,h;v?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",h="schema"+o):h=c;var m=t.opts.unknownFormats,y=Array.isArray(m);if(v){var g="format"+o,b="isObject"+o,w="formatType"+o;n+=" var "+g+" = formats["+h+"]; var "+b+" = typeof "+g+" == 'object' && !("+g+" instanceof RegExp) && "+g+".validate; var "+w+" = "+b+" && "+g+".type || 'string'; if ("+b+") { ",t.async&&(n+=" var async"+o+" = "+g+".async; "),n+=" "+g+" = "+g+".validate; } if ( ",v&&(n+=" ("+h+" !== undefined && typeof "+h+" != 'string') || "),n+=" (",m!="ignore"&&(n+=" ("+h+" && !"+g+" ",y&&(n+=" && self._opts.unknownFormats.indexOf("+h+") == -1 "),n+=") || "),n+=" ("+g+" && "+w+" == '"+i+"' && !(typeof "+g+" == 'function' ? ",t.async?n+=" (async"+o+" ? await "+g+"("+d+") : "+g+"("+d+")) ":n+=" "+g+"("+d+") ",n+=" : "+g+".test("+d+"))))) {"}else{var g=t.formats[c];if(!g){if(m=="ignore")return t.logger.warn('unknown format "'+c+'" ignored in schema at path "'+t.errSchemaPath+'"'),f&&(n+=" if (true) { "),n;if(y&&m.indexOf(c)>=0)return f&&(n+=" if (true) { "),n;throw new Error('unknown format "'+c+'" is used in schema at path "'+t.errSchemaPath+'"')}var b=typeof g=="object"&&!(g instanceof RegExp)&&g.validate,w=b&&g.type||"string";if(b){var P=g.async===!0;g=g.validate}if(w!=i)return f&&(n+=" if (true) { "),n;if(P){if(!t.async)throw new Error("async format in sync schema");var T="formats"+t.util.getProperty(c)+".validate";n+=" if (!(await "+T+"("+d+"))) { "}else{n+=" if (! ";var T="formats"+t.util.getProperty(c);b&&(T+=".validate"),typeof g=="function"?n+=" "+T+"("+d+") ":n+=" "+T+".test("+d+") ",n+=") { "}}var C=C||[];C.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'format' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { format: ",v?n+=""+h:n+=""+t.util.toQuotedString(c),n+=" } ",t.opts.messages!==!1&&(n+=` , message: 'should match format "`,v?n+="' + "+h+" + '":n+=""+t.util.escapeQuotes(c),n+=`"' `),t.opts.verbose&&(n+=" , schema: ",v?n+="validate.schema"+u:n+=""+t.util.toQuotedString(c),n+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ";var D=n;return n=C.pop(),!t.compositeRule&&f?t.async?n+=" throw new ValidationError(["+D+"]); ":n+=" validate.errors = ["+D+"]; return false; ":n+=" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",f&&(n+=" else { "),n}}),qj=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,d="data"+(l||""),v="valid"+o,h="errs__"+o,m=t.util.copy(t);m.level++;var y="valid"+m.level,g=t.schema.then,b=t.schema.else,w=g!==void 0&&(t.opts.strictKeywords?typeof g=="object"&&Object.keys(g).length>0||g===!1:t.util.schemaHasRules(g,t.RULES.all)),P=b!==void 0&&(t.opts.strictKeywords?typeof b=="object"&&Object.keys(b).length>0||b===!1:t.util.schemaHasRules(b,t.RULES.all)),T=m.baseId;if(w||P){var C;m.createErrors=!1,m.schema=c,m.schemaPath=u,m.errSchemaPath=p,n+=" var "+h+" = errors; var "+v+" = true; ";var D=t.compositeRule;t.compositeRule=m.compositeRule=!0,n+=" "+t.validate(m)+" ",m.baseId=T,m.createErrors=!0,n+=" errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } ",t.compositeRule=m.compositeRule=D,w?(n+=" if ("+y+") { ",m.schema=t.schema.then,m.schemaPath=t.schemaPath+".then",m.errSchemaPath=t.errSchemaPath+"/then",n+=" "+t.validate(m)+" ",m.baseId=T,n+=" "+v+" = "+y+"; ",w&&P?(C="ifClause"+o,n+=" var "+C+" = 'then'; "):C="'then'",n+=" } ",P&&(n+=" else { ")):n+=" if (!"+y+") { ",P&&(m.schema=t.schema.else,m.schemaPath=t.schemaPath+".else",m.errSchemaPath=t.errSchemaPath+"/else",n+=" "+t.validate(m)+" ",m.baseId=T,n+=" "+v+" = "+y+"; ",w&&P?(C="ifClause"+o,n+=" var "+C+" = 'else'; "):C="'else'",n+=" } "),n+=" if (!"+v+") { var err = ",t.createErrors!==!1?(n+=" { keyword: 'if' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { failingKeyword: "+C+" } ",t.opts.messages!==!1&&(n+=` , message: 'should match "' + `+C+` + '" schema' `),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!t.compositeRule&&f&&(t.async?n+=" throw new ValidationError(vErrors); ":n+=" validate.errors = vErrors; return false; "),n+=" } ",f&&(n+=" else { ")}else f&&(n+=" if (true) { ");return n}}),Fj=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,d="data"+(l||""),v="valid"+o,h="errs__"+o,m=t.util.copy(t),y="";m.level++;var g="valid"+m.level,b="i"+o,w=m.dataLevel=t.dataLevel+1,P="data"+w,T=t.baseId;if(n+="var "+h+" = errors;var "+v+";",Array.isArray(c)){var C=t.schema.additionalItems;if(C===!1){n+=" "+v+" = "+d+".length <= "+c.length+"; ";var D=p;p=t.errSchemaPath+"/additionalItems",n+=" if (!"+v+") { ";var A=A||[];A.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { limit: "+c.length+" } ",t.opts.messages!==!1&&(n+=" , message: 'should NOT have more than "+c.length+" items' "),t.opts.verbose&&(n+=" , schema: false , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ";var j=n;n=A.pop(),!t.compositeRule&&f?t.async?n+=" throw new ValidationError(["+j+"]); ":n+=" validate.errors = ["+j+"]; return false; ":n+=" var err = "+j+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",p=D,f&&(y+="}",n+=" else { ")}var N=c;if(N){for(var k,O=-1,$=N.length-1;O<$;)if(k=N[O+=1],t.opts.strictKeywords?typeof k=="object"&&Object.keys(k).length>0||k===!1:t.util.schemaHasRules(k,t.RULES.all)){n+=" "+g+" = true; if ("+d+".length > "+O+") { ";var F=d+"["+O+"]";m.schema=k,m.schemaPath=u+"["+O+"]",m.errSchemaPath=p+"/"+O,m.errorPath=t.util.getPathExpr(t.errorPath,O,t.opts.jsonPointers,!0),m.dataPathArr[w]=O;var B=t.validate(m);m.baseId=T,t.util.varOccurences(B,P)<2?n+=" "+t.util.varReplace(B,P,F)+" ":n+=" var "+P+" = "+F+"; "+B+" ",n+=" } ",f&&(n+=" if ("+g+") { ",y+="}")}}if(typeof C=="object"&&(t.opts.strictKeywords?typeof C=="object"&&Object.keys(C).length>0||C===!1:t.util.schemaHasRules(C,t.RULES.all))){m.schema=C,m.schemaPath=t.schemaPath+".additionalItems",m.errSchemaPath=t.errSchemaPath+"/additionalItems",n+=" "+g+" = true; if ("+d+".length > "+c.length+") { for (var "+b+" = "+c.length+"; "+b+" < "+d+".length; "+b+"++) { ",m.errorPath=t.util.getPathExpr(t.errorPath,b,t.opts.jsonPointers,!0);var F=d+"["+b+"]";m.dataPathArr[w]=b;var B=t.validate(m);m.baseId=T,t.util.varOccurences(B,P)<2?n+=" "+t.util.varReplace(B,P,F)+" ":n+=" var "+P+" = "+F+"; "+B+" ",f&&(n+=" if (!"+g+") break; "),n+=" } } ",f&&(n+=" if ("+g+") { ",y+="}")}}else if(t.opts.strictKeywords?typeof c=="object"&&Object.keys(c).length>0||c===!1:t.util.schemaHasRules(c,t.RULES.all)){m.schema=c,m.schemaPath=u,m.errSchemaPath=p,n+=" for (var "+b+" = 0; "+b+" < "+d+".length; "+b+"++) { ",m.errorPath=t.util.getPathExpr(t.errorPath,b,t.opts.jsonPointers,!0);var F=d+"["+b+"]";m.dataPathArr[w]=b;var B=t.validate(m);m.baseId=T,t.util.varOccurences(B,P)<2?n+=" "+t.util.varReplace(B,P,F)+" ":n+=" var "+P+" = "+F+"; "+B+" ",f&&(n+=" if (!"+g+") break; "),n+=" }"}return f&&(n+=" "+y+" if ("+h+" == errors) {"),n}}),yE=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,T,d="data"+(l||""),v=t.opts.$data&&c&&c.$data,h;v?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",h="schema"+o):h=c;var m=s=="maximum",y=m?"exclusiveMaximum":"exclusiveMinimum",g=t.schema[y],b=t.opts.$data&&g&&g.$data,w=m?"<":">",P=m?">":"<",T=void 0;if(!(v||typeof c=="number"||c===void 0))throw new Error(s+" must be number");if(!(b||g===void 0||typeof g=="number"||typeof g=="boolean"))throw new Error(y+" must be number or boolean");if(b){var C=t.util.getData(g.$data,l,t.dataPathArr),D="exclusive"+o,A="exclType"+o,j="exclIsNumber"+o,N="op"+o,k="' + "+N+" + '";n+=" var schemaExcl"+o+" = "+C+"; ",C="schemaExcl"+o,n+=" var "+D+"; var "+A+" = typeof "+C+"; if ("+A+" != 'boolean' && "+A+" != 'undefined' && "+A+" != 'number') { ";var T=y,O=O||[];O.push(n),n="",t.createErrors!==!1?(n+=" { keyword: '"+(T||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: {} ",t.opts.messages!==!1&&(n+=" , message: '"+y+" should be boolean' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ";var $=n;n=O.pop(),!t.compositeRule&&f?t.async?n+=" throw new ValidationError(["+$+"]); ":n+=" validate.errors = ["+$+"]; return false; ":n+=" var err = "+$+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else if ( ",v&&(n+=" ("+h+" !== undefined && typeof "+h+" != 'number') || "),n+=" "+A+" == 'number' ? ( ("+D+" = "+h+" === undefined || "+C+" "+w+"= "+h+") ? "+d+" "+P+"= "+C+" : "+d+" "+P+" "+h+" ) : ( ("+D+" = "+C+" === true) ? "+d+" "+P+"= "+h+" : "+d+" "+P+" "+h+" ) || "+d+" !== "+d+") { var op"+o+" = "+D+" ? '"+w+"' : '"+w+"='; ",c===void 0&&(T=y,p=t.errSchemaPath+"/"+y,h=C,v=b)}else{var j=typeof g=="number",k=w;if(j&&v){var N="'"+k+"'";n+=" if ( ",v&&(n+=" ("+h+" !== undefined && typeof "+h+" != 'number') || "),n+=" ( "+h+" === undefined || "+g+" "+w+"= "+h+" ? "+d+" "+P+"= "+g+" : "+d+" "+P+" "+h+" ) || "+d+" !== "+d+") { "}else{j&&c===void 0?(D=!0,T=y,p=t.errSchemaPath+"/"+y,h=g,P+="="):(j&&(h=Math[m?"min":"max"](g,c)),g===(j?h:!0)?(D=!0,T=y,p=t.errSchemaPath+"/"+y,P+="="):(D=!1,k+="="));var N="'"+k+"'";n+=" if ( ",v&&(n+=" ("+h+" !== undefined && typeof "+h+" != 'number') || "),n+=" "+d+" "+P+" "+h+" || "+d+" !== "+d+") { "}}T=T||s;var O=O||[];O.push(n),n="",t.createErrors!==!1?(n+=" { keyword: '"+(T||"_limit")+"' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { comparison: "+N+", limit: "+h+", exclusive: "+D+" } ",t.opts.messages!==!1&&(n+=" , message: 'should be "+k+" ",v?n+="' + "+h:n+=""+h+"'"),t.opts.verbose&&(n+=" , schema: ",v?n+="validate.schema"+u:n+=""+c,n+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ";var $=n;return n=O.pop(),!t.compositeRule&&f?t.async?n+=" throw new ValidationError(["+$+"]); ":n+=" validate.errors = ["+$+"]; return false; ":n+=" var err = "+$+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",f&&(n+=" else { "),n}}),bE=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,y,d="data"+(l||""),v=t.opts.$data&&c&&c.$data,h;if(v?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",h="schema"+o):h=c,!(v||typeof c=="number"))throw new Error(s+" must be number");var m=s=="maxItems"?">":"<";n+="if ( ",v&&(n+=" ("+h+" !== undefined && typeof "+h+" != 'number') || "),n+=" "+d+".length "+m+" "+h+") { ";var y=s,g=g||[];g.push(n),n="",t.createErrors!==!1?(n+=" { keyword: '"+(y||"_limitItems")+"' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { limit: "+h+" } ",t.opts.messages!==!1&&(n+=" , message: 'should NOT have ",s=="maxItems"?n+="more":n+="fewer",n+=" than ",v?n+="' + "+h+" + '":n+=""+c,n+=" items' "),t.opts.verbose&&(n+=" , schema: ",v?n+="validate.schema"+u:n+=""+c,n+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ";var b=n;return n=g.pop(),!t.compositeRule&&f?t.async?n+=" throw new ValidationError(["+b+"]); ":n+=" validate.errors = ["+b+"]; return false; ":n+=" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",f&&(n+=" else { "),n}}),xE=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,y,d="data"+(l||""),v=t.opts.$data&&c&&c.$data,h;if(v?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",h="schema"+o):h=c,!(v||typeof c=="number"))throw new Error(s+" must be number");var m=s=="maxLength"?">":"<";n+="if ( ",v&&(n+=" ("+h+" !== undefined && typeof "+h+" != 'number') || "),t.opts.unicode===!1?n+=" "+d+".length ":n+=" ucs2length("+d+") ",n+=" "+m+" "+h+") { ";var y=s,g=g||[];g.push(n),n="",t.createErrors!==!1?(n+=" { keyword: '"+(y||"_limitLength")+"' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { limit: "+h+" } ",t.opts.messages!==!1&&(n+=" , message: 'should NOT be ",s=="maxLength"?n+="longer":n+="shorter",n+=" than ",v?n+="' + "+h+" + '":n+=""+c,n+=" characters' "),t.opts.verbose&&(n+=" , schema: ",v?n+="validate.schema"+u:n+=""+c,n+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ";var b=n;return n=g.pop(),!t.compositeRule&&f?t.async?n+=" throw new ValidationError(["+b+"]); ":n+=" validate.errors = ["+b+"]; return false; ":n+=" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",f&&(n+=" else { "),n}}),_E=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,y,d="data"+(l||""),v=t.opts.$data&&c&&c.$data,h;if(v?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",h="schema"+o):h=c,!(v||typeof c=="number"))throw new Error(s+" must be number");var m=s=="maxProperties"?">":"<";n+="if ( ",v&&(n+=" ("+h+" !== undefined && typeof "+h+" != 'number') || "),n+=" Object.keys("+d+").length "+m+" "+h+") { ";var y=s,g=g||[];g.push(n),n="",t.createErrors!==!1?(n+=" { keyword: '"+(y||"_limitProperties")+"' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { limit: "+h+" } ",t.opts.messages!==!1&&(n+=" , message: 'should NOT have ",s=="maxProperties"?n+="more":n+="fewer",n+=" than ",v?n+="' + "+h+" + '":n+=""+c,n+=" properties' "),t.opts.verbose&&(n+=" , schema: ",v?n+="validate.schema"+u:n+=""+c,n+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ";var b=n;return n=g.pop(),!t.compositeRule&&f?t.async?n+=" throw new ValidationError(["+b+"]); ":n+=" validate.errors = ["+b+"]; return false; ":n+=" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",f&&(n+=" else { "),n}}),Uj=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,d="data"+(l||""),v=t.opts.$data&&c&&c.$data,h;if(v?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",h="schema"+o):h=c,!(v||typeof c=="number"))throw new Error(s+" must be number");n+="var division"+o+";if (",v&&(n+=" "+h+" !== undefined && ( typeof "+h+" != 'number' || "),n+=" (division"+o+" = "+d+" / "+h+", ",t.opts.multipleOfPrecision?n+=" Math.abs(Math.round(division"+o+") - division"+o+") > 1e-"+t.opts.multipleOfPrecision+" ":n+=" division"+o+" !== parseInt(division"+o+") ",n+=" ) ",v&&(n+=" ) "),n+=" ) { ";var m=m||[];m.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { multipleOf: "+h+" } ",t.opts.messages!==!1&&(n+=" , message: 'should be multiple of ",v?n+="' + "+h:n+=""+h+"'"),t.opts.verbose&&(n+=" , schema: ",v?n+="validate.schema"+u:n+=""+c,n+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ";var y=n;return n=m.pop(),!t.compositeRule&&f?t.async?n+=" throw new ValidationError(["+y+"]); ":n+=" validate.errors = ["+y+"]; return false; ":n+=" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",f&&(n+=" else { "),n}}),zj=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,d="data"+(l||""),v="errs__"+o,h=t.util.copy(t);h.level++;var m="valid"+h.level;if(t.opts.strictKeywords?typeof c=="object"&&Object.keys(c).length>0||c===!1:t.util.schemaHasRules(c,t.RULES.all)){h.schema=c,h.schemaPath=u,h.errSchemaPath=p,n+=" var "+v+" = errors; ";var y=t.compositeRule;t.compositeRule=h.compositeRule=!0,h.createErrors=!1;var g;h.opts.allErrors&&(g=h.opts.allErrors,h.opts.allErrors=!1),n+=" "+t.validate(h)+" ",h.createErrors=!0,g&&(h.opts.allErrors=g),t.compositeRule=h.compositeRule=y,n+=" if ("+m+") { ";var b=b||[];b.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'not' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: {} ",t.opts.messages!==!1&&(n+=" , message: 'should NOT be valid' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ";var w=n;n=b.pop(),!t.compositeRule&&f?t.async?n+=" throw new ValidationError(["+w+"]); ":n+=" validate.errors = ["+w+"]; return false; ":n+=" var err = "+w+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { errors = "+v+"; if (vErrors !== null) { if ("+v+") vErrors.length = "+v+"; else vErrors = null; } ",t.opts.allErrors&&(n+=" } ")}else n+=" var err = ",t.createErrors!==!1?(n+=" { keyword: 'not' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: {} ",t.opts.messages!==!1&&(n+=" , message: 'should NOT be valid' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",f&&(n+=" if (false) { ");return n}}),Bj=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,d="data"+(l||""),v="valid"+o,h="errs__"+o,m=t.util.copy(t),y="";m.level++;var g="valid"+m.level,b=m.baseId,w="prevValid"+o,P="passingSchemas"+o;n+="var "+h+" = errors , "+w+" = false , "+v+" = false , "+P+" = null; ";var T=t.compositeRule;t.compositeRule=m.compositeRule=!0;var C=c;if(C)for(var D,A=-1,j=C.length-1;A0||D===!1:t.util.schemaHasRules(D,t.RULES.all))?(m.schema=D,m.schemaPath=u+"["+A+"]",m.errSchemaPath=p+"/"+A,n+=" "+t.validate(m)+" ",m.baseId=b):n+=" var "+g+" = true; ",A&&(n+=" if ("+g+" && "+w+") { "+v+" = false; "+P+" = ["+P+", "+A+"]; } else { ",y+="}"),n+=" if ("+g+") { "+v+" = "+w+" = true; "+P+" = "+A+"; }";return t.compositeRule=m.compositeRule=T,n+=""+y+"if (!"+v+") { var err = ",t.createErrors!==!1?(n+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { passingSchemas: "+P+" } ",t.opts.messages!==!1&&(n+=" , message: 'should match exactly one schema in oneOf' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!t.compositeRule&&f&&(t.async?n+=" throw new ValidationError(vErrors); ":n+=" validate.errors = vErrors; return false; "),n+="} else { errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; }",t.opts.allErrors&&(n+=" } "),n}}),Hj=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,d="data"+(l||""),v=t.opts.$data&&c&&c.$data,h;v?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",h="schema"+o):h=c;var m=v?"(new RegExp("+h+"))":t.usePattern(c);n+="if ( ",v&&(n+=" ("+h+" !== undefined && typeof "+h+" != 'string') || "),n+=" !"+m+".test("+d+") ) { ";var y=y||[];y.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { pattern: ",v?n+=""+h:n+=""+t.util.toQuotedString(c),n+=" } ",t.opts.messages!==!1&&(n+=` , message: 'should match pattern "`,v?n+="' + "+h+" + '":n+=""+t.util.escapeQuotes(c),n+=`"' `),t.opts.verbose&&(n+=" , schema: ",v?n+="validate.schema"+u:n+=""+t.util.toQuotedString(c),n+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ";var g=n;return n=y.pop(),!t.compositeRule&&f?t.async?n+=" throw new ValidationError(["+g+"]); ":n+=" validate.errors = ["+g+"]; return false; ":n+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",f&&(n+=" else { "),n}}),Vj=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,d="data"+(l||""),v="errs__"+o,h=t.util.copy(t),m="";h.level++;var y="valid"+h.level,g="key"+o,b="idx"+o,w=h.dataLevel=t.dataLevel+1,P="data"+w,T="dataProperties"+o,C=Object.keys(c||{}).filter(V),D=t.schema.patternProperties||{},A=Object.keys(D).filter(V),j=t.schema.additionalProperties,N=C.length||A.length,k=j===!1,O=typeof j=="object"&&Object.keys(j).length,$=t.opts.removeAdditional,F=k||O||$,B=t.opts.ownProperties,H=t.baseId,K=t.schema.required;if(K&&!(t.opts.$data&&K.$data)&&K.length8)n+=" || validate.schema"+u+".hasOwnProperty("+g+") ";else{var ae=C;if(ae)for(var ee,Le=-1,he=ae.length-1;Le0||Ge===!1:t.util.schemaHasRules(Ge,t.RULES.all)){var Je=t.util.getProperty(ee),De=d+Je,Xe=je&&Ge.default!==void 0;h.schema=Ge,h.schemaPath=u+Je,h.errSchemaPath=p+"/"+t.util.escapeFragment(ee),h.errorPath=t.util.getPath(t.errorPath,ee,t.opts.jsonPointers),h.dataPathArr[w]=t.util.toQuotedString(ee);var fe=t.validate(h);if(h.baseId=H,t.util.varOccurences(fe,P)<2){fe=t.util.varReplace(fe,P,De);var Ke=De}else{var Ke=P;n+=" var "+P+" = "+De+"; "}if(Xe)n+=" "+fe+" ";else{if(X&&X[ee]){n+=" if ( "+Ke+" === undefined ",B&&(n+=" || ! Object.prototype.hasOwnProperty.call("+d+", '"+t.util.escapeQuotes(ee)+"') "),n+=") { "+y+" = false; ";var G=t.errorPath,pe=p,_t=t.util.escapeQuotes(ee);t.opts._errorDataPathProperty&&(t.errorPath=t.util.getPath(G,ee,t.opts.jsonPointers)),p=t.errSchemaPath+"/required";var Z=Z||[];Z.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'required' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { missingProperty: '"+_t+"' } ",t.opts.messages!==!1&&(n+=" , message: '",t.opts._errorDataPathProperty?n+="is a required property":n+="should have required property \\'"+_t+"\\'",n+="' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ";var Q=n;n=Z.pop(),!t.compositeRule&&f?t.async?n+=" throw new ValidationError(["+Q+"]); ":n+=" validate.errors = ["+Q+"]; return false; ":n+=" var err = "+Q+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",p=pe,t.errorPath=G,n+=" } else { "}else f?(n+=" if ( "+Ke+" === undefined ",B&&(n+=" || ! Object.prototype.hasOwnProperty.call("+d+", '"+t.util.escapeQuotes(ee)+"') "),n+=") { "+y+" = true; } else { "):(n+=" if ("+Ke+" !== undefined ",B&&(n+=" && Object.prototype.hasOwnProperty.call("+d+", '"+t.util.escapeQuotes(ee)+"') "),n+=" ) { ");n+=" "+fe+" } "}}f&&(n+=" if ("+y+") { ",m+="}")}}if(A.length){var St=A;if(St)for(var be,Rt=-1,Xr=St.length-1;Rt0||Ge===!1:t.util.schemaHasRules(Ge,t.RULES.all)){h.schema=Ge,h.schemaPath=t.schemaPath+".patternProperties"+t.util.getProperty(be),h.errSchemaPath=t.errSchemaPath+"/patternProperties/"+t.util.escapeFragment(be),B?n+=" "+T+" = "+T+" || Object.keys("+d+"); for (var "+b+"=0; "+b+"<"+T+".length; "+b+"++) { var "+g+" = "+T+"["+b+"]; ":n+=" for (var "+g+" in "+d+") { ",n+=" if ("+t.usePattern(be)+".test("+g+")) { ",h.errorPath=t.util.getPathExpr(t.errorPath,g,t.opts.jsonPointers);var De=d+"["+g+"]";h.dataPathArr[w]=g;var fe=t.validate(h);h.baseId=H,t.util.varOccurences(fe,P)<2?n+=" "+t.util.varReplace(fe,P,De)+" ":n+=" var "+P+" = "+De+"; "+fe+" ",f&&(n+=" if (!"+y+") break; "),n+=" } ",f&&(n+=" else "+y+" = true; "),n+=" } ",f&&(n+=" if ("+y+") { ",m+="}")}}}return f&&(n+=" "+m+" if ("+v+" == errors) {"),n}}),Gj=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,d="data"+(l||""),v="errs__"+o,h=t.util.copy(t),m="";h.level++;var y="valid"+h.level;if(n+="var "+v+" = errors;",t.opts.strictKeywords?typeof c=="object"&&Object.keys(c).length>0||c===!1:t.util.schemaHasRules(c,t.RULES.all)){h.schema=c,h.schemaPath=u,h.errSchemaPath=p;var g="key"+o,b="idx"+o,w="i"+o,P="' + "+g+" + '",T=h.dataLevel=t.dataLevel+1,C="data"+T,D="dataProperties"+o,A=t.opts.ownProperties,j=t.baseId;A&&(n+=" var "+D+" = undefined; "),A?n+=" "+D+" = "+D+" || Object.keys("+d+"); for (var "+b+"=0; "+b+"<"+D+".length; "+b+"++) { var "+g+" = "+D+"["+b+"]; ":n+=" for (var "+g+" in "+d+") { ",n+=" var startErrs"+o+" = errors; ";var N=g,k=t.compositeRule;t.compositeRule=h.compositeRule=!0;var O=t.validate(h);h.baseId=j,t.util.varOccurences(O,C)<2?n+=" "+t.util.varReplace(O,C,N)+" ":n+=" var "+C+" = "+N+"; "+O+" ",t.compositeRule=h.compositeRule=k,n+=" if (!"+y+") { for (var "+w+"=startErrs"+o+"; "+w+"{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,d="data"+(l||""),v="valid"+o,h=t.opts.$data&&c&&c.$data,m;h?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",m="schema"+o):m=c;var y="schema"+o;if(!h)if(c.length0||C===!1:t.util.schemaHasRules(C,t.RULES.all))||(g[g.length]=w)}}else var g=c;if(h||g.length){var D=t.errorPath,A=h||g.length>=t.opts.loopRequired,j=t.opts.ownProperties;if(f)if(n+=" var missing"+o+"; ",A){h||(n+=" var "+y+" = validate.schema"+u+"; ");var N="i"+o,k="schema"+o+"["+N+"]",O="' + "+k+" + '";t.opts._errorDataPathProperty&&(t.errorPath=t.util.getPathExpr(D,k,t.opts.jsonPointers)),n+=" var "+v+" = true; ",h&&(n+=" if (schema"+o+" === undefined) "+v+" = true; else if (!Array.isArray(schema"+o+")) "+v+" = false; else {"),n+=" for (var "+N+" = 0; "+N+" < "+y+".length; "+N+"++) { "+v+" = "+d+"["+y+"["+N+"]] !== undefined ",j&&(n+=" && Object.prototype.hasOwnProperty.call("+d+", "+y+"["+N+"]) "),n+="; if (!"+v+") break; } ",h&&(n+=" } "),n+=" if (!"+v+") { ";var $=$||[];$.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'required' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { missingProperty: '"+O+"' } ",t.opts.messages!==!1&&(n+=" , message: '",t.opts._errorDataPathProperty?n+="is a required property":n+="should have required property \\'"+O+"\\'",n+="' "),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ";var F=n;n=$.pop(),!t.compositeRule&&f?t.async?n+=" throw new ValidationError(["+F+"]); ":n+=" validate.errors = ["+F+"]; return false; ":n+=" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { "}else{n+=" if ( ";var B=g;if(B)for(var H,N=-1,K=B.length-1;N{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,d="data"+(l||""),v="valid"+o,h=t.opts.$data&&c&&c.$data,m;if(h?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",m="schema"+o):m=c,(c||h)&&t.opts.uniqueItems!==!1){h&&(n+=" var "+v+"; if ("+m+" === false || "+m+" === undefined) "+v+" = true; else if (typeof "+m+" != 'boolean') "+v+" = false; else { "),n+=" var i = "+d+".length , "+v+" = true , j; if (i > 1) { ";var y=t.schema.items&&t.schema.items.type,g=Array.isArray(y);if(!y||y=="object"||y=="array"||g&&(y.indexOf("object")>=0||y.indexOf("array")>=0))n+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+d+"[i], "+d+"[j])) { "+v+" = false; break outer; } } } ";else{n+=" var itemIndices = {}, item; for (;i--;) { var item = "+d+"[i]; ";var b="checkDataType"+(g?"s":"");n+=" if ("+t.util[b](y,"item",t.opts.strictNumbers,!0)+") continue; ",g&&(n+=` if (typeof item == 'string') item = '"' + item; `),n+=" if (typeof itemIndices[item] == 'number') { "+v+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}n+=" } ",h&&(n+=" } "),n+=" if (!"+v+") { ";var w=w||[];w.push(n),n="",t.createErrors!==!1?(n+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { i: i, j: j } ",t.opts.messages!==!1&&(n+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),t.opts.verbose&&(n+=" , schema: ",h?n+="validate.schema"+u:n+=""+c,n+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+d+" "),n+=" } "):n+=" {} ";var P=n;n=w.pop(),!t.compositeRule&&f?t.async?n+=" throw new ValidationError(["+P+"]); ":n+=" validate.errors = ["+P+"]; return false; ":n+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",f&&(n+=" else { ")}else f&&(n+=" if (true) { ");return n}}),Xj=Ne((a,e)=>{e.exports={$ref:Cj(),allOf:Ij(),anyOf:Aj(),$comment:Nj(),const:Dj(),contains:$j(),dependencies:jj(),enum:Mj(),format:Lj(),if:qj(),items:Fj(),maximum:yE(),minimum:yE(),maxItems:bE(),minItems:bE(),maxLength:xE(),minLength:xE(),maxProperties:_E(),minProperties:_E(),multipleOf:Uj(),not:zj(),oneOf:Bj(),pattern:Hj(),properties:Vj(),propertyNames:Gj(),required:Wj(),uniqueItems:Zj(),validate:DE()}}),Qj=Ne((a,e)=>{var r=Xj(),t=Un().toHash;e.exports=function(){var i=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],n=["type","$comment"],o=["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"],l=["number","integer","string","array","object","boolean","null"];return i.all=t(n),i.types=t(l),i.forEach(function(c){c.rules=c.rules.map(function(u){var p;if(typeof u=="object"){var f=Object.keys(u)[0];p=u[f],u=f,p.forEach(function(v){n.push(v),i.all[v]=!0})}n.push(u);var d=i.all[u]={keyword:u,code:r[u],implements:p};return d}),i.all.$comment={keyword:"$comment",code:r.$comment},c.type&&(i.types[c.type]=c)}),i.keywords=t(n.concat(o)),i.custom={},i}}),Kj=Ne((a,e)=>{var r=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];e.exports=function(t,s){for(var i=0;i{var r=pf().MissingRef;e.exports=t;function t(s,i,n){var o=this;if(typeof this._opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");typeof i=="function"&&(n=i,i=void 0);var l=c(s).then(function(){var p=o._addSchema(s,void 0,i);return p.validate||u(p)});return n&&l.then(function(p){n(null,p)},n),l;function c(p){var f=p.$schema;return f&&!o.getSchema(f)?t.call(o,{$ref:f},!0):Promise.resolve()}function u(p){try{return o._compile(p)}catch(d){if(d instanceof r)return f(d);throw d}function f(d){var v=d.missingSchema;if(y(v))throw new Error("Schema "+v+" is loaded but "+d.missingRef+" cannot be resolved");var h=o._loadingSchemas[v];return h||(h=o._loadingSchemas[v]=o._opts.loadSchema(v),h.then(m,m)),h.then(function(g){if(!y(v))return c(g).then(function(){y(v)||o.addSchema(g,v,void 0,i)})}).then(function(){return u(p)});function m(){delete o._loadingSchemas[v]}function y(g){return o._refs[g]||o._schemas[g]}}}}}),Yj=Ne((a,e)=>{e.exports=function(t,s,i){var n=" ",o=t.level,l=t.dataLevel,c=t.schema[s],u=t.schemaPath+t.util.getProperty(s),p=t.errSchemaPath+"/"+s,f=!t.opts.allErrors,d,v="data"+(l||""),h="valid"+o,m="errs__"+o,y=t.opts.$data&&c&&c.$data,g;y?(n+=" var schema"+o+" = "+t.util.getData(c.$data,l,t.dataPathArr)+"; ",g="schema"+o):g=c;var b=this,w="definition"+o,P=b.definition,T="",C,D,A,j,N;if(y&&P.$data){N="keywordValidate"+o;var k=P.validateSchema;n+=" var "+w+" = RULES.custom['"+s+"'].definition; var "+N+" = "+w+".validate;"}else{if(j=t.useCustomRule(b,c,t.schema,t),!j)return;g="validate.schema"+u,N=j.code,C=P.compile,D=P.inline,A=P.macro}var O=N+".errors",$="i"+o,F="ruleErr"+o,B=P.async;if(B&&!t.async)throw new Error("async keyword in sync schema");if(D||A||(n+=""+O+" = null;"),n+="var "+m+" = errors;var "+h+";",y&&P.$data&&(T+="}",n+=" if ("+g+" === undefined) { "+h+" = true; } else { ",k&&(T+="}",n+=" "+h+" = "+w+".validateSchema("+g+"); if ("+h+") { ")),D)P.statements?n+=" "+j.validate+" ":n+=" "+h+" = "+j.validate+"; ";else if(A){var H=t.util.copy(t),T="";H.level++;var K="valid"+H.level;H.schema=j.validate,H.schemaPath="";var X=t.compositeRule;t.compositeRule=H.compositeRule=!0;var V=t.validate(H).replace(/validate\.schema/g,N);t.compositeRule=H.compositeRule=X,n+=" "+V}else{var ae=ae||[];ae.push(n),n="",n+=" "+N+".call( ",t.opts.passContext?n+="this":n+="self",C||P.schema===!1?n+=" , "+v+" ":n+=" , "+g+" , "+v+" , validate.schema"+t.schemaPath+" ",n+=" , (dataPath || '')",t.errorPath!='""'&&(n+=" + "+t.errorPath);var ee=l?"data"+(l-1||""):"parentData",Le=l?t.dataPathArr[l]:"parentDataProperty";n+=" , "+ee+" , "+Le+" , rootData ) ";var he=n;n=ae.pop(),P.errors===!1?(n+=" "+h+" = ",B&&(n+="await "),n+=""+he+"; "):B?(O="customErrors"+o,n+=" var "+O+" = null; try { "+h+" = await "+he+"; } catch (e) { "+h+" = false; if (e instanceof ValidationError) "+O+" = e.errors; else throw e; } "):n+=" "+O+" = null; "+h+" = "+he+"; "}if(P.modifying&&(n+=" if ("+ee+") "+v+" = "+ee+"["+Le+"];"),n+=""+T,P.valid)f&&(n+=" if (true) { ");else{n+=" if ( ",P.valid===void 0?(n+=" !",A?n+=""+K:n+=""+h):n+=" "+!P.valid+" ",n+=") { ",d=b.keyword;var ae=ae||[];ae.push(n),n="";var ae=ae||[];ae.push(n),n="",t.createErrors!==!1?(n+=" { keyword: '"+(d||"custom")+"' , dataPath: (dataPath || '') + "+t.errorPath+" , schemaPath: "+t.util.toQuotedString(p)+" , params: { keyword: '"+b.keyword+"' } ",t.opts.messages!==!1&&(n+=` , message: 'should pass "`+b.keyword+`" keyword validation' `),t.opts.verbose&&(n+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+v+" "),n+=" } "):n+=" {} ";var Se=n;n=ae.pop(),!t.compositeRule&&f?t.async?n+=" throw new ValidationError(["+Se+"]); ":n+=" validate.errors = ["+Se+"]; return false; ":n+=" var err = "+Se+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var be=n;n=ae.pop(),D?P.errors?P.errors!="full"&&(n+=" for (var "+$+"="+m+"; "+$+"{e.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}}),e8=Ne((a,e)=>{var r=$E();e.exports={$id:"https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:r.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:r.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}}),t8=Ne((a,e)=>{var r=/^[a-z_$][a-z0-9_$-]*$/i,t=Yj(),s=e8();e.exports={add:i,get:n,remove:o,validate:l};function i(c,u){var p=this.RULES;if(p.keywords[c])throw new Error("Keyword "+c+" is already defined");if(!r.test(c))throw new Error("Keyword "+c+" is not a valid identifier");if(u){this.validateKeyword(u,!0);var f=u.type;if(Array.isArray(f))for(var d=0;d{e.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON Schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}}),a8=Ne((a,e)=>{var r=Pj(),t=uf(),s=Oj(),i=AE(),n=NE(),o=kj(),l=Qj(),c=Kj(),u=Un();e.exports=m,m.prototype.validate=y,m.prototype.compile=g,m.prototype.addSchema=b,m.prototype.addMetaSchema=w,m.prototype.validateSchema=P,m.prototype.getSchema=C,m.prototype.removeSchema=j,m.prototype.addFormat=X,m.prototype.errorsText=K,m.prototype._addSchema=k,m.prototype._compile=O,m.prototype.compileAsync=Jj();var p=t8();m.prototype.addKeyword=p.add,m.prototype.getKeyword=p.get,m.prototype.removeKeyword=p.remove,m.prototype.validateKeyword=p.validate;var f=pf();m.ValidationError=f.Validation,m.MissingRefError=f.MissingRef,m.$dataMetaSchema=c;var d="http://json-schema.org/draft-07/schema",v=["removeAdditional","useDefaults","coerceTypes","strictDefaults"],h=["/properties"];function m(U){if(!(this instanceof m))return new m(U);U=this._opts=u.copy(U)||{},be(this),this._schemas={},this._refs={},this._fragments={},this._formats=o(U.format),this._cache=U.cache||new s,this._loadingSchemas={},this._compilations=[],this.RULES=l(),this._getId=$(U),U.loopRequired=U.loopRequired||1/0,U.errorDataPath=="property"&&(U._errorDataPathProperty=!0),U.serialize===void 0&&(U.serialize=n),this._metaOpts=Se(this),U.formats&&ee(this),U.keywords&&Le(this),V(this),typeof U.meta=="object"&&this.addMetaSchema(U.meta),U.nullable&&this.addKeyword("nullable",{metaSchema:{type:"boolean"}}),ae(this)}function y(U,G){var re;if(typeof U=="string"){if(re=this.getSchema(U),!re)throw new Error('no schema with key or ref "'+U+'"')}else{var pe=this._addSchema(U);re=pe.validate||this._compile(pe)}var Z=re(G);return re.$async!==!0&&(this.errors=re.errors),Z}function g(U,G){var re=this._addSchema(U,void 0,G);return re.validate||this._compile(re)}function b(U,G,re,pe){if(Array.isArray(U)){for(var Z=0;Z0&&O.push("--allowedTools",T.join(",")),C.length>0&&O.push("--disallowedTools",C.join(",")),D&&Object.keys(D).length>0&&O.push("--mcp-config",JSON.stringify({mcpServers:D})),r&&Object.keys(r).length>0&&O.push("--agents",JSON.stringify(r)),P&&O.push("--setting-sources",P.join(",")),A&&O.push("--strict-mcp-config"),m&&O.push("--permission-mode",m),y&&O.push("--allow-dangerously-skip-permissions"),h){if(v&&h===v)throw new Error("Fallback model cannot be the same as the main model. Please specify a different model for fallbackModel option.");O.push("--fallback-model",h)}N&&O.push("--include-partial-messages");for(let V of e)O.push("--add-dir",V);if(k&&k.length>0)for(let V of k)if(V.type==="local")O.push("--plugin-dir",V.path);else throw new Error(`Unsupported plugin type: ${V.type}`);this.options.forkSession&&O.push("--fork-session"),this.options.resumeSessionAt&&O.push("--resume-session-at",this.options.resumeSessionAt);for(let[V,ae]of Object.entries(n))ae===null?O.push(`--${V}`):O.push(`--${V}`,ae);if(l.CLAUDE_CODE_ENTRYPOINT||(l.CLAUDE_CODE_ENTRYPOINT="sdk-ts"),!ca().existsSync(o)){let V=SE(o)?`Claude Code native binary not found at ${o}. Please ensure Claude Code is installed via native installer or specify a valid path with options.pathToClaudeCodeExecutable.`:`Claude Code executable not found at ${o}. Is options.pathToClaudeCodeExecutable set?`;throw new ReferenceError(V)}let F=SE(o),B=F?o:s,H=F?[...i,...O]:[...i,o,...O];this.logForDebugging(F?`Spawning Claude Code native binary: ${B} ${H.join(" ")}`:`Spawning Claude Code process: ${B} ${H.join(" ")}`);let K=l.DEBUG||c?"pipe":"ignore";this.child=(0,qE.spawn)(B,H,{cwd:t,stdio:["pipe","pipe",K],signal:this.abortController.signal,env:l}),this.childStdin=this.child.stdin,this.childStdout=this.child.stdout,(l.DEBUG||c)&&this.child.stderr.on("data",V=>{this.logForDebugging(V.toString())});let X=()=>{this.child&&!this.child.killed&&this.child.kill("SIGTERM")};this.processExitHandler=X,this.abortHandler=X,process.on("exit",this.processExitHandler),this.abortController.signal.addEventListener("abort",this.abortHandler),this.child.on("error",V=>{this.ready=!1,this.abortController.signal.aborted?this.exitError=new _s("Claude Code process aborted by user"):(this.exitError=new Error(`Failed to spawn Claude Code process: ${V.message}`),this.logForDebugging(this.exitError.message))}),this.child.on("close",(V,ae)=>{if(this.ready=!1,this.abortController.signal.aborted)this.exitError=new _s("Claude Code process aborted by user");else{let ee=this.getProcessExitError(V,ae);ee&&(this.exitError=ee,this.logForDebugging(ee.message))}}),this.ready=!0}catch(e){throw this.ready=!1,e}}getProcessExitError(e,r){if(e!==0&&e!==null)return new Error(`Claude Code process exited with code ${e}`);if(r)return new Error(`Claude Code process terminated by signal ${r}`)}logForDebugging(e){process.env.DEBUG&&process.stderr.write(`${e} +`),this.options.stderr&&this.options.stderr(e)}write(e){if(this.abortController.signal.aborted)throw new _s("Operation aborted");if(!this.ready||!this.childStdin)throw new Error("ProcessTransport is not ready for writing");if(this.child?.killed||this.child?.exitCode!==null)throw new Error("Cannot write to terminated process");if(this.exitError)throw new Error(`Cannot write to process that exited with error: ${this.exitError.message}`);process.env.DEBUG_SDK&&process.stderr.write(`[ProcessTransport] Writing to stdin: ${e.substring(0,100)} +`);try{!this.childStdin.write(e)&&process.env.DEBUG_SDK&&console.warn("[ProcessTransport] Write buffer full, data queued")}catch(r){throw this.ready=!1,new Error(`Failed to write to process stdin: ${r.message}`)}}close(){this.childStdin&&(this.childStdin.end(),this.childStdin=void 0),this.processExitHandler&&(process.off("exit",this.processExitHandler),this.processExitHandler=void 0),this.abortHandler&&(this.abortController.signal.removeEventListener("abort",this.abortHandler),this.abortHandler=void 0);for(let{handler:e}of this.exitListeners)this.child?.off("exit",e);this.exitListeners=[],this.child&&!this.child.killed&&(this.child.kill("SIGTERM"),setTimeout(()=>{this.child&&!this.child.killed&&this.child.kill("SIGKILL")},5e3)),this.ready=!1}isReady(){return this.ready}async*readMessages(){if(!this.childStdout)throw new Error("ProcessTransport output stream not available");let e=(0,FE.createInterface)({input:this.childStdout});try{for await(let r of e)r.trim()&&(yield JSON.parse(r));await this.waitForExit()}catch(r){throw r}finally{e.close()}}endInput(){this.childStdin&&this.childStdin.end()}getInputStream(){return this.childStdin}onExit(e){if(!this.child)return()=>{};let r=(t,s)=>{let i=this.getProcessExitError(t,s);e(i)};return this.child.on("exit",r),this.exitListeners.push({callback:e,handler:r}),()=>{this.child&&this.child.off("exit",r);let t=this.exitListeners.findIndex(s=>s.handler===r);t!==-1&&this.exitListeners.splice(t,1)}}async waitForExit(){if(!this.child){if(this.exitError)throw this.exitError;return}if(this.child.exitCode!==null||this.child.killed){if(this.exitError)throw this.exitError;return}return new Promise((e,r)=>{let t=(i,n)=>{if(this.abortController.signal.aborted){r(new _s("Operation aborted"));return}let o=this.getProcessExitError(i,n);o?r(o):e()};this.child.once("exit",t);let s=i=>{this.child.off("exit",t),r(i)};this.child.once("error",s),this.child.once("exit",()=>{this.child.off("error",s)})})}};function SE(a){return![".js",".mjs",".tsx",".ts",".jsx"].some(r=>a.endsWith(r))}var Yd=class{returned;queue=[];readResolve;readReject;isDone=!1;hasError;started=!1;constructor(e){this.returned=e}[Symbol.asyncIterator](){if(this.started)throw new Error("Stream can only be iterated once");return this.started=!0,this}next(){return this.queue.length>0?Promise.resolve({done:!1,value:this.queue.shift()}):this.isDone?Promise.resolve({done:!0,value:void 0}):this.hasError?Promise.reject(this.hasError):new Promise((e,r)=>{this.readResolve=e,this.readReject=r})}enqueue(e){if(this.readResolve){let r=this.readResolve;this.readResolve=void 0,this.readReject=void 0,r({done:!1,value:e})}else this.queue.push(e)}done(){if(this.isDone=!0,this.readResolve){let e=this.readResolve;this.readResolve=void 0,this.readReject=void 0,e({done:!0,value:void 0})}}error(e){if(this.hasError=e,this.readReject){let r=this.readReject;this.readResolve=void 0,this.readReject=void 0,r(e)}}return(){return this.isDone=!0,this.returned&&this.returned(),Promise.resolve({done:!0,value:void 0})}},ef=class{sendMcpMessage;isClosed=!1;constructor(e){this.sendMcpMessage=e}onclose;onerror;onmessage;async start(){}async send(e){if(this.isClosed)throw new Error("Transport is closed");this.sendMcpMessage(e)}async close(){this.isClosed||(this.isClosed=!0,this.onclose?.())}},o8=typeof global=="object"&&global&&global.Object===Object&&global,c8=o8,l8=typeof self=="object"&&self&&self.Object===Object&&self,u8=c8||l8||Function("return this")(),df=u8,p8=df.Symbol,il=p8,BE=Object.prototype,d8=BE.hasOwnProperty,f8=BE.toString,Bi=il?il.toStringTag:void 0;function m8(a){var e=d8.call(a,Bi),r=a[Bi];try{a[Bi]=void 0;var t=!0}catch{}var s=f8.call(a);return t&&(e?a[Bi]=r:delete a[Bi]),s}var h8=m8,v8=Object.prototype,g8=v8.toString;function y8(a){return g8.call(a)}var b8=y8,x8="[object Null]",_8="[object Undefined]",EE=il?il.toStringTag:void 0;function S8(a){return a==null?a===void 0?_8:x8:EE&&EE in Object(a)?h8(a):b8(a)}var E8=S8;function w8(a){var e=typeof a;return a!=null&&(e=="object"||e=="function")}var HE=w8,T8="[object AsyncFunction]",R8="[object Function]",P8="[object GeneratorFunction]",O8="[object Proxy]";function k8(a){if(!HE(a))return!1;var e=E8(a);return e==R8||e==P8||e==T8||e==O8}var C8=k8,I8=df["__core-js_shared__"],Zd=I8,wE=(function(){var a=/[^.]+$/.exec(Zd&&Zd.keys&&Zd.keys.IE_PROTO||"");return a?"Symbol(src)_1."+a:""})();function A8(a){return!!wE&&wE in a}var N8=A8,D8=Function.prototype,$8=D8.toString;function j8(a){if(a!=null){try{return $8.call(a)}catch{}try{return a+""}catch{}}return""}var M8=j8,L8=/[\\^$.*+?()[\]{}|]/g,q8=/^\[object .+?Constructor\]$/,F8=Function.prototype,U8=Object.prototype,z8=F8.toString,B8=U8.hasOwnProperty,H8=RegExp("^"+z8.call(B8).replace(L8,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function V8(a){if(!HE(a)||N8(a))return!1;var e=C8(a)?H8:q8;return e.test(M8(a))}var G8=V8;function W8(a,e){return a?.[e]}var Z8=W8;function X8(a,e){var r=Z8(a,e);return G8(r)?r:void 0}var VE=X8;function Q8(a,e){return a===e||a!==a&&e!==e}var K8=Q8,J8=VE(Object,"create"),Hi=J8;function Y8(){this.__data__=Hi?Hi(null):{},this.size=0}var e9=Y8;function t9(a){var e=this.has(a)&&delete this.__data__[a];return this.size-=e?1:0,e}var r9=t9,a9="__lodash_hash_undefined__",s9=Object.prototype,n9=s9.hasOwnProperty;function i9(a){var e=this.__data__;if(Hi){var r=e[a];return r===a9?void 0:r}return n9.call(e,a)?e[a]:void 0}var o9=i9,c9=Object.prototype,l9=c9.hasOwnProperty;function u9(a){var e=this.__data__;return Hi?e[a]!==void 0:l9.call(e,a)}var p9=u9,d9="__lodash_hash_undefined__";function f9(a,e){var r=this.__data__;return this.size+=this.has(a)?0:1,r[a]=Hi&&e===void 0?d9:e,this}var m9=f9;function zn(a){var e=-1,r=a==null?0:a.length;for(this.clear();++e-1}var T9=w9;function R9(a,e){var r=this.__data__,t=fl(r,a);return t<0?(++this.size,r.push([a,e])):r[t][1]=e,this}var P9=R9;function Bn(a){var e=-1,r=a==null?0:a.length;for(this.clear();++e{if(!a||a.trim()==="")return null;let e=a.split(",").map(i=>i.trim()).filter(Boolean);if(e.length===0)return null;let r=e.some(i=>i.startsWith("!")),t=e.some(i=>!i.startsWith("!"));if(r&&t)return null;let s=e.map(i=>i.replace(/^!/,"").toLowerCase());return{include:r?[]:s,exclude:r?s:[],isExclusive:r}});function W9(a){let e=[],r=a.match(/^MCP server ["']([^"']+)["']/);if(r&&r[1])e.push("mcp"),e.push(r[1].toLowerCase());else{let i=a.match(/^([^:[]+):/);i&&i[1]&&e.push(i[1].trim().toLowerCase())}let t=a.match(/^\[([^\]]+)]/);t&&t[1]&&e.push(t[1].trim().toLowerCase()),a.toLowerCase().includes("statsig event:")&&e.push("statsig");let s=a.match(/:\s*([^:]+?)(?:\s+(?:type|mode|status|event))?:/);if(s&&s[1]){let i=s[1].trim().toLowerCase();i.length<30&&!i.includes(" ")&&e.push(i)}return Array.from(new Set(e))}function Z9(a,e){return e?a.length===0?!1:e.isExclusive?!a.some(r=>e.exclude.includes(r)):a.some(r=>e.include.includes(r)):!0}function X9(a,e){if(!e)return!0;let r=W9(a);return Z9(r,e)}function Q9(){return process.env.CLAUDE_CONFIG_DIR??(0,WE.join)((0,ZE.homedir)(),".claude")}function PE(a){if(!a)return!1;if(typeof a=="boolean")return a;let e=a.toLowerCase().trim();return["1","true","yes","on"].includes(e)}var K9={name:"BASH_MAX_OUTPUT_LENGTH",default:3e4,validate:a=>{if(!a)return{effective:3e4,status:"valid"};let t=parseInt(a,10);return isNaN(t)||t<=0?{effective:3e4,status:"invalid",message:`Invalid value "${a}" (using default: 30000)`}:t>15e4?{effective:15e4,status:"capped",message:`Capped from ${t} to 150000`}:{effective:t,status:"valid"}}},J9={name:"CLAUDE_CODE_MAX_OUTPUT_TOKENS",default:32e3,validate:a=>{if(!a)return{effective:32e3,status:"valid"};let e=parseInt(a,10);return isNaN(e)||e<=0?{effective:32e3,status:"invalid",message:`Invalid value "${a}" (using default: 32000)`}:e>32e3?{effective:32e3,status:"capped",message:`Capped from ${e} to 32000`}:{effective:e,status:"valid"}}};function Y9(){return{originalCwd:(0,tf.cwd)(),totalCostUSD:0,totalAPIDuration:0,totalAPIDurationWithoutRetries:0,totalToolDuration:0,startTime:Date.now(),lastInteractionTime:Date.now(),totalLinesAdded:0,totalLinesRemoved:0,hasUnknownModelCost:!1,cwd:(0,tf.cwd)(),modelUsage:{},mainLoopModelOverride:void 0,maxRateLimitFallbackActive:!1,initialMainLoopModel:null,modelStrings:null,isNonInteractiveSession:!0,isInteractive:!1,clientType:"cli",sessionIngressToken:void 0,oauthTokenFromFd:void 0,apiKeyFromFd:void 0,flagSettingsPath:void 0,allowedSettingSources:["userSettings","projectSettings","localSettings","flagSettings","policySettings"],meter:null,sessionCounter:null,locCounter:null,prCounter:null,commitCounter:null,costCounter:null,tokenCounter:null,codeEditToolDecisionCounter:null,activeTimeCounter:null,sessionId:(0,XE.randomUUID)(),loggerProvider:null,eventLogger:null,meterProvider:null,tracerProvider:null,agentColorMap:new Map,agentColorIndex:0,envVarValidators:[K9,J9],lastAPIRequest:null,inMemoryErrorLog:[],inlinePlugins:[]}}var eM=Y9();function tM(){return eM.sessionId}var JU=Zi(()=>PE(process.env.DEBUG)||PE(process.env.DEBUG_SDK)||process.argv.includes("--debug")||process.argv.includes("-d")||QE()||process.argv.some(a=>a.startsWith("--debug="))),rM=Zi(()=>{let a=process.argv.find(r=>r.startsWith("--debug="));if(!a)return null;let e=a.substring(8);return G9(e)}),QE=Zi(()=>process.argv.includes("--debug-to-stderr")||process.argv.includes("-d2e"));function aM(a){if(typeof process>"u"||typeof process.versions>"u"||typeof process.versions.node>"u")return!1;let e=rM();return X9(a,e)}var sM=!1;function na(a,{level:e}={level:"debug"}){if(!aM(a))return;sM&&a.includes(` `)&&(a=JSON.stringify(a));let r=`[${e.toUpperCase()}] ${a.trim()} -`;if(T1()){c5(r);return}sa().existsSync((0,gs.dirname)(Vc()))||sa().mkdirSync((0,gs.dirname)(Vc())),sa().appendFileSync(Vc(),r),E5()}function Vc(){return process.env.CLAUDE_CODE_DEBUG_LOGS_DIR??(0,gs.join)(f5(),"debug",`${y5()}.txt`)}var E5=Di(()=>{try{let a=Vc(),e=(0,gs.dirname)(a),r=(0,gs.join)(e,"latest");if(sa().existsSync(e)||sa().mkdirSync(e),sa().existsSync(r))try{sa().unlinkSync(r)}catch{}sa().symlinkSync(a,r)}catch{}}),Id=class{transport;isSingleUserTurn;canUseTool;hooks;abortController;pendingControlResponses=new Map;cleanupPerformed=!1;sdkMessages;inputStream=new Cd;initialization;cancelControllers=new Map;hookCallbacks=new Map;nextCallbackId=0;sdkMcpTransports=new Map;pendingMcpResponses=new Map;firstResultReceivedPromise;firstResultReceivedResolve;constructor(e,r,t,s,i,n=new Map){this.transport=e,this.isSingleUserTurn=r,this.canUseTool=t,this.hooks=s,this.abortController=i;for(let[o,l]of n){let c=new kd(u=>this.sendMcpServerMessageToCli(o,u));this.sdkMcpTransports.set(o,c),l.connect(c)}this.sdkMessages=this.readSdkMessages(),this.firstResultReceivedPromise=new Promise(o=>{this.firstResultReceivedResolve=o}),this.readMessages(),this.initialization=this.initialize(),this.initialization.catch(()=>{})}setError(e){this.inputStream.error(e)}cleanup(e){if(!this.cleanupPerformed){this.cleanupPerformed=!0;try{this.transport.close(),this.pendingControlResponses.clear(),this.pendingMcpResponses.clear(),e?this.inputStream.error(e):this.inputStream.done()}catch{}}}next(...[e]){return this.sdkMessages.next(e)}return(e){return this.sdkMessages.return(e)}throw(e){return this.sdkMessages.throw(e)}[Symbol.asyncIterator](){return this.sdkMessages}[Symbol.asyncDispose](){return this.sdkMessages[Symbol.asyncDispose]()}async readMessages(){try{for await(let e of this.transport.readMessages()){if(e.type==="control_response"){let r=this.pendingControlResponses.get(e.response.request_id);r&&r(e.response);continue}else if(e.type==="control_request"){this.handleControlRequest(e);continue}else if(e.type==="control_cancel_request"){this.handleControlCancelRequest(e);continue}else if(e.type==="keep_alive")continue;e.type==="result"&&(this.firstResultReceivedResolve&&this.firstResultReceivedResolve(),this.isSingleUserTurn&&this.transport.endInput()),this.inputStream.enqueue(e)}this.inputStream.done(),this.cleanup()}catch(e){this.inputStream.error(e),this.cleanup(e)}}async handleControlRequest(e){let r=new AbortController;this.cancelControllers.set(e.request_id,r);try{let t=await this.processControlRequest(e,r.signal),s={type:"control_response",response:{subtype:"success",request_id:e.request_id,response:t}};await Promise.resolve(this.transport.write(JSON.stringify(s)+` +`;if(QE()){V9(r);return}ca().existsSync((0,Ss.dirname)(nl()))||ca().mkdirSync((0,Ss.dirname)(nl())),ca().appendFileSync(nl(),r),nM()}function nl(){return process.env.CLAUDE_CODE_DEBUG_LOGS_DIR??(0,Ss.join)(Q9(),"debug",`${tM()}.txt`)}var nM=Zi(()=>{try{let a=nl(),e=(0,Ss.dirname)(a),r=(0,Ss.join)(e,"latest");if(ca().existsSync(e)||ca().mkdirSync(e),ca().existsSync(r))try{ca().unlinkSync(r)}catch{}ca().symlinkSync(a,r)}catch{}}),rf=class{transport;isSingleUserTurn;canUseTool;hooks;abortController;pendingControlResponses=new Map;cleanupPerformed=!1;sdkMessages;inputStream=new Yd;initialization;cancelControllers=new Map;hookCallbacks=new Map;nextCallbackId=0;sdkMcpTransports=new Map;pendingMcpResponses=new Map;firstResultReceivedPromise;firstResultReceivedResolve;constructor(e,r,t,s,i,n=new Map){this.transport=e,this.isSingleUserTurn=r,this.canUseTool=t,this.hooks=s,this.abortController=i;for(let[o,l]of n){let c=new ef(u=>this.sendMcpServerMessageToCli(o,u));this.sdkMcpTransports.set(o,c),l.connect(c)}this.sdkMessages=this.readSdkMessages(),this.firstResultReceivedPromise=new Promise(o=>{this.firstResultReceivedResolve=o}),this.readMessages(),this.initialization=this.initialize(),this.initialization.catch(()=>{})}setError(e){this.inputStream.error(e)}cleanup(e){if(!this.cleanupPerformed){this.cleanupPerformed=!0;try{this.transport.close(),this.pendingControlResponses.clear(),this.pendingMcpResponses.clear(),e?this.inputStream.error(e):this.inputStream.done()}catch{}}}next(...[e]){return this.sdkMessages.next(e)}return(e){return this.sdkMessages.return(e)}throw(e){return this.sdkMessages.throw(e)}[Symbol.asyncIterator](){return this.sdkMessages}[Symbol.asyncDispose](){return this.sdkMessages[Symbol.asyncDispose]()}async readMessages(){try{for await(let e of this.transport.readMessages()){if(e.type==="control_response"){let r=this.pendingControlResponses.get(e.response.request_id);r&&r(e.response);continue}else if(e.type==="control_request"){this.handleControlRequest(e);continue}else if(e.type==="control_cancel_request"){this.handleControlCancelRequest(e);continue}else if(e.type==="keep_alive")continue;e.type==="result"&&(this.firstResultReceivedResolve&&this.firstResultReceivedResolve(),this.isSingleUserTurn&&this.transport.endInput()),this.inputStream.enqueue(e)}this.inputStream.done(),this.cleanup()}catch(e){this.inputStream.error(e),this.cleanup(e)}}async handleControlRequest(e){let r=new AbortController;this.cancelControllers.set(e.request_id,r);try{let t=await this.processControlRequest(e,r.signal),s={type:"control_response",response:{subtype:"success",request_id:e.request_id,response:t}};await Promise.resolve(this.transport.write(JSON.stringify(s)+` `))}catch(t){let s={type:"control_response",response:{subtype:"error",request_id:e.request_id,error:t.message||String(t)}};await Promise.resolve(this.transport.write(JSON.stringify(s)+` `))}finally{this.cancelControllers.delete(e.request_id)}}handleControlCancelRequest(e){let r=this.cancelControllers.get(e.request_id);r&&(r.abort(),this.cancelControllers.delete(e.request_id))}async processControlRequest(e,r){if(e.request.subtype==="can_use_tool"){if(!this.canUseTool)throw new Error("canUseTool callback is not provided.");return this.canUseTool(e.request.tool_name,e.request.input,{signal:r,suggestions:e.request.permission_suggestions})}else{if(e.request.subtype==="hook_callback")return await this.handleHookCallbacks(e.request.callback_id,e.request.input,e.request.tool_use_id,r);if(e.request.subtype==="mcp_message"){let t=e.request,s=this.sdkMcpTransports.get(t.server_name);if(!s)throw new Error(`SDK MCP server not found: ${t.server_name}`);return"method"in t.message&&"id"in t.message&&t.message.id!==null?{mcp_response:await this.handleMcpControlRequest(t.server_name,t,s)}:(s.onmessage&&s.onmessage(t.message),{mcp_response:{jsonrpc:"2.0",result:{},id:0}})}}throw new Error("Unsupported control request subtype: "+e.request.subtype)}async*readSdkMessages(){for await(let e of this.inputStream)yield e}async initialize(){let e;if(this.hooks){e={};for(let[i,n]of Object.entries(this.hooks))n.length>0&&(e[i]=n.map(o=>{let l=[];for(let c of o.hooks){let u=`hook_${this.nextCallbackId++}`;this.hookCallbacks.set(u,c),l.push(u)}return{matcher:o.matcher,hookCallbackIds:l}}))}let r=this.sdkMcpTransports.size>0?Array.from(this.sdkMcpTransports.keys()):void 0,t={subtype:"initialize",hooks:e,sdkMcpServers:r};return(await this.request(t)).response}async interrupt(){await this.request({subtype:"interrupt"})}async setPermissionMode(e){await this.request({subtype:"set_permission_mode",mode:e})}async setModel(e){await this.request({subtype:"set_model",model:e})}async setMaxThinkingTokens(e){await this.request({subtype:"set_max_thinking_tokens",max_thinking_tokens:e})}request(e){let r=Math.random().toString(36).substring(2,15),t={request_id:r,type:"control_request",request:e};return new Promise((s,i)=>{this.pendingControlResponses.set(r,n=>{n.subtype==="success"?s(n):i(new Error(n.error))}),Promise.resolve(this.transport.write(JSON.stringify(t)+` -`))})}async supportedCommands(){return(await this.initialization).commands}async supportedModels(){return(await this.initialization).models}async mcpServerStatus(){return(await this.request({subtype:"mcp_status"})).response.mcpServers}async accountInfo(){return(await this.initialization).account}async streamInput(e){ta("[Query.streamInput] Starting to process input stream"),ta(`[Query.streamInput] this.sdkMcpTransports.size = ${this.sdkMcpTransports.size}`);try{let r=0;for await(let t of e){if(r++,ta(`[Query.streamInput] Processing message ${r}: ${t.type}`),this.abortController?.signal.aborted)break;await Promise.resolve(this.transport.write(JSON.stringify(t)+` -`))}if(ta(`[Query.streamInput] Finished processing ${r} messages from input stream`),ta(`[Query.streamInput] About to check MCP servers. this.sdkMcpTransports.size = ${this.sdkMcpTransports.size}`),this.sdkMcpTransports.size>0&&this.firstResultReceivedPromise){ta("[Query.streamInput] Entering Promise.race to wait for result");let t=1e4,s;await Promise.race([this.firstResultReceivedPromise.then(()=>{ta("[Query.streamInput] Received first result, closing input stream"),s&&clearTimeout(s)}),new Promise(i=>{s=setTimeout(()=>{ta("[Query.streamInput] Timed out waiting for first result, closing input stream"),i()},t)})]),s&&clearTimeout(s)}ta("[Query] Calling transport.endInput() to close stdin to CLI process"),this.transport.endInput()}catch(r){if(!(r instanceof vs))throw r}}handleHookCallbacks(e,r,t,s){let i=this.hookCallbacks.get(e);if(!i)throw new Error(`No hook callback found for ID: ${e}`);return i(r,t,{signal:s})}sendMcpServerMessageToCli(e,r){if("id"in r&&r.id!==null&&r.id!==void 0){let t=`${e}:${r.id}`,s=this.pendingMcpResponses.get(t);if(s){s.resolve(r),this.pendingMcpResponses.delete(t);return}}throw new Error("No pending request found")}handleMcpControlRequest(e,r,t){let s="id"in r.message?r.message.id:null,i=`${e}:${s}`;return new Promise((n,o)=>{let l=null,c=()=>{l&&clearTimeout(l),this.pendingMcpResponses.delete(i)},u=m=>{c(),n(m)},p=m=>{c(),o(m)};if(this.pendingMcpResponses.set(i,{resolve:u,reject:p}),t.onmessage)t.onmessage(r.message);else{c(),o(new Error("No message handler registered"));return}l=setTimeout(()=>{this.pendingMcpResponses.has(i)&&(c(),o(new Error("Request timeout")))},3e4)})}},w={};Fj(w,{void:()=>i6,util:()=>Ge,unknown:()=>s6,union:()=>u6,undefined:()=>t6,tuple:()=>f6,transformer:()=>i1,symbol:()=>e6,string:()=>N1,strictObject:()=>l6,setErrorMap:()=>P5,set:()=>v6,record:()=>m6,quotelessJson:()=>w5,promise:()=>E6,preprocess:()=>P6,pipeline:()=>T6,ostring:()=>R6,optional:()=>w6,onumber:()=>O6,oboolean:()=>C6,objectUtil:()=>Nd,object:()=>c6,number:()=>j1,nullable:()=>S6,null:()=>r6,never:()=>n6,nativeEnum:()=>_6,nan:()=>Q5,map:()=>h6,makeIssue:()=>Zc,literal:()=>b6,lazy:()=>y6,late:()=>K5,isValid:()=>ys,isDirty:()=>Dd,isAsync:()=>Ii,isAborted:()=>jd,intersection:()=>d6,instanceof:()=>X5,getParsedType:()=>aa,getErrorMap:()=>Wc,function:()=>g6,enum:()=>x6,effect:()=>i1,discriminatedUnion:()=>p6,defaultErrorMap:()=>Tn,datetimeRegex:()=>k1,date:()=>J5,custom:()=>I1,coerce:()=>k6,boolean:()=>D1,bigint:()=>Y5,array:()=>o6,any:()=>a6,addIssueToContext:()=>se,ZodVoid:()=>On,ZodUnknown:()=>na,ZodUnion:()=>Ps,ZodUndefined:()=>ws,ZodType:()=>Ne,ZodTuple:()=>zr,ZodTransformer:()=>Qt,ZodSymbol:()=>Rn,ZodString:()=>ka,ZodSet:()=>kn,ZodSchema:()=>Ne,ZodRecord:()=>Xc,ZodReadonly:()=>Ns,ZodPromise:()=>Ia,ZodPipeline:()=>ji,ZodParsedType:()=>le,ZodOptional:()=>dr,ZodObject:()=>zt,ZodNumber:()=>bs,ZodNullable:()=>Hr,ZodNull:()=>Ss,ZodNever:()=>Rr,ZodNativeEnum:()=>ks,ZodNaN:()=>An,ZodMap:()=>Cn,ZodLiteral:()=>Os,ZodLazy:()=>Rs,ZodIssueCode:()=>J,ZodIntersection:()=>Ts,ZodFunction:()=>Qc,ZodFirstPartyTypeKind:()=>Pe,ZodError:()=>Xt,ZodEnum:()=>Cs,ZodEffects:()=>Qt,ZodDiscriminatedUnion:()=>Kc,ZodDefault:()=>As,ZodDate:()=>Es,ZodCatch:()=>Is,ZodBranded:()=>Ni,ZodBoolean:()=>_s,ZodBigInt:()=>xs,ZodArray:()=>ia,ZodAny:()=>Aa,Schema:()=>Ne,ParseStatus:()=>Tt,OK:()=>Ct,NEVER:()=>A6,INVALID:()=>we,EMPTY_PATH:()=>T5,DIRTY:()=>Pn,BRAND:()=>Z5});var Ge;(function(a){a.assertEqual=s=>{};function e(s){}a.assertIs=e;function r(s){throw new Error}a.assertNever=r,a.arrayToEnum=s=>{let i={};for(let n of s)i[n]=n;return i},a.getValidEnumValues=s=>{let i=a.objectKeys(s).filter(o=>typeof s[s[o]]!="number"),n={};for(let o of i)n[o]=s[o];return a.objectValues(n)},a.objectValues=s=>a.objectKeys(s).map(function(i){return s[i]}),a.objectKeys=typeof Object.keys=="function"?s=>Object.keys(s):s=>{let i=[];for(let n in s)Object.prototype.hasOwnProperty.call(s,n)&&i.push(n);return i},a.find=(s,i)=>{for(let n of s)if(i(n))return n},a.isInteger=typeof Number.isInteger=="function"?s=>Number.isInteger(s):s=>typeof s=="number"&&Number.isFinite(s)&&Math.floor(s)===s;function t(s,i=" | "){return s.map(n=>typeof n=="string"?`'${n}'`:n).join(i)}a.joinValues=t,a.jsonStringifyReplacer=(s,i)=>typeof i=="bigint"?i.toString():i})(Ge||(Ge={}));var Nd;(function(a){a.mergeShapes=(e,r)=>({...e,...r})})(Nd||(Nd={}));var le=Ge.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),aa=a=>{switch(typeof a){case"undefined":return le.undefined;case"string":return le.string;case"number":return Number.isNaN(a)?le.nan:le.number;case"boolean":return le.boolean;case"function":return le.function;case"bigint":return le.bigint;case"symbol":return le.symbol;case"object":return Array.isArray(a)?le.array:a===null?le.null:a.then&&typeof a.then=="function"&&a.catch&&typeof a.catch=="function"?le.promise:typeof Map<"u"&&a instanceof Map?le.map:typeof Set<"u"&&a instanceof Set?le.set:typeof Date<"u"&&a instanceof Date?le.date:le.object;default:return le.unknown}},J=Ge.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),w5=a=>JSON.stringify(a,null,2).replace(/"([^"]+)":/g,"$1:"),Xt=class a extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=t=>{this.issues=[...this.issues,t]},this.addIssues=(t=[])=>{this.issues=[...this.issues,...t]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=e}format(e){let r=e||function(i){return i.message},t={_errors:[]},s=i=>{for(let n of i.issues)if(n.code==="invalid_union")n.unionErrors.map(s);else if(n.code==="invalid_return_type")s(n.returnTypeError);else if(n.code==="invalid_arguments")s(n.argumentsError);else if(n.path.length===0)t._errors.push(r(n));else{let o=t,l=0;for(;lr.message){let r={},t=[];for(let s of this.issues)if(s.path.length>0){let i=s.path[0];r[i]=r[i]||[],r[i].push(e(s))}else t.push(e(s));return{formErrors:t,fieldErrors:r}}get formErrors(){return this.flatten()}};Xt.create=a=>new Xt(a);var S5=(a,e)=>{let r;switch(a.code){case J.invalid_type:a.received===le.undefined?r="Required":r=`Expected ${a.expected}, received ${a.received}`;break;case J.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(a.expected,Ge.jsonStringifyReplacer)}`;break;case J.unrecognized_keys:r=`Unrecognized key(s) in object: ${Ge.joinValues(a.keys,", ")}`;break;case J.invalid_union:r="Invalid input";break;case J.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${Ge.joinValues(a.options)}`;break;case J.invalid_enum_value:r=`Invalid enum value. Expected ${Ge.joinValues(a.options)}, received '${a.received}'`;break;case J.invalid_arguments:r="Invalid function arguments";break;case J.invalid_return_type:r="Invalid function return type";break;case J.invalid_date:r="Invalid date";break;case J.invalid_string:typeof a.validation=="object"?"includes"in a.validation?(r=`Invalid input: must include "${a.validation.includes}"`,typeof a.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${a.validation.position}`)):"startsWith"in a.validation?r=`Invalid input: must start with "${a.validation.startsWith}"`:"endsWith"in a.validation?r=`Invalid input: must end with "${a.validation.endsWith}"`:Ge.assertNever(a.validation):a.validation!=="regex"?r=`Invalid ${a.validation}`:r="Invalid";break;case J.too_small:a.type==="array"?r=`Array must contain ${a.exact?"exactly":a.inclusive?"at least":"more than"} ${a.minimum} element(s)`:a.type==="string"?r=`String must contain ${a.exact?"exactly":a.inclusive?"at least":"over"} ${a.minimum} character(s)`:a.type==="number"?r=`Number must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${a.minimum}`:a.type==="bigint"?r=`Number must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${a.minimum}`:a.type==="date"?r=`Date must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(a.minimum))}`:r="Invalid input";break;case J.too_big:a.type==="array"?r=`Array must contain ${a.exact?"exactly":a.inclusive?"at most":"less than"} ${a.maximum} element(s)`:a.type==="string"?r=`String must contain ${a.exact?"exactly":a.inclusive?"at most":"under"} ${a.maximum} character(s)`:a.type==="number"?r=`Number must be ${a.exact?"exactly":a.inclusive?"less than or equal to":"less than"} ${a.maximum}`:a.type==="bigint"?r=`BigInt must be ${a.exact?"exactly":a.inclusive?"less than or equal to":"less than"} ${a.maximum}`:a.type==="date"?r=`Date must be ${a.exact?"exactly":a.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(a.maximum))}`:r="Invalid input";break;case J.custom:r="Invalid input";break;case J.invalid_intersection_types:r="Intersection results could not be merged";break;case J.not_multiple_of:r=`Number must be a multiple of ${a.multipleOf}`;break;case J.not_finite:r="Number must be finite";break;default:r=e.defaultError,Ge.assertNever(a)}return{message:r}},Tn=S5,R1=Tn;function P5(a){R1=a}function Wc(){return R1}var Zc=a=>{let{data:e,path:r,errorMaps:t,issueData:s}=a,i=[...r,...s.path||[]],n={...s,path:i};if(s.message!==void 0)return{...s,path:i,message:s.message};let o="",l=t.filter(c=>!!c).slice().reverse();for(let c of l)o=c(n,{data:e,defaultError:o}).message;return{...s,path:i,message:o}},T5=[];function se(a,e){let r=Wc(),t=Zc({issueData:e,data:a.data,path:a.path,errorMaps:[a.common.contextualErrorMap,a.schemaErrorMap,r,r===Tn?void 0:Tn].filter(s=>!!s)});a.common.issues.push(t)}var Tt=class a{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,r){let t=[];for(let s of r){if(s.status==="aborted")return we;s.status==="dirty"&&e.dirty(),t.push(s.value)}return{status:e.value,value:t}}static async mergeObjectAsync(e,r){let t=[];for(let s of r){let i=await s.key,n=await s.value;t.push({key:i,value:n})}return a.mergeObjectSync(e,t)}static mergeObjectSync(e,r){let t={};for(let s of r){let{key:i,value:n}=s;if(i.status==="aborted"||n.status==="aborted")return we;i.status==="dirty"&&e.dirty(),n.status==="dirty"&&e.dirty(),i.value!=="__proto__"&&(typeof n.value<"u"||s.alwaysSet)&&(t[i.value]=n.value)}return{status:e.value,value:t}}},we=Object.freeze({status:"aborted"}),Pn=a=>({status:"dirty",value:a}),Ct=a=>({status:"valid",value:a}),jd=a=>a.status==="aborted",Dd=a=>a.status==="dirty",ys=a=>a.status==="valid",Ii=a=>typeof Promise<"u"&&a instanceof Promise,me;(function(a){a.errToObj=e=>typeof e=="string"?{message:e}:e||{},a.toString=e=>typeof e=="string"?e:e?.message})(me||(me={}));var fr=class{constructor(e,r,t,s){this._cachedPath=[],this.parent=e,this.data=r,this._path=t,this._key=s}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},s1=(a,e)=>{if(ys(e))return{success:!0,data:e.value};if(!a.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let r=new Xt(a.common.issues);return this._error=r,this._error}}};function $e(a){if(!a)return{};let{errorMap:e,invalid_type_error:r,required_error:t,description:s}=a;if(e&&(r||t))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:s}:{errorMap:(n,o)=>{let{message:l}=a;return n.code==="invalid_enum_value"?{message:l??o.defaultError}:typeof o.data>"u"?{message:l??t??o.defaultError}:n.code!=="invalid_type"?{message:o.defaultError}:{message:l??r??o.defaultError}},description:s}}var Ne=class{get description(){return this._def.description}_getType(e){return aa(e.data)}_getOrReturnCtx(e,r){return r||{common:e.parent.common,data:e.data,parsedType:aa(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new Tt,ctx:{common:e.parent.common,data:e.data,parsedType:aa(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let r=this._parse(e);if(Ii(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(e){let r=this._parse(e);return Promise.resolve(r)}parse(e,r){let t=this.safeParse(e,r);if(t.success)return t.data;throw t.error}safeParse(e,r){let t={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:aa(e)},s=this._parseSync({data:e,path:t.path,parent:t});return s1(t,s)}"~validate"(e){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:aa(e)};if(!this["~standard"].async)try{let t=this._parseSync({data:e,path:[],parent:r});return ys(t)?{value:t.value}:{issues:r.common.issues}}catch(t){t?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),r.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:r}).then(t=>ys(t)?{value:t.value}:{issues:r.common.issues})}async parseAsync(e,r){let t=await this.safeParseAsync(e,r);if(t.success)return t.data;throw t.error}async safeParseAsync(e,r){let t={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:aa(e)},s=this._parse({data:e,path:t.path,parent:t}),i=await(Ii(s)?s:Promise.resolve(s));return s1(t,i)}refine(e,r){let t=s=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(s):r;return this._refinement((s,i)=>{let n=e(s),o=()=>i.addIssue({code:J.custom,...t(s)});return typeof Promise<"u"&&n instanceof Promise?n.then(l=>l?!0:(o(),!1)):n?!0:(o(),!1)})}refinement(e,r){return this._refinement((t,s)=>e(t)?!0:(s.addIssue(typeof r=="function"?r(t,s):r),!1))}_refinement(e){return new Qt({schema:this,typeName:Pe.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:r=>this["~validate"](r)}}optional(){return dr.create(this,this._def)}nullable(){return Hr.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ia.create(this)}promise(){return Ia.create(this,this._def)}or(e){return Ps.create([this,e],this._def)}and(e){return Ts.create(this,e,this._def)}transform(e){return new Qt({...$e(this._def),schema:this,typeName:Pe.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let r=typeof e=="function"?e:()=>e;return new As({...$e(this._def),innerType:this,defaultValue:r,typeName:Pe.ZodDefault})}brand(){return new Ni({typeName:Pe.ZodBranded,type:this,...$e(this._def)})}catch(e){let r=typeof e=="function"?e:()=>e;return new Is({...$e(this._def),innerType:this,catchValue:r,typeName:Pe.ZodCatch})}describe(e){let r=this.constructor;return new r({...this._def,description:e})}pipe(e){return ji.create(this,e)}readonly(){return Ns.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},R5=/^c[^\s-]{8,}$/i,O5=/^[0-9a-z]+$/,C5=/^[0-9A-HJKMNP-TV-Z]{26}$/i,k5=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,A5=/^[a-z0-9_-]{21}$/i,I5=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,N5=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,j5=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,D5="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Pd,$5=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,M5=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,L5=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,q5=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,F5=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,U5=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,O1="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",z5=new RegExp(`^${O1}$`);function C1(a){let e="[0-5]\\d";a.precision?e=`${e}\\.\\d{${a.precision}}`:a.precision==null&&(e=`${e}(\\.\\d+)?`);let r=a.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${r}`}function H5(a){return new RegExp(`^${C1(a)}$`)}function k1(a){let e=`${O1}T${C1(a)}`,r=[];return r.push(a.local?"Z?":"Z"),a.offset&&r.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${r.join("|")})`,new RegExp(`^${e}$`)}function B5(a,e){return!!((e==="v4"||!e)&&$5.test(a)||(e==="v6"||!e)&&L5.test(a))}function V5(a,e){if(!I5.test(a))return!1;try{let[r]=a.split(".");if(!r)return!1;let t=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),s=JSON.parse(atob(t));return!(typeof s!="object"||s===null||"typ"in s&&s?.typ!=="JWT"||!s.alg||e&&s.alg!==e)}catch{return!1}}function G5(a,e){return!!((e==="v4"||!e)&&M5.test(a)||(e==="v6"||!e)&&q5.test(a))}var ka=class a extends Ne{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==le.string){let i=this._getOrReturnCtx(e);return se(i,{code:J.invalid_type,expected:le.string,received:i.parsedType}),we}let t=new Tt,s;for(let i of this._def.checks)if(i.kind==="min")e.data.lengthi.value&&(s=this._getOrReturnCtx(e,s),se(s,{code:J.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),t.dirty());else if(i.kind==="length"){let n=e.data.length>i.value,o=e.data.lengthe.test(s),{validation:r,code:J.invalid_string,...me.errToObj(t)})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...me.errToObj(e)})}url(e){return this._addCheck({kind:"url",...me.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...me.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...me.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...me.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...me.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...me.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...me.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...me.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...me.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...me.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...me.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...me.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...me.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...me.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...me.errToObj(e)})}regex(e,r){return this._addCheck({kind:"regex",regex:e,...me.errToObj(r)})}includes(e,r){return this._addCheck({kind:"includes",value:e,position:r?.position,...me.errToObj(r?.message)})}startsWith(e,r){return this._addCheck({kind:"startsWith",value:e,...me.errToObj(r)})}endsWith(e,r){return this._addCheck({kind:"endsWith",value:e,...me.errToObj(r)})}min(e,r){return this._addCheck({kind:"min",value:e,...me.errToObj(r)})}max(e,r){return this._addCheck({kind:"max",value:e,...me.errToObj(r)})}length(e,r){return this._addCheck({kind:"length",value:e,...me.errToObj(r)})}nonempty(e){return this.min(1,me.errToObj(e))}trim(){return new a({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new a({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new a({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxLength(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew ka({checks:[],typeName:Pe.ZodString,coerce:a?.coerce??!1,...$e(a)});function W5(a,e){let r=(a.toString().split(".")[1]||"").length,t=(e.toString().split(".")[1]||"").length,s=r>t?r:t,i=Number.parseInt(a.toFixed(s).replace(".","")),n=Number.parseInt(e.toFixed(s).replace(".",""));return i%n/10**s}var bs=class a extends Ne{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==le.number){let i=this._getOrReturnCtx(e);return se(i,{code:J.invalid_type,expected:le.number,received:i.parsedType}),we}let t,s=new Tt;for(let i of this._def.checks)i.kind==="int"?Ge.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),se(t,{code:J.invalid_type,expected:"integer",received:"float",message:i.message}),s.dirty()):i.kind==="min"?(i.inclusive?e.datai.value:e.data>=i.value)&&(t=this._getOrReturnCtx(e,t),se(t,{code:J.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),s.dirty()):i.kind==="multipleOf"?W5(e.data,i.value)!==0&&(t=this._getOrReturnCtx(e,t),se(t,{code:J.not_multiple_of,multipleOf:i.value,message:i.message}),s.dirty()):i.kind==="finite"?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),se(t,{code:J.not_finite,message:i.message}),s.dirty()):Ge.assertNever(i);return{status:s.value,value:e.data}}gte(e,r){return this.setLimit("min",e,!0,me.toString(r))}gt(e,r){return this.setLimit("min",e,!1,me.toString(r))}lte(e,r){return this.setLimit("max",e,!0,me.toString(r))}lt(e,r){return this.setLimit("max",e,!1,me.toString(r))}setLimit(e,r,t,s){return new a({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:t,message:me.toString(s)}]})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:me.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:me.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:me.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:me.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:me.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:me.toString(r)})}finite(e){return this._addCheck({kind:"finite",message:me.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:me.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:me.toString(e)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuee.kind==="int"||e.kind==="multipleOf"&&Ge.isInteger(e.value))}get isFinite(){let e=null,r=null;for(let t of this._def.checks){if(t.kind==="finite"||t.kind==="int"||t.kind==="multipleOf")return!0;t.kind==="min"?(r===null||t.value>r)&&(r=t.value):t.kind==="max"&&(e===null||t.valuenew bs({checks:[],typeName:Pe.ZodNumber,coerce:a?.coerce||!1,...$e(a)});var xs=class a extends Ne{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==le.bigint)return this._getInvalidInput(e);let t,s=new Tt;for(let i of this._def.checks)i.kind==="min"?(i.inclusive?e.datai.value:e.data>=i.value)&&(t=this._getOrReturnCtx(e,t),se(t,{code:J.too_big,type:"bigint",maximum:i.value,inclusive:i.inclusive,message:i.message}),s.dirty()):i.kind==="multipleOf"?e.data%i.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),se(t,{code:J.not_multiple_of,multipleOf:i.value,message:i.message}),s.dirty()):Ge.assertNever(i);return{status:s.value,value:e.data}}_getInvalidInput(e){let r=this._getOrReturnCtx(e);return se(r,{code:J.invalid_type,expected:le.bigint,received:r.parsedType}),we}gte(e,r){return this.setLimit("min",e,!0,me.toString(r))}gt(e,r){return this.setLimit("min",e,!1,me.toString(r))}lte(e,r){return this.setLimit("max",e,!0,me.toString(r))}lt(e,r){return this.setLimit("max",e,!1,me.toString(r))}setLimit(e,r,t,s){return new a({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:t,message:me.toString(s)}]})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:me.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:me.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:me.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:me.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:me.toString(r)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew xs({checks:[],typeName:Pe.ZodBigInt,coerce:a?.coerce??!1,...$e(a)});var _s=class extends Ne{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==le.boolean){let t=this._getOrReturnCtx(e);return se(t,{code:J.invalid_type,expected:le.boolean,received:t.parsedType}),we}return Ct(e.data)}};_s.create=a=>new _s({typeName:Pe.ZodBoolean,coerce:a?.coerce||!1,...$e(a)});var Es=class a extends Ne{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==le.date){let i=this._getOrReturnCtx(e);return se(i,{code:J.invalid_type,expected:le.date,received:i.parsedType}),we}if(Number.isNaN(e.data.getTime())){let i=this._getOrReturnCtx(e);return se(i,{code:J.invalid_date}),we}let t=new Tt,s;for(let i of this._def.checks)i.kind==="min"?e.data.getTime()i.value&&(s=this._getOrReturnCtx(e,s),se(s,{code:J.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),t.dirty()):Ge.assertNever(i);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}min(e,r){return this._addCheck({kind:"min",value:e.getTime(),message:me.toString(r)})}max(e,r){return this._addCheck({kind:"max",value:e.getTime(),message:me.toString(r)})}get minDate(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew Es({checks:[],coerce:a?.coerce||!1,typeName:Pe.ZodDate,...$e(a)});var Rn=class extends Ne{_parse(e){if(this._getType(e)!==le.symbol){let t=this._getOrReturnCtx(e);return se(t,{code:J.invalid_type,expected:le.symbol,received:t.parsedType}),we}return Ct(e.data)}};Rn.create=a=>new Rn({typeName:Pe.ZodSymbol,...$e(a)});var ws=class extends Ne{_parse(e){if(this._getType(e)!==le.undefined){let t=this._getOrReturnCtx(e);return se(t,{code:J.invalid_type,expected:le.undefined,received:t.parsedType}),we}return Ct(e.data)}};ws.create=a=>new ws({typeName:Pe.ZodUndefined,...$e(a)});var Ss=class extends Ne{_parse(e){if(this._getType(e)!==le.null){let t=this._getOrReturnCtx(e);return se(t,{code:J.invalid_type,expected:le.null,received:t.parsedType}),we}return Ct(e.data)}};Ss.create=a=>new Ss({typeName:Pe.ZodNull,...$e(a)});var Aa=class extends Ne{constructor(){super(...arguments),this._any=!0}_parse(e){return Ct(e.data)}};Aa.create=a=>new Aa({typeName:Pe.ZodAny,...$e(a)});var na=class extends Ne{constructor(){super(...arguments),this._unknown=!0}_parse(e){return Ct(e.data)}};na.create=a=>new na({typeName:Pe.ZodUnknown,...$e(a)});var Rr=class extends Ne{_parse(e){let r=this._getOrReturnCtx(e);return se(r,{code:J.invalid_type,expected:le.never,received:r.parsedType}),we}};Rr.create=a=>new Rr({typeName:Pe.ZodNever,...$e(a)});var On=class extends Ne{_parse(e){if(this._getType(e)!==le.undefined){let t=this._getOrReturnCtx(e);return se(t,{code:J.invalid_type,expected:le.void,received:t.parsedType}),we}return Ct(e.data)}};On.create=a=>new On({typeName:Pe.ZodVoid,...$e(a)});var ia=class a extends Ne{_parse(e){let{ctx:r,status:t}=this._processInputParams(e),s=this._def;if(r.parsedType!==le.array)return se(r,{code:J.invalid_type,expected:le.array,received:r.parsedType}),we;if(s.exactLength!==null){let n=r.data.length>s.exactLength.value,o=r.data.lengths.maxLength.value&&(se(r,{code:J.too_big,maximum:s.maxLength.value,type:"array",inclusive:!0,exact:!1,message:s.maxLength.message}),t.dirty()),r.common.async)return Promise.all([...r.data].map((n,o)=>s.type._parseAsync(new fr(r,n,r.path,o)))).then(n=>Tt.mergeArray(t,n));let i=[...r.data].map((n,o)=>s.type._parseSync(new fr(r,n,r.path,o)));return Tt.mergeArray(t,i)}get element(){return this._def.type}min(e,r){return new a({...this._def,minLength:{value:e,message:me.toString(r)}})}max(e,r){return new a({...this._def,maxLength:{value:e,message:me.toString(r)}})}length(e,r){return new a({...this._def,exactLength:{value:e,message:me.toString(r)}})}nonempty(e){return this.min(1,e)}};ia.create=(a,e)=>new ia({type:a,minLength:null,maxLength:null,exactLength:null,typeName:Pe.ZodArray,...$e(e)});function Sn(a){if(a instanceof zt){let e={};for(let r in a.shape){let t=a.shape[r];e[r]=dr.create(Sn(t))}return new zt({...a._def,shape:()=>e})}else return a instanceof ia?new ia({...a._def,type:Sn(a.element)}):a instanceof dr?dr.create(Sn(a.unwrap())):a instanceof Hr?Hr.create(Sn(a.unwrap())):a instanceof zr?zr.create(a.items.map(e=>Sn(e))):a}var zt=class a extends Ne{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),r=Ge.objectKeys(e);return this._cached={shape:e,keys:r},this._cached}_parse(e){if(this._getType(e)!==le.object){let c=this._getOrReturnCtx(e);return se(c,{code:J.invalid_type,expected:le.object,received:c.parsedType}),we}let{status:t,ctx:s}=this._processInputParams(e),{shape:i,keys:n}=this._getCached(),o=[];if(!(this._def.catchall instanceof Rr&&this._def.unknownKeys==="strip"))for(let c in s.data)n.includes(c)||o.push(c);let l=[];for(let c of n){let u=i[c],p=s.data[c];l.push({key:{status:"valid",value:c},value:u._parse(new fr(s,p,s.path,c)),alwaysSet:c in s.data})}if(this._def.catchall instanceof Rr){let c=this._def.unknownKeys;if(c==="passthrough")for(let u of o)l.push({key:{status:"valid",value:u},value:{status:"valid",value:s.data[u]}});else if(c==="strict")o.length>0&&(se(s,{code:J.unrecognized_keys,keys:o}),t.dirty());else if(c!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let c=this._def.catchall;for(let u of o){let p=s.data[u];l.push({key:{status:"valid",value:u},value:c._parse(new fr(s,p,s.path,u)),alwaysSet:u in s.data})}}return s.common.async?Promise.resolve().then(async()=>{let c=[];for(let u of l){let p=await u.key,m=await u.value;c.push({key:p,value:m,alwaysSet:u.alwaysSet})}return c}).then(c=>Tt.mergeObjectSync(t,c)):Tt.mergeObjectSync(t,l)}get shape(){return this._def.shape()}strict(e){return me.errToObj,new a({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(r,t)=>{let s=this._def.errorMap?.(r,t).message??t.defaultError;return r.code==="unrecognized_keys"?{message:me.errToObj(e).message??s}:{message:s}}}:{}})}strip(){return new a({...this._def,unknownKeys:"strip"})}passthrough(){return new a({...this._def,unknownKeys:"passthrough"})}extend(e){return new a({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new a({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Pe.ZodObject})}setKey(e,r){return this.augment({[e]:r})}catchall(e){return new a({...this._def,catchall:e})}pick(e){let r={};for(let t of Ge.objectKeys(e))e[t]&&this.shape[t]&&(r[t]=this.shape[t]);return new a({...this._def,shape:()=>r})}omit(e){let r={};for(let t of Ge.objectKeys(this.shape))e[t]||(r[t]=this.shape[t]);return new a({...this._def,shape:()=>r})}deepPartial(){return Sn(this)}partial(e){let r={};for(let t of Ge.objectKeys(this.shape)){let s=this.shape[t];e&&!e[t]?r[t]=s:r[t]=s.optional()}return new a({...this._def,shape:()=>r})}required(e){let r={};for(let t of Ge.objectKeys(this.shape))if(e&&!e[t])r[t]=this.shape[t];else{let i=this.shape[t];for(;i instanceof dr;)i=i._def.innerType;r[t]=i}return new a({...this._def,shape:()=>r})}keyof(){return A1(Ge.objectKeys(this.shape))}};zt.create=(a,e)=>new zt({shape:()=>a,unknownKeys:"strip",catchall:Rr.create(),typeName:Pe.ZodObject,...$e(e)});zt.strictCreate=(a,e)=>new zt({shape:()=>a,unknownKeys:"strict",catchall:Rr.create(),typeName:Pe.ZodObject,...$e(e)});zt.lazycreate=(a,e)=>new zt({shape:a,unknownKeys:"strip",catchall:Rr.create(),typeName:Pe.ZodObject,...$e(e)});var Ps=class extends Ne{_parse(e){let{ctx:r}=this._processInputParams(e),t=this._def.options;function s(i){for(let o of i)if(o.result.status==="valid")return o.result;for(let o of i)if(o.result.status==="dirty")return r.common.issues.push(...o.ctx.common.issues),o.result;let n=i.map(o=>new Xt(o.ctx.common.issues));return se(r,{code:J.invalid_union,unionErrors:n}),we}if(r.common.async)return Promise.all(t.map(async i=>{let n={...r,common:{...r.common,issues:[]},parent:null};return{result:await i._parseAsync({data:r.data,path:r.path,parent:n}),ctx:n}})).then(s);{let i,n=[];for(let l of t){let c={...r,common:{...r.common,issues:[]},parent:null},u=l._parseSync({data:r.data,path:r.path,parent:c});if(u.status==="valid")return u;u.status==="dirty"&&!i&&(i={result:u,ctx:c}),c.common.issues.length&&n.push(c.common.issues)}if(i)return r.common.issues.push(...i.ctx.common.issues),i.result;let o=n.map(l=>new Xt(l));return se(r,{code:J.invalid_union,unionErrors:o}),we}}get options(){return this._def.options}};Ps.create=(a,e)=>new Ps({options:a,typeName:Pe.ZodUnion,...$e(e)});var ra=a=>a instanceof Rs?ra(a.schema):a instanceof Qt?ra(a.innerType()):a instanceof Os?[a.value]:a instanceof Cs?a.options:a instanceof ks?Ge.objectValues(a.enum):a instanceof As?ra(a._def.innerType):a instanceof ws?[void 0]:a instanceof Ss?[null]:a instanceof dr?[void 0,...ra(a.unwrap())]:a instanceof Hr?[null,...ra(a.unwrap())]:a instanceof Ni||a instanceof Ns?ra(a.unwrap()):a instanceof Is?ra(a._def.innerType):[],Kc=class a extends Ne{_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==le.object)return se(r,{code:J.invalid_type,expected:le.object,received:r.parsedType}),we;let t=this.discriminator,s=r.data[t],i=this.optionsMap.get(s);return i?r.common.async?i._parseAsync({data:r.data,path:r.path,parent:r}):i._parseSync({data:r.data,path:r.path,parent:r}):(se(r,{code:J.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[t]}),we)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,r,t){let s=new Map;for(let i of r){let n=ra(i.shape[e]);if(!n.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let o of n){if(s.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);s.set(o,i)}}return new a({typeName:Pe.ZodDiscriminatedUnion,discriminator:e,options:r,optionsMap:s,...$e(t)})}};function $d(a,e){let r=aa(a),t=aa(e);if(a===e)return{valid:!0,data:a};if(r===le.object&&t===le.object){let s=Ge.objectKeys(e),i=Ge.objectKeys(a).filter(o=>s.indexOf(o)!==-1),n={...a,...e};for(let o of i){let l=$d(a[o],e[o]);if(!l.valid)return{valid:!1};n[o]=l.data}return{valid:!0,data:n}}else if(r===le.array&&t===le.array){if(a.length!==e.length)return{valid:!1};let s=[];for(let i=0;i{if(jd(i)||jd(n))return we;let o=$d(i.value,n.value);return o.valid?((Dd(i)||Dd(n))&&r.dirty(),{status:r.value,value:o.data}):(se(t,{code:J.invalid_intersection_types}),we)};return t.common.async?Promise.all([this._def.left._parseAsync({data:t.data,path:t.path,parent:t}),this._def.right._parseAsync({data:t.data,path:t.path,parent:t})]).then(([i,n])=>s(i,n)):s(this._def.left._parseSync({data:t.data,path:t.path,parent:t}),this._def.right._parseSync({data:t.data,path:t.path,parent:t}))}};Ts.create=(a,e,r)=>new Ts({left:a,right:e,typeName:Pe.ZodIntersection,...$e(r)});var zr=class a extends Ne{_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.parsedType!==le.array)return se(t,{code:J.invalid_type,expected:le.array,received:t.parsedType}),we;if(t.data.lengththis._def.items.length&&(se(t,{code:J.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());let i=[...t.data].map((n,o)=>{let l=this._def.items[o]||this._def.rest;return l?l._parse(new fr(t,n,t.path,o)):null}).filter(n=>!!n);return t.common.async?Promise.all(i).then(n=>Tt.mergeArray(r,n)):Tt.mergeArray(r,i)}get items(){return this._def.items}rest(e){return new a({...this._def,rest:e})}};zr.create=(a,e)=>{if(!Array.isArray(a))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new zr({items:a,typeName:Pe.ZodTuple,rest:null,...$e(e)})};var Xc=class a extends Ne{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.parsedType!==le.object)return se(t,{code:J.invalid_type,expected:le.object,received:t.parsedType}),we;let s=[],i=this._def.keyType,n=this._def.valueType;for(let o in t.data)s.push({key:i._parse(new fr(t,o,t.path,o)),value:n._parse(new fr(t,t.data[o],t.path,o)),alwaysSet:o in t.data});return t.common.async?Tt.mergeObjectAsync(r,s):Tt.mergeObjectSync(r,s)}get element(){return this._def.valueType}static create(e,r,t){return r instanceof Ne?new a({keyType:e,valueType:r,typeName:Pe.ZodRecord,...$e(t)}):new a({keyType:ka.create(),valueType:e,typeName:Pe.ZodRecord,...$e(r)})}},Cn=class extends Ne{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.parsedType!==le.map)return se(t,{code:J.invalid_type,expected:le.map,received:t.parsedType}),we;let s=this._def.keyType,i=this._def.valueType,n=[...t.data.entries()].map(([o,l],c)=>({key:s._parse(new fr(t,o,t.path,[c,"key"])),value:i._parse(new fr(t,l,t.path,[c,"value"]))}));if(t.common.async){let o=new Map;return Promise.resolve().then(async()=>{for(let l of n){let c=await l.key,u=await l.value;if(c.status==="aborted"||u.status==="aborted")return we;(c.status==="dirty"||u.status==="dirty")&&r.dirty(),o.set(c.value,u.value)}return{status:r.value,value:o}})}else{let o=new Map;for(let l of n){let c=l.key,u=l.value;if(c.status==="aborted"||u.status==="aborted")return we;(c.status==="dirty"||u.status==="dirty")&&r.dirty(),o.set(c.value,u.value)}return{status:r.value,value:o}}}};Cn.create=(a,e,r)=>new Cn({valueType:e,keyType:a,typeName:Pe.ZodMap,...$e(r)});var kn=class a extends Ne{_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.parsedType!==le.set)return se(t,{code:J.invalid_type,expected:le.set,received:t.parsedType}),we;let s=this._def;s.minSize!==null&&t.data.sizes.maxSize.value&&(se(t,{code:J.too_big,maximum:s.maxSize.value,type:"set",inclusive:!0,exact:!1,message:s.maxSize.message}),r.dirty());let i=this._def.valueType;function n(l){let c=new Set;for(let u of l){if(u.status==="aborted")return we;u.status==="dirty"&&r.dirty(),c.add(u.value)}return{status:r.value,value:c}}let o=[...t.data.values()].map((l,c)=>i._parse(new fr(t,l,t.path,c)));return t.common.async?Promise.all(o).then(l=>n(l)):n(o)}min(e,r){return new a({...this._def,minSize:{value:e,message:me.toString(r)}})}max(e,r){return new a({...this._def,maxSize:{value:e,message:me.toString(r)}})}size(e,r){return this.min(e,r).max(e,r)}nonempty(e){return this.min(1,e)}};kn.create=(a,e)=>new kn({valueType:a,minSize:null,maxSize:null,typeName:Pe.ZodSet,...$e(e)});var Qc=class a extends Ne{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==le.function)return se(r,{code:J.invalid_type,expected:le.function,received:r.parsedType}),we;function t(o,l){return Zc({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,Wc(),Tn].filter(c=>!!c),issueData:{code:J.invalid_arguments,argumentsError:l}})}function s(o,l){return Zc({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,Wc(),Tn].filter(c=>!!c),issueData:{code:J.invalid_return_type,returnTypeError:l}})}let i={errorMap:r.common.contextualErrorMap},n=r.data;if(this._def.returns instanceof Ia){let o=this;return Ct(async function(...l){let c=new Xt([]),u=await o._def.args.parseAsync(l,i).catch(f=>{throw c.addIssue(t(l,f)),c}),p=await Reflect.apply(n,this,u);return await o._def.returns._def.type.parseAsync(p,i).catch(f=>{throw c.addIssue(s(p,f)),c})})}else{let o=this;return Ct(function(...l){let c=o._def.args.safeParse(l,i);if(!c.success)throw new Xt([t(l,c.error)]);let u=Reflect.apply(n,this,c.data),p=o._def.returns.safeParse(u,i);if(!p.success)throw new Xt([s(u,p.error)]);return p.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new a({...this._def,args:zr.create(e).rest(na.create())})}returns(e){return new a({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,r,t){return new a({args:e||zr.create([]).rest(na.create()),returns:r||na.create(),typeName:Pe.ZodFunction,...$e(t)})}},Rs=class extends Ne{get schema(){return this._def.getter()}_parse(e){let{ctx:r}=this._processInputParams(e);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};Rs.create=(a,e)=>new Rs({getter:a,typeName:Pe.ZodLazy,...$e(e)});var Os=class extends Ne{_parse(e){if(e.data!==this._def.value){let r=this._getOrReturnCtx(e);return se(r,{received:r.data,code:J.invalid_literal,expected:this._def.value}),we}return{status:"valid",value:e.data}}get value(){return this._def.value}};Os.create=(a,e)=>new Os({value:a,typeName:Pe.ZodLiteral,...$e(e)});function A1(a,e){return new Cs({values:a,typeName:Pe.ZodEnum,...$e(e)})}var Cs=class a extends Ne{_parse(e){if(typeof e.data!="string"){let r=this._getOrReturnCtx(e),t=this._def.values;return se(r,{expected:Ge.joinValues(t),received:r.parsedType,code:J.invalid_type}),we}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let r=this._getOrReturnCtx(e),t=this._def.values;return se(r,{received:r.data,code:J.invalid_enum_value,options:t}),we}return Ct(e.data)}get options(){return this._def.values}get enum(){let e={};for(let r of this._def.values)e[r]=r;return e}get Values(){let e={};for(let r of this._def.values)e[r]=r;return e}get Enum(){let e={};for(let r of this._def.values)e[r]=r;return e}extract(e,r=this._def){return a.create(e,{...this._def,...r})}exclude(e,r=this._def){return a.create(this.options.filter(t=>!e.includes(t)),{...this._def,...r})}};Cs.create=A1;var ks=class extends Ne{_parse(e){let r=Ge.getValidEnumValues(this._def.values),t=this._getOrReturnCtx(e);if(t.parsedType!==le.string&&t.parsedType!==le.number){let s=Ge.objectValues(r);return se(t,{expected:Ge.joinValues(s),received:t.parsedType,code:J.invalid_type}),we}if(this._cache||(this._cache=new Set(Ge.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let s=Ge.objectValues(r);return se(t,{received:t.data,code:J.invalid_enum_value,options:s}),we}return Ct(e.data)}get enum(){return this._def.values}};ks.create=(a,e)=>new ks({values:a,typeName:Pe.ZodNativeEnum,...$e(e)});var Ia=class extends Ne{unwrap(){return this._def.type}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==le.promise&&r.common.async===!1)return se(r,{code:J.invalid_type,expected:le.promise,received:r.parsedType}),we;let t=r.parsedType===le.promise?r.data:Promise.resolve(r.data);return Ct(t.then(s=>this._def.type.parseAsync(s,{path:r.path,errorMap:r.common.contextualErrorMap})))}};Ia.create=(a,e)=>new Ia({type:a,typeName:Pe.ZodPromise,...$e(e)});var Qt=class extends Ne{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Pe.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:r,ctx:t}=this._processInputParams(e),s=this._def.effect||null,i={addIssue:n=>{se(t,n),n.fatal?r.abort():r.dirty()},get path(){return t.path}};if(i.addIssue=i.addIssue.bind(i),s.type==="preprocess"){let n=s.transform(t.data,i);if(t.common.async)return Promise.resolve(n).then(async o=>{if(r.value==="aborted")return we;let l=await this._def.schema._parseAsync({data:o,path:t.path,parent:t});return l.status==="aborted"?we:l.status==="dirty"||r.value==="dirty"?Pn(l.value):l});{if(r.value==="aborted")return we;let o=this._def.schema._parseSync({data:n,path:t.path,parent:t});return o.status==="aborted"?we:o.status==="dirty"||r.value==="dirty"?Pn(o.value):o}}if(s.type==="refinement"){let n=o=>{let l=s.refinement(o,i);if(t.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(t.common.async===!1){let o=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});return o.status==="aborted"?we:(o.status==="dirty"&&r.dirty(),n(o.value),{status:r.value,value:o.value})}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then(o=>o.status==="aborted"?we:(o.status==="dirty"&&r.dirty(),n(o.value).then(()=>({status:r.value,value:o.value}))))}if(s.type==="transform")if(t.common.async===!1){let n=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});if(!ys(n))return we;let o=s.transform(n.value,i);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:o}}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then(n=>ys(n)?Promise.resolve(s.transform(n.value,i)).then(o=>({status:r.value,value:o})):we);Ge.assertNever(s)}};Qt.create=(a,e,r)=>new Qt({schema:a,typeName:Pe.ZodEffects,effect:e,...$e(r)});Qt.createWithPreprocess=(a,e,r)=>new Qt({schema:e,effect:{type:"preprocess",transform:a},typeName:Pe.ZodEffects,...$e(r)});var dr=class extends Ne{_parse(e){return this._getType(e)===le.undefined?Ct(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};dr.create=(a,e)=>new dr({innerType:a,typeName:Pe.ZodOptional,...$e(e)});var Hr=class extends Ne{_parse(e){return this._getType(e)===le.null?Ct(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Hr.create=(a,e)=>new Hr({innerType:a,typeName:Pe.ZodNullable,...$e(e)});var As=class extends Ne{_parse(e){let{ctx:r}=this._processInputParams(e),t=r.data;return r.parsedType===le.undefined&&(t=this._def.defaultValue()),this._def.innerType._parse({data:t,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};As.create=(a,e)=>new As({innerType:a,typeName:Pe.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...$e(e)});var Is=class extends Ne{_parse(e){let{ctx:r}=this._processInputParams(e),t={...r,common:{...r.common,issues:[]}},s=this._def.innerType._parse({data:t.data,path:t.path,parent:{...t}});return Ii(s)?s.then(i=>({status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new Xt(t.common.issues)},input:t.data})})):{status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new Xt(t.common.issues)},input:t.data})}}removeCatch(){return this._def.innerType}};Is.create=(a,e)=>new Is({innerType:a,typeName:Pe.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...$e(e)});var An=class extends Ne{_parse(e){if(this._getType(e)!==le.nan){let t=this._getOrReturnCtx(e);return se(t,{code:J.invalid_type,expected:le.nan,received:t.parsedType}),we}return{status:"valid",value:e.data}}};An.create=a=>new An({typeName:Pe.ZodNaN,...$e(a)});var Z5=Symbol("zod_brand"),Ni=class extends Ne{_parse(e){let{ctx:r}=this._processInputParams(e),t=r.data;return this._def.type._parse({data:t,path:r.path,parent:r})}unwrap(){return this._def.type}},ji=class a extends Ne{_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.common.async)return(async()=>{let i=await this._def.in._parseAsync({data:t.data,path:t.path,parent:t});return i.status==="aborted"?we:i.status==="dirty"?(r.dirty(),Pn(i.value)):this._def.out._parseAsync({data:i.value,path:t.path,parent:t})})();{let s=this._def.in._parseSync({data:t.data,path:t.path,parent:t});return s.status==="aborted"?we:s.status==="dirty"?(r.dirty(),{status:"dirty",value:s.value}):this._def.out._parseSync({data:s.value,path:t.path,parent:t})}}static create(e,r){return new a({in:e,out:r,typeName:Pe.ZodPipeline})}},Ns=class extends Ne{_parse(e){let r=this._def.innerType._parse(e),t=s=>(ys(s)&&(s.value=Object.freeze(s.value)),s);return Ii(r)?r.then(s=>t(s)):t(r)}unwrap(){return this._def.innerType}};Ns.create=(a,e)=>new Ns({innerType:a,typeName:Pe.ZodReadonly,...$e(e)});function n1(a,e){let r=typeof a=="function"?a(e):typeof a=="string"?{message:a}:a;return typeof r=="string"?{message:r}:r}function I1(a,e={},r){return a?Aa.create().superRefine((t,s)=>{let i=a(t);if(i instanceof Promise)return i.then(n=>{if(!n){let o=n1(e,t),l=o.fatal??r??!0;s.addIssue({code:"custom",...o,fatal:l})}});if(!i){let n=n1(e,t),o=n.fatal??r??!0;s.addIssue({code:"custom",...n,fatal:o})}}):Aa.create()}var K5={object:zt.lazycreate},Pe;(function(a){a.ZodString="ZodString",a.ZodNumber="ZodNumber",a.ZodNaN="ZodNaN",a.ZodBigInt="ZodBigInt",a.ZodBoolean="ZodBoolean",a.ZodDate="ZodDate",a.ZodSymbol="ZodSymbol",a.ZodUndefined="ZodUndefined",a.ZodNull="ZodNull",a.ZodAny="ZodAny",a.ZodUnknown="ZodUnknown",a.ZodNever="ZodNever",a.ZodVoid="ZodVoid",a.ZodArray="ZodArray",a.ZodObject="ZodObject",a.ZodUnion="ZodUnion",a.ZodDiscriminatedUnion="ZodDiscriminatedUnion",a.ZodIntersection="ZodIntersection",a.ZodTuple="ZodTuple",a.ZodRecord="ZodRecord",a.ZodMap="ZodMap",a.ZodSet="ZodSet",a.ZodFunction="ZodFunction",a.ZodLazy="ZodLazy",a.ZodLiteral="ZodLiteral",a.ZodEnum="ZodEnum",a.ZodEffects="ZodEffects",a.ZodNativeEnum="ZodNativeEnum",a.ZodOptional="ZodOptional",a.ZodNullable="ZodNullable",a.ZodDefault="ZodDefault",a.ZodCatch="ZodCatch",a.ZodPromise="ZodPromise",a.ZodBranded="ZodBranded",a.ZodPipeline="ZodPipeline",a.ZodReadonly="ZodReadonly"})(Pe||(Pe={}));var X5=(a,e={message:`Input not instance of ${a.name}`})=>I1(r=>r instanceof a,e),N1=ka.create,j1=bs.create,Q5=An.create,Y5=xs.create,D1=_s.create,J5=Es.create,e6=Rn.create,t6=ws.create,r6=Ss.create,a6=Aa.create,s6=na.create,n6=Rr.create,i6=On.create,o6=ia.create,c6=zt.create,l6=zt.strictCreate,u6=Ps.create,p6=Kc.create,d6=Ts.create,f6=zr.create,m6=Xc.create,h6=Cn.create,v6=kn.create,g6=Qc.create,y6=Rs.create,b6=Os.create,x6=Cs.create,_6=ks.create,E6=Ia.create,i1=Qt.create,w6=dr.create,S6=Hr.create,P6=Qt.createWithPreprocess,T6=ji.create,R6=()=>N1().optional(),O6=()=>j1().optional(),C6=()=>D1().optional(),k6={string:a=>ka.create({...a,coerce:!0}),number:a=>bs.create({...a,coerce:!0}),boolean:a=>_s.create({...a,coerce:!0}),bigint:a=>xs.create({...a,coerce:!0}),date:a=>Es.create({...a,coerce:!0})},A6=we;var tl="2.0",$1=w.union([w.string(),w.number().int()]),M1=w.string(),I6=w.object({progressToken:w.optional($1)}).passthrough(),mr=w.object({_meta:w.optional(I6)}).passthrough(),Ht=w.object({method:w.string(),params:w.optional(mr)}),$i=w.object({_meta:w.optional(w.object({}).passthrough())}).passthrough(),Br=w.object({method:w.string(),params:w.optional($i)}),hr=w.object({_meta:w.optional(w.object({}).passthrough())}).passthrough(),rl=w.union([w.string(),w.number().int()]),N6=w.object({jsonrpc:w.literal(tl),id:rl}).merge(Ht).strict();var j6=w.object({jsonrpc:w.literal(tl)}).merge(Br).strict();var D6=w.object({jsonrpc:w.literal(tl),id:rl,result:hr}).strict();var o1;(function(a){a[a.ConnectionClosed=-32e3]="ConnectionClosed",a[a.RequestTimeout=-32001]="RequestTimeout",a[a.ParseError=-32700]="ParseError",a[a.InvalidRequest=-32600]="InvalidRequest",a[a.MethodNotFound=-32601]="MethodNotFound",a[a.InvalidParams=-32602]="InvalidParams",a[a.InternalError=-32603]="InternalError"})(o1||(o1={}));var $6=w.object({jsonrpc:w.literal(tl),id:rl,error:w.object({code:w.number().int(),message:w.string(),data:w.optional(w.unknown())})}).strict();var eU=w.union([N6,j6,D6,$6]),L1=hr.strict(),q1=Br.extend({method:w.literal("notifications/cancelled"),params:$i.extend({requestId:rl,reason:w.string().optional()})}),Mi=w.object({name:w.string(),title:w.optional(w.string())}).passthrough(),F1=Mi.extend({version:w.string()}),M6=w.object({experimental:w.optional(w.object({}).passthrough()),sampling:w.optional(w.object({}).passthrough()),elicitation:w.optional(w.object({}).passthrough()),roots:w.optional(w.object({listChanged:w.optional(w.boolean())}).passthrough())}).passthrough(),L6=Ht.extend({method:w.literal("initialize"),params:mr.extend({protocolVersion:w.string(),capabilities:M6,clientInfo:F1})}),q6=w.object({experimental:w.optional(w.object({}).passthrough()),logging:w.optional(w.object({}).passthrough()),completions:w.optional(w.object({}).passthrough()),prompts:w.optional(w.object({listChanged:w.optional(w.boolean())}).passthrough()),resources:w.optional(w.object({subscribe:w.optional(w.boolean()),listChanged:w.optional(w.boolean())}).passthrough()),tools:w.optional(w.object({listChanged:w.optional(w.boolean())}).passthrough())}).passthrough(),F6=hr.extend({protocolVersion:w.string(),capabilities:q6,serverInfo:F1,instructions:w.optional(w.string())}),U6=Br.extend({method:w.literal("notifications/initialized")}),U1=Ht.extend({method:w.literal("ping")}),z6=w.object({progress:w.number(),total:w.optional(w.number()),message:w.optional(w.string())}).passthrough(),z1=Br.extend({method:w.literal("notifications/progress"),params:$i.merge(z6).extend({progressToken:$1})}),al=Ht.extend({params:mr.extend({cursor:w.optional(M1)}).optional()}),sl=hr.extend({nextCursor:w.optional(M1)}),H1=w.object({uri:w.string(),mimeType:w.optional(w.string()),_meta:w.optional(w.object({}).passthrough())}).passthrough(),B1=H1.extend({text:w.string()}),Hd=w.string().refine(a=>{try{return atob(a),!0}catch{return!1}},{message:"Invalid Base64 string"}),V1=H1.extend({blob:Hd}),G1=Mi.extend({uri:w.string(),description:w.optional(w.string()),mimeType:w.optional(w.string()),_meta:w.optional(w.object({}).passthrough())}),H6=Mi.extend({uriTemplate:w.string(),description:w.optional(w.string()),mimeType:w.optional(w.string()),_meta:w.optional(w.object({}).passthrough())}),B6=al.extend({method:w.literal("resources/list")}),V6=sl.extend({resources:w.array(G1)}),G6=al.extend({method:w.literal("resources/templates/list")}),W6=sl.extend({resourceTemplates:w.array(H6)}),Z6=Ht.extend({method:w.literal("resources/read"),params:mr.extend({uri:w.string()})}),K6=hr.extend({contents:w.array(w.union([B1,V1]))}),X6=Br.extend({method:w.literal("notifications/resources/list_changed")}),Q6=Ht.extend({method:w.literal("resources/subscribe"),params:mr.extend({uri:w.string()})}),Y6=Ht.extend({method:w.literal("resources/unsubscribe"),params:mr.extend({uri:w.string()})}),J6=Br.extend({method:w.literal("notifications/resources/updated"),params:$i.extend({uri:w.string()})}),e$=w.object({name:w.string(),description:w.optional(w.string()),required:w.optional(w.boolean())}).passthrough(),t$=Mi.extend({description:w.optional(w.string()),arguments:w.optional(w.array(e$)),_meta:w.optional(w.object({}).passthrough())}),r$=al.extend({method:w.literal("prompts/list")}),a$=sl.extend({prompts:w.array(t$)}),s$=Ht.extend({method:w.literal("prompts/get"),params:mr.extend({name:w.string(),arguments:w.optional(w.record(w.string()))})}),Bd=w.object({type:w.literal("text"),text:w.string(),_meta:w.optional(w.object({}).passthrough())}).passthrough(),Vd=w.object({type:w.literal("image"),data:Hd,mimeType:w.string(),_meta:w.optional(w.object({}).passthrough())}).passthrough(),Gd=w.object({type:w.literal("audio"),data:Hd,mimeType:w.string(),_meta:w.optional(w.object({}).passthrough())}).passthrough(),n$=w.object({type:w.literal("resource"),resource:w.union([B1,V1]),_meta:w.optional(w.object({}).passthrough())}).passthrough(),i$=G1.extend({type:w.literal("resource_link")}),W1=w.union([Bd,Vd,Gd,i$,n$]),o$=w.object({role:w.enum(["user","assistant"]),content:W1}).passthrough(),c$=hr.extend({description:w.optional(w.string()),messages:w.array(o$)}),l$=Br.extend({method:w.literal("notifications/prompts/list_changed")}),u$=w.object({title:w.optional(w.string()),readOnlyHint:w.optional(w.boolean()),destructiveHint:w.optional(w.boolean()),idempotentHint:w.optional(w.boolean()),openWorldHint:w.optional(w.boolean())}).passthrough(),p$=Mi.extend({description:w.optional(w.string()),inputSchema:w.object({type:w.literal("object"),properties:w.optional(w.object({}).passthrough()),required:w.optional(w.array(w.string()))}).passthrough(),outputSchema:w.optional(w.object({type:w.literal("object"),properties:w.optional(w.object({}).passthrough()),required:w.optional(w.array(w.string()))}).passthrough()),annotations:w.optional(u$),_meta:w.optional(w.object({}).passthrough())}),d$=al.extend({method:w.literal("tools/list")}),f$=sl.extend({tools:w.array(p$)}),Z1=hr.extend({content:w.array(W1).default([]),structuredContent:w.object({}).passthrough().optional(),isError:w.optional(w.boolean())}),tU=Z1.or(hr.extend({toolResult:w.unknown()})),m$=Ht.extend({method:w.literal("tools/call"),params:mr.extend({name:w.string(),arguments:w.optional(w.record(w.unknown()))})}),h$=Br.extend({method:w.literal("notifications/tools/list_changed")}),K1=w.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),v$=Ht.extend({method:w.literal("logging/setLevel"),params:mr.extend({level:K1})}),g$=Br.extend({method:w.literal("notifications/message"),params:$i.extend({level:K1,logger:w.optional(w.string()),data:w.unknown()})}),y$=w.object({name:w.string().optional()}).passthrough(),b$=w.object({hints:w.optional(w.array(y$)),costPriority:w.optional(w.number().min(0).max(1)),speedPriority:w.optional(w.number().min(0).max(1)),intelligencePriority:w.optional(w.number().min(0).max(1))}).passthrough(),x$=w.object({role:w.enum(["user","assistant"]),content:w.union([Bd,Vd,Gd])}).passthrough(),_$=Ht.extend({method:w.literal("sampling/createMessage"),params:mr.extend({messages:w.array(x$),systemPrompt:w.optional(w.string()),includeContext:w.optional(w.enum(["none","thisServer","allServers"])),temperature:w.optional(w.number()),maxTokens:w.number().int(),stopSequences:w.optional(w.array(w.string())),metadata:w.optional(w.object({}).passthrough()),modelPreferences:w.optional(b$)})}),E$=hr.extend({model:w.string(),stopReason:w.optional(w.enum(["endTurn","stopSequence","maxTokens"]).or(w.string())),role:w.enum(["user","assistant"]),content:w.discriminatedUnion("type",[Bd,Vd,Gd])}),w$=w.object({type:w.literal("boolean"),title:w.optional(w.string()),description:w.optional(w.string()),default:w.optional(w.boolean())}).passthrough(),S$=w.object({type:w.literal("string"),title:w.optional(w.string()),description:w.optional(w.string()),minLength:w.optional(w.number()),maxLength:w.optional(w.number()),format:w.optional(w.enum(["email","uri","date","date-time"]))}).passthrough(),P$=w.object({type:w.enum(["number","integer"]),title:w.optional(w.string()),description:w.optional(w.string()),minimum:w.optional(w.number()),maximum:w.optional(w.number())}).passthrough(),T$=w.object({type:w.literal("string"),title:w.optional(w.string()),description:w.optional(w.string()),enum:w.array(w.string()),enumNames:w.optional(w.array(w.string()))}).passthrough(),R$=w.union([w$,S$,P$,T$]),O$=Ht.extend({method:w.literal("elicitation/create"),params:mr.extend({message:w.string(),requestedSchema:w.object({type:w.literal("object"),properties:w.record(w.string(),R$),required:w.optional(w.array(w.string()))}).passthrough()})}),C$=hr.extend({action:w.enum(["accept","decline","cancel"]),content:w.optional(w.record(w.string(),w.unknown()))}),k$=w.object({type:w.literal("ref/resource"),uri:w.string()}).passthrough(),A$=w.object({type:w.literal("ref/prompt"),name:w.string()}).passthrough(),I$=Ht.extend({method:w.literal("completion/complete"),params:mr.extend({ref:w.union([A$,k$]),argument:w.object({name:w.string(),value:w.string()}).passthrough(),context:w.optional(w.object({arguments:w.optional(w.record(w.string(),w.string()))}))})}),N$=hr.extend({completion:w.object({values:w.array(w.string()).max(100),total:w.optional(w.number().int()),hasMore:w.optional(w.boolean())}).passthrough()}),j$=w.object({uri:w.string().startsWith("file://"),name:w.optional(w.string()),_meta:w.optional(w.object({}).passthrough())}).passthrough(),D$=Ht.extend({method:w.literal("roots/list")}),$$=hr.extend({roots:w.array(j$)}),M$=Br.extend({method:w.literal("notifications/roots/list_changed")}),rU=w.union([U1,L6,I$,v$,s$,r$,B6,G6,Z6,Q6,Y6,m$,d$]),aU=w.union([q1,z1,U6,M$]),sU=w.union([L1,E$,C$,$$]),nU=w.union([U1,_$,O$,D$]),iU=w.union([q1,z1,g$,J6,X6,h$,l$]),oU=w.union([L1,F6,N$,c$,a$,V6,W6,K6,Z1,f$]);var cU=qj(x9(),1);var lU=Symbol("Let zodToJsonSchema decide on which parser to use");var uU=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");var Md;(function(a){a.Completable="McpCompletable"})(Md||(Md={}));var Yc=class extends Ne{_parse(e){let{ctx:r}=this._processInputParams(e),t=r.data;return this._def.type._parse({data:t,path:r.path,parent:r})}unwrap(){return this._def.type}};Yc.create=(a,e)=>new Yc({type:a,typeName:Md.Completable,complete:e.complete,...L$(e)});function L$(a){if(!a)return{};let{errorMap:e,invalid_type_error:r,required_error:t,description:s}=a;if(e&&(r||t))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:s}:{errorMap:(n,o)=>{var l,c;let{message:u}=a;return n.code==="invalid_enum_value"?{message:u??o.defaultError}:typeof o.data>"u"?{message:(l=u??t)!==null&&l!==void 0?l:o.defaultError}:n.code!=="invalid_type"?{message:o.defaultError}:{message:(c=u??r)!==null&&c!==void 0?c:o.defaultError}},description:s}}function X1({prompt:a,options:e}){let{systemPrompt:r,settingSources:t,...s}=e??{},i,n;r===void 0?i="":typeof r=="string"?i=r:r.type==="preset"&&(n=r.append);let o=s.pathToClaudeCodeExecutable;if(!o){let xe=(0,d1.fileURLToPath)(q$.url),Ce=(0,Rd.join)(xe,"..");o=(0,Rd.join)(Ce,"cli.js")}process.env.CLAUDE_AGENT_SDK_VERSION="0.1.27";let{abortController:l=m1(),additionalDirectories:c=[],agents:u,allowedTools:p=[],canUseTool:m,continue:f,cwd:h,disallowedTools:d=[],env:v,executable:x=y1()?"bun":"node",executableArgs:b=[],extraArgs:E={},fallbackModel:O,forkSession:C,hooks:P,includePartialMessages:A,maxThinkingTokens:$,maxTurns:I,mcpServers:q,model:M,permissionMode:k="default",allowDangerouslySkipPermissions:T=!1,permissionPromptToolName:N,plugins:z,resume:B,resumeSessionAt:G,stderr:te,strictMcpConfig:Q}=s,V=v;if(V||(V={...process.env}),V.CLAUDE_CODE_ENTRYPOINT||(V.CLAUDE_CODE_ENTRYPOINT="sdk-ts"),!o)throw new Error("pathToClaudeCodeExecutable is required");let re={},ce=new Map;if(q)for(let[xe,Ce]of Object.entries(q))Ce.type==="sdk"&&"instance"in Ce?(ce.set(xe,Ce.instance),re[xe]={type:"sdk",name:xe}):re[xe]=Ce;let Be=typeof a=="string",be=new Od({abortController:l,additionalDirectories:c,agents:u,cwd:h,executable:x,executableArgs:b,extraArgs:E,pathToClaudeCodeExecutable:o,env:V,forkSession:C,stderr:te,customSystemPrompt:i,appendSystemPrompt:n,maxThinkingTokens:$,maxTurns:I,model:M,fallbackModel:O,permissionMode:k,allowDangerouslySkipPermissions:T,permissionPromptToolName:N,continueConversation:f,resume:B,resumeSessionAt:G,settingSources:t??[],allowedTools:p,disallowedTools:d,mcpServers:re,strictMcpConfig:Q,canUseTool:!!m,hooks:!!P,includePartialMessages:A,plugins:z}),Me=new Id(be,Be,m,P,l,ce);return typeof a=="string"?be.write(JSON.stringify({type:"user",session_id:"",message:{role:"user",content:[{type:"text",text:a}]},parent_tool_use_id:null})+` -`):Me.streamInput(a),Me}var nl=class{dbManager;sessionManager;constructor(e,r){this.dbManager=e,this.sessionManager=r}async startSession(e,r){try{let t=this.findClaudeExecutable(),s=this.getModelId(),i=["Bash","Read","Write","Edit","Grep","Glob","WebFetch","WebSearch","Task","NotebookEdit","AskUserQuestion","TodoWrite"],n=this.createMessageGenerator(e),o=X1({prompt:n,options:{model:s,disallowedTools:i,abortController:e.abortController,pathToClaudeCodeExecutable:t}});for await(let c of o){if(c.type==="assistant"){let u=c.message.content,p=Array.isArray(u)?u.filter(v=>v.type==="text").map(v=>v.text).join(` -`):typeof u=="string"?u:"",m=p.length,f=e.cumulativeInputTokens+e.cumulativeOutputTokens,h=c.message.usage;h&&(e.cumulativeInputTokens+=h.input_tokens||0,e.cumulativeOutputTokens+=h.output_tokens||0,h.cache_creation_input_tokens&&(e.cumulativeInputTokens+=h.cache_creation_input_tokens),H.debug("SDK","Token usage captured",{sessionId:e.sessionDbId,inputTokens:h.input_tokens,outputTokens:h.output_tokens,cacheCreation:h.cache_creation_input_tokens||0,cacheRead:h.cache_read_input_tokens||0,cumulativeInput:e.cumulativeInputTokens,cumulativeOutput:e.cumulativeOutputTokens}));let d=e.cumulativeInputTokens+e.cumulativeOutputTokens-f;if(m>0){let v=m>100?p.substring(0,100)+"...":p;H.dataOut("SDK",`Response received (${m} chars)`,{sessionId:e.sessionDbId,promptNumber:e.lastPromptNumber},v),await this.processSDKResponse(e,p,r,d)}}c.type==="result"&&c.subtype}let l=Date.now()-e.startTime;H.success("SDK","Agent completed",{sessionId:e.sessionDbId,duration:`${(l/1e3).toFixed(1)}s`}),this.dbManager.getSessionStore().markSessionCompleted(e.sessionDbId)}catch(t){throw t.name==="AbortError"?H.warn("SDK","Agent aborted",{sessionId:e.sessionDbId}):H.failure("SDK","Agent error",{sessionDbId:e.sessionDbId},t),t}finally{this.sessionManager.deleteSession(e.sessionDbId).catch(()=>{})}}async*createMessageGenerator(e){yield{type:"user",message:{role:"user",content:e.lastPromptNumber===1?BE(e.project,e.claudeSessionId,e.userPrompt):WE(e.userPrompt,e.lastPromptNumber,e.claudeSessionId)},session_id:e.claudeSessionId,parent_tool_use_id:null,isSynthetic:!0};for await(let r of this.sessionManager.getMessageIterator(e.sessionDbId))r.type==="observation"?(r.prompt_number!==void 0&&(e.lastPromptNumber=r.prompt_number),yield{type:"user",message:{role:"user",content:VE({id:0,tool_name:r.tool_name,tool_input:JSON.stringify(r.tool_input),tool_output:JSON.stringify(r.tool_response),created_at_epoch:Date.now(),cwd:r.cwd})},session_id:e.claudeSessionId,parent_tool_use_id:null,isSynthetic:!0}):r.type==="summarize"&&(yield{type:"user",message:{role:"user",content:GE({id:e.sessionDbId,sdk_session_id:e.sdkSessionId,project:e.project,user_prompt:e.userPrompt,last_user_message:r.last_user_message||"",last_assistant_message:r.last_assistant_message||""})},session_id:e.claudeSessionId,parent_tool_use_id:null,isSynthetic:!0})}async processSDKResponse(e,r,t,s){let i=zE(r,e.claudeSessionId);for(let o of i){let{id:l,createdAtEpoch:c}=this.dbManager.getSessionStore().storeObservation(e.claudeSessionId,e.project,o,e.lastPromptNumber,s);H.info("SDK","Observation saved",{sessionId:e.sessionDbId,obsId:l,type:o.type,title:o.title||Ut("obs.title is null",{obsId:l,type:o.type},"(untitled)"),filesRead:o.files_read?.length??(Ut("obs.files_read is null/undefined",{obsId:l}),0),filesModified:o.files_modified?.length??(Ut("obs.files_modified is null/undefined",{obsId:l}),0),concepts:o.concepts?.length??(Ut("obs.concepts is null/undefined",{obsId:l}),0)});let u=Date.now(),p=o.type,m=o.title||Ut("obs.title is null for Chroma sync",{obsId:l,type:o.type},"(untitled)");this.dbManager.getChromaSync().syncObservation(l,e.claudeSessionId,e.project,o,e.lastPromptNumber,c,s).then(()=>{let f=Date.now()-u;H.debug("CHROMA","Observation synced",{obsId:l,duration:`${f}ms`,type:p,title:m})}).catch(f=>{H.error("CHROMA","Failed to sync observation",{obsId:l,sessionId:e.sessionDbId,type:p,title:m},f)}),t&&t.sseBroadcaster&&t.sseBroadcaster.broadcast({type:"new_observation",observation:{id:l,sdk_session_id:e.sdkSessionId,session_id:e.claudeSessionId,type:o.type,title:o.title,subtitle:o.subtitle,text:o.text||null,narrative:o.narrative||null,facts:JSON.stringify(o.facts||[]),concepts:JSON.stringify(o.concepts||[]),files_read:JSON.stringify(o.files||[]),files_modified:JSON.stringify([]),project:e.project,prompt_number:e.lastPromptNumber,created_at_epoch:c}})}let n=HE(r,e.sessionDbId);if(n){let{id:o,createdAtEpoch:l}=this.dbManager.getSessionStore().storeSummary(e.claudeSessionId,e.project,n,e.lastPromptNumber,s);H.info("SDK","Summary saved",{sessionId:e.sessionDbId,summaryId:o,request:n.request||Ut("summary.request is null",{summaryId:o},"(no request)"),hasCompleted:!!n.completed,hasNextSteps:!!n.next_steps});let c=Date.now(),u=n.request||Ut("summary.request is null for Chroma sync",{summaryId:o},"(no request)");this.dbManager.getChromaSync().syncSummary(o,e.claudeSessionId,e.project,n,e.lastPromptNumber,l,s).then(()=>{let p=Date.now()-c;H.debug("CHROMA","Summary synced",{summaryId:o,duration:`${p}ms`,request:u})}).catch(p=>{H.error("CHROMA","Failed to sync summary",{summaryId:o,sessionId:e.sessionDbId,request:u},p)}),t&&t.sseBroadcaster&&t.sseBroadcaster.broadcast({type:"new_summary",summary:{id:o,session_id:e.claudeSessionId,request:n.request,investigated:n.investigated,learned:n.learned,completed:n.completed,next_steps:n.next_steps,notes:n.notes,project:e.project,prompt_number:e.lastPromptNumber,created_at_epoch:l}})}t&&typeof t.broadcastProcessingStatus=="function"&&t.broadcastProcessingStatus()}findClaudeExecutable(){let e=process.env.CLAUDE_CODE_PATH||(0,Q1.execSync)(process.platform==="win32"?"where claude":"which claude",{encoding:"utf8",windowsHide:!0}).trim().split(` -`)[0].trim();if(!e)throw new Error("Claude executable not found in PATH");return e}getModelId(){try{let e=J1.default.join((0,Y1.homedir)(),".claude-mem","settings.json");if((0,il.existsSync)(e)){let t=JSON.parse((0,il.readFileSync)(e,"utf-8")).env?.CLAUDE_MEM_MODEL;if(t)return t}}catch{}return process.env.CLAUDE_MEM_MODEL||"claude-haiku-4-5"}};var ol=class{dbManager;constructor(e){this.dbManager=e}stripProjectPath(e,r){let t=`/${r}/`,s=e.indexOf(t);return s!==-1?e.substring(s+t.length):e}stripProjectPaths(e,r){if(!e)return e;try{let s=JSON.parse(e).map(i=>this.stripProjectPath(i,r));return JSON.stringify(s)}catch{return e}}sanitizeObservation(e){return{...e,files_read:this.stripProjectPaths(e.files_read,e.project),files_modified:this.stripProjectPaths(e.files_modified,e.project)}}getObservations(e,r,t){let s=this.paginate("observations","id, sdk_session_id, project, type, title, subtitle, narrative, text, facts, concepts, files_read, files_modified, prompt_number, created_at, created_at_epoch",e,r,t);return{...s,items:s.items.map(i=>this.sanitizeObservation(i))}}getSummaries(e,r,t){let s=this.dbManager.getSessionStore().db,i=` +`))})}async supportedCommands(){return(await this.initialization).commands}async supportedModels(){return(await this.initialization).models}async mcpServerStatus(){return(await this.request({subtype:"mcp_status"})).response.mcpServers}async accountInfo(){return(await this.initialization).account}async streamInput(e){na("[Query.streamInput] Starting to process input stream"),na(`[Query.streamInput] this.sdkMcpTransports.size = ${this.sdkMcpTransports.size}`);try{let r=0;for await(let t of e){if(r++,na(`[Query.streamInput] Processing message ${r}: ${t.type}`),this.abortController?.signal.aborted)break;await Promise.resolve(this.transport.write(JSON.stringify(t)+` +`))}if(na(`[Query.streamInput] Finished processing ${r} messages from input stream`),na(`[Query.streamInput] About to check MCP servers. this.sdkMcpTransports.size = ${this.sdkMcpTransports.size}`),this.sdkMcpTransports.size>0&&this.firstResultReceivedPromise){na("[Query.streamInput] Entering Promise.race to wait for result");let t=1e4,s;await Promise.race([this.firstResultReceivedPromise.then(()=>{na("[Query.streamInput] Received first result, closing input stream"),s&&clearTimeout(s)}),new Promise(i=>{s=setTimeout(()=>{na("[Query.streamInput] Timed out waiting for first result, closing input stream"),i()},t)})]),s&&clearTimeout(s)}na("[Query] Calling transport.endInput() to close stdin to CLI process"),this.transport.endInput()}catch(r){if(!(r instanceof _s))throw r}}handleHookCallbacks(e,r,t,s){let i=this.hookCallbacks.get(e);if(!i)throw new Error(`No hook callback found for ID: ${e}`);return i(r,t,{signal:s})}sendMcpServerMessageToCli(e,r){if("id"in r&&r.id!==null&&r.id!==void 0){let t=`${e}:${r.id}`,s=this.pendingMcpResponses.get(t);if(s){s.resolve(r),this.pendingMcpResponses.delete(t);return}}throw new Error("No pending request found")}handleMcpControlRequest(e,r,t){let s="id"in r.message?r.message.id:null,i=`${e}:${s}`;return new Promise((n,o)=>{let l=null,c=()=>{l&&clearTimeout(l),this.pendingMcpResponses.delete(i)},u=f=>{c(),n(f)},p=f=>{c(),o(f)};if(this.pendingMcpResponses.set(i,{resolve:u,reject:p}),t.onmessage)t.onmessage(r.message);else{c(),o(new Error("No message handler registered"));return}l=setTimeout(()=>{this.pendingMcpResponses.has(i)&&(c(),o(new Error("Request timeout")))},3e4)})}},E={};Ej(E,{void:()=>BM,util:()=>Qe,unknown:()=>UM,union:()=>WM,undefined:()=>LM,tuple:()=>QM,transformer:()=>CE,symbol:()=>MM,string:()=>aw,strictObject:()=>GM,setErrorMap:()=>cM,set:()=>YM,record:()=>KM,quotelessJson:()=>iM,promise:()=>n6,preprocess:()=>c6,pipeline:()=>l6,ostring:()=>u6,optional:()=>i6,onumber:()=>p6,oboolean:()=>d6,objectUtil:()=>af,object:()=>VM,number:()=>sw,nullable:()=>o6,null:()=>qM,never:()=>zM,nativeEnum:()=>s6,nan:()=>DM,map:()=>JM,makeIssue:()=>cl,literal:()=>r6,lazy:()=>t6,late:()=>AM,isValid:()=>Es,isDirty:()=>nf,isAsync:()=>Vi,isAborted:()=>sf,intersection:()=>XM,instanceof:()=>NM,getParsedType:()=>oa,getErrorMap:()=>ol,function:()=>e6,enum:()=>a6,effect:()=>CE,discriminatedUnion:()=>ZM,defaultErrorMap:()=>$n,datetimeRegex:()=>ew,date:()=>jM,custom:()=>rw,coerce:()=>f6,boolean:()=>nw,bigint:()=>$M,array:()=>HM,any:()=>FM,addIssueToContext:()=>oe,ZodVoid:()=>Mn,ZodUnknown:()=>la,ZodUnion:()=>Cs,ZodUndefined:()=>Os,ZodType:()=>Me,ZodTuple:()=>Gr,ZodTransformer:()=>Jt,ZodSymbol:()=>jn,ZodString:()=>$a,ZodSet:()=>qn,ZodSchema:()=>Me,ZodRecord:()=>ul,ZodReadonly:()=>Ls,ZodPromise:()=>Ma,ZodPipeline:()=>Wi,ZodParsedType:()=>de,ZodOptional:()=>fr,ZodObject:()=>Bt,ZodNumber:()=>ws,ZodNullable:()=>Wr,ZodNull:()=>ks,ZodNever:()=>kr,ZodNativeEnum:()=>$s,ZodNaN:()=>Fn,ZodMap:()=>Ln,ZodLiteral:()=>Ns,ZodLazy:()=>As,ZodIssueCode:()=>te,ZodIntersection:()=>Is,ZodFunction:()=>pl,ZodFirstPartyTypeKind:()=>ke,ZodError:()=>Kt,ZodEnum:()=>Ds,ZodEffects:()=>Jt,ZodDiscriminatedUnion:()=>ll,ZodDefault:()=>js,ZodDate:()=>Ps,ZodCatch:()=>Ms,ZodBranded:()=>Gi,ZodBoolean:()=>Rs,ZodBigInt:()=>Ts,ZodArray:()=>ua,ZodAny:()=>ja,Schema:()=>Me,ParseStatus:()=>kt,OK:()=>At,NEVER:()=>m6,INVALID:()=>Pe,EMPTY_PATH:()=>lM,DIRTY:()=>Dn,BRAND:()=>IM});var Qe;(function(a){a.assertEqual=s=>{};function e(s){}a.assertIs=e;function r(s){throw new Error}a.assertNever=r,a.arrayToEnum=s=>{let i={};for(let n of s)i[n]=n;return i},a.getValidEnumValues=s=>{let i=a.objectKeys(s).filter(o=>typeof s[s[o]]!="number"),n={};for(let o of i)n[o]=s[o];return a.objectValues(n)},a.objectValues=s=>a.objectKeys(s).map(function(i){return s[i]}),a.objectKeys=typeof Object.keys=="function"?s=>Object.keys(s):s=>{let i=[];for(let n in s)Object.prototype.hasOwnProperty.call(s,n)&&i.push(n);return i},a.find=(s,i)=>{for(let n of s)if(i(n))return n},a.isInteger=typeof Number.isInteger=="function"?s=>Number.isInteger(s):s=>typeof s=="number"&&Number.isFinite(s)&&Math.floor(s)===s;function t(s,i=" | "){return s.map(n=>typeof n=="string"?`'${n}'`:n).join(i)}a.joinValues=t,a.jsonStringifyReplacer=(s,i)=>typeof i=="bigint"?i.toString():i})(Qe||(Qe={}));var af;(function(a){a.mergeShapes=(e,r)=>({...e,...r})})(af||(af={}));var de=Qe.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),oa=a=>{switch(typeof a){case"undefined":return de.undefined;case"string":return de.string;case"number":return Number.isNaN(a)?de.nan:de.number;case"boolean":return de.boolean;case"function":return de.function;case"bigint":return de.bigint;case"symbol":return de.symbol;case"object":return Array.isArray(a)?de.array:a===null?de.null:a.then&&typeof a.then=="function"&&a.catch&&typeof a.catch=="function"?de.promise:typeof Map<"u"&&a instanceof Map?de.map:typeof Set<"u"&&a instanceof Set?de.set:typeof Date<"u"&&a instanceof Date?de.date:de.object;default:return de.unknown}},te=Qe.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),iM=a=>JSON.stringify(a,null,2).replace(/"([^"]+)":/g,"$1:"),Kt=class a extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=t=>{this.issues=[...this.issues,t]},this.addIssues=(t=[])=>{this.issues=[...this.issues,...t]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=e}format(e){let r=e||function(i){return i.message},t={_errors:[]},s=i=>{for(let n of i.issues)if(n.code==="invalid_union")n.unionErrors.map(s);else if(n.code==="invalid_return_type")s(n.returnTypeError);else if(n.code==="invalid_arguments")s(n.argumentsError);else if(n.path.length===0)t._errors.push(r(n));else{let o=t,l=0;for(;lr.message){let r={},t=[];for(let s of this.issues)if(s.path.length>0){let i=s.path[0];r[i]=r[i]||[],r[i].push(e(s))}else t.push(e(s));return{formErrors:t,fieldErrors:r}}get formErrors(){return this.flatten()}};Kt.create=a=>new Kt(a);var oM=(a,e)=>{let r;switch(a.code){case te.invalid_type:a.received===de.undefined?r="Required":r=`Expected ${a.expected}, received ${a.received}`;break;case te.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(a.expected,Qe.jsonStringifyReplacer)}`;break;case te.unrecognized_keys:r=`Unrecognized key(s) in object: ${Qe.joinValues(a.keys,", ")}`;break;case te.invalid_union:r="Invalid input";break;case te.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${Qe.joinValues(a.options)}`;break;case te.invalid_enum_value:r=`Invalid enum value. Expected ${Qe.joinValues(a.options)}, received '${a.received}'`;break;case te.invalid_arguments:r="Invalid function arguments";break;case te.invalid_return_type:r="Invalid function return type";break;case te.invalid_date:r="Invalid date";break;case te.invalid_string:typeof a.validation=="object"?"includes"in a.validation?(r=`Invalid input: must include "${a.validation.includes}"`,typeof a.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${a.validation.position}`)):"startsWith"in a.validation?r=`Invalid input: must start with "${a.validation.startsWith}"`:"endsWith"in a.validation?r=`Invalid input: must end with "${a.validation.endsWith}"`:Qe.assertNever(a.validation):a.validation!=="regex"?r=`Invalid ${a.validation}`:r="Invalid";break;case te.too_small:a.type==="array"?r=`Array must contain ${a.exact?"exactly":a.inclusive?"at least":"more than"} ${a.minimum} element(s)`:a.type==="string"?r=`String must contain ${a.exact?"exactly":a.inclusive?"at least":"over"} ${a.minimum} character(s)`:a.type==="number"?r=`Number must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${a.minimum}`:a.type==="bigint"?r=`Number must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${a.minimum}`:a.type==="date"?r=`Date must be ${a.exact?"exactly equal to ":a.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(a.minimum))}`:r="Invalid input";break;case te.too_big:a.type==="array"?r=`Array must contain ${a.exact?"exactly":a.inclusive?"at most":"less than"} ${a.maximum} element(s)`:a.type==="string"?r=`String must contain ${a.exact?"exactly":a.inclusive?"at most":"under"} ${a.maximum} character(s)`:a.type==="number"?r=`Number must be ${a.exact?"exactly":a.inclusive?"less than or equal to":"less than"} ${a.maximum}`:a.type==="bigint"?r=`BigInt must be ${a.exact?"exactly":a.inclusive?"less than or equal to":"less than"} ${a.maximum}`:a.type==="date"?r=`Date must be ${a.exact?"exactly":a.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(a.maximum))}`:r="Invalid input";break;case te.custom:r="Invalid input";break;case te.invalid_intersection_types:r="Intersection results could not be merged";break;case te.not_multiple_of:r=`Number must be a multiple of ${a.multipleOf}`;break;case te.not_finite:r="Number must be finite";break;default:r=e.defaultError,Qe.assertNever(a)}return{message:r}},$n=oM,KE=$n;function cM(a){KE=a}function ol(){return KE}var cl=a=>{let{data:e,path:r,errorMaps:t,issueData:s}=a,i=[...r,...s.path||[]],n={...s,path:i};if(s.message!==void 0)return{...s,path:i,message:s.message};let o="",l=t.filter(c=>!!c).slice().reverse();for(let c of l)o=c(n,{data:e,defaultError:o}).message;return{...s,path:i,message:o}},lM=[];function oe(a,e){let r=ol(),t=cl({issueData:e,data:a.data,path:a.path,errorMaps:[a.common.contextualErrorMap,a.schemaErrorMap,r,r===$n?void 0:$n].filter(s=>!!s)});a.common.issues.push(t)}var kt=class a{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,r){let t=[];for(let s of r){if(s.status==="aborted")return Pe;s.status==="dirty"&&e.dirty(),t.push(s.value)}return{status:e.value,value:t}}static async mergeObjectAsync(e,r){let t=[];for(let s of r){let i=await s.key,n=await s.value;t.push({key:i,value:n})}return a.mergeObjectSync(e,t)}static mergeObjectSync(e,r){let t={};for(let s of r){let{key:i,value:n}=s;if(i.status==="aborted"||n.status==="aborted")return Pe;i.status==="dirty"&&e.dirty(),n.status==="dirty"&&e.dirty(),i.value!=="__proto__"&&(typeof n.value<"u"||s.alwaysSet)&&(t[i.value]=n.value)}return{status:e.value,value:t}}},Pe=Object.freeze({status:"aborted"}),Dn=a=>({status:"dirty",value:a}),At=a=>({status:"valid",value:a}),sf=a=>a.status==="aborted",nf=a=>a.status==="dirty",Es=a=>a.status==="valid",Vi=a=>typeof Promise<"u"&&a instanceof Promise,ye;(function(a){a.errToObj=e=>typeof e=="string"?{message:e}:e||{},a.toString=e=>typeof e=="string"?e:e?.message})(ye||(ye={}));var mr=class{constructor(e,r,t,s){this._cachedPath=[],this.parent=e,this.data=r,this._path=t,this._key=s}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},OE=(a,e)=>{if(Es(e))return{success:!0,data:e.value};if(!a.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let r=new Kt(a.common.issues);return this._error=r,this._error}}};function Ue(a){if(!a)return{};let{errorMap:e,invalid_type_error:r,required_error:t,description:s}=a;if(e&&(r||t))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:s}:{errorMap:(n,o)=>{let{message:l}=a;return n.code==="invalid_enum_value"?{message:l??o.defaultError}:typeof o.data>"u"?{message:l??t??o.defaultError}:n.code!=="invalid_type"?{message:o.defaultError}:{message:l??r??o.defaultError}},description:s}}var Me=class{get description(){return this._def.description}_getType(e){return oa(e.data)}_getOrReturnCtx(e,r){return r||{common:e.parent.common,data:e.data,parsedType:oa(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new kt,ctx:{common:e.parent.common,data:e.data,parsedType:oa(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let r=this._parse(e);if(Vi(r))throw new Error("Synchronous parse encountered promise.");return r}_parseAsync(e){let r=this._parse(e);return Promise.resolve(r)}parse(e,r){let t=this.safeParse(e,r);if(t.success)return t.data;throw t.error}safeParse(e,r){let t={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:oa(e)},s=this._parseSync({data:e,path:t.path,parent:t});return OE(t,s)}"~validate"(e){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:oa(e)};if(!this["~standard"].async)try{let t=this._parseSync({data:e,path:[],parent:r});return Es(t)?{value:t.value}:{issues:r.common.issues}}catch(t){t?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),r.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:r}).then(t=>Es(t)?{value:t.value}:{issues:r.common.issues})}async parseAsync(e,r){let t=await this.safeParseAsync(e,r);if(t.success)return t.data;throw t.error}async safeParseAsync(e,r){let t={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:oa(e)},s=this._parse({data:e,path:t.path,parent:t}),i=await(Vi(s)?s:Promise.resolve(s));return OE(t,i)}refine(e,r){let t=s=>typeof r=="string"||typeof r>"u"?{message:r}:typeof r=="function"?r(s):r;return this._refinement((s,i)=>{let n=e(s),o=()=>i.addIssue({code:te.custom,...t(s)});return typeof Promise<"u"&&n instanceof Promise?n.then(l=>l?!0:(o(),!1)):n?!0:(o(),!1)})}refinement(e,r){return this._refinement((t,s)=>e(t)?!0:(s.addIssue(typeof r=="function"?r(t,s):r),!1))}_refinement(e){return new Jt({schema:this,typeName:ke.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:r=>this["~validate"](r)}}optional(){return fr.create(this,this._def)}nullable(){return Wr.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ua.create(this)}promise(){return Ma.create(this,this._def)}or(e){return Cs.create([this,e],this._def)}and(e){return Is.create(this,e,this._def)}transform(e){return new Jt({...Ue(this._def),schema:this,typeName:ke.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let r=typeof e=="function"?e:()=>e;return new js({...Ue(this._def),innerType:this,defaultValue:r,typeName:ke.ZodDefault})}brand(){return new Gi({typeName:ke.ZodBranded,type:this,...Ue(this._def)})}catch(e){let r=typeof e=="function"?e:()=>e;return new Ms({...Ue(this._def),innerType:this,catchValue:r,typeName:ke.ZodCatch})}describe(e){let r=this.constructor;return new r({...this._def,description:e})}pipe(e){return Wi.create(this,e)}readonly(){return Ls.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},uM=/^c[^\s-]{8,}$/i,pM=/^[0-9a-z]+$/,dM=/^[0-9A-HJKMNP-TV-Z]{26}$/i,fM=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,mM=/^[a-z0-9_-]{21}$/i,hM=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,vM=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,gM=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,yM="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Xd,bM=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,xM=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,_M=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,SM=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,EM=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,wM=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,JE="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",TM=new RegExp(`^${JE}$`);function YE(a){let e="[0-5]\\d";a.precision?e=`${e}\\.\\d{${a.precision}}`:a.precision==null&&(e=`${e}(\\.\\d+)?`);let r=a.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${r}`}function RM(a){return new RegExp(`^${YE(a)}$`)}function ew(a){let e=`${JE}T${YE(a)}`,r=[];return r.push(a.local?"Z?":"Z"),a.offset&&r.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${r.join("|")})`,new RegExp(`^${e}$`)}function PM(a,e){return!!((e==="v4"||!e)&&bM.test(a)||(e==="v6"||!e)&&_M.test(a))}function OM(a,e){if(!hM.test(a))return!1;try{let[r]=a.split(".");if(!r)return!1;let t=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),s=JSON.parse(atob(t));return!(typeof s!="object"||s===null||"typ"in s&&s?.typ!=="JWT"||!s.alg||e&&s.alg!==e)}catch{return!1}}function kM(a,e){return!!((e==="v4"||!e)&&xM.test(a)||(e==="v6"||!e)&&SM.test(a))}var $a=class a extends Me{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==de.string){let i=this._getOrReturnCtx(e);return oe(i,{code:te.invalid_type,expected:de.string,received:i.parsedType}),Pe}let t=new kt,s;for(let i of this._def.checks)if(i.kind==="min")e.data.lengthi.value&&(s=this._getOrReturnCtx(e,s),oe(s,{code:te.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),t.dirty());else if(i.kind==="length"){let n=e.data.length>i.value,o=e.data.lengthe.test(s),{validation:r,code:te.invalid_string,...ye.errToObj(t)})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...ye.errToObj(e)})}url(e){return this._addCheck({kind:"url",...ye.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...ye.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...ye.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...ye.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...ye.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...ye.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...ye.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...ye.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...ye.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...ye.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...ye.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...ye.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...ye.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...ye.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...ye.errToObj(e)})}regex(e,r){return this._addCheck({kind:"regex",regex:e,...ye.errToObj(r)})}includes(e,r){return this._addCheck({kind:"includes",value:e,position:r?.position,...ye.errToObj(r?.message)})}startsWith(e,r){return this._addCheck({kind:"startsWith",value:e,...ye.errToObj(r)})}endsWith(e,r){return this._addCheck({kind:"endsWith",value:e,...ye.errToObj(r)})}min(e,r){return this._addCheck({kind:"min",value:e,...ye.errToObj(r)})}max(e,r){return this._addCheck({kind:"max",value:e,...ye.errToObj(r)})}length(e,r){return this._addCheck({kind:"length",value:e,...ye.errToObj(r)})}nonempty(e){return this.min(1,ye.errToObj(e))}trim(){return new a({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new a({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new a({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxLength(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew $a({checks:[],typeName:ke.ZodString,coerce:a?.coerce??!1,...Ue(a)});function CM(a,e){let r=(a.toString().split(".")[1]||"").length,t=(e.toString().split(".")[1]||"").length,s=r>t?r:t,i=Number.parseInt(a.toFixed(s).replace(".","")),n=Number.parseInt(e.toFixed(s).replace(".",""));return i%n/10**s}var ws=class a extends Me{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==de.number){let i=this._getOrReturnCtx(e);return oe(i,{code:te.invalid_type,expected:de.number,received:i.parsedType}),Pe}let t,s=new kt;for(let i of this._def.checks)i.kind==="int"?Qe.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),oe(t,{code:te.invalid_type,expected:"integer",received:"float",message:i.message}),s.dirty()):i.kind==="min"?(i.inclusive?e.datai.value:e.data>=i.value)&&(t=this._getOrReturnCtx(e,t),oe(t,{code:te.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),s.dirty()):i.kind==="multipleOf"?CM(e.data,i.value)!==0&&(t=this._getOrReturnCtx(e,t),oe(t,{code:te.not_multiple_of,multipleOf:i.value,message:i.message}),s.dirty()):i.kind==="finite"?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),oe(t,{code:te.not_finite,message:i.message}),s.dirty()):Qe.assertNever(i);return{status:s.value,value:e.data}}gte(e,r){return this.setLimit("min",e,!0,ye.toString(r))}gt(e,r){return this.setLimit("min",e,!1,ye.toString(r))}lte(e,r){return this.setLimit("max",e,!0,ye.toString(r))}lt(e,r){return this.setLimit("max",e,!1,ye.toString(r))}setLimit(e,r,t,s){return new a({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:t,message:ye.toString(s)}]})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:ye.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:ye.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:ye.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:ye.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:ye.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:ye.toString(r)})}finite(e){return this._addCheck({kind:"finite",message:ye.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:ye.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:ye.toString(e)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuee.kind==="int"||e.kind==="multipleOf"&&Qe.isInteger(e.value))}get isFinite(){let e=null,r=null;for(let t of this._def.checks){if(t.kind==="finite"||t.kind==="int"||t.kind==="multipleOf")return!0;t.kind==="min"?(r===null||t.value>r)&&(r=t.value):t.kind==="max"&&(e===null||t.valuenew ws({checks:[],typeName:ke.ZodNumber,coerce:a?.coerce||!1,...Ue(a)});var Ts=class a extends Me{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==de.bigint)return this._getInvalidInput(e);let t,s=new kt;for(let i of this._def.checks)i.kind==="min"?(i.inclusive?e.datai.value:e.data>=i.value)&&(t=this._getOrReturnCtx(e,t),oe(t,{code:te.too_big,type:"bigint",maximum:i.value,inclusive:i.inclusive,message:i.message}),s.dirty()):i.kind==="multipleOf"?e.data%i.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),oe(t,{code:te.not_multiple_of,multipleOf:i.value,message:i.message}),s.dirty()):Qe.assertNever(i);return{status:s.value,value:e.data}}_getInvalidInput(e){let r=this._getOrReturnCtx(e);return oe(r,{code:te.invalid_type,expected:de.bigint,received:r.parsedType}),Pe}gte(e,r){return this.setLimit("min",e,!0,ye.toString(r))}gt(e,r){return this.setLimit("min",e,!1,ye.toString(r))}lte(e,r){return this.setLimit("max",e,!0,ye.toString(r))}lt(e,r){return this.setLimit("max",e,!1,ye.toString(r))}setLimit(e,r,t,s){return new a({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:t,message:ye.toString(s)}]})}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:ye.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:ye.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:ye.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:ye.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:ye.toString(r)})}get minValue(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew Ts({checks:[],typeName:ke.ZodBigInt,coerce:a?.coerce??!1,...Ue(a)});var Rs=class extends Me{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==de.boolean){let t=this._getOrReturnCtx(e);return oe(t,{code:te.invalid_type,expected:de.boolean,received:t.parsedType}),Pe}return At(e.data)}};Rs.create=a=>new Rs({typeName:ke.ZodBoolean,coerce:a?.coerce||!1,...Ue(a)});var Ps=class a extends Me{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==de.date){let i=this._getOrReturnCtx(e);return oe(i,{code:te.invalid_type,expected:de.date,received:i.parsedType}),Pe}if(Number.isNaN(e.data.getTime())){let i=this._getOrReturnCtx(e);return oe(i,{code:te.invalid_date}),Pe}let t=new kt,s;for(let i of this._def.checks)i.kind==="min"?e.data.getTime()i.value&&(s=this._getOrReturnCtx(e,s),oe(s,{code:te.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),t.dirty()):Qe.assertNever(i);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(e){return new a({...this._def,checks:[...this._def.checks,e]})}min(e,r){return this._addCheck({kind:"min",value:e.getTime(),message:ye.toString(r)})}max(e,r){return this._addCheck({kind:"max",value:e.getTime(),message:ye.toString(r)})}get minDate(){let e=null;for(let r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew Ps({checks:[],coerce:a?.coerce||!1,typeName:ke.ZodDate,...Ue(a)});var jn=class extends Me{_parse(e){if(this._getType(e)!==de.symbol){let t=this._getOrReturnCtx(e);return oe(t,{code:te.invalid_type,expected:de.symbol,received:t.parsedType}),Pe}return At(e.data)}};jn.create=a=>new jn({typeName:ke.ZodSymbol,...Ue(a)});var Os=class extends Me{_parse(e){if(this._getType(e)!==de.undefined){let t=this._getOrReturnCtx(e);return oe(t,{code:te.invalid_type,expected:de.undefined,received:t.parsedType}),Pe}return At(e.data)}};Os.create=a=>new Os({typeName:ke.ZodUndefined,...Ue(a)});var ks=class extends Me{_parse(e){if(this._getType(e)!==de.null){let t=this._getOrReturnCtx(e);return oe(t,{code:te.invalid_type,expected:de.null,received:t.parsedType}),Pe}return At(e.data)}};ks.create=a=>new ks({typeName:ke.ZodNull,...Ue(a)});var ja=class extends Me{constructor(){super(...arguments),this._any=!0}_parse(e){return At(e.data)}};ja.create=a=>new ja({typeName:ke.ZodAny,...Ue(a)});var la=class extends Me{constructor(){super(...arguments),this._unknown=!0}_parse(e){return At(e.data)}};la.create=a=>new la({typeName:ke.ZodUnknown,...Ue(a)});var kr=class extends Me{_parse(e){let r=this._getOrReturnCtx(e);return oe(r,{code:te.invalid_type,expected:de.never,received:r.parsedType}),Pe}};kr.create=a=>new kr({typeName:ke.ZodNever,...Ue(a)});var Mn=class extends Me{_parse(e){if(this._getType(e)!==de.undefined){let t=this._getOrReturnCtx(e);return oe(t,{code:te.invalid_type,expected:de.void,received:t.parsedType}),Pe}return At(e.data)}};Mn.create=a=>new Mn({typeName:ke.ZodVoid,...Ue(a)});var ua=class a extends Me{_parse(e){let{ctx:r,status:t}=this._processInputParams(e),s=this._def;if(r.parsedType!==de.array)return oe(r,{code:te.invalid_type,expected:de.array,received:r.parsedType}),Pe;if(s.exactLength!==null){let n=r.data.length>s.exactLength.value,o=r.data.lengths.maxLength.value&&(oe(r,{code:te.too_big,maximum:s.maxLength.value,type:"array",inclusive:!0,exact:!1,message:s.maxLength.message}),t.dirty()),r.common.async)return Promise.all([...r.data].map((n,o)=>s.type._parseAsync(new mr(r,n,r.path,o)))).then(n=>kt.mergeArray(t,n));let i=[...r.data].map((n,o)=>s.type._parseSync(new mr(r,n,r.path,o)));return kt.mergeArray(t,i)}get element(){return this._def.type}min(e,r){return new a({...this._def,minLength:{value:e,message:ye.toString(r)}})}max(e,r){return new a({...this._def,maxLength:{value:e,message:ye.toString(r)}})}length(e,r){return new a({...this._def,exactLength:{value:e,message:ye.toString(r)}})}nonempty(e){return this.min(1,e)}};ua.create=(a,e)=>new ua({type:a,minLength:null,maxLength:null,exactLength:null,typeName:ke.ZodArray,...Ue(e)});function Nn(a){if(a instanceof Bt){let e={};for(let r in a.shape){let t=a.shape[r];e[r]=fr.create(Nn(t))}return new Bt({...a._def,shape:()=>e})}else return a instanceof ua?new ua({...a._def,type:Nn(a.element)}):a instanceof fr?fr.create(Nn(a.unwrap())):a instanceof Wr?Wr.create(Nn(a.unwrap())):a instanceof Gr?Gr.create(a.items.map(e=>Nn(e))):a}var Bt=class a extends Me{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),r=Qe.objectKeys(e);return this._cached={shape:e,keys:r},this._cached}_parse(e){if(this._getType(e)!==de.object){let c=this._getOrReturnCtx(e);return oe(c,{code:te.invalid_type,expected:de.object,received:c.parsedType}),Pe}let{status:t,ctx:s}=this._processInputParams(e),{shape:i,keys:n}=this._getCached(),o=[];if(!(this._def.catchall instanceof kr&&this._def.unknownKeys==="strip"))for(let c in s.data)n.includes(c)||o.push(c);let l=[];for(let c of n){let u=i[c],p=s.data[c];l.push({key:{status:"valid",value:c},value:u._parse(new mr(s,p,s.path,c)),alwaysSet:c in s.data})}if(this._def.catchall instanceof kr){let c=this._def.unknownKeys;if(c==="passthrough")for(let u of o)l.push({key:{status:"valid",value:u},value:{status:"valid",value:s.data[u]}});else if(c==="strict")o.length>0&&(oe(s,{code:te.unrecognized_keys,keys:o}),t.dirty());else if(c!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let c=this._def.catchall;for(let u of o){let p=s.data[u];l.push({key:{status:"valid",value:u},value:c._parse(new mr(s,p,s.path,u)),alwaysSet:u in s.data})}}return s.common.async?Promise.resolve().then(async()=>{let c=[];for(let u of l){let p=await u.key,f=await u.value;c.push({key:p,value:f,alwaysSet:u.alwaysSet})}return c}).then(c=>kt.mergeObjectSync(t,c)):kt.mergeObjectSync(t,l)}get shape(){return this._def.shape()}strict(e){return ye.errToObj,new a({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(r,t)=>{let s=this._def.errorMap?.(r,t).message??t.defaultError;return r.code==="unrecognized_keys"?{message:ye.errToObj(e).message??s}:{message:s}}}:{}})}strip(){return new a({...this._def,unknownKeys:"strip"})}passthrough(){return new a({...this._def,unknownKeys:"passthrough"})}extend(e){return new a({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new a({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:ke.ZodObject})}setKey(e,r){return this.augment({[e]:r})}catchall(e){return new a({...this._def,catchall:e})}pick(e){let r={};for(let t of Qe.objectKeys(e))e[t]&&this.shape[t]&&(r[t]=this.shape[t]);return new a({...this._def,shape:()=>r})}omit(e){let r={};for(let t of Qe.objectKeys(this.shape))e[t]||(r[t]=this.shape[t]);return new a({...this._def,shape:()=>r})}deepPartial(){return Nn(this)}partial(e){let r={};for(let t of Qe.objectKeys(this.shape)){let s=this.shape[t];e&&!e[t]?r[t]=s:r[t]=s.optional()}return new a({...this._def,shape:()=>r})}required(e){let r={};for(let t of Qe.objectKeys(this.shape))if(e&&!e[t])r[t]=this.shape[t];else{let i=this.shape[t];for(;i instanceof fr;)i=i._def.innerType;r[t]=i}return new a({...this._def,shape:()=>r})}keyof(){return tw(Qe.objectKeys(this.shape))}};Bt.create=(a,e)=>new Bt({shape:()=>a,unknownKeys:"strip",catchall:kr.create(),typeName:ke.ZodObject,...Ue(e)});Bt.strictCreate=(a,e)=>new Bt({shape:()=>a,unknownKeys:"strict",catchall:kr.create(),typeName:ke.ZodObject,...Ue(e)});Bt.lazycreate=(a,e)=>new Bt({shape:a,unknownKeys:"strip",catchall:kr.create(),typeName:ke.ZodObject,...Ue(e)});var Cs=class extends Me{_parse(e){let{ctx:r}=this._processInputParams(e),t=this._def.options;function s(i){for(let o of i)if(o.result.status==="valid")return o.result;for(let o of i)if(o.result.status==="dirty")return r.common.issues.push(...o.ctx.common.issues),o.result;let n=i.map(o=>new Kt(o.ctx.common.issues));return oe(r,{code:te.invalid_union,unionErrors:n}),Pe}if(r.common.async)return Promise.all(t.map(async i=>{let n={...r,common:{...r.common,issues:[]},parent:null};return{result:await i._parseAsync({data:r.data,path:r.path,parent:n}),ctx:n}})).then(s);{let i,n=[];for(let l of t){let c={...r,common:{...r.common,issues:[]},parent:null},u=l._parseSync({data:r.data,path:r.path,parent:c});if(u.status==="valid")return u;u.status==="dirty"&&!i&&(i={result:u,ctx:c}),c.common.issues.length&&n.push(c.common.issues)}if(i)return r.common.issues.push(...i.ctx.common.issues),i.result;let o=n.map(l=>new Kt(l));return oe(r,{code:te.invalid_union,unionErrors:o}),Pe}}get options(){return this._def.options}};Cs.create=(a,e)=>new Cs({options:a,typeName:ke.ZodUnion,...Ue(e)});var ia=a=>a instanceof As?ia(a.schema):a instanceof Jt?ia(a.innerType()):a instanceof Ns?[a.value]:a instanceof Ds?a.options:a instanceof $s?Qe.objectValues(a.enum):a instanceof js?ia(a._def.innerType):a instanceof Os?[void 0]:a instanceof ks?[null]:a instanceof fr?[void 0,...ia(a.unwrap())]:a instanceof Wr?[null,...ia(a.unwrap())]:a instanceof Gi||a instanceof Ls?ia(a.unwrap()):a instanceof Ms?ia(a._def.innerType):[],ll=class a extends Me{_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==de.object)return oe(r,{code:te.invalid_type,expected:de.object,received:r.parsedType}),Pe;let t=this.discriminator,s=r.data[t],i=this.optionsMap.get(s);return i?r.common.async?i._parseAsync({data:r.data,path:r.path,parent:r}):i._parseSync({data:r.data,path:r.path,parent:r}):(oe(r,{code:te.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[t]}),Pe)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,r,t){let s=new Map;for(let i of r){let n=ia(i.shape[e]);if(!n.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let o of n){if(s.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);s.set(o,i)}}return new a({typeName:ke.ZodDiscriminatedUnion,discriminator:e,options:r,optionsMap:s,...Ue(t)})}};function of(a,e){let r=oa(a),t=oa(e);if(a===e)return{valid:!0,data:a};if(r===de.object&&t===de.object){let s=Qe.objectKeys(e),i=Qe.objectKeys(a).filter(o=>s.indexOf(o)!==-1),n={...a,...e};for(let o of i){let l=of(a[o],e[o]);if(!l.valid)return{valid:!1};n[o]=l.data}return{valid:!0,data:n}}else if(r===de.array&&t===de.array){if(a.length!==e.length)return{valid:!1};let s=[];for(let i=0;i{if(sf(i)||sf(n))return Pe;let o=of(i.value,n.value);return o.valid?((nf(i)||nf(n))&&r.dirty(),{status:r.value,value:o.data}):(oe(t,{code:te.invalid_intersection_types}),Pe)};return t.common.async?Promise.all([this._def.left._parseAsync({data:t.data,path:t.path,parent:t}),this._def.right._parseAsync({data:t.data,path:t.path,parent:t})]).then(([i,n])=>s(i,n)):s(this._def.left._parseSync({data:t.data,path:t.path,parent:t}),this._def.right._parseSync({data:t.data,path:t.path,parent:t}))}};Is.create=(a,e,r)=>new Is({left:a,right:e,typeName:ke.ZodIntersection,...Ue(r)});var Gr=class a extends Me{_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.parsedType!==de.array)return oe(t,{code:te.invalid_type,expected:de.array,received:t.parsedType}),Pe;if(t.data.lengththis._def.items.length&&(oe(t,{code:te.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());let i=[...t.data].map((n,o)=>{let l=this._def.items[o]||this._def.rest;return l?l._parse(new mr(t,n,t.path,o)):null}).filter(n=>!!n);return t.common.async?Promise.all(i).then(n=>kt.mergeArray(r,n)):kt.mergeArray(r,i)}get items(){return this._def.items}rest(e){return new a({...this._def,rest:e})}};Gr.create=(a,e)=>{if(!Array.isArray(a))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Gr({items:a,typeName:ke.ZodTuple,rest:null,...Ue(e)})};var ul=class a extends Me{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.parsedType!==de.object)return oe(t,{code:te.invalid_type,expected:de.object,received:t.parsedType}),Pe;let s=[],i=this._def.keyType,n=this._def.valueType;for(let o in t.data)s.push({key:i._parse(new mr(t,o,t.path,o)),value:n._parse(new mr(t,t.data[o],t.path,o)),alwaysSet:o in t.data});return t.common.async?kt.mergeObjectAsync(r,s):kt.mergeObjectSync(r,s)}get element(){return this._def.valueType}static create(e,r,t){return r instanceof Me?new a({keyType:e,valueType:r,typeName:ke.ZodRecord,...Ue(t)}):new a({keyType:$a.create(),valueType:e,typeName:ke.ZodRecord,...Ue(r)})}},Ln=class extends Me{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.parsedType!==de.map)return oe(t,{code:te.invalid_type,expected:de.map,received:t.parsedType}),Pe;let s=this._def.keyType,i=this._def.valueType,n=[...t.data.entries()].map(([o,l],c)=>({key:s._parse(new mr(t,o,t.path,[c,"key"])),value:i._parse(new mr(t,l,t.path,[c,"value"]))}));if(t.common.async){let o=new Map;return Promise.resolve().then(async()=>{for(let l of n){let c=await l.key,u=await l.value;if(c.status==="aborted"||u.status==="aborted")return Pe;(c.status==="dirty"||u.status==="dirty")&&r.dirty(),o.set(c.value,u.value)}return{status:r.value,value:o}})}else{let o=new Map;for(let l of n){let c=l.key,u=l.value;if(c.status==="aborted"||u.status==="aborted")return Pe;(c.status==="dirty"||u.status==="dirty")&&r.dirty(),o.set(c.value,u.value)}return{status:r.value,value:o}}}};Ln.create=(a,e,r)=>new Ln({valueType:e,keyType:a,typeName:ke.ZodMap,...Ue(r)});var qn=class a extends Me{_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.parsedType!==de.set)return oe(t,{code:te.invalid_type,expected:de.set,received:t.parsedType}),Pe;let s=this._def;s.minSize!==null&&t.data.sizes.maxSize.value&&(oe(t,{code:te.too_big,maximum:s.maxSize.value,type:"set",inclusive:!0,exact:!1,message:s.maxSize.message}),r.dirty());let i=this._def.valueType;function n(l){let c=new Set;for(let u of l){if(u.status==="aborted")return Pe;u.status==="dirty"&&r.dirty(),c.add(u.value)}return{status:r.value,value:c}}let o=[...t.data.values()].map((l,c)=>i._parse(new mr(t,l,t.path,c)));return t.common.async?Promise.all(o).then(l=>n(l)):n(o)}min(e,r){return new a({...this._def,minSize:{value:e,message:ye.toString(r)}})}max(e,r){return new a({...this._def,maxSize:{value:e,message:ye.toString(r)}})}size(e,r){return this.min(e,r).max(e,r)}nonempty(e){return this.min(1,e)}};qn.create=(a,e)=>new qn({valueType:a,minSize:null,maxSize:null,typeName:ke.ZodSet,...Ue(e)});var pl=class a extends Me{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==de.function)return oe(r,{code:te.invalid_type,expected:de.function,received:r.parsedType}),Pe;function t(o,l){return cl({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,ol(),$n].filter(c=>!!c),issueData:{code:te.invalid_arguments,argumentsError:l}})}function s(o,l){return cl({data:o,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,ol(),$n].filter(c=>!!c),issueData:{code:te.invalid_return_type,returnTypeError:l}})}let i={errorMap:r.common.contextualErrorMap},n=r.data;if(this._def.returns instanceof Ma){let o=this;return At(async function(...l){let c=new Kt([]),u=await o._def.args.parseAsync(l,i).catch(d=>{throw c.addIssue(t(l,d)),c}),p=await Reflect.apply(n,this,u);return await o._def.returns._def.type.parseAsync(p,i).catch(d=>{throw c.addIssue(s(p,d)),c})})}else{let o=this;return At(function(...l){let c=o._def.args.safeParse(l,i);if(!c.success)throw new Kt([t(l,c.error)]);let u=Reflect.apply(n,this,c.data),p=o._def.returns.safeParse(u,i);if(!p.success)throw new Kt([s(u,p.error)]);return p.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new a({...this._def,args:Gr.create(e).rest(la.create())})}returns(e){return new a({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,r,t){return new a({args:e||Gr.create([]).rest(la.create()),returns:r||la.create(),typeName:ke.ZodFunction,...Ue(t)})}},As=class extends Me{get schema(){return this._def.getter()}_parse(e){let{ctx:r}=this._processInputParams(e);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};As.create=(a,e)=>new As({getter:a,typeName:ke.ZodLazy,...Ue(e)});var Ns=class extends Me{_parse(e){if(e.data!==this._def.value){let r=this._getOrReturnCtx(e);return oe(r,{received:r.data,code:te.invalid_literal,expected:this._def.value}),Pe}return{status:"valid",value:e.data}}get value(){return this._def.value}};Ns.create=(a,e)=>new Ns({value:a,typeName:ke.ZodLiteral,...Ue(e)});function tw(a,e){return new Ds({values:a,typeName:ke.ZodEnum,...Ue(e)})}var Ds=class a extends Me{_parse(e){if(typeof e.data!="string"){let r=this._getOrReturnCtx(e),t=this._def.values;return oe(r,{expected:Qe.joinValues(t),received:r.parsedType,code:te.invalid_type}),Pe}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let r=this._getOrReturnCtx(e),t=this._def.values;return oe(r,{received:r.data,code:te.invalid_enum_value,options:t}),Pe}return At(e.data)}get options(){return this._def.values}get enum(){let e={};for(let r of this._def.values)e[r]=r;return e}get Values(){let e={};for(let r of this._def.values)e[r]=r;return e}get Enum(){let e={};for(let r of this._def.values)e[r]=r;return e}extract(e,r=this._def){return a.create(e,{...this._def,...r})}exclude(e,r=this._def){return a.create(this.options.filter(t=>!e.includes(t)),{...this._def,...r})}};Ds.create=tw;var $s=class extends Me{_parse(e){let r=Qe.getValidEnumValues(this._def.values),t=this._getOrReturnCtx(e);if(t.parsedType!==de.string&&t.parsedType!==de.number){let s=Qe.objectValues(r);return oe(t,{expected:Qe.joinValues(s),received:t.parsedType,code:te.invalid_type}),Pe}if(this._cache||(this._cache=new Set(Qe.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let s=Qe.objectValues(r);return oe(t,{received:t.data,code:te.invalid_enum_value,options:s}),Pe}return At(e.data)}get enum(){return this._def.values}};$s.create=(a,e)=>new $s({values:a,typeName:ke.ZodNativeEnum,...Ue(e)});var Ma=class extends Me{unwrap(){return this._def.type}_parse(e){let{ctx:r}=this._processInputParams(e);if(r.parsedType!==de.promise&&r.common.async===!1)return oe(r,{code:te.invalid_type,expected:de.promise,received:r.parsedType}),Pe;let t=r.parsedType===de.promise?r.data:Promise.resolve(r.data);return At(t.then(s=>this._def.type.parseAsync(s,{path:r.path,errorMap:r.common.contextualErrorMap})))}};Ma.create=(a,e)=>new Ma({type:a,typeName:ke.ZodPromise,...Ue(e)});var Jt=class extends Me{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ke.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:r,ctx:t}=this._processInputParams(e),s=this._def.effect||null,i={addIssue:n=>{oe(t,n),n.fatal?r.abort():r.dirty()},get path(){return t.path}};if(i.addIssue=i.addIssue.bind(i),s.type==="preprocess"){let n=s.transform(t.data,i);if(t.common.async)return Promise.resolve(n).then(async o=>{if(r.value==="aborted")return Pe;let l=await this._def.schema._parseAsync({data:o,path:t.path,parent:t});return l.status==="aborted"?Pe:l.status==="dirty"||r.value==="dirty"?Dn(l.value):l});{if(r.value==="aborted")return Pe;let o=this._def.schema._parseSync({data:n,path:t.path,parent:t});return o.status==="aborted"?Pe:o.status==="dirty"||r.value==="dirty"?Dn(o.value):o}}if(s.type==="refinement"){let n=o=>{let l=s.refinement(o,i);if(t.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(t.common.async===!1){let o=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});return o.status==="aborted"?Pe:(o.status==="dirty"&&r.dirty(),n(o.value),{status:r.value,value:o.value})}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then(o=>o.status==="aborted"?Pe:(o.status==="dirty"&&r.dirty(),n(o.value).then(()=>({status:r.value,value:o.value}))))}if(s.type==="transform")if(t.common.async===!1){let n=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});if(!Es(n))return Pe;let o=s.transform(n.value,i);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:o}}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then(n=>Es(n)?Promise.resolve(s.transform(n.value,i)).then(o=>({status:r.value,value:o})):Pe);Qe.assertNever(s)}};Jt.create=(a,e,r)=>new Jt({schema:a,typeName:ke.ZodEffects,effect:e,...Ue(r)});Jt.createWithPreprocess=(a,e,r)=>new Jt({schema:e,effect:{type:"preprocess",transform:a},typeName:ke.ZodEffects,...Ue(r)});var fr=class extends Me{_parse(e){return this._getType(e)===de.undefined?At(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};fr.create=(a,e)=>new fr({innerType:a,typeName:ke.ZodOptional,...Ue(e)});var Wr=class extends Me{_parse(e){return this._getType(e)===de.null?At(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Wr.create=(a,e)=>new Wr({innerType:a,typeName:ke.ZodNullable,...Ue(e)});var js=class extends Me{_parse(e){let{ctx:r}=this._processInputParams(e),t=r.data;return r.parsedType===de.undefined&&(t=this._def.defaultValue()),this._def.innerType._parse({data:t,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};js.create=(a,e)=>new js({innerType:a,typeName:ke.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...Ue(e)});var Ms=class extends Me{_parse(e){let{ctx:r}=this._processInputParams(e),t={...r,common:{...r.common,issues:[]}},s=this._def.innerType._parse({data:t.data,path:t.path,parent:{...t}});return Vi(s)?s.then(i=>({status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new Kt(t.common.issues)},input:t.data})})):{status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new Kt(t.common.issues)},input:t.data})}}removeCatch(){return this._def.innerType}};Ms.create=(a,e)=>new Ms({innerType:a,typeName:ke.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...Ue(e)});var Fn=class extends Me{_parse(e){if(this._getType(e)!==de.nan){let t=this._getOrReturnCtx(e);return oe(t,{code:te.invalid_type,expected:de.nan,received:t.parsedType}),Pe}return{status:"valid",value:e.data}}};Fn.create=a=>new Fn({typeName:ke.ZodNaN,...Ue(a)});var IM=Symbol("zod_brand"),Gi=class extends Me{_parse(e){let{ctx:r}=this._processInputParams(e),t=r.data;return this._def.type._parse({data:t,path:r.path,parent:r})}unwrap(){return this._def.type}},Wi=class a extends Me{_parse(e){let{status:r,ctx:t}=this._processInputParams(e);if(t.common.async)return(async()=>{let i=await this._def.in._parseAsync({data:t.data,path:t.path,parent:t});return i.status==="aborted"?Pe:i.status==="dirty"?(r.dirty(),Dn(i.value)):this._def.out._parseAsync({data:i.value,path:t.path,parent:t})})();{let s=this._def.in._parseSync({data:t.data,path:t.path,parent:t});return s.status==="aborted"?Pe:s.status==="dirty"?(r.dirty(),{status:"dirty",value:s.value}):this._def.out._parseSync({data:s.value,path:t.path,parent:t})}}static create(e,r){return new a({in:e,out:r,typeName:ke.ZodPipeline})}},Ls=class extends Me{_parse(e){let r=this._def.innerType._parse(e),t=s=>(Es(s)&&(s.value=Object.freeze(s.value)),s);return Vi(r)?r.then(s=>t(s)):t(r)}unwrap(){return this._def.innerType}};Ls.create=(a,e)=>new Ls({innerType:a,typeName:ke.ZodReadonly,...Ue(e)});function kE(a,e){let r=typeof a=="function"?a(e):typeof a=="string"?{message:a}:a;return typeof r=="string"?{message:r}:r}function rw(a,e={},r){return a?ja.create().superRefine((t,s)=>{let i=a(t);if(i instanceof Promise)return i.then(n=>{if(!n){let o=kE(e,t),l=o.fatal??r??!0;s.addIssue({code:"custom",...o,fatal:l})}});if(!i){let n=kE(e,t),o=n.fatal??r??!0;s.addIssue({code:"custom",...n,fatal:o})}}):ja.create()}var AM={object:Bt.lazycreate},ke;(function(a){a.ZodString="ZodString",a.ZodNumber="ZodNumber",a.ZodNaN="ZodNaN",a.ZodBigInt="ZodBigInt",a.ZodBoolean="ZodBoolean",a.ZodDate="ZodDate",a.ZodSymbol="ZodSymbol",a.ZodUndefined="ZodUndefined",a.ZodNull="ZodNull",a.ZodAny="ZodAny",a.ZodUnknown="ZodUnknown",a.ZodNever="ZodNever",a.ZodVoid="ZodVoid",a.ZodArray="ZodArray",a.ZodObject="ZodObject",a.ZodUnion="ZodUnion",a.ZodDiscriminatedUnion="ZodDiscriminatedUnion",a.ZodIntersection="ZodIntersection",a.ZodTuple="ZodTuple",a.ZodRecord="ZodRecord",a.ZodMap="ZodMap",a.ZodSet="ZodSet",a.ZodFunction="ZodFunction",a.ZodLazy="ZodLazy",a.ZodLiteral="ZodLiteral",a.ZodEnum="ZodEnum",a.ZodEffects="ZodEffects",a.ZodNativeEnum="ZodNativeEnum",a.ZodOptional="ZodOptional",a.ZodNullable="ZodNullable",a.ZodDefault="ZodDefault",a.ZodCatch="ZodCatch",a.ZodPromise="ZodPromise",a.ZodBranded="ZodBranded",a.ZodPipeline="ZodPipeline",a.ZodReadonly="ZodReadonly"})(ke||(ke={}));var NM=(a,e={message:`Input not instance of ${a.name}`})=>rw(r=>r instanceof a,e),aw=$a.create,sw=ws.create,DM=Fn.create,$M=Ts.create,nw=Rs.create,jM=Ps.create,MM=jn.create,LM=Os.create,qM=ks.create,FM=ja.create,UM=la.create,zM=kr.create,BM=Mn.create,HM=ua.create,VM=Bt.create,GM=Bt.strictCreate,WM=Cs.create,ZM=ll.create,XM=Is.create,QM=Gr.create,KM=ul.create,JM=Ln.create,YM=qn.create,e6=pl.create,t6=As.create,r6=Ns.create,a6=Ds.create,s6=$s.create,n6=Ma.create,CE=Jt.create,i6=fr.create,o6=Wr.create,c6=Jt.createWithPreprocess,l6=Wi.create,u6=()=>aw().optional(),p6=()=>sw().optional(),d6=()=>nw().optional(),f6={string:a=>$a.create({...a,coerce:!0}),number:a=>ws.create({...a,coerce:!0}),boolean:a=>Rs.create({...a,coerce:!0}),bigint:a=>Ts.create({...a,coerce:!0}),date:a=>Ps.create({...a,coerce:!0})},m6=Pe;var hl="2.0",iw=E.union([E.string(),E.number().int()]),ow=E.string(),h6=E.object({progressToken:E.optional(iw)}).passthrough(),hr=E.object({_meta:E.optional(h6)}).passthrough(),Ht=E.object({method:E.string(),params:E.optional(hr)}),Xi=E.object({_meta:E.optional(E.object({}).passthrough())}).passthrough(),Zr=E.object({method:E.string(),params:E.optional(Xi)}),vr=E.object({_meta:E.optional(E.object({}).passthrough())}).passthrough(),vl=E.union([E.string(),E.number().int()]),v6=E.object({jsonrpc:E.literal(hl),id:vl}).merge(Ht).strict();var g6=E.object({jsonrpc:E.literal(hl)}).merge(Zr).strict();var y6=E.object({jsonrpc:E.literal(hl),id:vl,result:vr}).strict();var IE;(function(a){a[a.ConnectionClosed=-32e3]="ConnectionClosed",a[a.RequestTimeout=-32001]="RequestTimeout",a[a.ParseError=-32700]="ParseError",a[a.InvalidRequest=-32600]="InvalidRequest",a[a.MethodNotFound=-32601]="MethodNotFound",a[a.InvalidParams=-32602]="InvalidParams",a[a.InternalError=-32603]="InternalError"})(IE||(IE={}));var b6=E.object({jsonrpc:E.literal(hl),id:vl,error:E.object({code:E.number().int(),message:E.string(),data:E.optional(E.unknown())})}).strict();var YU=E.union([v6,g6,y6,b6]),cw=vr.strict(),lw=Zr.extend({method:E.literal("notifications/cancelled"),params:Xi.extend({requestId:vl,reason:E.string().optional()})}),Qi=E.object({name:E.string(),title:E.optional(E.string())}).passthrough(),uw=Qi.extend({version:E.string()}),x6=E.object({experimental:E.optional(E.object({}).passthrough()),sampling:E.optional(E.object({}).passthrough()),elicitation:E.optional(E.object({}).passthrough()),roots:E.optional(E.object({listChanged:E.optional(E.boolean())}).passthrough())}).passthrough(),_6=Ht.extend({method:E.literal("initialize"),params:hr.extend({protocolVersion:E.string(),capabilities:x6,clientInfo:uw})}),S6=E.object({experimental:E.optional(E.object({}).passthrough()),logging:E.optional(E.object({}).passthrough()),completions:E.optional(E.object({}).passthrough()),prompts:E.optional(E.object({listChanged:E.optional(E.boolean())}).passthrough()),resources:E.optional(E.object({subscribe:E.optional(E.boolean()),listChanged:E.optional(E.boolean())}).passthrough()),tools:E.optional(E.object({listChanged:E.optional(E.boolean())}).passthrough())}).passthrough(),E6=vr.extend({protocolVersion:E.string(),capabilities:S6,serverInfo:uw,instructions:E.optional(E.string())}),w6=Zr.extend({method:E.literal("notifications/initialized")}),pw=Ht.extend({method:E.literal("ping")}),T6=E.object({progress:E.number(),total:E.optional(E.number()),message:E.optional(E.string())}).passthrough(),dw=Zr.extend({method:E.literal("notifications/progress"),params:Xi.merge(T6).extend({progressToken:iw})}),gl=Ht.extend({params:hr.extend({cursor:E.optional(ow)}).optional()}),yl=vr.extend({nextCursor:E.optional(ow)}),fw=E.object({uri:E.string(),mimeType:E.optional(E.string()),_meta:E.optional(E.object({}).passthrough())}).passthrough(),mw=fw.extend({text:E.string()}),mf=E.string().refine(a=>{try{return atob(a),!0}catch{return!1}},{message:"Invalid Base64 string"}),hw=fw.extend({blob:mf}),vw=Qi.extend({uri:E.string(),description:E.optional(E.string()),mimeType:E.optional(E.string()),_meta:E.optional(E.object({}).passthrough())}),R6=Qi.extend({uriTemplate:E.string(),description:E.optional(E.string()),mimeType:E.optional(E.string()),_meta:E.optional(E.object({}).passthrough())}),P6=gl.extend({method:E.literal("resources/list")}),O6=yl.extend({resources:E.array(vw)}),k6=gl.extend({method:E.literal("resources/templates/list")}),C6=yl.extend({resourceTemplates:E.array(R6)}),I6=Ht.extend({method:E.literal("resources/read"),params:hr.extend({uri:E.string()})}),A6=vr.extend({contents:E.array(E.union([mw,hw]))}),N6=Zr.extend({method:E.literal("notifications/resources/list_changed")}),D6=Ht.extend({method:E.literal("resources/subscribe"),params:hr.extend({uri:E.string()})}),$6=Ht.extend({method:E.literal("resources/unsubscribe"),params:hr.extend({uri:E.string()})}),j6=Zr.extend({method:E.literal("notifications/resources/updated"),params:Xi.extend({uri:E.string()})}),M6=E.object({name:E.string(),description:E.optional(E.string()),required:E.optional(E.boolean())}).passthrough(),L6=Qi.extend({description:E.optional(E.string()),arguments:E.optional(E.array(M6)),_meta:E.optional(E.object({}).passthrough())}),q6=gl.extend({method:E.literal("prompts/list")}),F6=yl.extend({prompts:E.array(L6)}),U6=Ht.extend({method:E.literal("prompts/get"),params:hr.extend({name:E.string(),arguments:E.optional(E.record(E.string()))})}),hf=E.object({type:E.literal("text"),text:E.string(),_meta:E.optional(E.object({}).passthrough())}).passthrough(),vf=E.object({type:E.literal("image"),data:mf,mimeType:E.string(),_meta:E.optional(E.object({}).passthrough())}).passthrough(),gf=E.object({type:E.literal("audio"),data:mf,mimeType:E.string(),_meta:E.optional(E.object({}).passthrough())}).passthrough(),z6=E.object({type:E.literal("resource"),resource:E.union([mw,hw]),_meta:E.optional(E.object({}).passthrough())}).passthrough(),B6=vw.extend({type:E.literal("resource_link")}),gw=E.union([hf,vf,gf,B6,z6]),H6=E.object({role:E.enum(["user","assistant"]),content:gw}).passthrough(),V6=vr.extend({description:E.optional(E.string()),messages:E.array(H6)}),G6=Zr.extend({method:E.literal("notifications/prompts/list_changed")}),W6=E.object({title:E.optional(E.string()),readOnlyHint:E.optional(E.boolean()),destructiveHint:E.optional(E.boolean()),idempotentHint:E.optional(E.boolean()),openWorldHint:E.optional(E.boolean())}).passthrough(),Z6=Qi.extend({description:E.optional(E.string()),inputSchema:E.object({type:E.literal("object"),properties:E.optional(E.object({}).passthrough()),required:E.optional(E.array(E.string()))}).passthrough(),outputSchema:E.optional(E.object({type:E.literal("object"),properties:E.optional(E.object({}).passthrough()),required:E.optional(E.array(E.string()))}).passthrough()),annotations:E.optional(W6),_meta:E.optional(E.object({}).passthrough())}),X6=gl.extend({method:E.literal("tools/list")}),Q6=yl.extend({tools:E.array(Z6)}),yw=vr.extend({content:E.array(gw).default([]),structuredContent:E.object({}).passthrough().optional(),isError:E.optional(E.boolean())}),ez=yw.or(vr.extend({toolResult:E.unknown()})),K6=Ht.extend({method:E.literal("tools/call"),params:hr.extend({name:E.string(),arguments:E.optional(E.record(E.unknown()))})}),J6=Zr.extend({method:E.literal("notifications/tools/list_changed")}),bw=E.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),Y6=Ht.extend({method:E.literal("logging/setLevel"),params:hr.extend({level:bw})}),e5=Zr.extend({method:E.literal("notifications/message"),params:Xi.extend({level:bw,logger:E.optional(E.string()),data:E.unknown()})}),t5=E.object({name:E.string().optional()}).passthrough(),r5=E.object({hints:E.optional(E.array(t5)),costPriority:E.optional(E.number().min(0).max(1)),speedPriority:E.optional(E.number().min(0).max(1)),intelligencePriority:E.optional(E.number().min(0).max(1))}).passthrough(),a5=E.object({role:E.enum(["user","assistant"]),content:E.union([hf,vf,gf])}).passthrough(),s5=Ht.extend({method:E.literal("sampling/createMessage"),params:hr.extend({messages:E.array(a5),systemPrompt:E.optional(E.string()),includeContext:E.optional(E.enum(["none","thisServer","allServers"])),temperature:E.optional(E.number()),maxTokens:E.number().int(),stopSequences:E.optional(E.array(E.string())),metadata:E.optional(E.object({}).passthrough()),modelPreferences:E.optional(r5)})}),n5=vr.extend({model:E.string(),stopReason:E.optional(E.enum(["endTurn","stopSequence","maxTokens"]).or(E.string())),role:E.enum(["user","assistant"]),content:E.discriminatedUnion("type",[hf,vf,gf])}),i5=E.object({type:E.literal("boolean"),title:E.optional(E.string()),description:E.optional(E.string()),default:E.optional(E.boolean())}).passthrough(),o5=E.object({type:E.literal("string"),title:E.optional(E.string()),description:E.optional(E.string()),minLength:E.optional(E.number()),maxLength:E.optional(E.number()),format:E.optional(E.enum(["email","uri","date","date-time"]))}).passthrough(),c5=E.object({type:E.enum(["number","integer"]),title:E.optional(E.string()),description:E.optional(E.string()),minimum:E.optional(E.number()),maximum:E.optional(E.number())}).passthrough(),l5=E.object({type:E.literal("string"),title:E.optional(E.string()),description:E.optional(E.string()),enum:E.array(E.string()),enumNames:E.optional(E.array(E.string()))}).passthrough(),u5=E.union([i5,o5,c5,l5]),p5=Ht.extend({method:E.literal("elicitation/create"),params:hr.extend({message:E.string(),requestedSchema:E.object({type:E.literal("object"),properties:E.record(E.string(),u5),required:E.optional(E.array(E.string()))}).passthrough()})}),d5=vr.extend({action:E.enum(["accept","decline","cancel"]),content:E.optional(E.record(E.string(),E.unknown()))}),f5=E.object({type:E.literal("ref/resource"),uri:E.string()}).passthrough(),m5=E.object({type:E.literal("ref/prompt"),name:E.string()}).passthrough(),h5=Ht.extend({method:E.literal("completion/complete"),params:hr.extend({ref:E.union([m5,f5]),argument:E.object({name:E.string(),value:E.string()}).passthrough(),context:E.optional(E.object({arguments:E.optional(E.record(E.string(),E.string()))}))})}),v5=vr.extend({completion:E.object({values:E.array(E.string()).max(100),total:E.optional(E.number().int()),hasMore:E.optional(E.boolean())}).passthrough()}),g5=E.object({uri:E.string().startsWith("file://"),name:E.optional(E.string()),_meta:E.optional(E.object({}).passthrough())}).passthrough(),y5=Ht.extend({method:E.literal("roots/list")}),b5=vr.extend({roots:E.array(g5)}),x5=Zr.extend({method:E.literal("notifications/roots/list_changed")}),tz=E.union([pw,_6,h5,Y6,U6,q6,P6,k6,I6,D6,$6,K6,X6]),rz=E.union([lw,dw,w6,x5]),az=E.union([cw,n5,d5,b5]),sz=E.union([pw,s5,p5,y5]),nz=E.union([lw,dw,e5,j6,N6,J6,G6]),iz=E.union([cw,E6,v5,V6,F6,O6,C6,A6,yw,Q6]);var oz=Sj(a8(),1);var cz=Symbol("Let zodToJsonSchema decide on which parser to use");var lz=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");var cf;(function(a){a.Completable="McpCompletable"})(cf||(cf={}));var dl=class extends Me{_parse(e){let{ctx:r}=this._processInputParams(e),t=r.data;return this._def.type._parse({data:t,path:r.path,parent:r})}unwrap(){return this._def.type}};dl.create=(a,e)=>new dl({type:a,typeName:cf.Completable,complete:e.complete,..._5(e)});function _5(a){if(!a)return{};let{errorMap:e,invalid_type_error:r,required_error:t,description:s}=a;if(e&&(r||t))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:s}:{errorMap:(n,o)=>{var l,c;let{message:u}=a;return n.code==="invalid_enum_value"?{message:u??o.defaultError}:typeof o.data>"u"?{message:(l=u??t)!==null&&l!==void 0?l:o.defaultError}:n.code!=="invalid_type"?{message:o.defaultError}:{message:(c=u??r)!==null&&c!==void 0?c:o.defaultError}},description:s}}function xw({prompt:a,options:e}){let{systemPrompt:r,settingSources:t,...s}=e??{},i,n;r===void 0?i="":typeof r=="string"?i=r:r.type==="preset"&&(n=r.append);let o=s.pathToClaudeCodeExecutable;if(!o){let be=(0,jE.fileURLToPath)(S5.url),Te=(0,Kd.join)(be,"..");o=(0,Kd.join)(Te,"cli.js")}process.env.CLAUDE_AGENT_SDK_VERSION="0.1.27";let{abortController:l=LE(),additionalDirectories:c=[],agents:u,allowedTools:p=[],canUseTool:f,continue:d,cwd:v,disallowedTools:h=[],env:m,executable:y=zE()?"bun":"node",executableArgs:g=[],extraArgs:b={},fallbackModel:w,forkSession:P,hooks:T,includePartialMessages:C,maxThinkingTokens:D,maxTurns:A,mcpServers:j,model:N,permissionMode:k="default",allowDangerouslySkipPermissions:O=!1,permissionPromptToolName:$,plugins:F,resume:B,resumeSessionAt:H,stderr:K,strictMcpConfig:X}=s,V=m;if(V||(V={...process.env}),V.CLAUDE_CODE_ENTRYPOINT||(V.CLAUDE_CODE_ENTRYPOINT="sdk-ts"),!o)throw new Error("pathToClaudeCodeExecutable is required");let ae={},ee=new Map;if(j)for(let[be,Te]of Object.entries(j))Te.type==="sdk"&&"instance"in Te?(ee.set(be,Te.instance),ae[be]={type:"sdk",name:be}):ae[be]=Te;let Le=typeof a=="string",he=new Jd({abortController:l,additionalDirectories:c,agents:u,cwd:v,executable:y,executableArgs:g,extraArgs:b,pathToClaudeCodeExecutable:o,env:V,forkSession:P,stderr:K,customSystemPrompt:i,appendSystemPrompt:n,maxThinkingTokens:D,maxTurns:A,model:N,fallbackModel:w,permissionMode:k,allowDangerouslySkipPermissions:O,permissionPromptToolName:$,continueConversation:d,resume:B,resumeSessionAt:H,settingSources:t??[],allowedTools:p,disallowedTools:h,mcpServers:ae,strictMcpConfig:X,canUseTool:!!f,hooks:!!T,includePartialMessages:C,plugins:F}),Se=new rf(he,Le,f,T,l,ee);return typeof a=="string"?he.write(JSON.stringify({type:"user",session_id:"",message:{role:"user",content:[{type:"text",text:a}]},parent_tool_use_id:null})+` +`):Se.streamInput(a),Se}var bl=class{dbManager;sessionManager;constructor(e,r){this.dbManager=e,this.sessionManager=r}async startSession(e,r){try{let t=this.findClaudeExecutable(),s=this.getModelId(),i=["Bash","Read","Write","Edit","Grep","Glob","WebFetch","WebSearch","Task","NotebookEdit","AskUserQuestion","TodoWrite"],n=this.createMessageGenerator(e),o=xw({prompt:n,options:{model:s,disallowedTools:i,abortController:e.abortController,pathToClaudeCodeExecutable:t}});for await(let c of o){if(c.type==="assistant"){let u=c.message.content,p=Array.isArray(u)?u.filter(m=>m.type==="text").map(m=>m.text).join(` +`):typeof u=="string"?u:"",f=p.length,d=e.cumulativeInputTokens+e.cumulativeOutputTokens,v=c.message.usage;v&&(e.cumulativeInputTokens+=v.input_tokens||0,e.cumulativeOutputTokens+=v.output_tokens||0,v.cache_creation_input_tokens&&(e.cumulativeInputTokens+=v.cache_creation_input_tokens),W.debug("SDK","Token usage captured",{sessionId:e.sessionDbId,inputTokens:v.input_tokens,outputTokens:v.output_tokens,cacheCreation:v.cache_creation_input_tokens||0,cacheRead:v.cache_read_input_tokens||0,cumulativeInput:e.cumulativeInputTokens,cumulativeOutput:e.cumulativeOutputTokens}));let h=e.cumulativeInputTokens+e.cumulativeOutputTokens-d;if(f>0){let m=f>100?p.substring(0,100)+"...":p;W.dataOut("SDK",`Response received (${f} chars)`,{sessionId:e.sessionDbId,promptNumber:e.lastPromptNumber},m),await this.processSDKResponse(e,p,r,h)}}c.type==="result"&&c.subtype}let l=Date.now()-e.startTime;W.success("SDK","Agent completed",{sessionId:e.sessionDbId,duration:`${(l/1e3).toFixed(1)}s`}),this.dbManager.getSessionStore().markSessionCompleted(e.sessionDbId)}catch(t){throw t.name==="AbortError"?W.warn("SDK","Agent aborted",{sessionId:e.sessionDbId}):W.failure("SDK","Agent error",{sessionDbId:e.sessionDbId},t),t}finally{this.sessionManager.deleteSession(e.sessionDbId).catch(()=>{})}}async*createMessageGenerator(e){yield{type:"user",message:{role:"user",content:e.lastPromptNumber===1?mE(e.project,e.claudeSessionId,e.userPrompt):gE(e.userPrompt,e.lastPromptNumber,e.claudeSessionId)},session_id:e.claudeSessionId,parent_tool_use_id:null,isSynthetic:!0};for await(let r of this.sessionManager.getMessageIterator(e.sessionDbId))r.type==="observation"?(r.prompt_number!==void 0&&(e.lastPromptNumber=r.prompt_number),yield{type:"user",message:{role:"user",content:hE({id:0,tool_name:r.tool_name,tool_input:JSON.stringify(r.tool_input),tool_output:JSON.stringify(r.tool_response),created_at_epoch:Date.now(),cwd:r.cwd})},session_id:e.claudeSessionId,parent_tool_use_id:null,isSynthetic:!0}):r.type==="summarize"&&(yield{type:"user",message:{role:"user",content:vE({id:e.sessionDbId,sdk_session_id:e.sdkSessionId,project:e.project,user_prompt:e.userPrompt,last_user_message:r.last_user_message||"",last_assistant_message:r.last_assistant_message||""})},session_id:e.claudeSessionId,parent_tool_use_id:null,isSynthetic:!0})}async processSDKResponse(e,r,t,s){let i=dE(r,e.claudeSessionId);for(let o of i){let{id:l,createdAtEpoch:c}=this.dbManager.getSessionStore().storeObservation(e.claudeSessionId,e.project,o,e.lastPromptNumber,s);W.info("SDK","Observation saved",{sessionId:e.sessionDbId,obsId:l,type:o.type,title:o.title||ie("obs.title is null",{obsId:l,type:o.type},"(untitled)"),filesRead:o.files_read?.length??(ie("obs.files_read is null/undefined",{obsId:l}),0),filesModified:o.files_modified?.length??(ie("obs.files_modified is null/undefined",{obsId:l}),0),concepts:o.concepts?.length??(ie("obs.concepts is null/undefined",{obsId:l}),0)});let u=Date.now(),p=o.type,f=o.title||ie("obs.title is null for Chroma sync",{obsId:l,type:o.type},"(untitled)");this.dbManager.getChromaSync().syncObservation(l,e.claudeSessionId,e.project,o,e.lastPromptNumber,c,s).then(()=>{let d=Date.now()-u;W.debug("CHROMA","Observation synced",{obsId:l,duration:`${d}ms`,type:p,title:f})}).catch(d=>{W.error("CHROMA","Failed to sync observation",{obsId:l,sessionId:e.sessionDbId,type:p,title:f},d)}),t&&t.sseBroadcaster&&t.sseBroadcaster.broadcast({type:"new_observation",observation:{id:l,sdk_session_id:e.sdkSessionId,session_id:e.claudeSessionId,type:o.type,title:o.title,subtitle:o.subtitle,text:o.text||null,narrative:o.narrative||null,facts:JSON.stringify(o.facts||[]),concepts:JSON.stringify(o.concepts||[]),files_read:JSON.stringify(o.files||[]),files_modified:JSON.stringify([]),project:e.project,prompt_number:e.lastPromptNumber,created_at_epoch:c}})}let n=fE(r,e.sessionDbId);if(n){let{id:o,createdAtEpoch:l}=this.dbManager.getSessionStore().storeSummary(e.claudeSessionId,e.project,n,e.lastPromptNumber,s);W.info("SDK","Summary saved",{sessionId:e.sessionDbId,summaryId:o,request:n.request||ie("summary.request is null",{summaryId:o},"(no request)"),hasCompleted:!!n.completed,hasNextSteps:!!n.next_steps});let c=Date.now(),u=n.request||ie("summary.request is null for Chroma sync",{summaryId:o},"(no request)");this.dbManager.getChromaSync().syncSummary(o,e.claudeSessionId,e.project,n,e.lastPromptNumber,l,s).then(()=>{let p=Date.now()-c;W.debug("CHROMA","Summary synced",{summaryId:o,duration:`${p}ms`,request:u})}).catch(p=>{W.error("CHROMA","Failed to sync summary",{summaryId:o,sessionId:e.sessionDbId,request:u},p)}),t&&t.sseBroadcaster&&t.sseBroadcaster.broadcast({type:"new_summary",summary:{id:o,session_id:e.claudeSessionId,request:n.request,investigated:n.investigated,learned:n.learned,completed:n.completed,next_steps:n.next_steps,notes:n.notes,project:e.project,prompt_number:e.lastPromptNumber,created_at_epoch:l}})}t&&typeof t.broadcastProcessingStatus=="function"&&t.broadcastProcessingStatus()}findClaudeExecutable(){let e=process.env.CLAUDE_CODE_PATH||(0,_w.execSync)(process.platform==="win32"?"where claude":"which claude",{encoding:"utf8",windowsHide:!0}).trim().split(` +`)[0].trim();if(!e)throw new Error("Claude executable not found in PATH");return e}getModelId(){let e=Ew.default.join((0,Sw.homedir)(),".claude-mem","settings.json");return Hr.loadFromFile(e).CLAUDE_MEM_MODEL}};var xl=class{dbManager;constructor(e){this.dbManager=e}stripProjectPath(e,r){let t=`/${r}/`,s=e.indexOf(t);return s!==-1?e.substring(s+t.length):e}stripProjectPaths(e,r){if(!e)return e;try{let s=JSON.parse(e).map(i=>this.stripProjectPath(i,r));return JSON.stringify(s)}catch{return e}}sanitizeObservation(e){return{...e,files_read:this.stripProjectPaths(e.files_read,e.project),files_modified:this.stripProjectPaths(e.files_modified,e.project)}}getObservations(e,r,t){let s=this.paginate("observations","id, sdk_session_id, project, type, title, subtitle, narrative, text, facts, concepts, files_read, files_modified, prompt_number, created_at, created_at_epoch",e,r,t);return{...s,items:s.items.map(i=>this.sanitizeObservation(i))}}getSummaries(e,r,t){let s=this.dbManager.getSessionStore().db,i=` SELECT ss.id, s.claude_session_id as session_id, @@ -876,27 +916,128 @@ MEMORY PROCESSING CONTINUED SELECT up.id, up.claude_session_id, s.project, up.prompt_number, up.prompt_text, up.created_at, up.created_at_epoch FROM user_prompts up JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - `,n=[];t&&(i+=" WHERE s.project = ?",n.push(t)),i+=" ORDER BY up.created_at_epoch DESC LIMIT ? OFFSET ?",n.push(r+1,e);let l=s.prepare(i).all(...n);return{items:l.slice(0,r),hasMore:l.length>r,offset:e,limit:r}}paginate(e,r,t,s,i){let n=this.dbManager.getSessionStore().db,o=`SELECT ${r} FROM ${e}`,l=[];i&&(o+=" WHERE project = ?",l.push(i)),o+=" ORDER BY created_at_epoch DESC LIMIT ? OFFSET ?",l.push(s+1,t);let u=n.prepare(o).all(...l);return{items:u.slice(0,s),hasMore:u.length>s,offset:t,limit:s}}};var cl=class{dbManager;defaultSettings={sidebarOpen:!0,selectedProject:null,theme:"system"};constructor(e){this.dbManager=e}getSettings(){let e=this.dbManager.getSessionStore().db;try{let t=e.prepare("SELECT key, value FROM viewer_settings").all(),s={...this.defaultSettings};for(let i of t){let n=i.key;n in s&&(s[n]=JSON.parse(i.value))}return s}catch(r){return H.debug("WORKER","Failed to load settings, using defaults",{},r),{...this.defaultSettings}}}updateSettings(e){let t=this.dbManager.getSessionStore().db.prepare(` + `,n=[];t&&(i+=" WHERE s.project = ?",n.push(t)),i+=" ORDER BY up.created_at_epoch DESC LIMIT ? OFFSET ?",n.push(r+1,e);let l=s.prepare(i).all(...n);return{items:l.slice(0,r),hasMore:l.length>r,offset:e,limit:r}}paginate(e,r,t,s,i){let n=this.dbManager.getSessionStore().db,o=`SELECT ${r} FROM ${e}`,l=[];i&&(o+=" WHERE project = ?",l.push(i)),o+=" ORDER BY created_at_epoch DESC LIMIT ? OFFSET ?",l.push(s+1,t);let u=n.prepare(o).all(...l);return{items:u.slice(0,s),hasMore:u.length>s,offset:t,limit:s}}};Tt();var _l=class{dbManager;defaultSettings={sidebarOpen:!0,selectedProject:null,theme:"system"};constructor(e){this.dbManager=e}getSettings(){let e=this.dbManager.getSessionStore().db;try{let t=e.prepare("SELECT key, value FROM viewer_settings").all(),s={...this.defaultSettings};for(let i of t){let n=i.key;n in s&&(s[n]=JSON.parse(i.value))}return s}catch(r){return W.debug("WORKER","Failed to load settings, using defaults",{},r),{...this.defaultSettings}}}updateSettings(e){let t=this.dbManager.getSessionStore().db.prepare(` INSERT OR REPLACE INTO viewer_settings (key, value) VALUES (?, ?) - `);for(let[s,i]of Object.entries(e))t.run(s,JSON.stringify(i));return this.getSettings()}};var Wd=require("child_process"),js=require("fs"),ew=require("os"),Li=require("path");var qi=(0,Li.join)((0,ew.homedir)(),".claude","plugins","marketplaces","thedotmack");function vr(a){return(0,Wd.execSync)(`git ${a}`,{cwd:qi,encoding:"utf-8",timeout:3e4}).trim()}function tw(a,e=6e4){return(0,Wd.execSync)(a,{cwd:qi,encoding:"utf-8",timeout:e}).trim()}function ll(){let a=(0,Li.join)(qi,".git");if(!(0,js.existsSync)(a))return{branch:null,isBeta:!1,isGitRepo:!1,isDirty:!1,canSwitch:!1,error:"Installed plugin is not a git repository"};try{let e=vr("rev-parse --abbrev-ref HEAD"),t=vr("status --porcelain").length>0,s=e.startsWith("beta");return{branch:e,isBeta:s,isGitRepo:!0,isDirty:t,canSwitch:!0}}catch(e){return H.error("BRANCH","Failed to get branch info",{},e),{branch:null,isBeta:!1,isGitRepo:!0,isDirty:!1,canSwitch:!1,error:e.message}}}async function rw(a){let e=ll();if(!e.isGitRepo)return{success:!1,error:"Installed plugin is not a git repository. Please reinstall."};if(e.branch===a)return{success:!0,branch:a,message:`Already on branch ${a}`};try{H.info("BRANCH","Starting branch switch",{from:e.branch,to:a}),H.debug("BRANCH","Discarding local changes"),vr("checkout -- ."),vr("clean -fd"),H.debug("BRANCH","Fetching from origin"),vr("fetch origin"),H.debug("BRANCH","Checking out branch",{branch:a});try{vr(`checkout ${a}`)}catch{vr(`checkout -b ${a} origin/${a}`)}H.debug("BRANCH","Pulling latest"),vr(`pull origin ${a}`);let r=(0,Li.join)(qi,".install-version");return(0,js.existsSync)(r)&&(0,js.unlinkSync)(r),H.debug("BRANCH","Running npm install"),tw("npm install",12e4),H.success("BRANCH","Branch switch complete",{branch:a}),{success:!0,branch:a,message:`Switched to ${a}. Worker will restart automatically.`}}catch(r){H.error("BRANCH","Branch switch failed",{targetBranch:a},r);try{e.branch&&vr(`checkout ${e.branch}`)}catch{}return{success:!1,error:`Branch switch failed: ${r.message}`}}}async function aw(){let a=ll();if(!a.isGitRepo||!a.branch)return{success:!1,error:"Cannot pull updates: not a git repository"};try{H.info("BRANCH","Pulling updates",{branch:a.branch}),vr("checkout -- ."),vr("fetch origin"),vr(`pull origin ${a.branch}`);let e=(0,Li.join)(qi,".install-version");return(0,js.existsSync)(e)&&(0,js.unlinkSync)(e),tw("npm install",12e4),H.success("BRANCH","Updates pulled",{branch:a.branch}),{success:!0,branch:a.branch,message:`Updated ${a.branch}. Worker will restart automatically.`}}catch(e){return H.error("BRANCH","Pull failed",{},e),{success:!1,error:`Pull failed: ${e.message}`}}}var ul=["bugfix","feature","refactor","discovery","decision","change"],pl=["how-it-works","why-it-exists","what-changed","problem-solution","gotcha","pattern","trade-off"];var Zd=ul.join(","),Kd=pl.join(",");var Fi=class{app;server=null;startTime=Date.now();mcpClient;dbManager;sessionManager;sseBroadcaster;sdkAgent;paginationHelper;settingsManager;constructor(){this.app=(0,dl.default)(),this.dbManager=new Uc,this.sessionManager=new zc(this.dbManager),this.sseBroadcaster=new Hc,this.sdkAgent=new nl(this.dbManager,this.sessionManager),this.paginationHelper=new ol(this.dbManager),this.settingsManager=new cl(this.dbManager),this.sessionManager.setOnSessionDeleted(()=>{this.broadcastProcessingStatus()}),this.mcpClient=new bn({name:"worker-search-proxy",version:"1.0.0"},{capabilities:{}}),this.setupMiddleware(),this.setupRoutes()}setupMiddleware(){this.app.use(dl.default.json({limit:"50mb"})),this.app.use((0,sw.default)()),this.app.use((t,s,i)=>{if(t.path.startsWith("/health")||t.path==="/"||t.path.includes("."))return i();let n=Date.now(),o=`${t.method}-${Date.now()}`,l=this.summarizeRequestBody(t.method,t.path,t.body);H.info("HTTP",`\u2192 ${t.method} ${t.path}`,{requestId:o},l);let c=s.send.bind(s);s.send=function(u){let p=Date.now()-n;return H.info("HTTP",`\u2190 ${s.statusCode} ${t.path}`,{requestId:o,duration:`${p}ms`}),c(u)},i()});let e=Ea(),r=gr.default.join(e,"plugin","ui");this.app.use(dl.default.static(r))}summarizeRequestBody(e,r,t){if(!t||Object.keys(t).length===0||r.includes("/init"))return"";if(r.includes("/observations")){let s=t.tool_name||"?",i=t.tool_input;return`tool=${H.formatTool(s,i)}`}return r.includes("/summarize")?"requesting summary":""}setupRoutes(){this.app.get("/health",this.handleHealth.bind(this)),this.app.get("/",this.handleViewerUI.bind(this)),this.app.get("/stream",this.handleSSEStream.bind(this)),this.app.post("/sessions/:sessionDbId/init",this.handleSessionInit.bind(this)),this.app.post("/sessions/:sessionDbId/observations",this.handleObservations.bind(this)),this.app.post("/sessions/:sessionDbId/summarize",this.handleSummarize.bind(this)),this.app.get("/sessions/:sessionDbId/status",this.handleSessionStatus.bind(this)),this.app.delete("/sessions/:sessionDbId",this.handleSessionDelete.bind(this)),this.app.post("/sessions/:sessionDbId/complete",this.handleSessionComplete.bind(this)),this.app.get("/api/observations",this.handleGetObservations.bind(this)),this.app.get("/api/summaries",this.handleGetSummaries.bind(this)),this.app.get("/api/prompts",this.handleGetPrompts.bind(this)),this.app.get("/api/observation/:id",this.handleGetObservationById.bind(this)),this.app.get("/api/session/:id",this.handleGetSessionById.bind(this)),this.app.get("/api/prompt/:id",this.handleGetPromptById.bind(this)),this.app.get("/api/stats",this.handleGetStats.bind(this)),this.app.get("/api/projects",this.handleGetProjects.bind(this)),this.app.get("/api/processing-status",this.handleGetProcessingStatus.bind(this)),this.app.post("/api/processing",this.handleSetProcessing.bind(this)),this.app.get("/api/settings",this.handleGetSettings.bind(this)),this.app.post("/api/settings",this.handleUpdateSettings.bind(this)),this.app.get("/api/mcp/status",this.handleGetMcpStatus.bind(this)),this.app.post("/api/mcp/toggle",this.handleToggleMcp.bind(this)),this.app.get("/api/branch/status",this.handleGetBranchStatus.bind(this)),this.app.post("/api/branch/switch",this.handleSwitchBranch.bind(this)),this.app.post("/api/branch/update",this.handleUpdateBranch.bind(this)),this.app.get("/api/search",this.handleUnifiedSearch.bind(this)),this.app.get("/api/timeline",this.handleUnifiedTimeline.bind(this)),this.app.get("/api/decisions",this.handleDecisions.bind(this)),this.app.get("/api/changes",this.handleChanges.bind(this)),this.app.get("/api/how-it-works",this.handleHowItWorks.bind(this)),this.app.get("/api/search/observations",this.handleSearchObservations.bind(this)),this.app.get("/api/search/sessions",this.handleSearchSessions.bind(this)),this.app.get("/api/search/prompts",this.handleSearchPrompts.bind(this)),this.app.get("/api/search/by-concept",this.handleSearchByConcept.bind(this)),this.app.get("/api/search/by-file",this.handleSearchByFile.bind(this)),this.app.get("/api/search/by-type",this.handleSearchByType.bind(this)),this.app.get("/api/context/recent",this.handleGetRecentContext.bind(this)),this.app.get("/api/context/timeline",this.handleGetContextTimeline.bind(this)),this.app.get("/api/context/preview",this.handleContextPreview.bind(this)),this.app.get("/api/timeline/by-query",this.handleGetTimelineByQuery.bind(this)),this.app.get("/api/search/help",this.handleSearchHelp.bind(this))}async cleanupOrphanedProcesses(){try{let{execSync:e}=await import("child_process");try{let r=e("pgrep -fl uvx",{encoding:"utf-8",stdio:"pipe",windowsHide:!0}).trim();if(r){let t=r.split(` -`).length;H.info("WORKER","Cleaning up orphaned MCP processes",{count:t}),e("pkill -f uvx",{stdio:"pipe",windowsHide:!0}),H.success("WORKER",`Cleaned up ${t} orphaned MCP server processes`)}}catch(r){if(r.status===1)H.debug("WORKER","No orphaned MCP processes to clean up");else throw r}}catch(e){H.warn("WORKER","Failed to cleanup orphaned processes (non-fatal)",{},e)}}async start(){await this.cleanupOrphanedProcesses(),await this.dbManager.initialize();let e=gr.default.join(__dirname,"..","..","plugin","scripts","search-server.cjs"),r=new En({command:"node",args:[e],env:process.env});await this.mcpClient.connect(r),H.success("WORKER","Connected to MCP search server");let t=sc();this.server=await new Promise((s,i)=>{let n=this.app.listen(t,()=>s(n));n.on("error",i)}),H.info("SYSTEM","Worker started",{port:t,pid:process.pid})}async shutdown(){if(await this.sessionManager.shutdownAll(),this.mcpClient)try{await this.mcpClient.close(),H.info("SYSTEM","MCP client closed")}catch(e){H.error("SYSTEM","Failed to close MCP client",{},e)}this.server&&await new Promise((e,r)=>{this.server.close(t=>t?r(t):e())}),await this.dbManager.close(),H.info("SYSTEM","Worker shutdown complete")}handleHealth(e,r){r.json({status:"ok",timestamp:Date.now()})}handleViewerUI(e,r){try{let t=Ea(),s=gr.default.join(t,"plugin","ui","viewer.html"),i=(0,vt.readFileSync)(s,"utf-8");r.setHeader("Content-Type","text/html"),r.send(i)}catch(t){H.failure("WORKER","Viewer UI error",{},t),r.status(500).json({error:"Failed to load viewer UI"})}}handleSSEStream(e,r){r.setHeader("Content-Type","text/event-stream"),r.setHeader("Cache-Control","no-cache"),r.setHeader("Connection","keep-alive"),this.sseBroadcaster.addClient(r);let t=this.dbManager.getSessionStore().getAllProjects();this.sseBroadcaster.broadcast({type:"initial_load",projects:t,timestamp:Date.now()});let s=this.sessionManager.isAnySessionProcessing(),i=this.sessionManager.getTotalActiveWork();this.sseBroadcaster.broadcast({type:"processing_status",isProcessing:s,queueDepth:i})}handleSessionInit(e,r){try{let t=parseInt(e.params.sessionDbId,10),{userPrompt:s,promptNumber:i}=e.body,n=this.sessionManager.initializeSession(t,s,i),l=this.dbManager.getSessionStore().db.prepare(` - SELECT - up.*, - s.sdk_session_id, - s.project - FROM user_prompts up - JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - WHERE up.claude_session_id = ? - ORDER BY up.created_at_epoch DESC - LIMIT 1 - `).get(n.claudeSessionId);if(l){this.sseBroadcaster.broadcast({type:"new_prompt",prompt:{id:l.id,claude_session_id:l.claude_session_id,project:l.project,prompt_number:l.prompt_number,prompt_text:l.prompt_text,created_at_epoch:l.created_at_epoch}}),this.sseBroadcaster.broadcast({type:"processing_status",isProcessing:!0});let c=Date.now(),u=l.prompt_text;this.dbManager.getChromaSync().syncUserPrompt(l.id,l.sdk_session_id,l.project,u,l.prompt_number,l.created_at_epoch).then(()=>{let p=Date.now()-c,m=u.length>60?u.substring(0,60)+"...":u;H.debug("CHROMA","User prompt synced",{promptId:l.id,duration:`${p}ms`,prompt:m})}).catch(p=>{H.error("CHROMA","Failed to sync user_prompt",{promptId:l.id,sessionId:t},p)})}this.broadcastProcessingStatus(),H.info("SESSION","Generator starting",{sessionId:t,project:n.project,promptNum:n.lastPromptNumber}),n.generatorPromise=this.sdkAgent.startSession(n,this).catch(c=>{H.failure("SDK","SDK agent error",{sessionId:t},c)}).finally(()=>{H.info("SESSION","Generator finished",{sessionId:t}),n.generatorPromise=null,this.broadcastProcessingStatus()}),this.sseBroadcaster.broadcast({type:"session_started",sessionDbId:t,project:n.project}),r.json({status:"initialized",sessionDbId:t,port:sc()})}catch(t){H.failure("WORKER","Session init failed",{},t),r.status(500).json({error:t.message})}}handleObservations(e,r){try{let t=parseInt(e.params.sessionDbId,10),{tool_name:s,tool_input:i,tool_response:n,prompt_number:o,cwd:l}=e.body;this.sessionManager.queueObservation(t,{tool_name:s,tool_input:i,tool_response:n,prompt_number:o,cwd:l});let c=this.sessionManager.getSession(t);c&&!c.generatorPromise&&(H.info("SESSION","Generator auto-starting (observation)",{sessionId:t,queueDepth:c.pendingMessages.length}),c.generatorPromise=this.sdkAgent.startSession(c,this).catch(u=>{H.failure("SDK","SDK agent error",{sessionId:t},u)}).finally(()=>{H.info("SESSION","Generator finished",{sessionId:t}),c.generatorPromise=null,this.broadcastProcessingStatus()})),this.broadcastProcessingStatus(),this.sseBroadcaster.broadcast({type:"observation_queued",sessionDbId:t}),r.json({status:"queued"})}catch(t){H.failure("WORKER","Observation queuing failed",{},t),r.status(500).json({error:t.message})}}handleSummarize(e,r){try{let t=parseInt(e.params.sessionDbId,10),{last_user_message:s,last_assistant_message:i}=e.body;this.sessionManager.queueSummarize(t,s,i);let n=this.sessionManager.getSession(t);n&&!n.generatorPromise&&(H.info("SESSION","Generator auto-starting (summarize)",{sessionId:t,queueDepth:n.pendingMessages.length}),n.generatorPromise=this.sdkAgent.startSession(n,this).catch(o=>{H.failure("SDK","SDK agent error",{sessionId:t},o)}).finally(()=>{H.info("SESSION","Generator finished",{sessionId:t}),n.generatorPromise=null,this.broadcastProcessingStatus()})),this.broadcastProcessingStatus(),r.json({status:"queued"})}catch(t){H.failure("WORKER","Summarize queuing failed",{},t),r.status(500).json({error:t.message})}}handleSessionStatus(e,r){try{let t=parseInt(e.params.sessionDbId,10),s=this.sessionManager.getSession(t);if(!s){r.json({status:"not_found"});return}r.json({status:"active",sessionDbId:t,project:s.project,queueLength:s.pendingMessages.length,uptime:Date.now()-s.startTime})}catch(t){H.failure("WORKER","Session status failed",{},t),r.status(500).json({error:t.message})}}async handleSessionDelete(e,r){try{let t=parseInt(e.params.sessionDbId,10);await this.sessionManager.deleteSession(t),this.dbManager.markSessionComplete(t),this.sseBroadcaster.broadcast({type:"session_completed",sessionDbId:t}),r.json({status:"deleted"})}catch(t){H.failure("WORKER","Session delete failed",{},t),r.status(500).json({error:t.message})}}async handleSessionComplete(e,r){try{let t=parseInt(e.params.sessionDbId,10);if(isNaN(t)){r.status(400).json({success:!1,error:"Invalid session ID"});return}await this.sessionManager.deleteSession(t),this.dbManager.markSessionComplete(t),this.broadcastProcessingStatus(),this.sseBroadcaster.broadcast({type:"session_completed",timestamp:Date.now(),sessionDbId:t}),r.json({success:!0})}catch(t){H.failure("WORKER","Session complete failed",{},t),r.status(500).json({success:!1,error:String(t)})}}handleGetObservations(e,r){try{let{offset:t,limit:s,project:i}=Xd(e),n=this.paginationHelper.getObservations(t,s,i);r.json(n)}catch(t){H.failure("WORKER","Get observations failed",{},t),r.status(500).json({error:t.message})}}handleGetSummaries(e,r){try{let{offset:t,limit:s,project:i}=Xd(e),n=this.paginationHelper.getSummaries(t,s,i);r.json(n)}catch(t){H.failure("WORKER","Get summaries failed",{},t),r.status(500).json({error:t.message})}}handleGetPrompts(e,r){try{let{offset:t,limit:s,project:i}=Xd(e),n=this.paginationHelper.getPrompts(t,s,i);r.json(n)}catch(t){H.failure("WORKER","Get prompts failed",{},t),r.status(500).json({error:t.message})}}handleGetObservationById(e,r){try{let t=parseInt(e.params.id,10);if(isNaN(t)){r.status(400).json({error:"Invalid observation ID"});return}let i=this.dbManager.getSessionStore().getObservationById(t);if(!i){r.status(404).json({error:`Observation #${t} not found`});return}r.json(i)}catch(t){H.failure("WORKER","Get observation by ID failed",{},t),r.status(500).json({error:t.message})}}handleGetSessionById(e,r){try{let t=parseInt(e.params.id,10);if(isNaN(t)){r.status(400).json({error:"Invalid session ID"});return}let i=this.dbManager.getSessionStore().getSessionSummariesByIds([t]);if(i.length===0){r.status(404).json({error:`Session #${t} not found`});return}r.json(i[0])}catch(t){H.failure("WORKER","Get session by ID failed",{},t),r.status(500).json({error:t.message})}}handleGetPromptById(e,r){try{let t=parseInt(e.params.id,10);if(isNaN(t)){r.status(400).json({error:"Invalid prompt ID"});return}let i=this.dbManager.getSessionStore().getUserPromptsByIds([t]);if(i.length===0){r.status(404).json({error:`Prompt #${t} not found`});return}r.json(i[0])}catch(t){H.failure("WORKER","Get prompt by ID failed",{},t),r.status(500).json({error:t.message})}}handleGetStats(e,r){try{let t=this.dbManager.getSessionStore().db,s=Ea(),i=gr.default.join(s,"package.json"),o=JSON.parse((0,vt.readFileSync)(i,"utf-8")).version,l=t.prepare("SELECT COUNT(*) as count FROM observations").get(),c=t.prepare("SELECT COUNT(*) as count FROM sdk_sessions").get(),u=t.prepare("SELECT COUNT(*) as count FROM session_summaries").get(),p=gr.default.join((0,fl.homedir)(),".claude-mem","claude-mem.db"),m=0;(0,vt.existsSync)(p)&&(m=(0,vt.statSync)(p).size);let f=Math.floor((Date.now()-this.startTime)/1e3),h=this.sessionManager.getActiveSessionCount(),d=this.sseBroadcaster.getClientCount();r.json({worker:{version:o,uptime:f,activeSessions:h,sseClients:d,port:sc()},database:{path:p,size:m,observations:l.count,sessions:c.count,summaries:u.count}})}catch(t){H.failure("WORKER","Get stats failed",{},t),r.status(500).json({error:t.message})}}handleGetProjects(e,r){try{let i=this.dbManager.getSessionStore().db.prepare(` - SELECT DISTINCT project - FROM observations - WHERE project IS NOT NULL - GROUP BY project - ORDER BY MAX(created_at_epoch) DESC - `).all().map(n=>n.project);r.json({projects:i})}catch(t){H.failure("WORKER","Get projects failed",{},t),r.status(500).json({error:t.message})}}validateContextSettings(e){let r=["CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS","CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS","CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT","CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT","CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY","CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE"];for(let t of r)if(e[t]&&!["true","false"].includes(e[t]))return{valid:!1,error:`${t} must be "true" or "false"`};if(e.CLAUDE_MEM_CONTEXT_FULL_COUNT){let t=parseInt(e.CLAUDE_MEM_CONTEXT_FULL_COUNT,10);if(isNaN(t)||t<0||t>20)return{valid:!1,error:"CLAUDE_MEM_CONTEXT_FULL_COUNT must be between 0 and 20"}}if(e.CLAUDE_MEM_CONTEXT_SESSION_COUNT){let t=parseInt(e.CLAUDE_MEM_CONTEXT_SESSION_COUNT,10);if(isNaN(t)||t<1||t>50)return{valid:!1,error:"CLAUDE_MEM_CONTEXT_SESSION_COUNT must be between 1 and 50"}}if(e.CLAUDE_MEM_CONTEXT_FULL_FIELD&&!["narrative","facts"].includes(e.CLAUDE_MEM_CONTEXT_FULL_FIELD))return{valid:!1,error:'CLAUDE_MEM_CONTEXT_FULL_FIELD must be "narrative" or "facts"'};if(e.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES){let t=e.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES.split(",").map(s=>s.trim());for(let s of t)if(s&&!ul.includes(s))return{valid:!1,error:`Invalid observation type: ${s}. Valid types: ${ul.join(", ")}`}}if(e.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS){let t=e.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS.split(",").map(s=>s.trim());for(let s of t)if(s&&!pl.includes(s))return{valid:!1,error:`Invalid observation concept: ${s}. Valid concepts: ${pl.join(", ")}`}}return{valid:!0}}handleGetSettings(e,r){try{let t=gr.default.join((0,fl.homedir)(),".claude-mem","settings.json");if(!(0,vt.existsSync)(t)){r.json({CLAUDE_MEM_MODEL:"claude-haiku-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:Zd,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:Kd,CLAUDE_MEM_CONTEXT_FULL_COUNT:"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false"});return}let s=(0,vt.readFileSync)(t,"utf-8"),n=JSON.parse(s).env||{};r.json({CLAUDE_MEM_MODEL:n.CLAUDE_MEM_MODEL||"claude-haiku-4-5",CLAUDE_MEM_CONTEXT_OBSERVATIONS:n.CLAUDE_MEM_CONTEXT_OBSERVATIONS||"50",CLAUDE_MEM_WORKER_PORT:n.CLAUDE_MEM_WORKER_PORT||"37777",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:n.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS||"true",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:n.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS||"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:n.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT||"true",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:n.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT||"true",CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES:n.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES||Zd,CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS:n.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS||Kd,CLAUDE_MEM_CONTEXT_FULL_COUNT:n.CLAUDE_MEM_CONTEXT_FULL_COUNT||"5",CLAUDE_MEM_CONTEXT_FULL_FIELD:n.CLAUDE_MEM_CONTEXT_FULL_FIELD||"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:n.CLAUDE_MEM_CONTEXT_SESSION_COUNT||"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:n.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY||"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:n.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE||"false"})}catch(t){H.failure("WORKER","Get settings failed",{},t),r.status(500).json({error:t.message})}}handleUpdateSettings(e,r){try{if(e.body.CLAUDE_MEM_CONTEXT_OBSERVATIONS){let o=parseInt(e.body.CLAUDE_MEM_CONTEXT_OBSERVATIONS,10);if(isNaN(o)||o<1||o>200){r.status(400).json({success:!1,error:"CLAUDE_MEM_CONTEXT_OBSERVATIONS must be between 1 and 200"});return}}if(e.body.CLAUDE_MEM_WORKER_PORT){let o=parseInt(e.body.CLAUDE_MEM_WORKER_PORT,10);if(isNaN(o)||o<1024||o>65535){r.status(400).json({success:!1,error:"CLAUDE_MEM_WORKER_PORT must be between 1024 and 65535"});return}}let t=this.validateContextSettings(e.body);if(!t.valid){r.status(400).json({success:!1,error:t.error});return}let s=gr.default.join((0,fl.homedir)(),".claude-mem","settings.json"),i={env:{}};if((0,vt.existsSync)(s)){let o=(0,vt.readFileSync)(s,"utf-8");i=JSON.parse(o),i.env||(i.env={})}let n=["CLAUDE_MEM_MODEL","CLAUDE_MEM_CONTEXT_OBSERVATIONS","CLAUDE_MEM_WORKER_PORT","CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS","CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS","CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT","CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT","CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES","CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS","CLAUDE_MEM_CONTEXT_FULL_COUNT","CLAUDE_MEM_CONTEXT_FULL_FIELD","CLAUDE_MEM_CONTEXT_SESSION_COUNT","CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY","CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE"];for(let o of n)e.body[o]!==void 0&&(i.env[o]=e.body[o]);(0,vt.writeFileSync)(s,JSON.stringify(i,null,2),"utf-8"),H.info("WORKER","Settings updated"),r.json({success:!0,message:"Settings updated successfully"})}catch(t){H.failure("WORKER","Update settings failed",{},t),r.status(500).json({success:!1,error:String(t)})}}handleGetProcessingStatus(e,r){let t=this.sessionManager.isAnySessionProcessing(),s=this.sessionManager.getTotalActiveWork();r.json({isProcessing:t,queueDepth:s})}broadcastProcessingStatus(){let e=this.sessionManager.isAnySessionProcessing(),r=this.sessionManager.getTotalActiveWork(),t=this.sessionManager.getActiveSessionCount();H.info("WORKER","Broadcasting processing status",{isProcessing:e,queueDepth:r,activeSessions:t}),this.sseBroadcaster.broadcast({type:"processing_status",isProcessing:e,queueDepth:r})}handleSetProcessing(e,r){try{this.broadcastProcessingStatus();let t=this.sessionManager.isAnySessionProcessing(),s=this.sessionManager.getTotalQueueDepth(),i=this.sessionManager.getActiveSessionCount();H.debug("WORKER","Processing status broadcast",{isProcessing:t,queueDepth:s,activeSessions:i}),r.json({status:"ok",isProcessing:t})}catch(t){H.failure("WORKER","Failed to broadcast processing status",{},t),r.status(500).json({error:t.message})}}handleGetMcpStatus(e,r){try{let t=this.isMcpEnabled();r.json({enabled:t})}catch(t){H.failure("WORKER","Get MCP status failed",{},t),r.status(500).json({error:t.message})}}handleToggleMcp(e,r){try{let{enabled:t}=e.body;if(typeof t!="boolean"){r.status(400).json({error:"enabled must be a boolean"});return}this.toggleMcp(t),r.json({success:!0,enabled:this.isMcpEnabled()})}catch(t){H.failure("WORKER","Toggle MCP failed",{},t),r.status(500).json({success:!1,error:t.message})}}isMcpEnabled(){let e=Ea(),r=gr.default.join(e,"plugin",".mcp.json");return(0,vt.existsSync)(r)}toggleMcp(e){try{let r=Ea(),t=gr.default.join(r,"plugin",".mcp.json"),s=gr.default.join(r,"plugin",".mcp.json.disabled");e&&(0,vt.existsSync)(s)?((0,vt.renameSync)(s,t),H.info("WORKER","MCP search server enabled")):!e&&(0,vt.existsSync)(t)?((0,vt.renameSync)(t,s),H.info("WORKER","MCP search server disabled")):H.debug("WORKER","MCP toggle no-op (already in desired state)",{enabled:e})}catch(r){throw H.failure("WORKER","Failed to toggle MCP",{enabled:e},r),r}}handleGetBranchStatus(e,r){try{let t=ll();r.json(t)}catch(t){H.failure("WORKER","Failed to get branch status",{},t),r.status(500).json({error:t.message})}}async handleSwitchBranch(e,r){try{let{branch:t}=e.body;if(!t){r.status(400).json({success:!1,error:"Missing branch parameter"});return}let s=["main","beta/7.0"];if(!s.includes(t)){r.status(400).json({success:!1,error:`Invalid branch. Allowed: ${s.join(", ")}`});return}H.info("WORKER","Branch switch requested",{branch:t});let i=await rw(t);i.success&&setTimeout(()=>{H.info("WORKER","Restarting worker after branch switch"),process.exit(0)},1e3),r.json(i)}catch(t){H.failure("WORKER","Branch switch failed",{},t),r.status(500).json({success:!1,error:t.message})}}async handleUpdateBranch(e,r){try{H.info("WORKER","Branch update requested");let t=await aw();t.success&&setTimeout(()=>{H.info("WORKER","Restarting worker after branch update"),process.exit(0)},1e3),r.json(t)}catch(t){H.failure("WORKER","Branch update failed",{},t),r.status(500).json({success:!1,error:t.message})}}async handleUnifiedSearch(e,r){try{let t=await this.mcpClient.callTool({name:"search",arguments:e.query});r.json(t.content)}catch(t){H.failure("WORKER","Unified search failed",{},t),r.status(500).json({error:t.message})}}async handleUnifiedTimeline(e,r){try{let t=await this.mcpClient.callTool({name:"timeline",arguments:e.query});r.json(t.content)}catch(t){H.failure("WORKER","Unified timeline failed",{},t),r.status(500).json({error:t.message})}}async handleDecisions(e,r){try{let t=await this.mcpClient.callTool({name:"decisions",arguments:e.query});r.json(t.content)}catch(t){H.failure("WORKER","Decisions search failed",{},t),r.status(500).json({error:t.message})}}async handleChanges(e,r){try{let t=await this.mcpClient.callTool({name:"changes",arguments:e.query});r.json(t.content)}catch(t){H.failure("WORKER","Changes search failed",{},t),r.status(500).json({error:t.message})}}async handleHowItWorks(e,r){try{let t=await this.mcpClient.callTool({name:"how_it_works",arguments:e.query});r.json(t.content)}catch(t){H.failure("WORKER","How it works search failed",{},t),r.status(500).json({error:t.message})}}async handleSearchObservations(e,r){try{let t=await this.mcpClient.callTool({name:"search_observations",arguments:e.query});r.json(t.content)}catch(t){H.failure("WORKER","Search failed",{},t),r.status(500).json({error:t.message})}}async handleSearchSessions(e,r){try{let t=await this.mcpClient.callTool({name:"search_sessions",arguments:e.query});r.json(t.content)}catch(t){H.failure("WORKER","Search failed",{},t),r.status(500).json({error:t.message})}}async handleSearchPrompts(e,r){try{let t=await this.mcpClient.callTool({name:"search_user_prompts",arguments:e.query});r.json(t.content)}catch(t){H.failure("WORKER","Search failed",{},t),r.status(500).json({error:t.message})}}async handleSearchByConcept(e,r){try{let t=await this.mcpClient.callTool({name:"find_by_concept",arguments:e.query});r.json(t.content)}catch(t){H.failure("WORKER","Search failed",{},t),r.status(500).json({error:t.message})}}async handleSearchByFile(e,r){try{let t=await this.mcpClient.callTool({name:"find_by_file",arguments:e.query});r.json(t.content)}catch(t){H.failure("WORKER","Search failed",{},t),r.status(500).json({error:t.message})}}async handleSearchByType(e,r){try{let t=await this.mcpClient.callTool({name:"find_by_type",arguments:e.query});r.json(t.content)}catch(t){H.failure("WORKER","Search failed",{},t),r.status(500).json({error:t.message})}}async handleGetRecentContext(e,r){try{let t=await this.mcpClient.callTool({name:"get_recent_context",arguments:e.query});r.json(t.content)}catch(t){H.failure("WORKER","Search failed",{},t),r.status(500).json({error:t.message})}}async handleGetContextTimeline(e,r){try{let t=await this.mcpClient.callTool({name:"get_context_timeline",arguments:e.query});r.json(t.content)}catch(t){H.failure("WORKER","Search failed",{},t),r.status(500).json({error:t.message})}}async handleContextPreview(e,r){try{let t=Ea(),s=gr.default.join(t,"plugin","scripts","context-hook.js"),{contextHook:i}=await import(s),n=e.query.project;if(!n)return r.status(400).json({error:"Project parameter is required"});let o=`/preview/${n}`,l=await i({session_id:"preview-"+Date.now(),cwd:o},!0);r.setHeader("Content-Type","text/plain; charset=utf-8"),r.send(l)}catch(t){H.failure("WORKER","Context preview generation failed",{},t),r.status(500).json({error:"Failed to generate context preview",message:t.message})}}async handleGetTimelineByQuery(e,r){try{let t=await this.mcpClient.callTool({name:"get_timeline_by_query",arguments:e.query});r.json(t.content)}catch(t){H.failure("WORKER","Search failed",{},t),r.status(500).json({error:t.message})}}handleSearchHelp(e,r){r.json({title:"Claude-Mem Search API",description:"HTTP API for searching persistent memory",endpoints:[{path:"/api/search/observations",method:"GET",description:"Search observations using full-text search",parameters:{query:"Search query (required)",format:'Response format: "index" or "full" (default: "full")',limit:"Number of results (default: 20)",project:"Filter by project name (optional)"}},{path:"/api/search/sessions",method:"GET",description:"Search session summaries using full-text search",parameters:{query:"Search query (required)",format:'Response format: "index" or "full" (default: "full")',limit:"Number of results (default: 20)"}},{path:"/api/search/prompts",method:"GET",description:"Search user prompts using full-text search",parameters:{query:"Search query (required)",format:'Response format: "index" or "full" (default: "full")',limit:"Number of results (default: 20)",project:"Filter by project name (optional)"}},{path:"/api/search/by-concept",method:"GET",description:"Find observations by concept tag",parameters:{concept:"Concept tag (required): discovery, decision, bugfix, feature, refactor",format:'Response format: "index" or "full" (default: "full")',limit:"Number of results (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/search/by-file",method:"GET",description:"Find observations and sessions by file path",parameters:{filePath:"File path or partial path (required)",format:'Response format: "index" or "full" (default: "full")',limit:"Number of results per type (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/search/by-type",method:"GET",description:"Find observations by type",parameters:{type:"Observation type (required): discovery, decision, bugfix, feature, refactor",format:'Response format: "index" or "full" (default: "full")',limit:"Number of results (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/context/recent",method:"GET",description:"Get recent session context including summaries and observations",parameters:{project:"Project name (default: current directory)",limit:"Number of recent sessions (default: 3)"}},{path:"/api/context/timeline",method:"GET",description:"Get unified timeline around a specific point in time",parameters:{anchor:'Anchor point: observation ID, session ID (e.g., "S123"), or ISO timestamp (required)',depth_before:"Number of records before anchor (default: 10)",depth_after:"Number of records after anchor (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/timeline/by-query",method:"GET",description:"Search for best match, then get timeline around it",parameters:{query:"Search query (required)",mode:'Search mode: "auto", "observations", or "sessions" (default: "auto")',depth_before:"Number of records before match (default: 10)",depth_after:"Number of records after match (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/search/help",method:"GET",description:"Get this help documentation"}],examples:['curl "http://localhost:37777/api/search/observations?query=authentication&format=index&limit=5"','curl "http://localhost:37777/api/search/by-type?type=bugfix&limit=10"','curl "http://localhost:37777/api/context/recent?project=claude-mem&limit=3"','curl "http://localhost:37777/api/context/timeline?anchor=123&depth_before=5&depth_after=5"']})}};function Xd(a){let e=parseInt(a.query.offset,10)||0,r=Math.min(parseInt(a.query.limit,10)||20,100),t=a.query.project;return{offset:e,limit:r,project:t}}if(require.main===module||!module.parent){let a=new Fi;process.on("SIGTERM",async()=>{H.info("SYSTEM","Received SIGTERM, shutting down gracefully"),await a.shutdown(),process.exit(0)}),process.on("SIGINT",async()=>{H.info("SYSTEM","Received SIGINT, shutting down gracefully"),await a.shutdown(),process.exit(0)}),a.start().catch(e=>{H.failure("SYSTEM","Worker startup failed",{},e),process.exit(1)})}var F$=Fi;0&&(module.exports={WorkerService}); + `);for(let[s,i]of Object.entries(e))t.run(s,JSON.stringify(i));return this.getSettings()}};var ww=require("path");var Sl=class{constructor(e,r,t,s,i){this.sessionSearch=e;this.sessionStore=r;this.chromaSync=t;this.formatter=s;this.timelineService=i}async queryChroma(e,r,t){return await this.chromaSync.queryChroma(e,r,t)}normalizeParams(e){let r={...e};return r.concepts&&typeof r.concepts=="string"&&(r.concepts=r.concepts.split(",").map(t=>t.trim()).filter(Boolean)),r.files&&typeof r.files=="string"&&(r.files=r.files.split(",").map(t=>t.trim()).filter(Boolean)),r.obs_type&&typeof r.obs_type=="string"&&(r.obs_type=r.obs_type.split(",").map(t=>t.trim()).filter(Boolean)),r.type&&typeof r.type=="string"&&r.type.includes(",")&&(r.type=r.type.split(",").map(t=>t.trim()).filter(Boolean)),(r.dateStart||r.dateEnd)&&(r.dateRange={start:r.dateStart,end:r.dateEnd},delete r.dateStart,delete r.dateEnd),r}async search(e){try{let r=this.normalizeParams(e),{query:t,format:s="index",type:i,obs_type:n,concepts:o,files:l,...c}=r,u=[],p=[],f=[],d=!i||i==="observations",v=!i||i==="sessions",h=!i||i==="prompts";if(t)if(this.chromaSync){let w=!1;try{ie(`[search-server] Using ChromaDB semantic search (type filter: ${i||"all"})`);let P;i==="observations"?P={doc_type:"observation"}:i==="sessions"?P={doc_type:"session_summary"}:i==="prompts"&&(P={doc_type:"user_prompt"});let T=await this.queryChroma(t,100,P);if(w=!0,ie(`[search-server] ChromaDB returned ${T.ids.length} semantic matches`),T.ids.length>0){let C=Date.now()-7776e6,D=T.metadatas.map((k,O)=>({id:T.ids[O],meta:k,isRecent:k&&k.created_at_epoch>C})).filter(k=>k.isRecent);ie(`[search-server] ${D.length} results within 90-day window`);let A=[],j=[],N=[];for(let k of D){let O=k.meta?.doc_type;O==="observation"&&d?A.push(k.id):O==="session_summary"&&v?j.push(k.id):O==="user_prompt"&&h&&N.push(k.id)}if(ie(`[search-server] Categorized: ${A.length} obs, ${j.length} sessions, ${N.length} prompts`),A.length>0){let k={...c,type:n,concepts:o,files:l};u=this.sessionStore.getObservationsByIds(A,k)}j.length>0&&(p=this.sessionStore.getSessionSummariesByIds(j,{orderBy:"date_desc",limit:c.limit})),N.length>0&&(f=this.sessionStore.getUserPromptsByIds(N,{orderBy:"date_desc",limit:c.limit})),ie(`[search-server] Hydrated ${u.length} obs, ${p.length} sessions, ${f.length} prompts from SQLite`)}else ie("[search-server] ChromaDB found no matches (this is final - NOT falling back to FTS5)")}catch(P){ie("[search-server] ChromaDB failed - returning empty results (FTS5 fallback removed):",P.message),ie("[search-server] Install UVX/Python to enable vector search: https://docs.astral.sh/uv/getting-started/installation/"),u=[],p=[],f=[]}}else ie("[search-server] ChromaDB not initialized - returning empty results (FTS5 fallback removed)"),ie("[search-server] Install UVX/Python to enable vector search: https://docs.astral.sh/uv/getting-started/installation/"),u=[],p=[],f=[];else{ie("[search-server] Filter-only query (no query text), using direct SQLite filtering (enables date filters)");let w={...c,type:n,concepts:o,files:l};d&&(u=this.sessionSearch.searchObservations(void 0,w)),v&&(p=this.sessionSearch.searchSessions(void 0,c)),h&&(f=this.sessionSearch.searchUserPrompts(void 0,c))}let m=u.length+p.length+f.length;if(m===0)return{content:[{type:"text",text:`No results found matching "${t}"`}]};let y=[...u.map(w=>({type:"observation",data:w,epoch:w.created_at_epoch})),...p.map(w=>({type:"session",data:w,epoch:w.created_at_epoch})),...f.map(w=>({type:"prompt",data:w,epoch:w.created_at_epoch}))];c.orderBy==="date_desc"?y.sort((w,P)=>P.epoch-w.epoch):c.orderBy==="date_asc"&&y.sort((w,P)=>w.epoch-P.epoch);let g=y.slice(0,c.limit||20),b;if(s==="index"){let w=`Found ${m} result(s) matching "${t}" (${u.length} obs, ${p.length} sessions, ${f.length} prompts): + +`,P=g.map((T,C)=>T.type==="observation"?this.formatter.formatObservationIndex(T.data,C):T.type==="session"?this.formatter.formatSessionIndex(T.data,C):this.formatter.formatUserPromptIndex(T.data,C));b=w+P.join(` + +`)+this.formatter.formatSearchTips()}else b=g.map(P=>P.type==="observation"?this.formatter.formatObservationResult(P.data):P.type==="session"?this.formatter.formatSessionResult(P.data):this.formatter.formatUserPromptResult(P.data)).join(` + +--- + +`);return{content:[{type:"text",text:b}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async timeline(e){try{let{anchor:r,query:t,depth_before:s=10,depth_after:i=10,project:n}=e;if(!r&&!t)return{content:[{type:"text",text:'Error: Must provide either "anchor" or "query" parameter'}],isError:!0};if(r&&t)return{content:[{type:"text",text:'Error: Cannot provide both "anchor" and "query" parameters. Use one or the other.'}],isError:!0};let o,l,c;if(t){let b=[];if(this.chromaSync)try{ie("[search-server] Using hybrid semantic search for timeline query");let P=await this.queryChroma(t,100);if(ie(`[search-server] Chroma returned ${P?.ids?.length??0} semantic matches`),P?.ids&&P.ids.length>0){let T=Date.now()-7776e6,C=P.ids.filter((D,A)=>{let j=P.metadatas[A];return j&&j.created_at_epoch>T});C.length>0&&(b=this.sessionStore.getObservationsByIds(C,{orderBy:"date_desc",limit:1}))}}catch(P){ie("[search-server] Chroma query failed - no results (FTS5 fallback removed):",P.message)}if(b.length===0)return{content:[{type:"text",text:`No observations found matching "${t}". Try a different search query.`}]};let w=b[0];o=w.id,l=w.created_at_epoch,ie(`[search-server] Query mode: Using observation #${w.id} as timeline anchor`),c=this.sessionStore.getTimelineAroundObservation(w.id,w.created_at_epoch,s,i,n)}else if(typeof r=="number"){let b=this.sessionStore.getObservationById(r);if(!b)return{content:[{type:"text",text:`Observation #${r} not found`}],isError:!0};o=r,l=b.created_at_epoch,c=this.sessionStore.getTimelineAroundObservation(r,l,s,i,n)}else if(typeof r=="string")if(r.startsWith("S")||r.startsWith("#S")){let b=r.replace(/^#?S/,""),w=parseInt(b,10),P=this.sessionStore.getSessionSummariesByIds([w]);if(P.length===0)return{content:[{type:"text",text:`Session #${w} not found`}],isError:!0};l=P[0].created_at_epoch,o=`S${w}`,c=this.sessionStore.getTimelineAroundTimestamp(l,s,i,n)}else{let b=new Date(r);if(isNaN(b.getTime()))return{content:[{type:"text",text:`Invalid timestamp: ${r}`}],isError:!0};l=b.getTime(),o=r,c=this.sessionStore.getTimelineAroundTimestamp(l,s,i,n)}else return{content:[{type:"text",text:'Invalid anchor: must be observation ID (number), session ID (e.g., "S123"), or ISO timestamp'}],isError:!0};let u=[...(c.observations||[]).map(b=>({type:"observation",data:b,epoch:b.created_at_epoch})),...(c.sessions||[]).map(b=>({type:"session",data:b,epoch:b.created_at_epoch})),...(c.prompts||[]).map(b=>({type:"prompt",data:b,epoch:b.created_at_epoch}))];u.sort((b,w)=>b.epoch-w.epoch);let p=this.timelineService.filterByDepth(u,o,l,s,i);if(!p||p.length===0)return{content:[{type:"text",text:t?`Found observation matching "${t}", but no timeline context available (${s} records before, ${i} records after).`:`No context found around anchor (${s} records before, ${i} records after)`}]};let f=b=>new Date(b).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric"}),d=b=>new Date(b).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0}),v=b=>new Date(b).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0}),h=b=>b?Math.ceil(b.length/4):0,m=[];if(t){let b=p.find(P=>P.type==="observation"&&P.data.id===o),w=b&&b.type==="observation"?b.data.title||"Untitled":"Unknown";m.push(`# Timeline for query: "${t}"`),m.push(`**Anchor:** Observation #${o} - ${w}`)}else m.push(`# Timeline around anchor: ${o}`);m.push(`**Window:** ${s} records before \u2192 ${i} records after | **Items:** ${p?.length??0}`),m.push(""),m.push("**Legend:** \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u{1F9E0} decision"),m.push("");let y=new Map;for(let b of p){let w=f(b.epoch);y.has(w)||y.set(w,[]),y.get(w).push(b)}let g=Array.from(y.entries()).sort((b,w)=>{let P=new Date(b[0]).getTime(),T=new Date(w[0]).getTime();return P-T});for(let[b,w]of g){m.push(`### ${b}`),m.push("");let P=null,T="",C=!1;for(let D of w){let A=typeof o=="number"&&D.type==="observation"&&D.data.id===o||typeof o=="string"&&o.startsWith("S")&&D.type==="session"&&`S${D.data.id}`===o;if(D.type==="session"){C&&(m.push(""),C=!1,P=null,T="");let j=D.data,N=j.request||"Session summary",k=`claude-mem://session-summary/${j.id}`,O=A?" \u2190 **ANCHOR**":"";m.push(`**\u{1F3AF} #S${j.id}** ${N} (${v(D.epoch)}) [\u2192](${k})${O}`),m.push("")}else if(D.type==="prompt"){C&&(m.push(""),C=!1,P=null,T="");let j=D.data,N=j.prompt_text.length>100?j.prompt_text.substring(0,100)+"...":j.prompt_text;m.push(`**\u{1F4AC} User Prompt #${j.prompt_number}** (${v(D.epoch)})`),m.push(`> ${N}`),m.push("")}else if(D.type==="observation"){let j=D.data,N="General";N!==P&&(C&&m.push(""),m.push(`**${N}**`),m.push("| ID | Time | T | Title | Tokens |"),m.push("|----|------|---|-------|--------|"),P=N,C=!0,T="");let k="\u2022";switch(j.type){case"bugfix":k="\u{1F534}";break;case"feature":k="\u{1F7E3}";break;case"refactor":k="\u{1F504}";break;case"change":k="\u2705";break;case"discovery":k="\u{1F535}";break;case"decision":k="\u{1F9E0}";break}let O=d(D.epoch),$=j.title||"Untitled",F=h(j.narrative),H=O!==T?O:"\u2033";T=O;let K=A?" \u2190 **ANCHOR**":"";m.push(`| #${j.id} | ${H} | ${k} | ${$}${K} | ~${F} |`)}}C&&m.push("")}return{content:[{type:"text",text:m.join(` +`)}]}}catch(r){return{content:[{type:"text",text:`Timeline query failed: ${r.message}`}],isError:!0}}}async decisions(e){try{let r=this.normalizeParams(e),{query:t,format:s="index",...i}=r,n=[];if(this.chromaSync)try{if(t){ie("[search-server] Using Chroma semantic search with type=decision filter");let c=(await this.queryChroma(t,Math.min((i.limit||20)*2,100),{type:"decision"})).ids;c.length>0&&(n=this.sessionStore.getObservationsByIds(c,{...i,type:"decision"}),n.sort((u,p)=>c.indexOf(u.id)-c.indexOf(p.id)))}else{ie("[search-server] Using metadata-first + semantic ranking for decisions");let l=this.sessionSearch.findByType("decision",i);if(l.length>0){let c=l.map(f=>f.id),u=await this.queryChroma("decision",Math.min(c.length,100)),p=[];for(let f of u.ids)c.includes(f)&&!p.includes(f)&&p.push(f);p.length>0&&(n=this.sessionStore.getObservationsByIds(p,{limit:i.limit||20}),n.sort((f,d)=>p.indexOf(f.id)-p.indexOf(d.id)))}}}catch(l){ie("[search-server] Chroma search failed, using SQLite fallback:",l.message)}if(n.length===0&&(n=this.sessionSearch.findByType("decision",i)),n.length===0)return{content:[{type:"text",text:"No decision observations found"}]};let o;if(s==="index"){let l=`Found ${n.length} decision(s): + +`,c=n.map((u,p)=>this.formatter.formatObservationIndex(u,p));o=l+c.join(` + +`)}else o=n.map(c=>this.formatter.formatObservationResult(c)).join(` + +--- + +`);return{content:[{type:"text",text:o}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async changes(e){try{let r=this.normalizeParams(e),{format:t="index",...s}=r,i=[];if(this.chromaSync)try{ie("[search-server] Using hybrid search for change-related observations");let o=this.sessionSearch.findByType("change",s),l=this.sessionSearch.findByConcept("change",s),c=this.sessionSearch.findByConcept("what-changed",s),u=new Set;if([...o,...l,...c].forEach(p=>u.add(p.id)),u.size>0){let p=Array.from(u),f=await this.queryChroma("what changed",Math.min(p.length,100)),d=[];for(let v of f.ids)p.includes(v)&&!d.includes(v)&&d.push(v);d.length>0&&(i=this.sessionStore.getObservationsByIds(d,{limit:s.limit||20}),i.sort((v,h)=>d.indexOf(v.id)-d.indexOf(h.id)))}}catch(o){ie("[search-server] Chroma ranking failed, using SQLite order:",o.message)}if(i.length===0){let o=this.sessionSearch.findByType("change",s),l=this.sessionSearch.findByConcept("change",s),c=this.sessionSearch.findByConcept("what-changed",s),u=new Set;[...o,...l,...c].forEach(p=>u.add(p.id)),i=Array.from(u).map(p=>o.find(f=>f.id===p)||l.find(f=>f.id===p)||c.find(f=>f.id===p)).filter(Boolean),i.sort((p,f)=>f.created_at_epoch-p.created_at_epoch),i=i.slice(0,s.limit||20)}if(i.length===0)return{content:[{type:"text",text:"No change-related observations found"}]};let n;if(t==="index"){let o=`Found ${i.length} change-related observation(s): + +`,l=i.map((c,u)=>this.formatter.formatObservationIndex(c,u));n=o+l.join(` + +`)}else n=i.map(l=>this.formatter.formatObservationResult(l)).join(` + +--- + +`);return{content:[{type:"text",text:n}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async howItWorks(e){try{let r=this.normalizeParams(e),{format:t="index",...s}=r,i=[];if(this.chromaSync)try{ie("[search-server] Using metadata-first + semantic ranking for how-it-works");let o=this.sessionSearch.findByConcept("how-it-works",s);if(o.length>0){let l=o.map(p=>p.id),c=await this.queryChroma("how it works architecture",Math.min(l.length,100)),u=[];for(let p of c.ids)l.includes(p)&&!u.includes(p)&&u.push(p);u.length>0&&(i=this.sessionStore.getObservationsByIds(u,{limit:s.limit||20}),i.sort((p,f)=>u.indexOf(p.id)-u.indexOf(f.id)))}}catch(o){ie("[search-server] Chroma ranking failed, using SQLite order:",o.message)}if(i.length===0&&(i=this.sessionSearch.findByConcept("how-it-works",s)),i.length===0)return{content:[{type:"text",text:'No "how it works" observations found'}]};let n;if(t==="index"){let o=`Found ${i.length} "how it works" observation(s): + +`,l=i.map((c,u)=>this.formatter.formatObservationIndex(c,u));n=o+l.join(` + +`)}else n=i.map(l=>this.formatter.formatObservationResult(l)).join(` + +--- + +`);return{content:[{type:"text",text:n}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async searchObservations(e){try{let r=this.normalizeParams(e),{query:t,format:s="index",...i}=r,n=[];if(this.chromaSync)try{ie("[search-server] Using hybrid semantic search (Chroma + SQLite)");let l=await this.queryChroma(t,100);if(ie(`[search-server] Chroma returned ${l.ids.length} semantic matches`),l.ids.length>0){let c=Date.now()-7776e6,u=l.ids.filter((p,f)=>{let d=l.metadatas[f];return d&&d.created_at_epoch>c});if(ie(`[search-server] ${u.length} results within 90-day window`),u.length>0){let p=i.limit||20;n=this.sessionStore.getObservationsByIds(u,{orderBy:"date_desc",limit:p}),ie(`[search-server] Hydrated ${n.length} observations from SQLite`)}}}catch(l){ie("[search-server] Chroma query failed - no results (FTS5 fallback removed):",l.message)}if(n.length===0)return{content:[{type:"text",text:`No observations found matching "${t}"`}]};let o;if(s==="index"){let l=`Found ${n.length} observation(s) matching "${t}": + +`,c=n.map((u,p)=>this.formatter.formatObservationIndex(u,p));o=l+c.join(` + +`)+this.formatter.formatSearchTips()}else o=n.map(c=>this.formatter.formatObservationResult(c)).join(` + +--- + +`);return{content:[{type:"text",text:o}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async searchSessions(e){try{let r=this.normalizeParams(e),{query:t,format:s="index",...i}=r,n=[];if(this.chromaSync)try{ie("[search-server] Using hybrid semantic search for sessions");let l=await this.queryChroma(t,100,{doc_type:"session_summary"});if(ie(`[search-server] Chroma returned ${l.ids.length} semantic matches`),l.ids.length>0){let c=Date.now()-7776e6,u=l.ids.filter((p,f)=>{let d=l.metadatas[f];return d&&d.created_at_epoch>c});if(ie(`[search-server] ${u.length} results within 90-day window`),u.length>0){let p=i.limit||20;n=this.sessionStore.getSessionSummariesByIds(u,{orderBy:"date_desc",limit:p}),ie(`[search-server] Hydrated ${n.length} sessions from SQLite`)}}}catch(l){ie("[search-server] Chroma query failed - no results (FTS5 fallback removed):",l.message)}if(n.length===0)return{content:[{type:"text",text:`No sessions found matching "${t}"`}]};let o;if(s==="index"){let l=`Found ${n.length} session(s) matching "${t}": + +`,c=n.map((u,p)=>this.formatter.formatSessionIndex(u,p));o=l+c.join(` + +`)+this.formatter.formatSearchTips()}else o=n.map(c=>this.formatter.formatSessionResult(c)).join(` + +--- + +`);return{content:[{type:"text",text:o}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async searchUserPrompts(e){try{let r=this.normalizeParams(e),{query:t,format:s="index",...i}=r,n=[];if(this.chromaSync)try{ie("[search-server] Using hybrid semantic search for user prompts");let l=await this.queryChroma(t,100,{doc_type:"user_prompt"});if(ie(`[search-server] Chroma returned ${l.ids.length} semantic matches`),l.ids.length>0){let c=Date.now()-7776e6,u=l.ids.filter((p,f)=>{let d=l.metadatas[f];return d&&d.created_at_epoch>c});if(ie(`[search-server] ${u.length} results within 90-day window`),u.length>0){let p=i.limit||20;n=this.sessionStore.getUserPromptsByIds(u,{orderBy:"date_desc",limit:p}),ie(`[search-server] Hydrated ${n.length} user prompts from SQLite`)}}}catch(l){ie("[search-server] Chroma query failed - no results (FTS5 fallback removed):",l.message)}if(n.length===0)return{content:[{type:"text",text:t?`No user prompts found matching "${t}"`:"No user prompts found"}]};let o;if(s==="index"){let l=`Found ${n.length} user prompt(s) matching "${t}": + +`,c=n.map((u,p)=>this.formatter.formatUserPromptIndex(u,p));o=l+c.join(` + +`)+this.formatter.formatSearchTips()}else o=n.map(c=>this.formatter.formatUserPromptResult(c)).join(` + +--- + +`);return{content:[{type:"text",text:o}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async findByConcept(e){try{let r=this.normalizeParams(e),{concepts:t,format:s="index",...i}=r,n=[];if(this.chromaSync)try{ie("[search-server] Using metadata-first + semantic ranking for concept search");let l=this.sessionSearch.findByConcept(t,i);if(ie(`[search-server] Found ${l.length} observations with concept "${t}"`),l.length>0){let c=l.map(f=>f.id),u=await this.queryChroma(t,Math.min(c.length,100)),p=[];for(let f of u.ids)c.includes(f)&&!p.includes(f)&&p.push(f);ie(`[search-server] Chroma ranked ${p.length} results by semantic relevance`),p.length>0&&(n=this.sessionStore.getObservationsByIds(p,{limit:i.limit||20}),n.sort((f,d)=>p.indexOf(f.id)-p.indexOf(d.id)))}}catch(l){ie("[search-server] Chroma ranking failed, using SQLite order:",l.message)}if(n.length===0&&(ie("[search-server] Using SQLite-only concept search"),n=this.sessionSearch.findByConcept(t,i)),n.length===0)return{content:[{type:"text",text:`No observations found with concept "${t}"`}]};let o;if(s==="index"){let l=`Found ${n.length} observation(s) with concept "${t}": + +`,c=n.map((u,p)=>this.formatter.formatObservationIndex(u,p));o=l+c.join(` + +`)+this.formatter.formatSearchTips()}else o=n.map(c=>this.formatter.formatObservationResult(c)).join(` + +--- + +`);return{content:[{type:"text",text:o}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async findByFile(e){try{let r=this.normalizeParams(e),{files:t,format:s="index",...i}=r,n=[],o=[];if(this.chromaSync)try{ie("[search-server] Using metadata-first + semantic ranking for file search");let u=this.sessionSearch.findByFile(t,i);if(ie(`[search-server] Found ${u.observations.length} observations, ${u.sessions.length} sessions for file "${t}"`),o=u.sessions,u.observations.length>0){let p=u.observations.map(v=>v.id),f=await this.queryChroma(t,Math.min(p.length,100)),d=[];for(let v of f.ids)p.includes(v)&&!d.includes(v)&&d.push(v);ie(`[search-server] Chroma ranked ${d.length} observations by semantic relevance`),d.length>0&&(n=this.sessionStore.getObservationsByIds(d,{limit:i.limit||20}),n.sort((v,h)=>d.indexOf(v.id)-d.indexOf(h.id)))}}catch(u){ie("[search-server] Chroma ranking failed, using SQLite order:",u.message)}if(n.length===0&&o.length===0){ie("[search-server] Using SQLite-only file search");let u=this.sessionSearch.findByFile(t,i);n=u.observations,o=u.sessions}let l=n.length+o.length;if(l===0)return{content:[{type:"text",text:`No results found for file "${t}"`}]};let c;if(s==="index"){let u=`Found ${l} result(s) for file "${t}": + +`,p=[];n.forEach((f,d)=>{p.push(this.formatter.formatObservationIndex(f,d))}),o.forEach((f,d)=>{p.push(this.formatter.formatSessionIndex(f,d+n.length))}),c=u+p.join(` + +`)+this.formatter.formatSearchTips()}else{let u=[];n.forEach(p=>{u.push(this.formatter.formatObservationResult(p))}),o.forEach(p=>{u.push(this.formatter.formatSessionResult(p))}),c=u.join(` + +--- + +`)}return{content:[{type:"text",text:c}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async findByType(e){try{let r=this.normalizeParams(e),{type:t,format:s="index",...i}=r,n=Array.isArray(t)?t.join(", "):t,o=[];if(this.chromaSync)try{ie("[search-server] Using metadata-first + semantic ranking for type search");let c=this.sessionSearch.findByType(t,i);if(ie(`[search-server] Found ${c.length} observations with type "${n}"`),c.length>0){let u=c.map(d=>d.id),p=await this.queryChroma(n,Math.min(u.length,100)),f=[];for(let d of p.ids)u.includes(d)&&!f.includes(d)&&f.push(d);ie(`[search-server] Chroma ranked ${f.length} results by semantic relevance`),f.length>0&&(o=this.sessionStore.getObservationsByIds(f,{limit:i.limit||20}),o.sort((d,v)=>f.indexOf(d.id)-f.indexOf(v.id)))}}catch(c){ie("[search-server] Chroma ranking failed, using SQLite order:",c.message)}if(o.length===0&&(ie("[search-server] Using SQLite-only type search"),o=this.sessionSearch.findByType(t,i)),o.length===0)return{content:[{type:"text",text:`No observations found with type "${n}"`}]};let l;if(s==="index"){let c=`Found ${o.length} observation(s) with type "${n}": + +`,u=o.map((p,f)=>this.formatter.formatObservationIndex(p,f));l=c+u.join(` + +`)+this.formatter.formatSearchTips()}else l=o.map(u=>this.formatter.formatObservationResult(u)).join(` + +--- + +`);return{content:[{type:"text",text:l}]}}catch(r){return{content:[{type:"text",text:`Search failed: ${r.message}`}],isError:!0}}}async getRecentContext(e){try{let r=e.project||(0,ww.basename)(process.cwd()),t=e.limit||3,s=this.sessionStore.getRecentSessionsWithStatus(r,t);if(s.length===0)return{content:[{type:"text",text:`# Recent Session Context + +No previous sessions found for project "${r}".`}]};let i=[];i.push("# Recent Session Context"),i.push(""),i.push(`Showing last ${s.length} session(s) for **${r}**:`),i.push("");for(let n of s)if(n.sdk_session_id){if(i.push("---"),i.push(""),n.has_summary){let o=this.sessionStore.getSummaryForSession(n.sdk_session_id);if(o){let l=o.prompt_number?` (Prompt #${o.prompt_number})`:"";if(i.push(`**Summary${l}**`),i.push(""),o.request&&i.push(`**Request:** ${o.request}`),o.completed&&i.push(`**Completed:** ${o.completed}`),o.learned&&i.push(`**Learned:** ${o.learned}`),o.next_steps&&i.push(`**Next Steps:** ${o.next_steps}`),o.files_read)try{let u=JSON.parse(o.files_read);Array.isArray(u)&&u.length>0&&i.push(`**Files Read:** ${u.join(", ")}`)}catch{o.files_read.trim()&&i.push(`**Files Read:** ${o.files_read}`)}if(o.files_edited)try{let u=JSON.parse(o.files_edited);Array.isArray(u)&&u.length>0&&i.push(`**Files Edited:** ${u.join(", ")}`)}catch{o.files_edited.trim()&&i.push(`**Files Edited:** ${o.files_edited}`)}let c=new Date(o.created_at).toLocaleString();i.push(`**Date:** ${c}`)}}else if(n.status==="active"){i.push("**In Progress**"),i.push(""),n.user_prompt&&i.push(`**Request:** ${n.user_prompt}`);let o=this.sessionStore.getObservationsForSession(n.sdk_session_id);if(o.length>0){i.push(""),i.push(`**Observations (${o.length}):**`);for(let c of o)i.push(`- ${c.title}`)}else i.push(""),i.push("*No observations yet*");i.push(""),i.push("**Status:** Active - summary pending");let l=new Date(n.started_at).toLocaleString();i.push(`**Date:** ${l}`)}else{i.push(`**${n.status.charAt(0).toUpperCase()+n.status.slice(1)}**`),i.push(""),n.user_prompt&&i.push(`**Request:** ${n.user_prompt}`),i.push(""),i.push(`**Status:** ${n.status} - no summary available`);let o=new Date(n.started_at).toLocaleString();i.push(`**Date:** ${o}`)}i.push("")}return{content:[{type:"text",text:i.join(` +`)}]}}catch(r){return{content:[{type:"text",text:`Failed to get recent context: ${r.message}`}],isError:!0}}}async getContextTimeline(e){try{let{anchor:r,depth_before:t=10,depth_after:s=10,project:i}=e,n,o=r,l;if(typeof r=="number"){let g=this.sessionStore.getObservationById(r);if(!g)return{content:[{type:"text",text:`Observation #${r} not found`}],isError:!0};n=g.created_at_epoch,l=this.sessionStore.getTimelineAroundObservation(r,n,t,s,i)}else if(typeof r=="string")if(r.startsWith("S")||r.startsWith("#S")){let g=r.replace(/^#?S/,""),b=parseInt(g,10),w=this.sessionStore.getSessionSummariesByIds([b]);if(w.length===0)return{content:[{type:"text",text:`Session #${b} not found`}],isError:!0};n=w[0].created_at_epoch,o=`S${b}`,l=this.sessionStore.getTimelineAroundTimestamp(n,t,s,i)}else{let g=new Date(r);if(isNaN(g.getTime()))return{content:[{type:"text",text:`Invalid timestamp: ${r}`}],isError:!0};n=g.getTime(),l=this.sessionStore.getTimelineAroundTimestamp(n,t,s,i)}else return{content:[{type:"text",text:'Invalid anchor: must be observation ID (number), session ID (e.g., "S123"), or ISO timestamp'}],isError:!0};let c=[...l.observations.map(g=>({type:"observation",data:g,epoch:g.created_at_epoch})),...l.sessions.map(g=>({type:"session",data:g,epoch:g.created_at_epoch})),...l.prompts.map(g=>({type:"prompt",data:g,epoch:g.created_at_epoch}))];c.sort((g,b)=>g.epoch-b.epoch);let u=this.timelineService.filterByDepth(c,o,n,t,s);if(!u||u.length===0)return{content:[{type:"text",text:`No context found around ${new Date(n).toLocaleString()} (${t} records before, ${s} records after)`}]};let p=g=>new Date(g).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric"}),f=g=>new Date(g).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0}),d=g=>new Date(g).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0}),v=g=>g?Math.ceil(g.length/4):0,h=[];h.push(`# Timeline around anchor: ${o}`),h.push(`**Window:** ${t} records before \u2192 ${s} records after | **Items:** ${u?.length??0}`),h.push(""),h.push("**Legend:** \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u{1F9E0} decision"),h.push("");let m=new Map;for(let g of u){let b=p(g.epoch);m.has(b)||m.set(b,[]),m.get(b).push(g)}let y=Array.from(m.entries()).sort((g,b)=>{let w=new Date(g[0]).getTime(),P=new Date(b[0]).getTime();return w-P});for(let[g,b]of y){h.push(`### ${g}`),h.push("");let w=null,P="",T=!1;for(let C of b){let D=typeof o=="number"&&C.type==="observation"&&C.data.id===o||typeof o=="string"&&o.startsWith("S")&&C.type==="session"&&`S${C.data.id}`===o;if(C.type==="session"){T&&(h.push(""),T=!1,w=null,P="");let A=C.data,j=A.request||"Session summary",N=`claude-mem://session-summary/${A.id}`,k=D?" \u2190 **ANCHOR**":"";h.push(`**\u{1F3AF} #S${A.id}** ${j} (${d(C.epoch)}) [\u2192](${N})${k}`),h.push("")}else if(C.type==="prompt"){T&&(h.push(""),T=!1,w=null,P="");let A=C.data,j=A.prompt_text.length>100?A.prompt_text.substring(0,100)+"...":A.prompt_text;h.push(`**\u{1F4AC} User Prompt #${A.prompt_number}** (${d(C.epoch)})`),h.push(`> ${j}`),h.push("")}else if(C.type==="observation"){let A=C.data,j="General";j!==w&&(T&&h.push(""),h.push(`**${j}**`),h.push("| ID | Time | T | Title | Tokens |"),h.push("|----|------|---|-------|--------|"),w=j,T=!0,P="");let N="\u2022";switch(A.type){case"bugfix":N="\u{1F534}";break;case"feature":N="\u{1F7E3}";break;case"refactor":N="\u{1F504}";break;case"change":N="\u2705";break;case"discovery":N="\u{1F535}";break;case"decision":N="\u{1F9E0}";break}let k=f(C.epoch),O=A.title||"Untitled",$=v(A.narrative),B=k!==P?k:"\u2033";P=k;let H=D?" \u2190 **ANCHOR**":"";h.push(`| #${A.id} | ${B} | ${N} | ${O}${H} | ~${$} |`)}}T&&h.push("")}return{content:[{type:"text",text:h.join(` +`)}]}}catch(r){return{content:[{type:"text",text:`Timeline query failed: ${r.message}`}],isError:!0}}}async getTimelineByQuery(e){try{let{query:r,mode:t="auto",depth_before:s=10,depth_after:i=10,limit:n=5,project:o}=e,l=[];if(this.chromaSync)try{ie("[search-server] Using hybrid semantic search for timeline query");let c=await this.queryChroma(r,100);if(ie(`[search-server] Chroma returned ${c.ids.length} semantic matches`),c.ids.length>0){let u=Date.now()-7776e6,p=c.ids.filter((f,d)=>{let v=c.metadatas[d];return v&&v.created_at_epoch>u});ie(`[search-server] ${p.length} results within 90-day window`),p.length>0&&(l=this.sessionStore.getObservationsByIds(p,{orderBy:"date_desc",limit:t==="auto"?1:n}),ie(`[search-server] Hydrated ${l.length} observations from SQLite`))}}catch(c){ie("[search-server] Chroma query failed - no results (FTS5 fallback removed):",c.message)}if(l.length===0)return{content:[{type:"text",text:`No observations found matching "${r}". Try a different search query.`}]};if(t==="interactive"){let c=[];c.push("# Timeline Anchor Search Results"),c.push(""),c.push(`Found ${l.length} observation(s) matching "${r}"`),c.push(""),c.push("To get timeline context around any of these observations, use the `get_context_timeline` tool with the observation ID as the anchor."),c.push(""),c.push(`**Top ${l.length} matches:**`),c.push("");for(let u=0;u({type:"observation",data:w,epoch:w.created_at_epoch})),...(u.sessions||[]).map(w=>({type:"session",data:w,epoch:w.created_at_epoch})),...(u.prompts||[]).map(w=>({type:"prompt",data:w,epoch:w.created_at_epoch}))];p.sort((w,P)=>w.epoch-P.epoch);let f=this.timelineService.filterByDepth(p,c.id,0,s,i);if(!f||f.length===0)return{content:[{type:"text",text:`Found observation #${c.id} matching "${r}", but no timeline context available (${s} records before, ${i} records after).`}]};let d=w=>new Date(w).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric"}),v=w=>new Date(w).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0}),h=w=>new Date(w).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0}),m=w=>w?Math.ceil(w.length/4):0,y=[];y.push(`# Timeline for query: "${r}"`),y.push(`**Anchor:** Observation #${c.id} - ${c.title||"Untitled"}`),y.push(`**Window:** ${s} records before \u2192 ${i} records after | **Items:** ${f?.length??0}`),y.push(""),y.push("**Legend:** \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u{1F9E0} decision"),y.push("");let g=new Map;for(let w of f){let P=d(w.epoch);g.has(P)||g.set(P,[]),g.get(P).push(w)}let b=Array.from(g.entries()).sort((w,P)=>{let T=new Date(w[0]).getTime(),C=new Date(P[0]).getTime();return T-C});for(let[w,P]of b){y.push(`### ${w}`),y.push("");let T=null,C="",D=!1;for(let A of P){let j=A.type==="observation"&&A.data.id===c.id;if(A.type==="session"){D&&(y.push(""),D=!1,T=null,C="");let N=A.data,k=N.request||"Session summary",O=`claude-mem://session-summary/${N.id}`;y.push(`**\u{1F3AF} #S${N.id}** ${k} (${h(A.epoch)}) [\u2192](${O})`),y.push("")}else if(A.type==="prompt"){D&&(y.push(""),D=!1,T=null,C="");let N=A.data,k=N.prompt_text.length>100?N.prompt_text.substring(0,100)+"...":N.prompt_text;y.push(`**\u{1F4AC} User Prompt #${N.prompt_number}** (${h(A.epoch)})`),y.push(`> ${k}`),y.push("")}else if(A.type==="observation"){let N=A.data,k="General";k!==T&&(D&&y.push(""),y.push(`**${k}**`),y.push("| ID | Time | T | Title | Tokens |"),y.push("|----|------|---|-------|--------|"),T=k,D=!0,C="");let O="\u2022";switch(N.type){case"bugfix":O="\u{1F534}";break;case"feature":O="\u{1F7E3}";break;case"refactor":O="\u{1F504}";break;case"change":O="\u2705";break;case"discovery":O="\u{1F535}";break;case"decision":O="\u{1F9E0}";break}let $=v(A.epoch),F=N.title||"Untitled",B=m(N.narrative),K=$!==C?$:"\u2033";C=$;let X=j?" \u2190 **ANCHOR**":"";y.push(`| #${N.id} | ${K} | ${O} | ${F}${X} | ~${B} |`)}}D&&y.push("")}return{content:[{type:"text",text:y.join(` +`)}]}}}catch(r){return{content:[{type:"text",text:`Timeline query failed: ${r.message}`}],isError:!0}}}};var El=class{formatSearchTips(){return` +--- +\u{1F4A1} Search Strategy: +ALWAYS search with index format FIRST to get an overview and identify relevant results. +This is critical for token efficiency - index format uses ~10x fewer tokens than full format. + +Search workflow: +1. Initial search: Use default (index) format to see titles, dates, and sources +2. Review results: Identify which items are most relevant to your needs +3. Deep dive: Only then use format: "full" on specific items of interest +4. Narrow down: Use filters (type, dateStart/dateEnd, concepts, files) to refine results + +Other tips: +\u2022 To search by concept: Use find_by_concept tool +\u2022 To browse by type: Use find_by_type with ["decision", "feature", etc.] +\u2022 To sort by date: Use orderBy: "date_desc" or "date_asc"`}formatObservationIndex(e,r){let t=e.title||`Observation #${e.id}`,s=new Date(e.created_at_epoch).toLocaleString(),i=e.type?`[${e.type}]`:"";return`${r+1}. ${i} ${t} + Date: ${s} + Source: claude-mem://observation/${e.id}`}formatSessionIndex(e,r){let t=e.request||`Session ${e.sdk_session_id?.substring(0,8)||"unknown"}`,s=new Date(e.created_at_epoch).toLocaleString();return`${r+1}. ${t} + Date: ${s} + Source: claude-mem://session/${e.sdk_session_id}`}formatUserPromptIndex(e,r){let t=new Date(e.created_at_epoch).toLocaleString();return`${r+1}. "${e.prompt_text}" + Date: ${t} | Prompt #${e.prompt_number} + Source: claude-mem://user-prompt/${e.id}`}formatObservationResult(e){let r=e.title||`Observation #${e.id}`,t=[];t.push(`## ${r}`),t.push(`*Source: claude-mem://observation/${e.id}*`),t.push(""),e.subtitle&&(t.push(`**${e.subtitle}**`),t.push("")),e.narrative&&(t.push(e.narrative),t.push("")),e.text&&(t.push(e.text),t.push(""));let s=[];if(s.push(`Type: ${e.type}`),e.facts)try{let n=JSON.parse(e.facts);n.length>0&&s.push(`Facts: ${n.join("; ")}`)}catch{}if(e.concepts)try{let n=JSON.parse(e.concepts);n.length>0&&s.push(`Concepts: ${n.join(", ")}`)}catch{}if(e.files_read||e.files_modified){let n=[];if(e.files_read)try{n.push(...JSON.parse(e.files_read))}catch{}if(e.files_modified)try{n.push(...JSON.parse(e.files_modified))}catch{}n.length>0&&s.push(`Files: ${[...new Set(n)].join(", ")}`)}s.length>0&&(t.push("---"),t.push(s.join(" | ")));let i=new Date(e.created_at_epoch).toLocaleString();return t.push(""),t.push("---"),t.push(`Date: ${i}`),t.join(` +`)}formatSessionResult(e){let r=e.request||`Session ${e.sdk_session_id?.substring(0,8)||"unknown"}`,t=[];t.push(`## ${r}`),t.push(`*Source: claude-mem://session/${e.sdk_session_id}*`),t.push(""),e.completed&&(t.push(`**Completed:** ${e.completed}`),t.push("")),e.learned&&(t.push(`**Learned:** ${e.learned}`),t.push("")),e.investigated&&(t.push(`**Investigated:** ${e.investigated}`),t.push("")),e.next_steps&&(t.push(`**Next Steps:** ${e.next_steps}`),t.push("")),e.notes&&(t.push(`**Notes:** ${e.notes}`),t.push(""));let s=[];if(e.files_read||e.files_edited){let n=[];if(e.files_read)try{n.push(...JSON.parse(e.files_read))}catch{}if(e.files_edited)try{n.push(...JSON.parse(e.files_edited))}catch{}n.length>0&&s.push(`Files: ${[...new Set(n)].join(", ")}`)}let i=new Date(e.created_at_epoch).toLocaleDateString();return s.push(`Date: ${i}`),s.length>0&&(t.push("---"),t.push(s.join(" | "))),t.join(` +`)}formatUserPromptResult(e){let r=[];r.push(`## User Prompt #${e.prompt_number}`),r.push(`*Source: claude-mem://user-prompt/${e.id}*`),r.push(""),r.push(e.prompt_text),r.push(""),r.push("---");let t=new Date(e.created_at_epoch).toLocaleString();return r.push(`Date: ${t}`),r.join(` +`)}};var wl=class{buildTimeline(e){let r=[...e.observations.map(t=>({type:"observation",data:t,epoch:t.created_at_epoch})),...e.sessions.map(t=>({type:"session",data:t,epoch:t.created_at_epoch})),...e.prompts.map(t=>({type:"prompt",data:t,epoch:t.created_at_epoch}))];return r.sort((t,s)=>t.epoch-s.epoch),r}filterByDepth(e,r,t,s,i){if(e.length===0)return e;let n=-1;if(typeof r=="number")n=e.findIndex(c=>c.type==="observation"&&c.data.id===r);else if(typeof r=="string"&&r.startsWith("S")){let c=parseInt(r.slice(1),10);n=e.findIndex(u=>u.type==="session"&&u.data.id===c)}else n=e.findIndex(c=>c.epoch>=t),n===-1&&(n=e.length-1);if(n===-1)return e;let o=Math.max(0,n-s),l=Math.min(e.length,n+i+1);return e.slice(o,l)}formatTimeline(e,r,t,s,i){if(e.length===0)return t?`Found observation matching "${t}", but no timeline context available.`:"No timeline items found";let n=[];if(t&&r){let c=e.find(p=>p.type==="observation"&&p.data.id===r),u=c?c.data.title||"Untitled":"Unknown";n.push(`# Timeline for query: "${t}"`),n.push(`**Anchor:** Observation #${r} - ${u}`)}else r?n.push(`# Timeline around anchor: ${r}`):n.push("# Timeline");s!==void 0&&i!==void 0?n.push(`**Window:** ${s} records before \u2192 ${i} records after | **Items:** ${e.length}`):n.push(`**Items:** ${e.length}`),n.push(""),n.push("**Legend:** \u{1F3AF} session-request | \u{1F534} bugfix | \u{1F7E3} feature | \u{1F504} refactor | \u2705 change | \u{1F535} discovery | \u{1F9E0} decision"),n.push("");let o=new Map;for(let c of e){let u=this.formatDate(c.epoch);o.has(u)||o.set(u,[]),o.get(u).push(c)}let l=Array.from(o.entries()).sort((c,u)=>{let p=new Date(c[0]).getTime(),f=new Date(u[0]).getTime();return p-f});for(let[c,u]of l){n.push(`### ${c}`),n.push("");let p=null,f="",d=!1;for(let v of u){let h=typeof r=="number"&&v.type==="observation"&&v.data.id===r||typeof r=="string"&&r.startsWith("S")&&v.type==="session"&&`S${v.data.id}`===r;if(v.type==="session"){d&&(n.push(""),d=!1,p=null,f="");let m=v.data,y=m.request||"Session summary",g=`claude-mem://session-summary/${m.id}`,b=h?" \u2190 **ANCHOR**":"";n.push(`**\u{1F3AF} #S${m.id}** ${y} (${this.formatDateTime(v.epoch)}) [\u2192](${g})${b}`),n.push("")}else if(v.type==="prompt"){d&&(n.push(""),d=!1,p=null,f="");let m=v.data,y=m.prompt_text.length>100?m.prompt_text.substring(0,100)+"...":m.prompt_text;n.push(`**\u{1F4AC} User Prompt #${m.prompt_number}** (${this.formatDateTime(v.epoch)})`),n.push(`> ${y}`),n.push("")}else if(v.type==="observation"){let m=v.data,y="General";y!==p&&(d&&n.push(""),n.push(`**${y}**`),n.push("| ID | Time | T | Title | Tokens |"),n.push("|----|------|---|-------|--------|"),p=y,d=!0,f="");let g=this.getTypeIcon(m.type),b=this.formatTime(v.epoch),w=m.title||"Untitled",P=this.estimateTokens(m.narrative),C=b!==f?b:"\u2033";f=b;let D=h?" \u2190 **ANCHOR**":"";n.push(`| #${m.id} | ${C} | ${g} | ${w}${D} | ~${P} |`)}}d&&n.push("")}return n.join(` +`)}getTypeIcon(e){switch(e){case"bugfix":return"\u{1F534}";case"feature":return"\u{1F7E3}";case"refactor":return"\u{1F504}";case"change":return"\u2705";case"discovery":return"\u{1F535}";case"decision":return"\u{1F9E0}";default:return"\u2022"}}formatDate(e){return new Date(e).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric"})}formatTime(e){return new Date(e).toLocaleString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0})}formatDateTime(e){return new Date(e).toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0})}estimateTokens(e){return e?Math.ceil(e.length/4):0}};var Tl=class{constructor(e,r){this.sseBroadcaster=e;this.workerService=r}broadcastNewPrompt(e){this.sseBroadcaster.broadcast({type:"new_prompt",prompt:e}),this.sseBroadcaster.broadcast({type:"processing_status",isProcessing:!0}),this.workerService.broadcastProcessingStatus()}broadcastSessionStarted(e,r){this.sseBroadcaster.broadcast({type:"session_started",sessionDbId:e,project:r}),this.workerService.broadcastProcessingStatus()}broadcastObservationQueued(e){this.sseBroadcaster.broadcast({type:"observation_queued",sessionDbId:e}),this.workerService.broadcastProcessingStatus()}broadcastSessionCompleted(e){this.sseBroadcaster.broadcast({type:"session_completed",timestamp:Date.now(),sessionDbId:e}),this.workerService.broadcastProcessingStatus()}broadcastSummarizeQueued(){this.workerService.broadcastProcessingStatus()}};var yf=gt(Gp(),1),Cw=gt(kw(),1),Iw=gt(require("path"),1);Na();Tt();function Aw(a){let e=[];e.push(yf.default.json({limit:"50mb"})),e.push((0,Cw.default)()),e.push((s,i,n)=>{if(s.path.startsWith("/health")||s.path==="/"||s.path.includes("."))return n();let o=Date.now(),l=`${s.method}-${Date.now()}`,c=a(s.method,s.path,s.body);W.info("HTTP",`\u2192 ${s.method} ${s.path}`,{requestId:l},c);let u=i.send.bind(i);i.send=function(p){let f=Date.now()-o;return W.info("HTTP",`\u2190 ${i.statusCode} ${s.path}`,{requestId:l,duration:`${f}ms`}),u(p)},n()});let r=Br(),t=Iw.default.join(r,"plugin","ui");return e.push(yf.default.static(t)),e}function Nw(a,e,r){if(!r||Object.keys(r).length===0||e.includes("/init"))return"";if(e.includes("/observations")){let t=r.tool_name||"?",s=r.tool_input;return`tool=${W.formatTool(t,s)}`}return e.includes("/summarize")?"requesting summary":""}var Dw=gt(require("path"),1),$w=require("fs");Na();Tt();var gr=class{wrapHandler(e){return(r,t)=>{try{let s=e(r,t);s instanceof Promise&&s.catch(i=>this.handleError(t,i))}catch(s){this.handleError(t,s)}}}parseIntParam(e,r,t){let s=parseInt(e.params[t],10);return isNaN(s)?(this.badRequest(r,`Invalid ${t}`),null):s}validateRequired(e,r,t){for(let s of t)if(e.body[s]===void 0||e.body[s]===null)return this.badRequest(r,`Missing ${s}`),!1;return!0}badRequest(e,r){e.status(400).json({error:r})}notFound(e,r){e.status(404).json({error:r})}handleError(e,r,t){W.failure("WORKER",t||"Request failed",{},r),e.status(500).json({error:r.message})}};var Rl=class extends gr{constructor(r,t,s){super();this.sseBroadcaster=r;this.dbManager=t;this.sessionManager=s}setupRoutes(r){r.get("/health",this.handleHealth.bind(this)),r.get("/",this.handleViewerUI.bind(this)),r.get("/stream",this.handleSSEStream.bind(this))}handleHealth=this.wrapHandler((r,t)=>{t.json({status:"ok",timestamp:Date.now()})});handleViewerUI=this.wrapHandler((r,t)=>{let s=Br(),i=Dw.default.join(s,"plugin","ui","viewer.html"),n=(0,$w.readFileSync)(i,"utf-8");t.setHeader("Content-Type","text/html"),t.send(n)});handleSSEStream=this.wrapHandler((r,t)=>{t.setHeader("Content-Type","text/event-stream"),t.setHeader("Cache-Control","no-cache"),t.setHeader("Connection","keep-alive"),this.sseBroadcaster.addClient(t);let s=this.dbManager.getSessionStore().getAllProjects();this.sseBroadcaster.broadcast({type:"initial_load",projects:s,timestamp:Date.now()});let i=this.sessionManager.isAnySessionProcessing(),n=this.sessionManager.getTotalActiveWork();this.sseBroadcaster.broadcast({type:"processing_status",isProcessing:i,queueDepth:n})})};Tt();var jw=100;function P5(a){let e=(a.match(//g)||[]).length,r=(a.match(//g)||[]).length;return e+r}function bf(a){if(typeof a!="string")return ie("[tag-stripping] received non-string for JSON context:",{type:typeof a}),"{}";let e=P5(a);return e>jw&&ie("[tag-stripping] tag count exceeds limit, truncating:",{tagCount:e,maxAllowed:jw,contentLength:a.length}),a.replace(/[\s\S]*?<\/claude-mem-context>/g,"").replace(/[\s\S]*?<\/private>/g,"").trim()}var Pl=class{constructor(e,r,t){this.sessionManager=e;this.dbManager=r;this.eventBroadcaster=t}async completeByDbId(e){await this.sessionManager.deleteSession(e),this.dbManager.markSessionComplete(e),this.eventBroadcaster.broadcastSessionCompleted(e)}async completeByClaudeId(e){let t=this.dbManager.getSessionStore().findActiveSDKSession(e);if(!t)return!1;let s=t.id;return await this.completeByDbId(s),!0}};Tt();var Ki=class{static checkUserPromptPrivacy(e,r,t,s,i,n){let o=e.getUserPrompt(r,t);return!o||o.trim()===""?(W.debug("HOOK",`Skipping ${s} - user prompt was entirely private`,{sessionId:i,promptNumber:t,...n}),null):o}};var Ol=class extends gr{constructor(r,t,s,i,n){super();this.sessionManager=r;this.dbManager=t;this.sdkAgent=s;this.eventBroadcaster=i;this.workerService=n;this.completionHandler=new Pl(r,t,i)}completionHandler;ensureGeneratorRunning(r,t){let s=this.sessionManager.getSession(r);s&&!s.generatorPromise&&(W.info("SESSION",`Generator auto-starting (${t})`,{sessionId:r,queueDepth:s.pendingMessages.length}),s.generatorPromise=this.sdkAgent.startSession(s,this.workerService).catch(i=>{W.failure("SDK","SDK agent error",{sessionId:r},i)}).finally(()=>{W.info("SESSION","Generator finished",{sessionId:r}),s.generatorPromise=null,this.workerService.broadcastProcessingStatus()}))}setupRoutes(r){r.post("/sessions/:sessionDbId/init",this.handleSessionInit.bind(this)),r.post("/sessions/:sessionDbId/observations",this.handleObservations.bind(this)),r.post("/sessions/:sessionDbId/summarize",this.handleSummarize.bind(this)),r.get("/sessions/:sessionDbId/status",this.handleSessionStatus.bind(this)),r.delete("/sessions/:sessionDbId",this.handleSessionDelete.bind(this)),r.post("/sessions/:sessionDbId/complete",this.handleSessionComplete.bind(this)),r.post("/api/sessions/observations",this.handleObservationsByClaudeId.bind(this)),r.post("/api/sessions/summarize",this.handleSummarizeByClaudeId.bind(this)),r.post("/api/sessions/complete",this.handleSessionCompleteByClaudeId.bind(this))}handleSessionInit=this.wrapHandler((r,t)=>{let s=this.parseIntParam(r,t,"sessionDbId");if(s===null)return;let{userPrompt:i,promptNumber:n}=r.body,o=this.sessionManager.initializeSession(s,i,n),l=this.dbManager.getSessionStore().getLatestUserPrompt(o.claudeSessionId);if(l){this.eventBroadcaster.broadcastNewPrompt({id:l.id,claude_session_id:l.claude_session_id,project:l.project,prompt_number:l.prompt_number,prompt_text:l.prompt_text,created_at_epoch:l.created_at_epoch});let c=Date.now(),u=l.prompt_text;this.dbManager.getChromaSync().syncUserPrompt(l.id,l.sdk_session_id,l.project,u,l.prompt_number,l.created_at_epoch).then(()=>{let p=Date.now()-c,f=u.length>60?u.substring(0,60)+"...":u;W.debug("CHROMA","User prompt synced",{promptId:l.id,duration:`${p}ms`,prompt:f})}).catch(p=>{W.error("CHROMA","Failed to sync user_prompt",{promptId:l.id,sessionId:s},p)})}W.info("SESSION","Generator starting",{sessionId:s,project:o.project,promptNum:o.lastPromptNumber}),o.generatorPromise=this.sdkAgent.startSession(o,this.workerService).catch(c=>{W.failure("SDK","SDK agent error",{sessionId:s},c)}).finally(()=>{W.info("SESSION","Generator finished",{sessionId:s}),o.generatorPromise=null,this.workerService.broadcastProcessingStatus()}),this.eventBroadcaster.broadcastSessionStarted(s,o.project),t.json({status:"initialized",sessionDbId:s,port:An()})});handleObservations=this.wrapHandler((r,t)=>{let s=this.parseIntParam(r,t,"sessionDbId");if(s===null)return;let{tool_name:i,tool_input:n,tool_response:o,prompt_number:l,cwd:c}=r.body;this.sessionManager.queueObservation(s,{tool_name:i,tool_input:n,tool_response:o,prompt_number:l,cwd:c}),this.ensureGeneratorRunning(s,"observation"),this.eventBroadcaster.broadcastObservationQueued(s),t.json({status:"queued"})});handleSummarize=this.wrapHandler((r,t)=>{let s=this.parseIntParam(r,t,"sessionDbId");if(s===null)return;let{last_user_message:i,last_assistant_message:n}=r.body;this.sessionManager.queueSummarize(s,i,n),this.ensureGeneratorRunning(s,"summarize"),this.eventBroadcaster.broadcastSummarizeQueued(),t.json({status:"queued"})});handleSessionStatus=this.wrapHandler((r,t)=>{let s=this.parseIntParam(r,t,"sessionDbId");if(s===null)return;let i=this.sessionManager.getSession(s);if(!i){t.json({status:"not_found"});return}t.json({status:"active",sessionDbId:s,project:i.project,queueLength:i.pendingMessages.length,uptime:Date.now()-i.startTime})});handleSessionDelete=this.wrapHandler(async(r,t)=>{let s=this.parseIntParam(r,t,"sessionDbId");s!==null&&(await this.completionHandler.completeByDbId(s),t.json({status:"deleted"}))});handleSessionComplete=this.wrapHandler(async(r,t)=>{let s=this.parseIntParam(r,t,"sessionDbId");s!==null&&(await this.completionHandler.completeByDbId(s),t.json({success:!0}))});handleObservationsByClaudeId=this.wrapHandler((r,t)=>{let{claudeSessionId:s,tool_name:i,tool_input:n,tool_response:o,cwd:l}=r.body;if(!s)return this.badRequest(t,"Missing claudeSessionId");let c=this.dbManager.getSessionStore(),u=c.createSDKSession(s,"",""),p=c.getPromptCounter(u);if(!Ki.checkUserPromptPrivacy(c,s,p,"observation",u,{tool_name:i})){t.json({status:"skipped",reason:"private"});return}let d="{}",v="{}";try{d=n!==void 0?bf(JSON.stringify(n)):"{}"}catch{d='{"error": "Failed to serialize tool_input"}'}try{v=o!==void 0?bf(JSON.stringify(o)):"{}"}catch{v='{"error": "Failed to serialize tool_response"}'}this.sessionManager.queueObservation(u,{tool_name:i,tool_input:d,tool_response:v,prompt_number:p,cwd:l||""}),this.ensureGeneratorRunning(u,"observation"),this.eventBroadcaster.broadcastObservationQueued(u),t.json({status:"queued"})});handleSummarizeByClaudeId=this.wrapHandler((r,t)=>{let{claudeSessionId:s,last_user_message:i,last_assistant_message:n}=r.body;if(!s)return this.badRequest(t,"Missing claudeSessionId");let o=this.dbManager.getSessionStore(),l=o.createSDKSession(s,"",""),c=o.getPromptCounter(l);if(!Ki.checkUserPromptPrivacy(o,s,c,"summarize",l)){t.json({status:"skipped",reason:"private"});return}this.sessionManager.queueSummarize(l,i||"",n),this.ensureGeneratorRunning(l,"summarize"),this.eventBroadcaster.broadcastSummarizeQueued(),t.json({status:"queued"})});handleSessionCompleteByClaudeId=this.wrapHandler(async(r,t)=>{let{claudeSessionId:s}=r.body;if(!s)return this.badRequest(t,"Missing claudeSessionId");if(!await this.completionHandler.completeByClaudeId(s)){t.json({success:!0,message:"No active session found"});return}t.json({success:!0})})};var xf=gt(require("path"),1),Vn=require("fs"),Mw=require("os");Na();var kl=class extends gr{constructor(r,t,s,i,n,o){super();this.paginationHelper=r;this.dbManager=t;this.sessionManager=s;this.sseBroadcaster=i;this.workerService=n;this.startTime=o}setupRoutes(r){r.get("/api/observations",this.handleGetObservations.bind(this)),r.get("/api/summaries",this.handleGetSummaries.bind(this)),r.get("/api/prompts",this.handleGetPrompts.bind(this)),r.get("/api/observation/:id",this.handleGetObservationById.bind(this)),r.get("/api/session/:id",this.handleGetSessionById.bind(this)),r.get("/api/prompt/:id",this.handleGetPromptById.bind(this)),r.get("/api/stats",this.handleGetStats.bind(this)),r.get("/api/projects",this.handleGetProjects.bind(this)),r.get("/api/processing-status",this.handleGetProcessingStatus.bind(this)),r.post("/api/processing",this.handleSetProcessing.bind(this))}handleGetObservations=this.wrapHandler((r,t)=>{let{offset:s,limit:i,project:n}=this.parsePaginationParams(r),o=this.paginationHelper.getObservations(s,i,n);t.json(o)});handleGetSummaries=this.wrapHandler((r,t)=>{let{offset:s,limit:i,project:n}=this.parsePaginationParams(r),o=this.paginationHelper.getSummaries(s,i,n);t.json(o)});handleGetPrompts=this.wrapHandler((r,t)=>{let{offset:s,limit:i,project:n}=this.parsePaginationParams(r),o=this.paginationHelper.getPrompts(s,i,n);t.json(o)});handleGetObservationById=this.wrapHandler((r,t)=>{let s=this.parseIntParam(r,t,"id");if(s===null)return;let n=this.dbManager.getSessionStore().getObservationById(s);if(!n){this.notFound(t,`Observation #${s} not found`);return}t.json(n)});handleGetSessionById=this.wrapHandler((r,t)=>{let s=this.parseIntParam(r,t,"id");if(s===null)return;let n=this.dbManager.getSessionStore().getSessionSummariesByIds([s]);if(n.length===0){this.notFound(t,`Session #${s} not found`);return}t.json(n[0])});handleGetPromptById=this.wrapHandler((r,t)=>{let s=this.parseIntParam(r,t,"id");if(s===null)return;let n=this.dbManager.getSessionStore().getUserPromptsByIds([s]);if(n.length===0){this.notFound(t,`Prompt #${s} not found`);return}t.json(n[0])});handleGetStats=this.wrapHandler((r,t)=>{let s=this.dbManager.getSessionStore().db,i=Br(),n=xf.default.join(i,"package.json"),l=JSON.parse((0,Vn.readFileSync)(n,"utf-8")).version,c=s.prepare("SELECT COUNT(*) as count FROM observations").get(),u=s.prepare("SELECT COUNT(*) as count FROM sdk_sessions").get(),p=s.prepare("SELECT COUNT(*) as count FROM session_summaries").get(),f=xf.default.join((0,Mw.homedir)(),".claude-mem","claude-mem.db"),d=0;(0,Vn.existsSync)(f)&&(d=(0,Vn.statSync)(f).size);let v=Math.floor((Date.now()-this.startTime)/1e3),h=this.sessionManager.getActiveSessionCount(),m=this.sseBroadcaster.getClientCount();t.json({worker:{version:l,uptime:v,activeSessions:h,sseClients:m,port:An()},database:{path:f,size:d,observations:c.count,sessions:u.count,summaries:p.count}})});handleGetProjects=this.wrapHandler((r,t)=>{let n=this.dbManager.getSessionStore().db.prepare(` + SELECT DISTINCT project + FROM observations + WHERE project IS NOT NULL + GROUP BY project + ORDER BY MAX(created_at_epoch) DESC + `).all().map(o=>o.project);t.json({projects:n})});handleGetProcessingStatus=this.wrapHandler((r,t)=>{let s=this.sessionManager.isAnySessionProcessing(),i=this.sessionManager.getTotalActiveWork();t.json({isProcessing:s,queueDepth:i})});handleSetProcessing=this.wrapHandler((r,t)=>{this.workerService.broadcastProcessingStatus();let s=this.sessionManager.isAnySessionProcessing(),i=this.sessionManager.getTotalQueueDepth(),n=this.sessionManager.getActiveSessionCount();t.json({status:"ok",isProcessing:s})});parsePaginationParams(r){let t=parseInt(r.query.offset,10)||0,s=Math.min(parseInt(r.query.limit,10)||20,100),i=r.query.project;return{offset:t,limit:s,project:i}}};var Al=class extends gr{constructor(r){super();this.searchManager=r}setupRoutes(r){r.get("/api/search",this.handleUnifiedSearch.bind(this)),r.get("/api/timeline",this.handleUnifiedTimeline.bind(this)),r.get("/api/decisions",this.handleDecisions.bind(this)),r.get("/api/changes",this.handleChanges.bind(this)),r.get("/api/how-it-works",this.handleHowItWorks.bind(this)),r.get("/api/search/observations",this.handleSearchObservations.bind(this)),r.get("/api/search/sessions",this.handleSearchSessions.bind(this)),r.get("/api/search/prompts",this.handleSearchPrompts.bind(this)),r.get("/api/search/by-concept",this.handleSearchByConcept.bind(this)),r.get("/api/search/by-file",this.handleSearchByFile.bind(this)),r.get("/api/search/by-type",this.handleSearchByType.bind(this)),r.get("/api/context/recent",this.handleGetRecentContext.bind(this)),r.get("/api/context/timeline",this.handleGetContextTimeline.bind(this)),r.get("/api/context/preview",this.handleContextPreview.bind(this)),r.get("/api/context/inject",this.handleContextInject.bind(this)),r.get("/api/timeline/by-query",this.handleGetTimelineByQuery.bind(this)),r.get("/api/search/help",this.handleSearchHelp.bind(this))}handleUnifiedSearch=this.wrapHandler(async(r,t)=>{let s=await this.searchManager.search(r.query);t.json(s.content)});handleUnifiedTimeline=this.wrapHandler(async(r,t)=>{let s=await this.searchManager.timeline(r.query);t.json(s.content)});handleDecisions=this.wrapHandler(async(r,t)=>{let s=await this.searchManager.decisions(r.query);t.json(s.content)});handleChanges=this.wrapHandler(async(r,t)=>{let s=await this.searchManager.changes(r.query);t.json(s.content)});handleHowItWorks=this.wrapHandler(async(r,t)=>{let s=await this.searchManager.howItWorks(r.query);t.json(s.content)});handleSearchObservations=this.wrapHandler(async(r,t)=>{let s=await this.searchManager.searchObservations(r.query);t.json(s.content)});handleSearchSessions=this.wrapHandler(async(r,t)=>{let s=await this.searchManager.searchSessions(r.query);t.json(s.content)});handleSearchPrompts=this.wrapHandler(async(r,t)=>{let s=await this.searchManager.searchUserPrompts(r.query);t.json(s.content)});handleSearchByConcept=this.wrapHandler(async(r,t)=>{let s=await this.searchManager.findByConcept(r.query);t.json(s.content)});handleSearchByFile=this.wrapHandler(async(r,t)=>{let s=await this.searchManager.findByFile(r.query);t.json(s.content)});handleSearchByType=this.wrapHandler(async(r,t)=>{let s=await this.searchManager.findByType(r.query);t.json(s.content)});handleGetRecentContext=this.wrapHandler(async(r,t)=>{let s=await this.searchManager.getRecentContext(r.query);t.json(s.content)});handleGetContextTimeline=this.wrapHandler(async(r,t)=>{let s=await this.searchManager.getContextTimeline(r.query);t.json(s.content)});handleContextPreview=this.wrapHandler(async(r,t)=>{let s=r.query.project;if(!s){this.badRequest(t,"Project parameter is required");return}let{generateContext:i}=await Promise.resolve().then(()=>(Sf(),_f)),n=`/preview/${s}`,o=await i({session_id:"preview-"+Date.now(),cwd:n},!0);t.setHeader("Content-Type","text/plain; charset=utf-8"),t.send(o)});handleContextInject=this.wrapHandler(async(r,t)=>{let s=r.query.project,i=r.query.colors==="true";if(!s){this.badRequest(t,"Project parameter is required");return}let{generateContext:n}=await Promise.resolve().then(()=>(Sf(),_f)),o=`/context/${s}`,l=await n({session_id:"context-inject-"+Date.now(),cwd:o},i);t.setHeader("Content-Type","text/plain; charset=utf-8"),t.send(l)});handleGetTimelineByQuery=this.wrapHandler(async(r,t)=>{let s=await this.searchManager.getTimelineByQuery(r.query);t.json(s.content)});handleSearchHelp=this.wrapHandler((r,t)=>{t.json({title:"Claude-Mem Search API",description:"HTTP API for searching persistent memory",endpoints:[{path:"/api/search/observations",method:"GET",description:"Search observations using full-text search",parameters:{query:"Search query (required)",format:'Response format: "index" or "full" (default: "full")',limit:"Number of results (default: 20)",project:"Filter by project name (optional)"}},{path:"/api/search/sessions",method:"GET",description:"Search session summaries using full-text search",parameters:{query:"Search query (required)",format:'Response format: "index" or "full" (default: "full")',limit:"Number of results (default: 20)"}},{path:"/api/search/prompts",method:"GET",description:"Search user prompts using full-text search",parameters:{query:"Search query (required)",format:'Response format: "index" or "full" (default: "full")',limit:"Number of results (default: 20)",project:"Filter by project name (optional)"}},{path:"/api/search/by-concept",method:"GET",description:"Find observations by concept tag",parameters:{concept:"Concept tag (required): discovery, decision, bugfix, feature, refactor",format:'Response format: "index" or "full" (default: "full")',limit:"Number of results (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/search/by-file",method:"GET",description:"Find observations and sessions by file path",parameters:{filePath:"File path or partial path (required)",format:'Response format: "index" or "full" (default: "full")',limit:"Number of results per type (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/search/by-type",method:"GET",description:"Find observations by type",parameters:{type:"Observation type (required): discovery, decision, bugfix, feature, refactor",format:'Response format: "index" or "full" (default: "full")',limit:"Number of results (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/context/recent",method:"GET",description:"Get recent session context including summaries and observations",parameters:{project:"Project name (default: current directory)",limit:"Number of recent sessions (default: 3)"}},{path:"/api/context/timeline",method:"GET",description:"Get unified timeline around a specific point in time",parameters:{anchor:'Anchor point: observation ID, session ID (e.g., "S123"), or ISO timestamp (required)',depth_before:"Number of records before anchor (default: 10)",depth_after:"Number of records after anchor (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/timeline/by-query",method:"GET",description:"Search for best match, then get timeline around it",parameters:{query:"Search query (required)",mode:'Search mode: "auto", "observations", or "sessions" (default: "auto")',depth_before:"Number of records before match (default: 10)",depth_after:"Number of records after match (default: 10)",project:"Filter by project name (optional)"}},{path:"/api/search/help",method:"GET",description:"Get this help documentation"}],examples:['curl "http://localhost:37777/api/search/observations?query=authentication&format=index&limit=5"','curl "http://localhost:37777/api/search/by-type?type=bugfix&limit=10"','curl "http://localhost:37777/api/context/recent?project=claude-mem&limit=3"','curl "http://localhost:37777/api/context/timeline?anchor=123&depth_before=5&depth_after=5"']})})};var Wn=gt(require("path"),1),br=require("fs"),wf=require("os");Na();Tt();var Ef=require("child_process"),Fs=require("fs"),Fw=require("os"),Ji=require("path");Tt();var Yi=(0,Ji.join)((0,Fw.homedir)(),".claude","plugins","marketplaces","thedotmack");function yr(a){return(0,Ef.execSync)(`git ${a}`,{cwd:Yi,encoding:"utf-8",timeout:3e4}).trim()}function Uw(a,e=6e4){return(0,Ef.execSync)(a,{cwd:Yi,encoding:"utf-8",timeout:e}).trim()}function Nl(){let a=(0,Ji.join)(Yi,".git");if(!(0,Fs.existsSync)(a))return{branch:null,isBeta:!1,isGitRepo:!1,isDirty:!1,canSwitch:!1,error:"Installed plugin is not a git repository"};try{let e=yr("rev-parse --abbrev-ref HEAD"),t=yr("status --porcelain").length>0,s=e.startsWith("beta");return{branch:e,isBeta:s,isGitRepo:!0,isDirty:t,canSwitch:!0}}catch(e){return W.error("BRANCH","Failed to get branch info",{},e),{branch:null,isBeta:!1,isGitRepo:!0,isDirty:!1,canSwitch:!1,error:e.message}}}async function zw(a){let e=Nl();if(!e.isGitRepo)return{success:!1,error:"Installed plugin is not a git repository. Please reinstall."};if(e.branch===a)return{success:!0,branch:a,message:`Already on branch ${a}`};try{W.info("BRANCH","Starting branch switch",{from:e.branch,to:a}),W.debug("BRANCH","Discarding local changes"),yr("checkout -- ."),yr("clean -fd"),W.debug("BRANCH","Fetching from origin"),yr("fetch origin"),W.debug("BRANCH","Checking out branch",{branch:a});try{yr(`checkout ${a}`)}catch{yr(`checkout -b ${a} origin/${a}`)}W.debug("BRANCH","Pulling latest"),yr(`pull origin ${a}`);let r=(0,Ji.join)(Yi,".install-version");return(0,Fs.existsSync)(r)&&(0,Fs.unlinkSync)(r),W.debug("BRANCH","Running npm install"),Uw("npm install",12e4),W.success("BRANCH","Branch switch complete",{branch:a}),{success:!0,branch:a,message:`Switched to ${a}. Worker will restart automatically.`}}catch(r){W.error("BRANCH","Branch switch failed",{targetBranch:a},r);try{e.branch&&yr(`checkout ${e.branch}`)}catch{}return{success:!1,error:`Branch switch failed: ${r.message}`}}}async function Bw(){let a=Nl();if(!a.isGitRepo||!a.branch)return{success:!1,error:"Cannot pull updates: not a git repository"};try{W.info("BRANCH","Pulling updates",{branch:a.branch}),yr("checkout -- ."),yr("fetch origin"),yr(`pull origin ${a.branch}`);let e=(0,Ji.join)(Yi,".install-version");return(0,Fs.existsSync)(e)&&(0,Fs.unlinkSync)(e),Uw("npm install",12e4),W.success("BRANCH","Updates pulled",{branch:a.branch}),{success:!0,branch:a.branch,message:`Updated ${a.branch}. Worker will restart automatically.`}}catch(e){return W.error("BRANCH","Pull failed",{},e),{success:!1,error:`Pull failed: ${e.message}`}}}Qc();zi();var Dl=class extends gr{constructor(r){super();this.settingsManager=r}setupRoutes(r){r.get("/api/settings",this.handleGetSettings.bind(this)),r.post("/api/settings",this.handleUpdateSettings.bind(this)),r.get("/api/mcp/status",this.handleGetMcpStatus.bind(this)),r.post("/api/mcp/toggle",this.handleToggleMcp.bind(this)),r.get("/api/branch/status",this.handleGetBranchStatus.bind(this)),r.post("/api/branch/switch",this.handleSwitchBranch.bind(this)),r.post("/api/branch/update",this.handleUpdateBranch.bind(this))}handleGetSettings=this.wrapHandler((r,t)=>{let s=Wn.default.join((0,wf.homedir)(),".claude-mem","settings.json"),i=Hr.loadFromFile(s);t.json(i)});handleUpdateSettings=this.wrapHandler((r,t)=>{if(r.body.CLAUDE_MEM_CONTEXT_OBSERVATIONS){let l=parseInt(r.body.CLAUDE_MEM_CONTEXT_OBSERVATIONS,10);if(isNaN(l)||l<1||l>200){t.status(400).json({success:!1,error:"CLAUDE_MEM_CONTEXT_OBSERVATIONS must be between 1 and 200"});return}}if(r.body.CLAUDE_MEM_WORKER_PORT){let l=parseInt(r.body.CLAUDE_MEM_WORKER_PORT,10);if(isNaN(l)||l<1024||l>65535){t.status(400).json({success:!1,error:"CLAUDE_MEM_WORKER_PORT must be between 1024 and 65535"});return}}let s=this.validateContextSettings(r.body);if(!s.valid){t.status(400).json({success:!1,error:s.error});return}let i=Wn.default.join((0,wf.homedir)(),".claude-mem","settings.json"),n={env:{}};if((0,br.existsSync)(i)){let l=(0,br.readFileSync)(i,"utf-8");n=JSON.parse(l),n.env||(n.env={})}let o=["CLAUDE_MEM_MODEL","CLAUDE_MEM_CONTEXT_OBSERVATIONS","CLAUDE_MEM_WORKER_PORT","CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS","CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS","CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT","CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT","CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES","CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS","CLAUDE_MEM_CONTEXT_FULL_COUNT","CLAUDE_MEM_CONTEXT_FULL_FIELD","CLAUDE_MEM_CONTEXT_SESSION_COUNT","CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY","CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE"];for(let l of o)r.body[l]!==void 0&&(n.env[l]=r.body[l]);(0,br.writeFileSync)(i,JSON.stringify(n,null,2),"utf-8"),W.info("WORKER","Settings updated"),t.json({success:!0,message:"Settings updated successfully"})});handleGetMcpStatus=this.wrapHandler((r,t)=>{let s=this.isMcpEnabled();t.json({enabled:s})});handleToggleMcp=this.wrapHandler((r,t)=>{let{enabled:s}=r.body;if(typeof s!="boolean"){this.badRequest(t,"enabled must be a boolean");return}this.toggleMcp(s),t.json({success:!0,enabled:this.isMcpEnabled()})});handleGetBranchStatus=this.wrapHandler((r,t)=>{let s=Nl();t.json(s)});handleSwitchBranch=this.wrapHandler(async(r,t)=>{let{branch:s}=r.body;if(!s){t.status(400).json({success:!1,error:"Missing branch parameter"});return}let i=["main","beta/7.0"];if(!i.includes(s)){t.status(400).json({success:!1,error:`Invalid branch. Allowed: ${i.join(", ")}`});return}W.info("WORKER","Branch switch requested",{branch:s});let n=await zw(s);n.success&&setTimeout(()=>{W.info("WORKER","Restarting worker after branch switch"),process.exit(0)},1e3),t.json(n)});handleUpdateBranch=this.wrapHandler(async(r,t)=>{W.info("WORKER","Branch update requested");let s=await Bw();s.success&&setTimeout(()=>{W.info("WORKER","Restarting worker after branch update"),process.exit(0)},1e3),t.json(s)});validateContextSettings(r){let t=["CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS","CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS","CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT","CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT","CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY","CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE"];for(let s of t)if(r[s]&&!["true","false"].includes(r[s]))return{valid:!1,error:`${s} must be "true" or "false"`};if(r.CLAUDE_MEM_CONTEXT_FULL_COUNT){let s=parseInt(r.CLAUDE_MEM_CONTEXT_FULL_COUNT,10);if(isNaN(s)||s<0||s>20)return{valid:!1,error:"CLAUDE_MEM_CONTEXT_FULL_COUNT must be between 0 and 20"}}if(r.CLAUDE_MEM_CONTEXT_SESSION_COUNT){let s=parseInt(r.CLAUDE_MEM_CONTEXT_SESSION_COUNT,10);if(isNaN(s)||s<1||s>50)return{valid:!1,error:"CLAUDE_MEM_CONTEXT_SESSION_COUNT must be between 1 and 50"}}if(r.CLAUDE_MEM_CONTEXT_FULL_FIELD&&!["narrative","facts"].includes(r.CLAUDE_MEM_CONTEXT_FULL_FIELD))return{valid:!1,error:'CLAUDE_MEM_CONTEXT_FULL_FIELD must be "narrative" or "facts"'};if(r.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES){let s=r.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES.split(",").map(i=>i.trim());for(let i of s)if(i&&!Cn.includes(i))return{valid:!1,error:`Invalid observation type: ${i}. Valid types: ${Cn.join(", ")}`}}if(r.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS){let s=r.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS.split(",").map(i=>i.trim());for(let i of s)if(i&&!In.includes(i))return{valid:!1,error:`Invalid observation concept: ${i}. Valid concepts: ${In.join(", ")}`}}return{valid:!0}}isMcpEnabled(){let r=Br(),t=Wn.default.join(r,"plugin",".mcp.json");return(0,br.existsSync)(t)}toggleMcp(r){try{let t=Br(),s=Wn.default.join(t,"plugin",".mcp.json"),i=Wn.default.join(t,"plugin",".mcp.json.disabled");r&&(0,br.existsSync)(i)?((0,br.renameSync)(i,s),W.info("WORKER","MCP search server enabled")):!r&&(0,br.existsSync)(s)?((0,br.renameSync)(s,i),W.info("WORKER","MCP search server disabled")):W.debug("WORKER","MCP toggle no-op (already in desired state)",{enabled:r})}catch(t){throw W.failure("WORKER","Failed to toggle MCP",{enabled:r},t),t}}};var $l=class{app;server=null;startTime=Date.now();mcpClient;dbManager;sessionManager;sseBroadcaster;sdkAgent;paginationHelper;settingsManager;sessionEventBroadcaster;viewerRoutes;sessionRoutes;dataRoutes;searchRoutes;settingsRoutes;constructor(){this.app=(0,Hw.default)(),this.dbManager=new tl,this.sessionManager=new rl(this.dbManager),this.sseBroadcaster=new al,this.sdkAgent=new bl(this.dbManager,this.sessionManager),this.paginationHelper=new xl(this.dbManager),this.settingsManager=new _l(this.dbManager),this.sessionEventBroadcaster=new Tl(this.sseBroadcaster,this),this.sessionManager.setOnSessionDeleted(()=>{this.broadcastProcessingStatus()}),this.mcpClient=new Rn({name:"worker-search-proxy",version:"1.0.0"},{capabilities:{}}),this.viewerRoutes=new Rl(this.sseBroadcaster,this.dbManager,this.sessionManager),this.sessionRoutes=new Ol(this.sessionManager,this.dbManager,this.sdkAgent,this.sessionEventBroadcaster,this),this.dataRoutes=new kl(this.paginationHelper,this.dbManager,this.sessionManager,this.sseBroadcaster,this,this.startTime),this.searchRoutes=null,this.settingsRoutes=new Dl(this.settingsManager),this.setupMiddleware(),this.setupRoutes()}setupMiddleware(){Aw(this.summarizeRequestBody.bind(this)).forEach(r=>this.app.use(r))}setupRoutes(){this.app.get("/api/health",(e,r)=>{r.status(200).json({status:"ok"})}),this.viewerRoutes.setupRoutes(this.app),this.sessionRoutes.setupRoutes(this.app),this.dataRoutes.setupRoutes(this.app),this.settingsRoutes.setupRoutes(this.app)}async start(){let e=An();this.server=await new Promise((r,t)=>{let s=this.app.listen(e,()=>r(s));s.on("error",t)}),W.info("SYSTEM","Worker started",{port:e,pid:process.pid}),this.initializeBackground().catch(r=>{W.error("SYSTEM","Background initialization failed",{},r)})}async initializeBackground(){await this.dbManager.initialize();let e=new El,r=new wl,t=new Sl(this.dbManager.getSessionSearch(),this.dbManager.getSessionStore(),this.dbManager.getChromaSync(),e,r);this.searchRoutes=new Al(t),this.searchRoutes.setupRoutes(this.app),W.info("WORKER","SearchManager initialized and search routes registered");let s=Vw.default.join(__dirname,"..","..","plugin","scripts","mcp-server.cjs"),i=new kn({command:"node",args:[s],env:process.env});await this.mcpClient.connect(i),W.success("WORKER","Connected to MCP server")}async shutdown(){if(await this.sessionManager.shutdownAll(),this.mcpClient)try{await this.mcpClient.close(),W.info("SYSTEM","MCP client closed")}catch(e){W.error("SYSTEM","Failed to close MCP client",{},e)}this.server&&await new Promise((e,r)=>{this.server.close(t=>t?r(t):e())}),await this.dbManager.close(),W.info("SYSTEM","Worker shutdown complete")}summarizeRequestBody(e,r,t){return Nw(e,r,t)}broadcastProcessingStatus(){let e=this.sessionManager.isAnySessionProcessing(),r=this.sessionManager.getTotalActiveWork(),t=this.sessionManager.getActiveSessionCount();W.info("WORKER","Broadcasting processing status",{isProcessing:e,queueDepth:r,activeSessions:t}),this.sseBroadcaster.broadcast({type:"processing_status",isProcessing:e,queueDepth:r})}};if(require.main===module||!module.parent){let a=new $l;process.on("SIGTERM",async()=>{W.info("SYSTEM","Received SIGTERM, shutting down gracefully"),await a.shutdown(),process.exit(0)}),process.on("SIGINT",async()=>{W.info("SYSTEM","Received SIGINT, shutting down gracefully"),await a.shutdown(),process.exit(0)}),a.start().catch(e=>{W.failure("SYSTEM","Worker failed to start",{},e),process.exit(1)})}0&&(module.exports={WorkerService}); /*! Bundled license information: depd/index.js: @@ -1203,13 +1344,13 @@ serve-static/index.js: * MIT Licensed *) +uri-js/dist/es5/uri.all.js: + (** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js *) + object-assign/index.js: (* object-assign (c) Sindre Sorhus @license MIT *) - -uri-js/dist/es5/uri.all.js: - (** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js *) */ diff --git a/scripts/build-hooks.js b/scripts/build-hooks.js index c738187c..5b49fc26 100644 --- a/scripts/build-hooks.js +++ b/scripts/build-hooks.js @@ -26,9 +26,14 @@ const WORKER_SERVICE = { source: 'src/services/worker-service.ts' }; -const SEARCH_SERVER = { - name: 'search-server', - source: 'src/servers/search-server.ts' +const MCP_SERVER = { + name: 'mcp-server', + source: 'src/servers/mcp-server.ts' +}; + +const CONTEXT_GENERATOR = { + name: 'context-generator', + source: 'src/services/context-generator.ts' }; async function buildHooks() { @@ -92,15 +97,15 @@ async function buildHooks() { const workerStats = fs.statSync(`${hooksDir}/${WORKER_SERVICE.name}.cjs`); console.log(`✓ worker-service built (${(workerStats.size / 1024).toFixed(2)} KB)`); - // Build search server - console.log(`\n🔧 Building search server...`); + // Build MCP server + console.log(`\n🔧 Building MCP server...`); await build({ - entryPoints: [SEARCH_SERVER.source], + entryPoints: [MCP_SERVER.source], bundle: true, platform: 'node', target: 'node18', format: 'cjs', - outfile: `${hooksDir}/${SEARCH_SERVER.name}.cjs`, + outfile: `${hooksDir}/${MCP_SERVER.name}.cjs`, minify: true, logLevel: 'error', external: ['better-sqlite3'], @@ -112,10 +117,30 @@ async function buildHooks() { } }); - // Make search server executable - fs.chmodSync(`${hooksDir}/${SEARCH_SERVER.name}.cjs`, 0o755); - const searchServerStats = fs.statSync(`${hooksDir}/${SEARCH_SERVER.name}.cjs`); - console.log(`✓ search-server built (${(searchServerStats.size / 1024).toFixed(2)} KB)`); + // Make MCP server executable + fs.chmodSync(`${hooksDir}/${MCP_SERVER.name}.cjs`, 0o755); + const mcpServerStats = fs.statSync(`${hooksDir}/${MCP_SERVER.name}.cjs`); + console.log(`✓ mcp-server built (${(mcpServerStats.size / 1024).toFixed(2)} KB)`); + + // Build context generator + console.log(`\n🔧 Building context generator...`); + await build({ + entryPoints: [CONTEXT_GENERATOR.source], + bundle: true, + platform: 'node', + target: 'node18', + format: 'cjs', + outfile: `${hooksDir}/${CONTEXT_GENERATOR.name}.cjs`, + minify: true, + logLevel: 'error', + external: ['better-sqlite3'], + define: { + '__DEFAULT_PACKAGE_VERSION__': `"${version}"` + } + }); + + const contextGenStats = fs.statSync(`${hooksDir}/${CONTEXT_GENERATOR.name}.cjs`); + console.log(`✓ context-generator built (${(contextGenStats.size / 1024).toFixed(2)} KB)`); // Build each hook for (const hook of HOOKS) { @@ -149,11 +174,11 @@ async function buildHooks() { console.log(`✓ ${hook.name} built (${sizeInKB} KB)`); } - console.log('\n✅ All hooks, worker service, and search server built successfully!'); + console.log('\n✅ All hooks, worker service, and MCP server built successfully!'); console.log(` Output: ${hooksDir}/`); console.log(` - Hooks: *-hook.js`); console.log(` - Worker: worker-service.cjs`); - console.log(` - Search Server: search-server.cjs`); + console.log(` - MCP Server: mcp-server.cjs`); console.log(` - Skills: plugin/skills/`); console.log('\n💡 Note: Dependencies will be auto-installed on first hook execution'); diff --git a/scripts/extract-search-manager.js b/scripts/extract-search-manager.js new file mode 100644 index 00000000..e61e6cf0 --- /dev/null +++ b/scripts/extract-search-manager.js @@ -0,0 +1,229 @@ +#!/usr/bin/env node + +/** + * One-time script to extract tool handlers from mcp-server.ts into SearchManager.ts + */ + +import { readFileSync, writeFileSync } from 'fs'; +import { fileURLToPath } from 'url'; +import { dirname, join } from 'path'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); +const projectRoot = join(__dirname, '..'); + +const mcpServerPath = join(projectRoot, 'src/servers/mcp-server.ts'); +const outputPath = join(projectRoot, 'src/services/worker/SearchManager.ts'); + +console.log('Reading mcp-server.ts...'); +const content = readFileSync(mcpServerPath, 'utf-8'); + +// Extract just the sections we need by finding line numbers +// This is more reliable than parsing + +// Extract tool handler bodies by finding each "handler: async (args: any) => {" +// and extracting until the matching closing brace + +const extractHandlerBody = (content, startPattern) => { + const lines = content.split('\n'); + const startIdx = lines.findIndex(line => line.includes(startPattern)); + + if (startIdx === -1) return null; + + // Find the "handler: async (args: any) => {" line + let handlerIdx = -1; + for (let i = startIdx; i < Math.min(startIdx + 30, lines.length); i++) { + if (lines[i].includes('handler: async (args: any) => {')) { + handlerIdx = i; + break; + } + } + + if (handlerIdx === -1) return null; + + // Extract the body by counting braces + let braceCount = 0; + let bodyLines = []; + let started = false; + + for (let i = handlerIdx; i < lines.length; i++) { + const line = lines[i]; + + for (const char of line) { + if (char === '{') { + braceCount++; + started = true; + } else if (char === '}') { + braceCount--; + } + } + + if (started) { + bodyLines.push(line); + } + + if (started && braceCount === 0) { + break; + } + } + + // Remove the first line (handler wrapper) and last line (closing brace) + if (bodyLines.length > 2) { + bodyLines = bodyLines.slice(1, -1); + } + + return bodyLines.join('\n'); +}; + +// Tool name to search pattern mapping +const tools = { + 'search': "name: 'search'", + 'timeline': "name: 'timeline'", + 'decisions': "name: 'decisions'", + 'changes': "name: 'changes'", + 'how_it_works': "name: 'how_it_works'", + 'search_observations': "name: 'search_observations'", + 'search_sessions': "name: 'search_sessions'", + 'search_user_prompts': "name: 'search_user_prompts'", + 'find_by_concept': "name: 'find_by_concept'", + 'find_by_file': "name: 'find_by_file'", + 'find_by_type': "name: 'find_by_type'", + 'get_recent_context': "name: 'get_recent_context'", + 'get_context_timeline': "name: 'get_context_timeline'", + 'get_timeline_by_query': "name: 'get_timeline_by_query'" +}; + +console.log('Extracting tool handlers...'); +const handlers = {}; + +for (const [toolName, pattern] of Object.entries(tools)) { + console.log(` Extracting ${toolName}...`); + const body = extractHandlerBody(content, pattern); + if (body) { + handlers[toolName] = body; + console.log(` ✓ ${body.split('\n').length} lines`); + } else { + console.log(` ✗ Not found`); + } +} + +console.log(`\nExtracted ${Object.keys(handlers).length}/${Object.keys(tools).length} handlers`); + +// Now generate SearchManager.ts +console.log('\nGenerating SearchManager.ts...'); + +const methodBodies = Object.entries(handlers).map(([toolName, body]) => { + // Convert tool name to camelCase method name + const methodName = toolName.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase()); + + // Replace standalone function calls with class methods + let processedBody = body + .replace(/formatSearchTips\(\)/g, 'this.formatter.formatSearchTips()') + .replace(/formatObservationIndex\(/g, 'this.formatter.formatObservationIndex(') + .replace(/formatSessionIndex\(/g, 'this.formatter.formatSessionIndex(') + .replace(/formatUserPromptIndex\(/g, 'this.formatter.formatUserPromptIndex(') + .replace(/formatObservationResult\(/g, 'this.formatter.formatObservationResult(') + .replace(/formatSessionResult\(/g, 'this.formatter.formatSessionResult(') + .replace(/formatUserPromptResult\(/g, 'this.formatter.formatUserPromptResult(') + .replace(/filterTimelineByDepth\(/g, 'this.timeline.filterByDepth(') + .replace(/\bsearch\./g, 'this.sessionSearch.') + .replace(/\bstore\./g, 'this.sessionStore.') + .replace(/queryChroma\(/g, 'this.queryChroma(') + .replace(/normalizeParams\(/g, 'this.normalizeParams(') + .replace(/chromaClient/g, 'this.chromaSync'); + + return ` /** + * Tool handler: ${toolName} + */ + async ${methodName}(args: any): Promise { +${processedBody} + }`; +}).join('\n\n'); + +const searchManagerContent = `/** + * SearchManager - Core search orchestration for claude-mem + * Extracted from mcp-server.ts to centralize business logic in Worker services + * + * This class contains all tool handler logic that was previously in the MCP server. + * The MCP server now acts as a thin HTTP wrapper that calls these methods via HTTP. + */ + +import { SessionSearch } from '../sqlite/SessionSearch.js'; +import { SessionStore } from '../sqlite/SessionStore.js'; +import { ChromaSync } from '../sync/ChromaSync.js'; +import { FormattingService } from './FormattingService.js'; +import { TimelineService, TimelineItem } from './TimelineService.js'; +import { ObservationSearchResult, SessionSummarySearchResult, UserPromptSearchResult } from '../sqlite/types.js'; +import { silentDebug } from '../../utils/silent-debug.js'; + +const COLLECTION_NAME = 'cm__claude-mem'; + +export class SearchManager { + constructor( + private sessionSearch: SessionSearch, + private sessionStore: SessionStore, + private chromaSync: ChromaSync, + private formatter: FormattingService, + private timeline: TimelineService + ) {} + + /** + * Query Chroma vector database via ChromaSync + */ + private async queryChroma( + query: string, + limit: number, + whereFilter?: Record + ): Promise<{ ids: number[]; distances: number[]; metadatas: any[] }> { + return await this.chromaSync.queryChroma(query, limit, whereFilter); + } + + /** + * Helper to normalize query parameters from URL-friendly format + * Converts comma-separated strings to arrays and flattens date params + */ + private normalizeParams(args: any): any { + const normalized: any = { ...args }; + + // Parse comma-separated concepts into array + if (normalized.concepts && typeof normalized.concepts === 'string') { + normalized.concepts = normalized.concepts.split(',').map((s: string) => s.trim()).filter(Boolean); + } + + // Parse comma-separated files into array + if (normalized.files && typeof normalized.files === 'string') { + normalized.files = normalized.files.split(',').map((s: string) => s.trim()).filter(Boolean); + } + + // Parse comma-separated obs_type into array + if (normalized.obs_type && typeof normalized.obs_type === 'string') { + normalized.obs_type = normalized.obs_type.split(',').map((s: string) => s.trim()).filter(Boolean); + } + + // Parse comma-separated type (for filterSchema) into array + if (normalized.type && typeof normalized.type === 'string' && normalized.type.includes(',')) { + normalized.type = normalized.type.split(',').map((s: string) => s.trim()).filter(Boolean); + } + + // Flatten dateStart/dateEnd into dateRange object + if (normalized.dateStart || normalized.dateEnd) { + normalized.dateRange = { + start: normalized.dateStart, + end: normalized.dateEnd + }; + delete normalized.dateStart; + delete normalized.dateEnd; + } + + return normalized; + } + +${methodBodies} +} +`; + +writeFileSync(outputPath, searchManagerContent, 'utf-8'); + +console.log(`\n✅ SearchManager.ts generated at ${outputPath}`); +console.log(` Total methods: ${Object.keys(handlers).length + 2} (${Object.keys(handlers).length} tools + queryChroma + normalizeParams)`); +console.log(` File size: ${(searchManagerContent.length / 1024).toFixed(1)} KB`); diff --git a/scripts/smart-install.js b/scripts/smart-install.js index 26988faf..84df81bd 100644 --- a/scripts/smart-install.js +++ b/scripts/smart-install.js @@ -387,7 +387,7 @@ async function main() { } catch (error) { // Worker might already be running or PM2 not available - that's okay // The ensureWorkerRunning() function will handle auto-start when needed - log('ℹ️ Worker will start automatically when needed', colors.dim); + log('ℹ️ Worker startup error', colors.dim); } // Success - dependencies installed (if needed) diff --git a/src/hooks/cleanup-hook.ts b/src/hooks/cleanup-hook.ts index ad9799cc..cfb43602 100644 --- a/src/hooks/cleanup-hook.ts +++ b/src/hooks/cleanup-hook.ts @@ -1,11 +1,14 @@ /** * Cleanup Hook - SessionEnd - * Consolidated entry point + logic + * + * Pure HTTP client - sends data to worker, worker handles all database operations. + * This allows the hook to run under any runtime (Node.js or Bun) since it has no + * native module dependencies. */ import { stdin } from 'process'; -import { SessionStore } from '../services/sqlite/SessionStore.js'; import { getWorkerPort } from '../shared/worker-utils.js'; +import { silentDebug } from '../utils/silent-debug.js'; export interface SessionEndInput { session_id: string; @@ -16,16 +19,13 @@ export interface SessionEndInput { } /** - * Cleanup Hook Main Logic + * Cleanup Hook Main Logic - Fire-and-forget HTTP client */ async function cleanupHook(input?: SessionEndInput): Promise { - // Log hook entry point - console.error('[claude-mem cleanup] Hook fired', { - input: input ? { - session_id: input.session_id, - cwd: input.cwd, - reason: input.reason - } : null + silentDebug('[cleanup-hook] Hook fired', { + session_id: input?.session_id, + cwd: input?.cwd, + reason: input?.reason }); // Handle standalone execution (no input provided) @@ -43,47 +43,35 @@ async function cleanupHook(input?: SessionEndInput): Promise { } const { session_id, reason } = input; - console.error('[claude-mem cleanup] Searching for active SDK session', { session_id, reason }); - // Find active SDK session - const db = new SessionStore(); - const session = db.findActiveSDKSession(session_id); + const port = getWorkerPort(); - if (!session) { - // No active session - nothing to clean up - console.error('[claude-mem cleanup] No active SDK session found', { session_id }); - db.close(); - console.log('{"continue": true, "suppressOutput": true}'); - process.exit(0); - } - - console.error('[claude-mem cleanup] Active SDK session found', { - session_id: session.id, - sdk_session_id: session.sdk_session_id, - project: session.project, - worker_port: session.worker_port - }); - - // Mark session as completed in DB - db.markSessionCompleted(session.id); - console.error('[claude-mem cleanup] Session marked as completed in database'); - - db.close(); - - // Tell worker to stop spinner try { - const workerPort = session.worker_port || getWorkerPort(); - await fetch(`http://127.0.0.1:${workerPort}/sessions/${session.id}/complete`, { + // Send to worker - worker handles finding session, marking complete, and stopping spinner + const response = await fetch(`http://127.0.0.1:${port}/api/sessions/complete`, { method: 'POST', - signal: AbortSignal.timeout(1000) + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: session_id, + reason + }), + signal: AbortSignal.timeout(2000) + }); + + if (response.ok) { + const result = await response.json(); + silentDebug('[cleanup-hook] Session cleanup completed', result); + } else { + // Non-fatal - session might not exist + silentDebug('[cleanup-hook] Session not found or already cleaned up'); + } + } catch (error: any) { + // Worker might not be running - that's okay + silentDebug('[cleanup-hook] Worker not reachable (non-critical)', { + error: error.message }); - console.error('[claude-mem cleanup] Worker notified to stop processing indicator'); - } catch (err) { - // Non-critical - worker might be down - console.error('[claude-mem cleanup] Failed to notify worker (non-critical):', err); } - console.error('[claude-mem cleanup] Cleanup completed successfully'); console.log('{"continue": true, "suppressOutput": true}'); process.exit(0); } diff --git a/src/hooks/context-hook.ts b/src/hooks/context-hook.ts index 96d2097b..4018a9d0 100644 --- a/src/hooks/context-hook.ts +++ b/src/hooks/context-hook.ts @@ -1,111 +1,15 @@ /** * Context Hook - SessionStart - * Consolidated entry point + logic + * + * Pure HTTP client - calls worker to generate context. + * This allows the hook to run under any runtime (Node.js or Bun) since it has no + * native module dependencies. */ -import path from 'path'; -import { homedir } from 'os'; -import { existsSync, readFileSync, unlinkSync } from 'fs'; -import { stdin } from 'process'; -import { fileURLToPath } from 'url'; -import { dirname } from 'path'; -import { SessionStore } from '../services/sqlite/SessionStore.js'; -import { - OBSERVATION_TYPES, - OBSERVATION_CONCEPTS, - TYPE_ICON_MAP, - TYPE_WORK_EMOJI_MAP, - DEFAULT_OBSERVATION_TYPES_STRING, - DEFAULT_OBSERVATION_CONCEPTS_STRING -} from '../constants/observation-metadata.js'; -import { logger } from '../utils/logger.js'; - -// Get __dirname equivalent in ESM -const __filename = fileURLToPath(import.meta.url); -const __dirname = dirname(__filename); - -// Version marker path (same as smart-install.js) -// From src/hooks/ we need to go up to plugin root: ../../ -const VERSION_MARKER_PATH = path.join(__dirname, '../../.install-version'); - -interface ContextConfig { - // Display counts - totalObservationCount: number; - fullObservationCount: number; - sessionCount: number; - - // Token display toggles - showReadTokens: boolean; - showWorkTokens: boolean; - showSavingsAmount: boolean; - showSavingsPercent: boolean; - - // Filters - observationTypes: Set; - observationConcepts: Set; - - // Display options - fullObservationField: 'narrative' | 'facts'; - showLastSummary: boolean; - showLastMessage: boolean; -} - -/** - * Load all context configuration settings - * Priority: ~/.claude-mem/settings.json > env var > defaults - */ -function loadContextConfig(): ContextConfig { - const defaults = { - totalObservationCount: parseInt(process.env.CLAUDE_MEM_CONTEXT_OBSERVATIONS || '50', 10), - fullObservationCount: 5, - sessionCount: 10, - showReadTokens: true, - showWorkTokens: true, - showSavingsAmount: true, - showSavingsPercent: true, - observationTypes: new Set(OBSERVATION_TYPES), - observationConcepts: new Set(OBSERVATION_CONCEPTS), - fullObservationField: 'narrative' as const, - showLastSummary: true, - showLastMessage: false, - }; - - try { - const settingsPath = path.join(homedir(), '.claude-mem', 'settings.json'); - if (!existsSync(settingsPath)) return defaults; - - const settings = JSON.parse(readFileSync(settingsPath, 'utf-8')); - const env = settings.env || {}; - - return { - totalObservationCount: parseInt(env.CLAUDE_MEM_CONTEXT_OBSERVATIONS || '50', 10), - fullObservationCount: parseInt(env.CLAUDE_MEM_CONTEXT_FULL_COUNT || '5', 10), - sessionCount: parseInt(env.CLAUDE_MEM_CONTEXT_SESSION_COUNT || '10', 10), - showReadTokens: env.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS !== 'false', - showWorkTokens: env.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS !== 'false', - showSavingsAmount: env.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT !== 'false', - showSavingsPercent: env.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT !== 'false', - observationTypes: new Set( - (env.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES || DEFAULT_OBSERVATION_TYPES_STRING) - .split(',').map((t: string) => t.trim()).filter(Boolean) - ), - observationConcepts: new Set( - (env.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS || DEFAULT_OBSERVATION_CONCEPTS_STRING) - .split(',').map((c: string) => c.trim()).filter(Boolean) - ), - fullObservationField: (env.CLAUDE_MEM_CONTEXT_FULL_FIELD || 'narrative') as 'narrative' | 'facts', - showLastSummary: env.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY !== 'false', - showLastMessage: env.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE === 'true', - }; - } catch (error) { - logger.warn('HOOK', 'Failed to load context settings, using defaults', {}, error as Error); - return defaults; - } -} - -// Configuration constants -const CHARS_PER_TOKEN_ESTIMATE = 4; // Rough estimate for token counting -const SUMMARY_LOOKAHEAD = 1; // Fetch one extra summary for offset calculation +import path from "path"; +import { stdin } from "process"; +import { execSync } from "child_process"; +import { getWorkerPort } from "../shared/worker-utils.js"; export interface SessionStartInput { session_id?: string; @@ -116,722 +20,64 @@ export interface SessionStartInput { [key: string]: any; } -// ANSI color codes for terminal output -const colors = { - reset: '\x1b[0m', - bright: '\x1b[1m', - dim: '\x1b[2m', - cyan: '\x1b[36m', - green: '\x1b[32m', - yellow: '\x1b[33m', - blue: '\x1b[34m', - magenta: '\x1b[35m', - gray: '\x1b[90m', - red: '\x1b[31m', -}; +async function waitForPort(port: number, maxWaitMs: number = 10000): Promise { + const startTime = Date.now(); + const pollInterval = 100; -interface Observation { - id: number; - sdk_session_id: string; - type: string; - title: string | null; - subtitle: string | null; - narrative: string | null; - facts: string | null; - concepts: string | null; - files_read: string | null; - files_modified: string | null; - discovery_tokens: number | null; - created_at: string; - created_at_epoch: number; -} - -interface SessionSummary { - id: number; - sdk_session_id: string; - request: string | null; - investigated: string | null; - learned: string | null; - completed: string | null; - next_steps: string | null; - created_at: string; - created_at_epoch: number; -} - -// Helper: Parse JSON array safely -function parseJsonArray(json: string | null): string[] { - if (!json) return []; - try { - const parsed = JSON.parse(json); - return Array.isArray(parsed) ? parsed : []; - } catch (err) { - return []; - } -} - -// Helper: Format date with time -function formatDateTime(dateStr: string): string { - const date = new Date(dateStr); - return date.toLocaleString('en-US', { - month: 'short', - day: 'numeric', - hour: 'numeric', - minute: '2-digit', - hour12: true - }); -} - -// Helper: Format just time (no date) -function formatTime(dateStr: string): string { - const date = new Date(dateStr); - return date.toLocaleString('en-US', { - hour: 'numeric', - minute: '2-digit', - hour12: true - }); -} - -// Helper: Format just date -function formatDate(dateStr: string): string { - const date = new Date(dateStr); - return date.toLocaleString('en-US', { - month: 'short', - day: 'numeric', - year: 'numeric' - }); -} - -// Helper: Convert absolute paths to relative paths -function toRelativePath(filePath: string, cwd: string): string { - if (path.isAbsolute(filePath)) { - return path.relative(cwd, filePath); - } - return filePath; -} - -// Helper: Render a summary field (investigated, learned, etc.) -function renderSummaryField(label: string, value: string | null, color: string, useColors: boolean): string[] { - if (!value) return []; - - if (useColors) { - return [`${color}${label}:${colors.reset} ${value}`, '']; - } - return [`**${label}**: ${value}`, '']; -} - -// Helper: Convert cwd path to dashed format for transcript directory name -function cwdToDashed(cwd: string): string { - // Convert all slashes to dashes (including leading slash) - return cwd.replace(/\//g, '-'); -} - -// Helper: Extract last assistant message from transcript file -function extractPriorMessages(transcriptPath: string): { userMessage: string; assistantMessage: string } { - try { - if (!existsSync(transcriptPath)) { - return { userMessage: '', assistantMessage: '' }; - } - - const content = readFileSync(transcriptPath, 'utf-8').trim(); - if (!content) { - return { userMessage: '', assistantMessage: '' }; - } - - const lines = content.split('\n').filter(line => line.trim()); - - // Find the last assistant message by filtering for assistant type and taking the last one - let lastAssistantMessage = ''; - - // Iterate backwards to find the most recent assistant message with text content - for (let i = lines.length - 1; i >= 0; i--) { - try { - const line = lines[i]; - - // Quick check if this line is an assistant message - if (!line.includes('"type":"assistant"')) { - continue; - } - - const entry = JSON.parse(line); - - if (entry.type === 'assistant' && entry.message?.content && Array.isArray(entry.message.content)) { - let text = ''; - for (const block of entry.message.content) { - if (block.type === 'text') { - text += block.text; - } - } - // Remove system-reminder tags - text = text.replace(/[\s\S]*?<\/system-reminder>/g, '').trim(); - if (text) { - lastAssistantMessage = text; - break; // Found it, stop searching - } - } - } catch (parseError) { - // Skip malformed lines - continue; - } - } - - return { userMessage: '', assistantMessage: lastAssistantMessage }; - } catch (error) { - logger.failure('HOOK', `Failed to extract prior messages from transcript`, { transcriptPath }, error as Error); - return { userMessage: '', assistantMessage: '' }; - } -} - -/** - * Context Hook Main Logic - */ -async function contextHook(input?: SessionStartInput, useColors: boolean = false): Promise { - const config = loadContextConfig(); - const cwd = input?.cwd ?? process.cwd(); - const project = cwd ? path.basename(cwd) : 'unknown-project'; - - let db: SessionStore | null = null; - try { - db = new SessionStore(); - } catch (error: any) { - if (error.code === 'ERR_DLOPEN_FAILED') { - // Native module ABI mismatch - delete version marker to trigger reinstall - try { - unlinkSync(VERSION_MARKER_PATH); - } catch (unlinkError) { - // Marker might not exist, that's okay - } - - // Log once (not error spam) and exit cleanly - console.error('⚠️ Native module rebuild needed - restart Claude Code to auto-fix'); - console.error(' (This happens after Node.js version upgrades)'); - process.exit(0); // Exit cleanly to avoid error spam - } - - // Other errors should still throw - throw error; - } - - // Build SQL WHERE clause for observation types - const typeArray = Array.from(config.observationTypes); - const typePlaceholders = typeArray.map(() => '?').join(','); - - // Build SQL WHERE clause for concepts - const conceptArray = Array.from(config.observationConcepts); - const conceptPlaceholders = conceptArray.map(() => '?').join(','); - - // Get recent observations filtered by type and concepts at SQL level - // This ensures we show observations even when summaries haven't been generated - // Configurable via settings (default: 50) - const observations = db.db.prepare(` - SELECT - id, sdk_session_id, type, title, subtitle, narrative, - facts, concepts, files_read, files_modified, discovery_tokens, - created_at, created_at_epoch - FROM observations - WHERE project = ? - AND type IN (${typePlaceholders}) - AND EXISTS ( - SELECT 1 FROM json_each(concepts) - WHERE value IN (${conceptPlaceholders}) - ) - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(project, ...typeArray, ...conceptArray, config.totalObservationCount) as Observation[]; - - // Get recent summaries (optional - may not exist for recent sessions) - // Fetch one extra for offset calculation - const recentSummaries = db.db.prepare(` - SELECT id, sdk_session_id, request, investigated, learned, completed, next_steps, created_at, created_at_epoch - FROM session_summaries - WHERE project = ? - ORDER BY created_at_epoch DESC - LIMIT ? - `).all(project, config.sessionCount + SUMMARY_LOOKAHEAD) as SessionSummary[]; - - // Retrieve prior session messages if enabled - let priorUserMessage = ''; - let priorAssistantMessage = ''; - // let debugInfo: string[] = []; - - if (config.showLastMessage && observations.length > 0) { + while (Date.now() - startTime < maxWaitMs) { try { - const currentSessionId = input?.session_id; - - // Find the first observation from a different session (the prior session) - const priorSessionObs = observations.find(obs => obs.sdk_session_id !== currentSessionId); - - if (priorSessionObs) { - const priorSessionId = priorSessionObs.sdk_session_id; - - // Construct transcript path: ~/.claude/projects/{dashed-cwd}/{session_id}.jsonl - const dashedCwd = cwdToDashed(cwd); - const transcriptPath = path.join(homedir(), '.claude', 'projects', dashedCwd, `${priorSessionId}.jsonl`); - - // debugInfo.push(`📋 Prior Message Retrieval:`); - // debugInfo.push(` Session ID: ${priorSessionId}`); - // debugInfo.push(` Transcript: ${transcriptPath}`); - // debugInfo.push(` Exists: ${existsSync(transcriptPath)}`); - - // Extract messages from transcript - const messages = extractPriorMessages(transcriptPath); - priorUserMessage = messages.userMessage; - priorAssistantMessage = messages.assistantMessage; - - // if (!priorUserMessage && !priorAssistantMessage) { - // debugInfo.push(` ⚠️ No messages extracted from transcript`); - // } else { - // debugInfo.push(` ✅ Found user message: ${!!priorUserMessage}`); - // debugInfo.push(` ✅ Found assistant message: ${!!priorAssistantMessage}`); - // } - } // else { - // debugInfo.push(`📋 Prior Message Retrieval: No prior session found (all observations from current session)`); - // } - } catch (error) { - // debugInfo.push(`📋 Prior Message Retrieval Error: ${(error as Error).message}`); + execSync(`curl -s -f -m 1 "http://127.0.0.1:${port}/api/health" > /dev/null 2>&1`, { + timeout: 1000, + }); + return true; + } catch { + await new Promise((resolve) => setTimeout(resolve, pollInterval)); } } - - // If we have neither observations nor summaries, show empty state - if (observations.length === 0 && recentSummaries.length === 0) { - db?.close(); - if (useColors) { - return `\n${colors.bright}${colors.cyan}📝 [${project}] recent context${colors.reset}\n${colors.gray}${'─'.repeat(60)}${colors.reset}\n\n${colors.dim}No previous sessions found for this project yet.${colors.reset}\n`; - } - return `# [${project}] recent context\n\nNo previous sessions found for this project yet.`; - } - - const displaySummaries = recentSummaries.slice(0, config.sessionCount); - - // All filtered observations are shown in timeline - const timelineObs = observations; - - // Build output - const output: string[] = []; - - // Header - if (useColors) { - output.push(''); - output.push(`${colors.bright}${colors.cyan}📝 [${project}] recent context${colors.reset}`); - output.push(`${colors.gray}${'─'.repeat(60)}${colors.reset}`); - output.push(''); - } else { - output.push(`# [${project}] recent context`); - output.push(''); - } - - // Chronological Timeline - if (timelineObs.length > 0) { - // Legend/Key - if (useColors) { - output.push(`${colors.dim}Legend: 🎯 session-request | 🔴 bugfix | 🟣 feature | 🔄 refactor | ✅ change | 🔵 discovery | ⚖️ decision${colors.reset}`); - } else { - output.push(`**Legend:** 🎯 session-request | 🔴 bugfix | 🟣 feature | 🔄 refactor | ✅ change | 🔵 discovery | ⚖️ decision`); - } - output.push(''); - - // Column Key - if (useColors) { - output.push(`${colors.bright}💡 Column Key${colors.reset}`); - output.push(`${colors.dim} Read: Tokens to read this observation (cost to learn it now)${colors.reset}`); - output.push(`${colors.dim} Work: Tokens spent on work that produced this record (🔍 research, 🛠️ building, ⚖️ deciding)${colors.reset}`); - } else { - output.push(`💡 **Column Key**:`); - output.push(`- **Read**: Tokens to read this observation (cost to learn it now)`); - output.push(`- **Work**: Tokens spent on work that produced this record (🔍 research, 🛠️ building, ⚖️ deciding)`); - } - output.push(''); - - // Context Index Usage Instructions - if (useColors) { - output.push(`${colors.dim}💡 Context Index: This semantic index (titles, types, files, tokens) is usually sufficient to understand past work.${colors.reset}`); - output.push(''); - output.push(`${colors.dim}When you need implementation details, rationale, or debugging context:${colors.reset}`); - output.push(`${colors.dim} - Use the mem-search skill to fetch full observations on-demand${colors.reset}`); - output.push(`${colors.dim} - Critical types (🔴 bugfix, ⚖️ decision) often need detailed fetching${colors.reset}`); - output.push(`${colors.dim} - Trust this index over re-reading code for past decisions and learnings${colors.reset}`); - } else { - output.push(`💡 **Context Index:** This semantic index (titles, types, files, tokens) is usually sufficient to understand past work.`); - output.push(''); - output.push(`When you need implementation details, rationale, or debugging context:`); - output.push(`- Use the mem-search skill to fetch full observations on-demand`); - output.push(`- Critical types (🔴 bugfix, ⚖️ decision) often need detailed fetching`); - output.push(`- Trust this index over re-reading code for past decisions and learnings`); - } - output.push(''); - - // Section 1: Aggregate ROI Metrics - const totalObservations = observations.length; - const totalReadTokens = observations.reduce((sum, obs) => { - // Estimate read tokens from observation size - const obsSize = (obs.title?.length || 0) + - (obs.subtitle?.length || 0) + - (obs.narrative?.length || 0) + - JSON.stringify(obs.facts || []).length; - return sum + Math.ceil(obsSize / CHARS_PER_TOKEN_ESTIMATE); - }, 0); - const totalDiscoveryTokens = observations.reduce((sum, obs) => sum + (obs.discovery_tokens || 0), 0); - const savings = totalDiscoveryTokens - totalReadTokens; - const savingsPercent = totalDiscoveryTokens > 0 - ? Math.round((savings / totalDiscoveryTokens) * 100) - : 0; - - // Display Context Economics section only if at least one token setting is enabled - const showContextEconomics = config.showReadTokens || config.showWorkTokens || - config.showSavingsAmount || config.showSavingsPercent; - - if (showContextEconomics) { - if (useColors) { - output.push(`${colors.bright}${colors.cyan}📊 Context Economics${colors.reset}`); - output.push(`${colors.dim} Loading: ${totalObservations} observations (${totalReadTokens.toLocaleString()} tokens to read)${colors.reset}`); - output.push(`${colors.dim} Work investment: ${totalDiscoveryTokens.toLocaleString()} tokens spent on research, building, and decisions${colors.reset}`); - if (totalDiscoveryTokens > 0 && (config.showSavingsAmount || config.showSavingsPercent)) { - let savingsLine = ' Your savings: '; - if (config.showSavingsAmount && config.showSavingsPercent) { - savingsLine += `${savings.toLocaleString()} tokens (${savingsPercent}% reduction from reuse)`; - } else if (config.showSavingsAmount) { - savingsLine += `${savings.toLocaleString()} tokens`; - } else { - savingsLine += `${savingsPercent}% reduction from reuse`; - } - output.push(`${colors.green}${savingsLine}${colors.reset}`); - } - output.push(''); - } else { - output.push(`📊 **Context Economics**:`); - output.push(`- Loading: ${totalObservations} observations (${totalReadTokens.toLocaleString()} tokens to read)`); - output.push(`- Work investment: ${totalDiscoveryTokens.toLocaleString()} tokens spent on research, building, and decisions`); - if (totalDiscoveryTokens > 0 && (config.showSavingsAmount || config.showSavingsPercent)) { - let savingsLine = '- Your savings: '; - if (config.showSavingsAmount && config.showSavingsPercent) { - savingsLine += `${savings.toLocaleString()} tokens (${savingsPercent}% reduction from reuse)`; - } else if (config.showSavingsAmount) { - savingsLine += `${savings.toLocaleString()} tokens`; - } else { - savingsLine += `${savingsPercent}% reduction from reuse`; - } - output.push(savingsLine); - } - output.push(''); - } - } - - // Prepare summaries for timeline display - // The most recent summary shows full details (investigated, learned, etc.) - // Older summaries only show as timeline markers (no link needed) - const mostRecentSummaryId = recentSummaries[0]?.id; - - interface SummaryTimelineItem extends SessionSummary { - displayEpoch: number; - displayTime: string; - shouldShowLink: boolean; - } - - const summariesForTimeline: SummaryTimelineItem[] = displaySummaries.map((summary, i) => { - // For visual grouping, display each summary at the time range it covers - // Most recent: shows at its own time (current session) - // Older: shows at the previous (older) summary's time to mark the session range - const olderSummary = i === 0 ? null : recentSummaries[i + 1]; - return { - ...summary, - displayEpoch: olderSummary ? olderSummary.created_at_epoch : summary.created_at_epoch, - displayTime: olderSummary ? olderSummary.created_at : summary.created_at, - shouldShowLink: summary.id !== mostRecentSummaryId - }; - }); - - // Identify which observations should show full details (most recent N) - const fullObservationIds = new Set( - observations - .slice(0, config.fullObservationCount) - .map(obs => obs.id) - ); - - type TimelineItem = - | { type: 'observation'; data: Observation } - | { type: 'summary'; data: SummaryTimelineItem }; - - const timeline: TimelineItem[] = [ - ...timelineObs.map(obs => ({ type: 'observation' as const, data: obs })), - ...summariesForTimeline.map(summary => ({ type: 'summary' as const, data: summary })) - ]; - - // Sort chronologically - timeline.sort((a, b) => { - const aEpoch = a.type === 'observation' ? a.data.created_at_epoch : a.data.displayEpoch; - const bEpoch = b.type === 'observation' ? b.data.created_at_epoch : b.data.displayEpoch; - return aEpoch - bEpoch; - }); - - // Group by day for rendering - const itemsByDay = new Map(); - for (const item of timeline) { - const itemDate = item.type === 'observation' ? item.data.created_at : item.data.displayTime; - const day = formatDate(itemDate); - if (!itemsByDay.has(day)) { - itemsByDay.set(day, []); - } - itemsByDay.get(day)!.push(item); - } - - // Sort days chronologically - const sortedDays = Array.from(itemsByDay.entries()).sort((a, b) => { - const aDate = new Date(a[0]).getTime(); - const bDate = new Date(b[0]).getTime(); - return aDate - bDate; - }); - - // Render each day's timeline - for (const [day, dayItems] of sortedDays) { - // Day header - if (useColors) { - output.push(`${colors.bright}${colors.cyan}${day}${colors.reset}`); - output.push(''); - } else { - output.push(`### ${day}`); - output.push(''); - } - - // Render items chronologically with visual file grouping - let currentFile: string | null = null; - let lastTime = ''; - let tableOpen = false; - - for (const item of dayItems) { - if (item.type === 'summary') { - // Close any open table - if (tableOpen) { - output.push(''); - tableOpen = false; - currentFile = null; - lastTime = ''; - } - - // Render summary - const summary = item.data; - const summaryTitle = `${summary.request || 'Session started'} (${formatDateTime(summary.displayTime)})`; - const link = summary.shouldShowLink ? `claude-mem://session-summary/${summary.id}` : ''; - - if (useColors) { - const linkPart = link ? `${colors.dim}[${link}]${colors.reset}` : ''; - output.push(`🎯 ${colors.yellow}#S${summary.id}${colors.reset} ${summaryTitle} ${linkPart}`); - } else { - const linkPart = link ? ` [→](${link})` : ''; - output.push(`**🎯 #S${summary.id}** ${summaryTitle}${linkPart}`); - } - output.push(''); - } else { - // Render observation - const obs = item.data; - const files = parseJsonArray(obs.files_modified); - const file = (files.length > 0 && files[0]) ? toRelativePath(files[0], cwd) : 'General'; - - // Check if we need a new file section - if (file !== currentFile) { - // Close previous table - if (tableOpen) { - output.push(''); - } - - // File header - if (useColors) { - output.push(`${colors.dim}${file}${colors.reset}`); - } else { - output.push(`**${file}**`); - } - - // Table header (markdown only) - if (!useColors) { - output.push(`| ID | Time | T | Title | Read | Work |`); - output.push(`|----|------|---|-------|------|------|`); - } - - currentFile = file; - tableOpen = true; - lastTime = ''; - } - - const time = formatTime(obs.created_at); - const title = obs.title || 'Untitled'; - - // Map observation type to emoji icon - const icon = TYPE_ICON_MAP[obs.type as keyof typeof TYPE_ICON_MAP] || '•'; - - // Section 2: Calculate read tokens (estimate from observation size) - const obsSize = (obs.title?.length || 0) + - (obs.subtitle?.length || 0) + - (obs.narrative?.length || 0) + - JSON.stringify(obs.facts || []).length; - const readTokens = Math.ceil(obsSize / CHARS_PER_TOKEN_ESTIMATE); - - // Get discovery tokens (handle old observations without this field) - const discoveryTokens = obs.discovery_tokens || 0; - - // Map observation type to work emoji - const workEmoji = TYPE_WORK_EMOJI_MAP[obs.type as keyof typeof TYPE_WORK_EMOJI_MAP] || '🔍'; - - const discoveryDisplay = discoveryTokens > 0 ? `${workEmoji} ${discoveryTokens.toLocaleString()}` : '-'; - - const showTime = time !== lastTime; - const timeDisplay = showTime ? time : ''; - lastTime = time; - - // Check if this observation should show full details - const shouldShowFull = fullObservationIds.has(obs.id); - - if (shouldShowFull) { - // Render with full details (narrative or facts) - const detailField = config.fullObservationField === 'narrative' - ? obs.narrative - : (obs.facts ? parseJsonArray(obs.facts).join('\n') : null); - - if (useColors) { - const timePart = showTime ? `${colors.dim}${time}${colors.reset}` : ' '.repeat(time.length); - const readPart = (config.showReadTokens && readTokens > 0) ? `${colors.dim}(~${readTokens}t)${colors.reset}` : ''; - const discoveryPart = (config.showWorkTokens && discoveryTokens > 0) ? `${colors.dim}(${workEmoji} ${discoveryTokens.toLocaleString()}t)${colors.reset}` : ''; - - output.push(` ${colors.dim}#${obs.id}${colors.reset} ${timePart} ${icon} ${colors.bright}${title}${colors.reset}`); - if (detailField) { - output.push(` ${colors.dim}${detailField}${colors.reset}`); - } - if (readPart || discoveryPart) { - output.push(` ${readPart} ${discoveryPart}`); - } - output.push(''); - } else { - // Close table for full observation - if (tableOpen) { - output.push(''); - tableOpen = false; - } - - output.push(`**#${obs.id}** ${timeDisplay || '″'} ${icon} **${title}**`); - if (detailField) { - output.push(''); - output.push(detailField); - output.push(''); - } - const tokenParts: string[] = []; - if (config.showReadTokens) { - tokenParts.push(`Read: ~${readTokens}`); - } - if (config.showWorkTokens) { - tokenParts.push(`Work: ${discoveryDisplay}`); - } - if (tokenParts.length > 0) { - output.push(tokenParts.join(', ')); - } - output.push(''); - - // Reopen table for next items if in same file - currentFile = null; - } - } else { - // Compact index rendering (existing code) - if (useColors) { - const timePart = showTime ? `${colors.dim}${time}${colors.reset}` : ' '.repeat(time.length); - const readPart = (config.showReadTokens && readTokens > 0) ? `${colors.dim}(~${readTokens}t)${colors.reset}` : ''; - const discoveryPart = (config.showWorkTokens && discoveryTokens > 0) ? `${colors.dim}(${workEmoji} ${discoveryTokens.toLocaleString()}t)${colors.reset}` : ''; - output.push(` ${colors.dim}#${obs.id}${colors.reset} ${timePart} ${icon} ${title} ${readPart} ${discoveryPart}`); - } else { - const readCol = config.showReadTokens ? `~${readTokens}` : ''; - const workCol = config.showWorkTokens ? discoveryDisplay : ''; - output.push(`| #${obs.id} | ${timeDisplay || '″'} | ${icon} | ${title} | ${readCol} | ${workCol} |`); - } - } - } - } - - // Close final table if open - if (tableOpen) { - output.push(''); - } - } - - // Add full summary details for most recent session - // Only show if summary was generated AFTER the last observation - const mostRecentSummary = recentSummaries[0]; - const mostRecentObservation = observations[0]; // observations are DESC by created_at_epoch - - const shouldShowSummary = config.showLastSummary && - mostRecentSummary && - (mostRecentSummary.investigated || mostRecentSummary.learned || mostRecentSummary.completed || mostRecentSummary.next_steps) && - (!mostRecentObservation || mostRecentSummary.created_at_epoch > mostRecentObservation.created_at_epoch); - - if (shouldShowSummary) { - output.push(...renderSummaryField('Investigated', mostRecentSummary.investigated, colors.blue, useColors)); - output.push(...renderSummaryField('Learned', mostRecentSummary.learned, colors.yellow, useColors)); - output.push(...renderSummaryField('Completed', mostRecentSummary.completed, colors.green, useColors)); - output.push(...renderSummaryField('Next Steps', mostRecentSummary.next_steps, colors.magenta, useColors)); - } - - // Previously section (last assistant message from prior session) - positioned at bottom for chronological sense - if (priorAssistantMessage) { - output.push(''); - output.push('---'); - output.push(''); - if (useColors) { - output.push(`${colors.bright}${colors.magenta}📋 Previously${colors.reset}`); - output.push(''); - output.push(`${colors.dim}A: ${priorAssistantMessage}${colors.reset}`); - } else { - output.push(`**📋 Previously**`); - output.push(''); - output.push(`A: ${priorAssistantMessage}`); - } - output.push(''); - } - - // Footer with token savings message (only show if token economics is visible) - if (showContextEconomics && totalDiscoveryTokens > 0 && savings > 0) { - const workTokensK = Math.round(totalDiscoveryTokens / 1000); - output.push(''); - if (useColors) { - output.push(`${colors.dim}💰 Access ${workTokensK}k tokens of past research & decisions for just ${totalReadTokens.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.${colors.reset}`); - } else { - output.push(`💰 Access ${workTokensK}k tokens of past research & decisions for just ${totalReadTokens.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.`); - } - } - } - - db?.close(); - - // Add debug info directly to output - // if (debugInfo.length > 0) { - // output.push(''); - // output.push('---'); - // output.push(''); - // output.push(...debugInfo); - // } - - return output.join('\n').trimEnd(); + return false; } -// Export for use by worker service -export { contextHook }; +async function contextHook(input?: SessionStartInput): Promise { + const cwd = input?.cwd ?? process.cwd(); + const project = cwd ? path.basename(cwd) : "unknown-project"; + const port = getWorkerPort(); + + // Wait for worker to be available + const isAvailable = await waitForPort(port); + if (!isAvailable) { + throw new Error( + `Worker service not available on port ${port} after 10s. Try: npm run worker:restart` + ); + } + + const url = `http://127.0.0.1:${port}/api/context/inject?project=${encodeURIComponent(project)}`; + const result = execSync(`curl -s "${url}"`, { encoding: "utf-8", timeout: 5000 }); + return result.trim(); +} // Entry Point - handle stdin/stdout -const forceColors = process.argv.includes('--colors'); +const forceColors = process.argv.includes("--colors"); if (stdin.isTTY || forceColors) { - // Running manually from terminal - print formatted output with colors - contextHook(undefined, true).then(contextOutput => { - console.log(contextOutput); + contextHook(undefined).then((text) => { + console.log(text); process.exit(0); }); } else { - // Running from hook - wrap in hookSpecificOutput JSON format - let input = ''; - stdin.on('data', (chunk) => input += chunk); - stdin.on('end', async () => { + let input = ""; + stdin.on("data", (chunk) => (input += chunk)); + stdin.on("end", async () => { const parsed = input.trim() ? JSON.parse(input) : undefined; - const contextOutput = await contextHook(parsed, false); - const result = { - hookSpecificOutput: { - hookEventName: "SessionStart", - additionalContext: contextOutput - } - }; - console.log(JSON.stringify(result)); + const text = await contextHook(parsed); + + console.log( + JSON.stringify({ + hookSpecificOutput: { + hookEventName: "SessionStart", + additionalContext: text, + }, + }) + ); process.exit(0); }); -} \ No newline at end of file +} diff --git a/src/hooks/save-hook.ts b/src/hooks/save-hook.ts index aa7aaf41..d6dd96ef 100644 --- a/src/hooks/save-hook.ts +++ b/src/hooks/save-hook.ts @@ -1,15 +1,15 @@ /** * Save Hook - PostToolUse - * Consolidated entry point + logic + * + * Pure HTTP client - sends data to worker, worker handles all database operations + * including privacy checks. This allows the hook to run under any runtime + * (Node.js or Bun) since it has no native module dependencies. */ import { stdin } from 'process'; -import { SessionStore } from '../services/sqlite/SessionStore.js'; import { createHookResponse } from './hook-response.js'; import { logger } from '../utils/logger.js'; import { ensureWorkerRunning, getWorkerPort } from '../shared/worker-utils.js'; -import { silentDebug } from '../utils/silent-debug.js'; -import { stripMemoryTagsFromJson } from '../utils/tag-stripping.js'; export interface PostToolUseInput { session_id: string; @@ -29,9 +29,8 @@ const SKIP_TOOLS = new Set([ 'AskUserQuestion' // User interaction, not substantive work ]); - /** - * Save Hook Main Logic + * Save Hook Main Logic - Fire-and-forget HTTP client */ async function saveHook(input?: PostToolUseInput): Promise { if (!input) { @@ -48,72 +47,24 @@ async function saveHook(input?: PostToolUseInput): Promise { // Ensure worker is running await ensureWorkerRunning(); - const db = new SessionStore(); - - // Get or create session - const sessionDbId = db.createSDKSession(session_id, '', ''); - const promptNumber = db.getPromptCounter(sessionDbId); - - // Skip observation if user prompt was entirely private - // This respects the user's intent: if they marked the entire prompt as , - // they don't want ANY observations from that interaction - const userPrompt = db.getUserPrompt(session_id, promptNumber); - if (!userPrompt || userPrompt.trim() === '') { - silentDebug('[save-hook] Skipping observation - user prompt was entirely private', { - session_id, - promptNumber, - tool_name - }); - db.close(); - console.log(createHookResponse('PostToolUse', true)); - return; - } - - db.close(); + const port = getWorkerPort(); const toolStr = logger.formatTool(tool_name, tool_input); - const port = getWorkerPort(); - logger.dataIn('HOOK', `PostToolUse: ${toolStr}`, { - sessionId: sessionDbId, workerPort: port }); try { - // Serialize and strip memory tags from tool_input and tool_response - // This prevents recursive storage of context and respects tags - let cleanedToolInput = '{}'; - let cleanedToolResponse = '{}'; - - try { - cleanedToolInput = tool_input !== undefined - ? stripMemoryTagsFromJson(JSON.stringify(tool_input)) - : '{}'; - } catch (error) { - // Handle circular references or other JSON.stringify errors - silentDebug('[save-hook] Failed to stringify tool_input:', { error, tool_name }); - cleanedToolInput = '{"error": "Failed to serialize tool_input"}'; - } - - try { - cleanedToolResponse = tool_response !== undefined - ? stripMemoryTagsFromJson(JSON.stringify(tool_response)) - : '{}'; - } catch (error) { - // Handle circular references or other JSON.stringify errors - silentDebug('[save-hook] Failed to stringify tool_response:', { error, tool_name }); - cleanedToolResponse = '{"error": "Failed to serialize tool_response"}'; - } - - const response = await fetch(`http://127.0.0.1:${port}/sessions/${sessionDbId}/observations`, { + // Send to worker - worker handles privacy check and database operations + const response = await fetch(`http://127.0.0.1:${port}/api/sessions/observations`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ + claudeSessionId: session_id, tool_name, - tool_input: cleanedToolInput, - tool_response: cleanedToolResponse, - prompt_number: promptNumber, + tool_input, + tool_response, cwd: cwd || '' }), signal: AbortSignal.timeout(2000) @@ -122,19 +73,17 @@ async function saveHook(input?: PostToolUseInput): Promise { if (!response.ok) { const errorText = await response.text(); logger.failure('HOOK', 'Failed to send observation', { - sessionId: sessionDbId, status: response.status }, errorText); throw new Error(`Failed to send observation to worker: ${response.status} ${errorText}`); } - logger.debug('HOOK', 'Observation sent successfully', { sessionId: sessionDbId, toolName: tool_name }); + logger.debug('HOOK', 'Observation sent successfully', { toolName: tool_name }); } catch (error: any) { // Only show restart message for connection errors, not HTTP errors if (error.cause?.code === 'ECONNREFUSED' || error.name === 'TimeoutError' || error.message.includes('fetch failed')) { throw new Error("There's a problem with the worker. If you just updated, type `pm2 restart claude-mem-worker` in your terminal to continue"); } - // Re-throw HTTP errors and other errors as-is throw error; } diff --git a/src/hooks/summary-hook.ts b/src/hooks/summary-hook.ts index cf574cd6..0cfc2c0f 100644 --- a/src/hooks/summary-hook.ts +++ b/src/hooks/summary-hook.ts @@ -1,15 +1,19 @@ /** * Summary Hook - Stop - * Consolidated entry point + logic + * + * Pure HTTP client - sends data to worker, worker handles all database operations + * including privacy checks. This allows the hook to run under any runtime + * (Node.js or Bun) since it has no native module dependencies. + * + * Transcript parsing stays in the hook because only the hook has access to + * the transcript file path. */ import { stdin } from 'process'; import { readFileSync, existsSync } from 'fs'; -import { SessionStore } from '../services/sqlite/SessionStore.js'; import { createHookResponse } from './hook-response.js'; import { logger } from '../utils/logger.js'; import { ensureWorkerRunning, getWorkerPort } from '../shared/worker-utils.js'; -import { silentDebug } from '../utils/silent-debug.js'; export interface StopInput { session_id: string; @@ -123,7 +127,7 @@ function extractLastAssistantMessage(transcriptPath: string): string { } /** - * Summary Hook Main Logic + * Summary Hook Main Logic - Fire-and-forget HTTP client */ async function summaryHook(input?: StopInput): Promise { if (!input) { @@ -135,77 +139,25 @@ async function summaryHook(input?: StopInput): Promise { // Ensure worker is running await ensureWorkerRunning(); - const db = new SessionStore(); - - // Get or create session - const sessionDbId = db.createSDKSession(session_id, '', ''); - const promptNumber = db.getPromptCounter(sessionDbId); - - // Skip summary if user prompt was entirely private - // This respects the user's intent: if they marked the entire prompt as , - // they don't want ANY memory operations including summaries - const userPrompt = db.getUserPrompt(session_id, promptNumber); - if (!userPrompt || userPrompt.trim() === '') { - silentDebug('[summary-hook] Skipping summary - user prompt was entirely private', { - session_id, - promptNumber - }); - db.close(); - console.log(createHookResponse('Stop', true)); - return; - } - - // DIAGNOSTIC: Check session and observations - const sessionInfo = db.db.prepare(` - SELECT id, claude_session_id, sdk_session_id, project - FROM sdk_sessions WHERE id = ? - `).get(sessionDbId) as any; - - const obsCount = db.db.prepare(` - SELECT COUNT(*) as count - FROM observations - WHERE sdk_session_id = ? - `).get(sessionInfo?.sdk_session_id) as { count: number }; - - silentDebug('[summary-hook] Session diagnostics', { - claudeSessionId: session_id, - sessionDbId, - sdkSessionId: sessionInfo?.sdk_session_id, - project: sessionInfo?.project, - promptNumber, - observationCount: obsCount?.count || 0, - transcriptPath: input.transcript_path - }); - - db.close(); - const port = getWorkerPort(); // Extract last user AND assistant messages from transcript const lastUserMessage = extractLastUserMessage(input.transcript_path || ''); const lastAssistantMessage = extractLastAssistantMessage(input.transcript_path || ''); - silentDebug('[summary-hook] Extracted messages', { - hasLastUserMessage: !!lastUserMessage, - hasLastAssistantMessage: !!lastAssistantMessage, - lastAssistantPreview: lastAssistantMessage.substring(0, 200), - lastAssistantLength: lastAssistantMessage.length - }); - logger.dataIn('HOOK', 'Stop: Requesting summary', { - sessionId: sessionDbId, workerPort: port, - promptNumber, hasLastUserMessage: !!lastUserMessage, hasLastAssistantMessage: !!lastAssistantMessage }); try { - const response = await fetch(`http://127.0.0.1:${port}/sessions/${sessionDbId}/summarize`, { + // Send to worker - worker handles privacy check and database operations + const response = await fetch(`http://127.0.0.1:${port}/api/sessions/summarize`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ - prompt_number: promptNumber, + claudeSessionId: session_id, last_user_message: lastUserMessage, last_assistant_message: lastAssistantMessage }), @@ -215,26 +167,25 @@ async function summaryHook(input?: StopInput): Promise { if (!response.ok) { const errorText = await response.text(); logger.failure('HOOK', 'Failed to generate summary', { - sessionId: sessionDbId, status: response.status }, errorText); throw new Error(`Failed to request summary from worker: ${response.status} ${errorText}`); } - logger.debug('HOOK', 'Summary request sent successfully', { sessionId: sessionDbId }); + logger.debug('HOOK', 'Summary request sent successfully'); } catch (error: any) { // Only show restart message for connection errors, not HTTP errors if (error.cause?.code === 'ECONNREFUSED' || error.name === 'TimeoutError' || error.message.includes('fetch failed')) { throw new Error("There's a problem with the worker. If you just updated, type `pm2 restart claude-mem-worker` in your terminal to continue"); } - // Re-throw HTTP errors and other errors as-is throw error; } finally { - await fetch(`http://127.0.0.1:${port}/api/processing`, { + // Notify worker to stop spinner (fire-and-forget) + fetch(`http://127.0.0.1:${port}/api/processing`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ isProcessing: false }) - }); + }).catch(() => {}); } console.log(createHookResponse('Stop', true)); diff --git a/src/hooks/user-message-hook.ts b/src/hooks/user-message-hook.ts index 7f35a789..828c3b5b 100644 --- a/src/hooks/user-message-hook.ts +++ b/src/hooks/user-message-hook.ts @@ -6,8 +6,7 @@ * has been loaded into their session. Uses stderr as the communication channel * since it's currently the only way to display messages in Claude Code UI. */ -import { execSync } from "child_process"; -import { join } from "path"; +import { join, basename } from "path"; import { homedir } from "os"; import { existsSync } from "fs"; import { getWorkerPort } from "../shared/worker-utils.js"; @@ -20,7 +19,7 @@ if (!existsSync(nodeModulesPath)) { // First-time installation - dependencies not yet installed console.error(` --- -🎉 Note: This appears under Plugin Hook Error, but it's not an error. That's the only option for +🎉 Note: This appears under Plugin Hook Error, but it's not an error. That's the only option for user messages in Claude Code UI until a better method is provided. --- @@ -41,14 +40,20 @@ This message was not added to your startup context, so you can continue working } try { - // Cross-platform path to context-hook.js in the installed plugin - const contextHookPath = join(homedir(), '.claude', 'plugins', 'marketplaces', 'thedotmack', 'plugin', 'scripts', 'context-hook.js'); - const output = execSync(`node "${contextHookPath}" --colors`, { - encoding: 'utf8', - windowsHide: true - }); - const port = getWorkerPort(); + const project = basename(process.cwd()); + + // Fetch formatted context directly from worker API + const response = await fetch( + `http://127.0.0.1:${port}/api/context/inject?project=${encodeURIComponent(project)}&colors=true`, + { method: 'GET', signal: AbortSignal.timeout(5000) } + ); + + if (!response.ok) { + throw new Error(`Worker error ${response.status}`); + } + + const output = await response.text(); // If it's after Dec 5, 2025 7pm EST, patch this out const now = new Date(); diff --git a/src/servers/mcp-server.ts b/src/servers/mcp-server.ts new file mode 100644 index 00000000..ae821f63 --- /dev/null +++ b/src/servers/mcp-server.ts @@ -0,0 +1,445 @@ +/** + * Claude-mem MCP Search Server - Thin HTTP Wrapper + * + * Refactored from 2,718 lines to ~600-800 lines + * Delegates all business logic to Worker HTTP API at localhost:37777 + * Maintains MCP protocol handling and tool schemas + */ + +import { Server } from '@modelcontextprotocol/sdk/server/index.js'; +import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; +import { + CallToolRequestSchema, + ListToolsRequestSchema, +} from '@modelcontextprotocol/sdk/types.js'; +import { z } from 'zod'; +import { zodToJsonSchema } from 'zod-to-json-schema'; +import { silentDebug } from '../utils/silent-debug.js'; + +/** + * Worker HTTP API configuration + */ +const WORKER_PORT = parseInt(process.env.CLAUDE_MEM_WORKER_PORT || '37777', 10); +const WORKER_BASE_URL = `http://localhost:${WORKER_PORT}`; + +/** + * Map tool names to Worker HTTP endpoints + */ +const TOOL_ENDPOINT_MAP: Record = { + 'search': '/api/search', + 'timeline': '/api/timeline', + 'decisions': '/api/decisions', + 'changes': '/api/changes', + 'how_it_works': '/api/how-it-works', + 'search_observations': '/api/search/observations', + 'search_sessions': '/api/search/sessions', + 'search_user_prompts': '/api/search/prompts', + 'find_by_concept': '/api/search/by-concept', + 'find_by_file': '/api/search/by-file', + 'find_by_type': '/api/search/by-type', + 'get_recent_context': '/api/context/recent', + 'get_context_timeline': '/api/context/timeline', + 'get_timeline_by_query': '/api/timeline/by-query' +}; + +/** + * Call Worker HTTP API endpoint + */ +async function callWorkerAPI( + endpoint: string, + params: Record +): Promise<{ content: Array<{ type: 'text'; text: string }>; isError?: boolean }> { + silentDebug('[search-server] → Worker API', { endpoint, params }); + + try { + const searchParams = new URLSearchParams(); + + // Convert params to query string + for (const [key, value] of Object.entries(params)) { + if (value !== undefined && value !== null) { + searchParams.append(key, String(value)); + } + } + + const url = `${WORKER_BASE_URL}${endpoint}?${searchParams}`; + const response = await fetch(url); + + if (!response.ok) { + const errorText = await response.text(); + throw new Error(`Worker API error (${response.status}): ${errorText}`); + } + + const data = await response.json() as { content: Array<{ type: 'text'; text: string }>; isError?: boolean }; + + silentDebug('[search-server] ← Worker API success', { endpoint }); + + // Worker returns { content: [...] } format directly + return data; + } catch (error: any) { + silentDebug('[search-server] ← Worker API error', { endpoint, error: error.message }); + return { + content: [{ + type: 'text' as const, + text: `Error calling Worker API: ${error.message}` + }], + isError: true + }; + } +} + +/** + * Verify Worker is accessible + */ +async function verifyWorkerConnection(): Promise { + try { + const response = await fetch(`${WORKER_BASE_URL}/api/health`); + return response.ok; + } catch (error) { + return false; + } +} + +/** + * Tool definitions with HTTP-based handlers + */ +const tools = [ + { + name: 'search', + description: 'Unified search across all memory types (observations, sessions, and user prompts) using vector-first semantic search (ChromaDB). Returns combined results from all document types. IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.', + inputSchema: z.object({ + query: z.string().optional().describe('Natural language search query for semantic ranking via ChromaDB vector search. Optional - omit for date-filtered queries only (Chroma cannot filter by date, requires direct SQLite).'), + format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'), + type: z.enum(['observations', 'sessions', 'prompts']).optional().describe('Filter by document type (observations, sessions, or prompts). Omit to search all types.'), + obs_type: z.string().optional().describe('Filter observations by type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change). Only applies when type="observations"'), + concepts: z.string().optional().describe('Filter by concept tags (single value or comma-separated list). Only applies when type="observations"'), + files: z.string().optional().describe('Filter by file paths (single value or comma-separated list for partial match). Only applies when type="observations"'), + project: z.string().optional().describe('Filter by project name'), + dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), + dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)'), + limit: z.number().min(1).max(100).default(20).describe('Maximum number of results'), + offset: z.number().min(0).default(0).describe('Number of results to skip'), + orderBy: z.enum(['relevance', 'date_desc', 'date_asc']).default('date_desc').describe('Sort order') + }), + handler: async (args: any) => { + const endpoint = TOOL_ENDPOINT_MAP['search']; + return await callWorkerAPI(endpoint, args); + } + }, + { + name: 'timeline', + description: 'Fetch timeline of observations around a specific point in time. Supports two modes: anchor-based (fetch observations before/after a specific observation ID) and query-based (semantic search for anchor point). IMPORTANT: Use anchor_id when you know the specific observation, or query to find an anchor point first.', + inputSchema: z.object({ + query: z.string().optional().describe('Natural language query to find anchor observation (query-based mode). Mutually exclusive with anchor_id.'), + anchor_id: z.number().optional().describe('Observation ID to use as anchor (anchor-based mode). Mutually exclusive with query.'), + before: z.number().min(0).max(100).default(10).describe('Number of observations to fetch before anchor'), + after: z.number().min(0).max(100).default(10).describe('Number of observations to fetch after anchor'), + format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'), + obs_type: z.string().optional().describe('Filter observations by type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)'), + concepts: z.string().optional().describe('Filter by concept tags (single value or comma-separated list)'), + files: z.string().optional().describe('Filter by file paths (single value or comma-separated list for partial match)'), + project: z.string().optional().describe('Filter by project name') + }), + handler: async (args: any) => { + const endpoint = TOOL_ENDPOINT_MAP['timeline']; + return await callWorkerAPI(endpoint, args); + } + }, + { + name: 'decisions', + description: 'Semantic shortcut for finding architectural, design, and implementation decisions. Optimized for decision-type observations with relevant keyword boosting.', + inputSchema: z.object({ + query: z.string().describe('Natural language query for finding decisions'), + format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'), + limit: z.number().min(1).max(100).default(20).describe('Maximum number of results'), + dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), + dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)') + }), + handler: async (args: any) => { + const endpoint = TOOL_ENDPOINT_MAP['decisions']; + return await callWorkerAPI(endpoint, args); + } + }, + { + name: 'changes', + description: 'Semantic shortcut for finding code changes, refactorings, and modifications. Optimized for change-type observations with relevant keyword boosting.', + inputSchema: z.object({ + query: z.string().describe('Natural language query for finding changes'), + format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'), + limit: z.number().min(1).max(100).default(20).describe('Maximum number of results'), + dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), + dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)') + }), + handler: async (args: any) => { + const endpoint = TOOL_ENDPOINT_MAP['changes']; + return await callWorkerAPI(endpoint, args); + } + }, + { + name: 'how_it_works', + description: 'Semantic shortcut for understanding system architecture, design patterns, and implementation details. Optimized for discovery-type observations with architecture/design keyword boosting.', + inputSchema: z.object({ + query: z.string().describe('Natural language query for understanding how something works'), + format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'), + limit: z.number().min(1).max(100).default(20).describe('Maximum number of results'), + dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), + dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)') + }), + handler: async (args: any) => { + const endpoint = TOOL_ENDPOINT_MAP['how_it_works']; + return await callWorkerAPI(endpoint, args); + } + }, + { + name: 'search_observations', + description: '[DEPRECATED - Use "search" with type="observations" instead] Search observations (facts/narratives) using FTS5 full-text search. Supports filtering by type, concepts, files, and date range.', + inputSchema: z.object({ + query: z.string().optional().describe('Full-text search query (FTS5)'), + format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'), + type: z.string().optional().describe('Filter by observation type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)'), + concepts: z.string().optional().describe('Filter by concept tags (single value or comma-separated list)'), + files: z.string().optional().describe('Filter by file paths (single value or comma-separated list for partial match)'), + project: z.string().optional().describe('Filter by project name'), + dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), + dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)'), + limit: z.number().min(1).max(100).default(20).describe('Maximum number of results'), + offset: z.number().min(0).default(0).describe('Number of results to skip'), + orderBy: z.enum(['relevance', 'date_desc', 'date_asc']).default('relevance').describe('Sort order (relevance only when query provided)') + }), + handler: async (args: any) => { + const endpoint = TOOL_ENDPOINT_MAP['search_observations']; + return await callWorkerAPI(endpoint, args); + } + }, + { + name: 'search_sessions', + description: '[DEPRECATED - Use "search" with type="sessions" instead] Search session summaries using FTS5 full-text search. Returns both request_summary and learned_summary fields.', + inputSchema: z.object({ + query: z.string().optional().describe('Full-text search query (FTS5)'), + format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'), + project: z.string().optional().describe('Filter by project name'), + dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), + dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)'), + limit: z.number().min(1).max(100).default(20).describe('Maximum number of results'), + offset: z.number().min(0).default(0).describe('Number of results to skip'), + orderBy: z.enum(['relevance', 'date_desc', 'date_asc']).default('relevance').describe('Sort order (relevance only when query provided)') + }), + handler: async (args: any) => { + const endpoint = TOOL_ENDPOINT_MAP['search_sessions']; + return await callWorkerAPI(endpoint, args); + } + }, + { + name: 'search_user_prompts', + description: '[DEPRECATED - Use "search" with type="prompts" instead] Search user prompts using FTS5 full-text search. Searches prompt text only.', + inputSchema: z.object({ + query: z.string().optional().describe('Full-text search query (FTS5)'), + format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'), + project: z.string().optional().describe('Filter by project name'), + dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), + dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)'), + limit: z.number().min(1).max(100).default(20).describe('Maximum number of results'), + offset: z.number().min(0).default(0).describe('Number of results to skip'), + orderBy: z.enum(['relevance', 'date_desc', 'date_asc']).default('relevance').describe('Sort order (relevance only when query provided)') + }), + handler: async (args: any) => { + const endpoint = TOOL_ENDPOINT_MAP['search_user_prompts']; + return await callWorkerAPI(endpoint, args); + } + }, + { + name: 'find_by_concept', + description: 'Find observations tagged with specific concepts. Returns observations that match any of the provided concept tags.', + inputSchema: z.object({ + concepts: z.string().describe('Concept tag(s) to filter by (single value or comma-separated list)'), + format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'), + type: z.string().optional().describe('Filter by observation type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)'), + files: z.string().optional().describe('Filter by file paths (single value or comma-separated list for partial match)'), + project: z.string().optional().describe('Filter by project name'), + dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), + dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)'), + limit: z.number().min(1).max(100).default(20).describe('Maximum number of results'), + offset: z.number().min(0).default(0).describe('Number of results to skip'), + orderBy: z.enum(['date_desc', 'date_asc']).default('date_desc').describe('Sort order') + }), + handler: async (args: any) => { + const endpoint = TOOL_ENDPOINT_MAP['find_by_concept']; + return await callWorkerAPI(endpoint, args); + } + }, + { + name: 'find_by_file', + description: 'Find observations related to specific file paths. Uses partial matching - searches for file paths containing the provided string.', + inputSchema: z.object({ + files: z.string().describe('File path(s) to filter by (single value or comma-separated list for partial match)'), + format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'), + type: z.string().optional().describe('Filter by observation type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)'), + concepts: z.string().optional().describe('Filter by concept tags (single value or comma-separated list)'), + project: z.string().optional().describe('Filter by project name'), + dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), + dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)'), + limit: z.number().min(1).max(100).default(20).describe('Maximum number of results'), + offset: z.number().min(0).default(0).describe('Number of results to skip'), + orderBy: z.enum(['date_desc', 'date_asc']).default('date_desc').describe('Sort order') + }), + handler: async (args: any) => { + const endpoint = TOOL_ENDPOINT_MAP['find_by_file']; + return await callWorkerAPI(endpoint, args); + } + }, + { + name: 'find_by_type', + description: 'Find observations of specific types. Returns observations matching any of the provided observation types.', + inputSchema: z.object({ + type: z.string().describe('Observation type(s) to filter by (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)'), + format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'), + concepts: z.string().optional().describe('Filter by concept tags (single value or comma-separated list)'), + files: z.string().optional().describe('Filter by file paths (single value or comma-separated list for partial match)'), + project: z.string().optional().describe('Filter by project name'), + dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), + dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)'), + limit: z.number().min(1).max(100).default(20).describe('Maximum number of results'), + offset: z.number().min(0).default(0).describe('Number of results to skip'), + orderBy: z.enum(['date_desc', 'date_asc']).default('date_desc').describe('Sort order') + }), + handler: async (args: any) => { + const endpoint = TOOL_ENDPOINT_MAP['find_by_type']; + return await callWorkerAPI(endpoint, args); + } + }, + { + name: 'get_recent_context', + description: 'Get recent session context for timeline display. Returns recent observations, sessions, and user prompts with metadata for building timeline UI.', + inputSchema: z.object({ + limit: z.number().min(1).max(100).default(30).describe('Maximum number of timeline items to return'), + format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'), + type: z.string().optional().describe('Filter by observation type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)'), + concepts: z.string().optional().describe('Filter by concept tags (single value or comma-separated list)'), + files: z.string().optional().describe('Filter by file paths (single value or comma-separated list for partial match)'), + project: z.string().optional().describe('Filter by project name'), + dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), + dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)') + }), + handler: async (args: any) => { + const endpoint = TOOL_ENDPOINT_MAP['get_recent_context']; + return await callWorkerAPI(endpoint, args); + } + }, + { + name: 'get_context_timeline', + description: 'Get timeline of observations around a specific observation ID. Returns observations before and after the anchor point with metadata for timeline display.', + inputSchema: z.object({ + anchor_id: z.number().describe('Observation ID to use as anchor point'), + before: z.number().min(0).max(100).default(10).describe('Number of observations to fetch before anchor'), + after: z.number().min(0).max(100).default(10).describe('Number of observations to fetch after anchor'), + format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'), + type: z.string().optional().describe('Filter by observation type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)'), + concepts: z.string().optional().describe('Filter by concept tags (single value or comma-separated list)'), + files: z.string().optional().describe('Filter by file paths (single value or comma-separated list for partial match)'), + project: z.string().optional().describe('Filter by project name') + }), + handler: async (args: any) => { + const endpoint = TOOL_ENDPOINT_MAP['get_context_timeline']; + return await callWorkerAPI(endpoint, args); + } + }, + { + name: 'get_timeline_by_query', + description: 'Combined search + timeline tool. First searches for observations matching the query, then returns timeline around the best match. Useful for finding specific observations and viewing their context.', + inputSchema: z.object({ + query: z.string().describe('Natural language query to find anchor observation'), + before: z.number().min(0).max(100).default(10).describe('Number of observations to fetch before anchor'), + after: z.number().min(0).max(100).default(10).describe('Number of observations to fetch after anchor'), + format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED), "full" for complete details'), + type: z.string().optional().describe('Filter by observation type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)'), + concepts: z.string().optional().describe('Filter by concept tags (single value or comma-separated list)'), + files: z.string().optional().describe('Filter by file paths (single value or comma-separated list for partial match)'), + project: z.string().optional().describe('Filter by project name'), + dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), + dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)') + }), + handler: async (args: any) => { + const endpoint = TOOL_ENDPOINT_MAP['get_timeline_by_query']; + return await callWorkerAPI(endpoint, args); + } + } +]; + +// Create the MCP server +const server = new Server( + { + name: 'claude-mem-search-server', + version: '1.0.0', + }, + { + capabilities: { + tools: {}, + }, + } +); + +// Register tools/list handler +server.setRequestHandler(ListToolsRequestSchema, async () => { + return { + tools: tools.map(tool => ({ + name: tool.name, + description: tool.description, + inputSchema: zodToJsonSchema(tool.inputSchema) as Record + })) + }; +}); + +// Register tools/call handler +server.setRequestHandler(CallToolRequestSchema, async (request) => { + const tool = tools.find(t => t.name === request.params.name); + + if (!tool) { + throw new Error(`Unknown tool: ${request.params.name}`); + } + + try { + return await tool.handler(request.params.arguments || {}); + } catch (error: any) { + return { + content: [{ + type: 'text' as const, + text: `Tool execution failed: ${error.message}` + }], + isError: true + }; + } +}); + +// Cleanup function +async function cleanup() { + silentDebug('[search-server] Shutting down...'); + process.exit(0); +} + +// Register cleanup handlers for graceful shutdown +process.on('SIGTERM', cleanup); +process.on('SIGINT', cleanup); + +// Start the server +async function main() { + // Start the MCP server + const transport = new StdioServerTransport(); + await server.connect(transport); + silentDebug('[search-server] Claude-mem search server started'); + + // Check Worker availability in background + setTimeout(async () => { + const workerAvailable = await verifyWorkerConnection(); + if (!workerAvailable) { + silentDebug('[search-server] WARNING: Worker not available at', WORKER_BASE_URL); + silentDebug('[search-server] Tools will fail until Worker is started'); + silentDebug('[search-server] Start Worker with: npm run worker:restart'); + } else { + silentDebug('[search-server] Worker available at', WORKER_BASE_URL); + } + }, 0); +} + +main().catch((error) => { + silentDebug('[search-server] Fatal error:', error); + process.exit(1); +}); diff --git a/src/services/context-generator.ts b/src/services/context-generator.ts new file mode 100644 index 00000000..c7b837a9 --- /dev/null +++ b/src/services/context-generator.ts @@ -0,0 +1,712 @@ +/** + * Context Generator - generates context injection for SessionStart + * + * This module contains all the logic for building the context injection string. + * It's used by the worker service and called via HTTP from the context-hook. + */ + +import path from 'path'; +import { homedir } from 'os'; +import { existsSync, readFileSync, unlinkSync } from 'fs'; +import { SessionStore } from './sqlite/SessionStore.js'; +import { + OBSERVATION_TYPES, + OBSERVATION_CONCEPTS, + TYPE_ICON_MAP, + TYPE_WORK_EMOJI_MAP +} from '../constants/observation-metadata.js'; +import { logger } from '../utils/logger.js'; +import { SettingsDefaultsManager } from './worker/settings/SettingsDefaultsManager.js'; + +// Version marker path - use homedir-based path that works in both CJS and ESM contexts +const VERSION_MARKER_PATH = path.join(homedir(), '.claude', 'plugins', 'marketplaces', 'thedotmack', 'plugin', '.install-version'); + +interface ContextConfig { + // Display counts + totalObservationCount: number; + fullObservationCount: number; + sessionCount: number; + + // Token display toggles + showReadTokens: boolean; + showWorkTokens: boolean; + showSavingsAmount: boolean; + showSavingsPercent: boolean; + + // Filters + observationTypes: Set; + observationConcepts: Set; + + // Display options + fullObservationField: 'narrative' | 'facts'; + showLastSummary: boolean; + showLastMessage: boolean; +} + +/** + * Load all context configuration settings + * Priority: ~/.claude-mem/settings.json > env var > defaults + */ +function loadContextConfig(): ContextConfig { + const settingsPath = path.join(homedir(), '.claude-mem', 'settings.json'); + const settings = SettingsDefaultsManager.loadFromFile(settingsPath); + + try { + return { + totalObservationCount: parseInt(settings.CLAUDE_MEM_CONTEXT_OBSERVATIONS, 10), + fullObservationCount: parseInt(settings.CLAUDE_MEM_CONTEXT_FULL_COUNT, 10), + sessionCount: parseInt(settings.CLAUDE_MEM_CONTEXT_SESSION_COUNT, 10), + showReadTokens: settings.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS === 'true', + showWorkTokens: settings.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS === 'true', + showSavingsAmount: settings.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT === 'true', + showSavingsPercent: settings.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT === 'true', + observationTypes: new Set( + settings.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES.split(',').map((t: string) => t.trim()).filter(Boolean) + ), + observationConcepts: new Set( + settings.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS.split(',').map((c: string) => c.trim()).filter(Boolean) + ), + fullObservationField: settings.CLAUDE_MEM_CONTEXT_FULL_FIELD as 'narrative' | 'facts', + showLastSummary: settings.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY === 'true', + showLastMessage: settings.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE === 'true', + }; + } catch (error) { + logger.warn('WORKER', 'Failed to load context settings, using defaults', {}, error as Error); + // Return defaults on error + return { + totalObservationCount: 50, + fullObservationCount: 5, + sessionCount: 10, + showReadTokens: true, + showWorkTokens: true, + showSavingsAmount: true, + showSavingsPercent: true, + observationTypes: new Set(OBSERVATION_TYPES), + observationConcepts: new Set(OBSERVATION_CONCEPTS), + fullObservationField: 'narrative' as const, + showLastSummary: true, + showLastMessage: false, + }; + } +} + +// Configuration constants +const CHARS_PER_TOKEN_ESTIMATE = 4; +const SUMMARY_LOOKAHEAD = 1; + +export interface ContextInput { + session_id?: string; + transcript_path?: string; + cwd?: string; + hook_event_name?: string; + source?: "startup" | "resume" | "clear" | "compact"; + [key: string]: any; +} + +// ANSI color codes for terminal output +const colors = { + reset: '\x1b[0m', + bright: '\x1b[1m', + dim: '\x1b[2m', + cyan: '\x1b[36m', + green: '\x1b[32m', + yellow: '\x1b[33m', + blue: '\x1b[34m', + magenta: '\x1b[35m', + gray: '\x1b[90m', + red: '\x1b[31m', +}; + +interface Observation { + id: number; + sdk_session_id: string; + type: string; + title: string | null; + subtitle: string | null; + narrative: string | null; + facts: string | null; + concepts: string | null; + files_read: string | null; + files_modified: string | null; + discovery_tokens: number | null; + created_at: string; + created_at_epoch: number; +} + +interface SessionSummary { + id: number; + sdk_session_id: string; + request: string | null; + investigated: string | null; + learned: string | null; + completed: string | null; + next_steps: string | null; + created_at: string; + created_at_epoch: number; +} + +// Helper: Parse JSON array safely +function parseJsonArray(json: string | null): string[] { + if (!json) return []; + try { + const parsed = JSON.parse(json); + return Array.isArray(parsed) ? parsed : []; + } catch (err) { + return []; + } +} + +// Helper: Format date with time +function formatDateTime(dateStr: string): string { + const date = new Date(dateStr); + return date.toLocaleString('en-US', { + month: 'short', + day: 'numeric', + hour: 'numeric', + minute: '2-digit', + hour12: true + }); +} + +// Helper: Format just time (no date) +function formatTime(dateStr: string): string { + const date = new Date(dateStr); + return date.toLocaleString('en-US', { + hour: 'numeric', + minute: '2-digit', + hour12: true + }); +} + +// Helper: Format just date +function formatDate(dateStr: string): string { + const date = new Date(dateStr); + return date.toLocaleString('en-US', { + month: 'short', + day: 'numeric', + year: 'numeric' + }); +} + +// Helper: Convert absolute paths to relative paths +function toRelativePath(filePath: string, cwd: string): string { + if (path.isAbsolute(filePath)) { + return path.relative(cwd, filePath); + } + return filePath; +} + +// Helper: Render a summary field +function renderSummaryField(label: string, value: string | null, color: string, useColors: boolean): string[] { + if (!value) return []; + + if (useColors) { + return [`${color}${label}:${colors.reset} ${value}`, '']; + } + return [`**${label}**: ${value}`, '']; +} + +// Helper: Convert cwd path to dashed format +function cwdToDashed(cwd: string): string { + return cwd.replace(/\//g, '-'); +} + +// Helper: Extract last assistant message from transcript file +function extractPriorMessages(transcriptPath: string): { userMessage: string; assistantMessage: string } { + try { + if (!existsSync(transcriptPath)) { + return { userMessage: '', assistantMessage: '' }; + } + + const content = readFileSync(transcriptPath, 'utf-8').trim(); + if (!content) { + return { userMessage: '', assistantMessage: '' }; + } + + const lines = content.split('\n').filter(line => line.trim()); + let lastAssistantMessage = ''; + + for (let i = lines.length - 1; i >= 0; i--) { + try { + const line = lines[i]; + if (!line.includes('"type":"assistant"')) { + continue; + } + + const entry = JSON.parse(line); + if (entry.type === 'assistant' && entry.message?.content && Array.isArray(entry.message.content)) { + let text = ''; + for (const block of entry.message.content) { + if (block.type === 'text') { + text += block.text; + } + } + text = text.replace(/[\s\S]*?<\/system-reminder>/g, '').trim(); + if (text) { + lastAssistantMessage = text; + break; + } + } + } catch (parseError) { + continue; + } + } + + return { userMessage: '', assistantMessage: lastAssistantMessage }; + } catch (error) { + logger.failure('WORKER', `Failed to extract prior messages from transcript`, { transcriptPath }, error as Error); + return { userMessage: '', assistantMessage: '' }; + } +} + +/** + * Generate context for a project + */ +export async function generateContext(input?: ContextInput, useColors: boolean = false): Promise { + const config = loadContextConfig(); + const cwd = input?.cwd ?? process.cwd(); + const project = cwd ? path.basename(cwd) : 'unknown-project'; + + let db: SessionStore | null = null; + try { + db = new SessionStore(); + } catch (error: any) { + if (error.code === 'ERR_DLOPEN_FAILED') { + try { + unlinkSync(VERSION_MARKER_PATH); + } catch (unlinkError) { + // Marker might not exist + } + console.error('Native module rebuild needed - restart Claude Code to auto-fix'); + return ''; + } + throw error; + } + + // Build SQL WHERE clause for observation types + const typeArray = Array.from(config.observationTypes); + const typePlaceholders = typeArray.map(() => '?').join(','); + + // Build SQL WHERE clause for concepts + const conceptArray = Array.from(config.observationConcepts); + const conceptPlaceholders = conceptArray.map(() => '?').join(','); + + // Get recent observations + const observations = db.db.prepare(` + SELECT + id, sdk_session_id, type, title, subtitle, narrative, + facts, concepts, files_read, files_modified, discovery_tokens, + created_at, created_at_epoch + FROM observations + WHERE project = ? + AND type IN (${typePlaceholders}) + AND EXISTS ( + SELECT 1 FROM json_each(concepts) + WHERE value IN (${conceptPlaceholders}) + ) + ORDER BY created_at_epoch DESC + LIMIT ? + `).all(project, ...typeArray, ...conceptArray, config.totalObservationCount) as Observation[]; + + // Get recent summaries + const recentSummaries = db.db.prepare(` + SELECT id, sdk_session_id, request, investigated, learned, completed, next_steps, created_at, created_at_epoch + FROM session_summaries + WHERE project = ? + ORDER BY created_at_epoch DESC + LIMIT ? + `).all(project, config.sessionCount + SUMMARY_LOOKAHEAD) as SessionSummary[]; + + // Retrieve prior session messages if enabled + let priorUserMessage = ''; + let priorAssistantMessage = ''; + + if (config.showLastMessage && observations.length > 0) { + try { + const currentSessionId = input?.session_id; + const priorSessionObs = observations.find(obs => obs.sdk_session_id !== currentSessionId); + + if (priorSessionObs) { + const priorSessionId = priorSessionObs.sdk_session_id; + const dashedCwd = cwdToDashed(cwd); + const transcriptPath = path.join(homedir(), '.claude', 'projects', dashedCwd, `${priorSessionId}.jsonl`); + const messages = extractPriorMessages(transcriptPath); + priorUserMessage = messages.userMessage; + priorAssistantMessage = messages.assistantMessage; + } + } catch (error) { + // Ignore + } + } + + // If we have neither observations nor summaries, show empty state + if (observations.length === 0 && recentSummaries.length === 0) { + db?.close(); + if (useColors) { + return `\n${colors.bright}${colors.cyan}[${project}] recent context${colors.reset}\n${colors.gray}${'─'.repeat(60)}${colors.reset}\n\n${colors.dim}No previous sessions found for this project yet.${colors.reset}\n`; + } + return `# [${project}] recent context\n\nNo previous sessions found for this project yet.`; + } + + const displaySummaries = recentSummaries.slice(0, config.sessionCount); + const timelineObs = observations; + + // Build output + const output: string[] = []; + + // Header + if (useColors) { + output.push(''); + output.push(`${colors.bright}${colors.cyan}[${project}] recent context${colors.reset}`); + output.push(`${colors.gray}${'─'.repeat(60)}${colors.reset}`); + output.push(''); + } else { + output.push(`# [${project}] recent context`); + output.push(''); + } + + // Chronological Timeline + if (timelineObs.length > 0) { + // Legend + if (useColors) { + output.push(`${colors.dim}Legend: 🎯 session-request | 🔴 bugfix | 🟣 feature | 🔄 refactor | ✅ change | 🔵 discovery | ⚖️ decision${colors.reset}`); + } else { + output.push(`**Legend:** 🎯 session-request | 🔴 bugfix | 🟣 feature | 🔄 refactor | ✅ change | 🔵 discovery | ⚖️ decision`); + } + output.push(''); + + // Column Key + if (useColors) { + output.push(`${colors.bright}💡 Column Key${colors.reset}`); + output.push(`${colors.dim} Read: Tokens to read this observation (cost to learn it now)${colors.reset}`); + output.push(`${colors.dim} Work: Tokens spent on work that produced this record (🔍 research, 🛠️ building, ⚖️ deciding)${colors.reset}`); + } else { + output.push(`💡 **Column Key**:`); + output.push(`- **Read**: Tokens to read this observation (cost to learn it now)`); + output.push(`- **Work**: Tokens spent on work that produced this record (🔍 research, 🛠️ building, ⚖️ deciding)`); + } + output.push(''); + + // Context Index Instructions + if (useColors) { + output.push(`${colors.dim}💡 Context Index: This semantic index (titles, types, files, tokens) is usually sufficient to understand past work.${colors.reset}`); + output.push(''); + output.push(`${colors.dim}When you need implementation details, rationale, or debugging context:${colors.reset}`); + output.push(`${colors.dim} - Use the mem-search skill to fetch full observations on-demand${colors.reset}`); + output.push(`${colors.dim} - Critical types (🔴 bugfix, ⚖️ decision) often need detailed fetching${colors.reset}`); + output.push(`${colors.dim} - Trust this index over re-reading code for past decisions and learnings${colors.reset}`); + } else { + output.push(`💡 **Context Index:** This semantic index (titles, types, files, tokens) is usually sufficient to understand past work.`); + output.push(''); + output.push(`When you need implementation details, rationale, or debugging context:`); + output.push(`- Use the mem-search skill to fetch full observations on-demand`); + output.push(`- Critical types (🔴 bugfix, ⚖️ decision) often need detailed fetching`); + output.push(`- Trust this index over re-reading code for past decisions and learnings`); + } + output.push(''); + + // Context Economics + const totalObservations = observations.length; + const totalReadTokens = observations.reduce((sum, obs) => { + const obsSize = (obs.title?.length || 0) + + (obs.subtitle?.length || 0) + + (obs.narrative?.length || 0) + + JSON.stringify(obs.facts || []).length; + return sum + Math.ceil(obsSize / CHARS_PER_TOKEN_ESTIMATE); + }, 0); + const totalDiscoveryTokens = observations.reduce((sum, obs) => sum + (obs.discovery_tokens || 0), 0); + const savings = totalDiscoveryTokens - totalReadTokens; + const savingsPercent = totalDiscoveryTokens > 0 + ? Math.round((savings / totalDiscoveryTokens) * 100) + : 0; + + const showContextEconomics = config.showReadTokens || config.showWorkTokens || + config.showSavingsAmount || config.showSavingsPercent; + + if (showContextEconomics) { + if (useColors) { + output.push(`${colors.bright}${colors.cyan}📊 Context Economics${colors.reset}`); + output.push(`${colors.dim} Loading: ${totalObservations} observations (${totalReadTokens.toLocaleString()} tokens to read)${colors.reset}`); + output.push(`${colors.dim} Work investment: ${totalDiscoveryTokens.toLocaleString()} tokens spent on research, building, and decisions${colors.reset}`); + if (totalDiscoveryTokens > 0 && (config.showSavingsAmount || config.showSavingsPercent)) { + let savingsLine = ' Your savings: '; + if (config.showSavingsAmount && config.showSavingsPercent) { + savingsLine += `${savings.toLocaleString()} tokens (${savingsPercent}% reduction from reuse)`; + } else if (config.showSavingsAmount) { + savingsLine += `${savings.toLocaleString()} tokens`; + } else { + savingsLine += `${savingsPercent}% reduction from reuse`; + } + output.push(`${colors.green}${savingsLine}${colors.reset}`); + } + output.push(''); + } else { + output.push(`📊 **Context Economics**:`); + output.push(`- Loading: ${totalObservations} observations (${totalReadTokens.toLocaleString()} tokens to read)`); + output.push(`- Work investment: ${totalDiscoveryTokens.toLocaleString()} tokens spent on research, building, and decisions`); + if (totalDiscoveryTokens > 0 && (config.showSavingsAmount || config.showSavingsPercent)) { + let savingsLine = '- Your savings: '; + if (config.showSavingsAmount && config.showSavingsPercent) { + savingsLine += `${savings.toLocaleString()} tokens (${savingsPercent}% reduction from reuse)`; + } else if (config.showSavingsAmount) { + savingsLine += `${savings.toLocaleString()} tokens`; + } else { + savingsLine += `${savingsPercent}% reduction from reuse`; + } + output.push(savingsLine); + } + output.push(''); + } + } + + // Prepare summaries for timeline display + const mostRecentSummaryId = recentSummaries[0]?.id; + + interface SummaryTimelineItem extends SessionSummary { + displayEpoch: number; + displayTime: string; + shouldShowLink: boolean; + } + + const summariesForTimeline: SummaryTimelineItem[] = displaySummaries.map((summary, i) => { + const olderSummary = i === 0 ? null : recentSummaries[i + 1]; + return { + ...summary, + displayEpoch: olderSummary ? olderSummary.created_at_epoch : summary.created_at_epoch, + displayTime: olderSummary ? olderSummary.created_at : summary.created_at, + shouldShowLink: summary.id !== mostRecentSummaryId + }; + }); + + // Identify which observations should show full details + const fullObservationIds = new Set( + observations + .slice(0, config.fullObservationCount) + .map(obs => obs.id) + ); + + type TimelineItem = + | { type: 'observation'; data: Observation } + | { type: 'summary'; data: SummaryTimelineItem }; + + const timeline: TimelineItem[] = [ + ...timelineObs.map(obs => ({ type: 'observation' as const, data: obs })), + ...summariesForTimeline.map(summary => ({ type: 'summary' as const, data: summary })) + ]; + + // Sort chronologically + timeline.sort((a, b) => { + const aEpoch = a.type === 'observation' ? a.data.created_at_epoch : a.data.displayEpoch; + const bEpoch = b.type === 'observation' ? b.data.created_at_epoch : b.data.displayEpoch; + return aEpoch - bEpoch; + }); + + // Group by day + const itemsByDay = new Map(); + for (const item of timeline) { + const itemDate = item.type === 'observation' ? item.data.created_at : item.data.displayTime; + const day = formatDate(itemDate); + if (!itemsByDay.has(day)) { + itemsByDay.set(day, []); + } + itemsByDay.get(day)!.push(item); + } + + // Sort days chronologically + const sortedDays = Array.from(itemsByDay.entries()).sort((a, b) => { + const aDate = new Date(a[0]).getTime(); + const bDate = new Date(b[0]).getTime(); + return aDate - bDate; + }); + + // Render each day's timeline + for (const [day, dayItems] of sortedDays) { + if (useColors) { + output.push(`${colors.bright}${colors.cyan}${day}${colors.reset}`); + output.push(''); + } else { + output.push(`### ${day}`); + output.push(''); + } + + let currentFile: string | null = null; + let lastTime = ''; + let tableOpen = false; + + for (const item of dayItems) { + if (item.type === 'summary') { + if (tableOpen) { + output.push(''); + tableOpen = false; + currentFile = null; + lastTime = ''; + } + + const summary = item.data; + const summaryTitle = `${summary.request || 'Session started'} (${formatDateTime(summary.displayTime)})`; + const link = summary.shouldShowLink ? `claude-mem://session-summary/${summary.id}` : ''; + + if (useColors) { + const linkPart = link ? `${colors.dim}[${link}]${colors.reset}` : ''; + output.push(`🎯 ${colors.yellow}#S${summary.id}${colors.reset} ${summaryTitle} ${linkPart}`); + } else { + const linkPart = link ? ` [→](${link})` : ''; + output.push(`**🎯 #S${summary.id}** ${summaryTitle}${linkPart}`); + } + output.push(''); + } else { + const obs = item.data; + const files = parseJsonArray(obs.files_modified); + const file = (files.length > 0 && files[0]) ? toRelativePath(files[0], cwd) : 'General'; + + if (file !== currentFile) { + if (tableOpen) { + output.push(''); + } + + if (useColors) { + output.push(`${colors.dim}${file}${colors.reset}`); + } else { + output.push(`**${file}**`); + } + + if (!useColors) { + output.push(`| ID | Time | T | Title | Read | Work |`); + output.push(`|----|------|---|-------|------|------|`); + } + + currentFile = file; + tableOpen = true; + lastTime = ''; + } + + const time = formatTime(obs.created_at); + const title = obs.title || 'Untitled'; + const icon = TYPE_ICON_MAP[obs.type as keyof typeof TYPE_ICON_MAP] || '•'; + + const obsSize = (obs.title?.length || 0) + + (obs.subtitle?.length || 0) + + (obs.narrative?.length || 0) + + JSON.stringify(obs.facts || []).length; + const readTokens = Math.ceil(obsSize / CHARS_PER_TOKEN_ESTIMATE); + const discoveryTokens = obs.discovery_tokens || 0; + const workEmoji = TYPE_WORK_EMOJI_MAP[obs.type as keyof typeof TYPE_WORK_EMOJI_MAP] || '🔍'; + const discoveryDisplay = discoveryTokens > 0 ? `${workEmoji} ${discoveryTokens.toLocaleString()}` : '-'; + + const showTime = time !== lastTime; + const timeDisplay = showTime ? time : ''; + lastTime = time; + + const shouldShowFull = fullObservationIds.has(obs.id); + + if (shouldShowFull) { + const detailField = config.fullObservationField === 'narrative' + ? obs.narrative + : (obs.facts ? parseJsonArray(obs.facts).join('\n') : null); + + if (useColors) { + const timePart = showTime ? `${colors.dim}${time}${colors.reset}` : ' '.repeat(time.length); + const readPart = (config.showReadTokens && readTokens > 0) ? `${colors.dim}(~${readTokens}t)${colors.reset}` : ''; + const discoveryPart = (config.showWorkTokens && discoveryTokens > 0) ? `${colors.dim}(${workEmoji} ${discoveryTokens.toLocaleString()}t)${colors.reset}` : ''; + + output.push(` ${colors.dim}#${obs.id}${colors.reset} ${timePart} ${icon} ${colors.bright}${title}${colors.reset}`); + if (detailField) { + output.push(` ${colors.dim}${detailField}${colors.reset}`); + } + if (readPart || discoveryPart) { + output.push(` ${readPart} ${discoveryPart}`); + } + output.push(''); + } else { + if (tableOpen) { + output.push(''); + tableOpen = false; + } + + output.push(`**#${obs.id}** ${timeDisplay || '″'} ${icon} **${title}**`); + if (detailField) { + output.push(''); + output.push(detailField); + output.push(''); + } + const tokenParts: string[] = []; + if (config.showReadTokens) { + tokenParts.push(`Read: ~${readTokens}`); + } + if (config.showWorkTokens) { + tokenParts.push(`Work: ${discoveryDisplay}`); + } + if (tokenParts.length > 0) { + output.push(tokenParts.join(', ')); + } + output.push(''); + currentFile = null; + } + } else { + if (useColors) { + const timePart = showTime ? `${colors.dim}${time}${colors.reset}` : ' '.repeat(time.length); + const readPart = (config.showReadTokens && readTokens > 0) ? `${colors.dim}(~${readTokens}t)${colors.reset}` : ''; + const discoveryPart = (config.showWorkTokens && discoveryTokens > 0) ? `${colors.dim}(${workEmoji} ${discoveryTokens.toLocaleString()}t)${colors.reset}` : ''; + output.push(` ${colors.dim}#${obs.id}${colors.reset} ${timePart} ${icon} ${title} ${readPart} ${discoveryPart}`); + } else { + const readCol = config.showReadTokens ? `~${readTokens}` : ''; + const workCol = config.showWorkTokens ? discoveryDisplay : ''; + output.push(`| #${obs.id} | ${timeDisplay || '″'} | ${icon} | ${title} | ${readCol} | ${workCol} |`); + } + } + } + } + + if (tableOpen) { + output.push(''); + } + } + + // Add full summary details for most recent session + const mostRecentSummary = recentSummaries[0]; + const mostRecentObservation = observations[0]; + + const shouldShowSummary = config.showLastSummary && + mostRecentSummary && + (mostRecentSummary.investigated || mostRecentSummary.learned || mostRecentSummary.completed || mostRecentSummary.next_steps) && + (!mostRecentObservation || mostRecentSummary.created_at_epoch > mostRecentObservation.created_at_epoch); + + if (shouldShowSummary) { + output.push(...renderSummaryField('Investigated', mostRecentSummary.investigated, colors.blue, useColors)); + output.push(...renderSummaryField('Learned', mostRecentSummary.learned, colors.yellow, useColors)); + output.push(...renderSummaryField('Completed', mostRecentSummary.completed, colors.green, useColors)); + output.push(...renderSummaryField('Next Steps', mostRecentSummary.next_steps, colors.magenta, useColors)); + } + + // Previously section + if (priorAssistantMessage) { + output.push(''); + output.push('---'); + output.push(''); + if (useColors) { + output.push(`${colors.bright}${colors.magenta}📋 Previously${colors.reset}`); + output.push(''); + output.push(`${colors.dim}A: ${priorAssistantMessage}${colors.reset}`); + } else { + output.push(`**📋 Previously**`); + output.push(''); + output.push(`A: ${priorAssistantMessage}`); + } + output.push(''); + } + + // Footer + if (showContextEconomics && totalDiscoveryTokens > 0 && savings > 0) { + const workTokensK = Math.round(totalDiscoveryTokens / 1000); + output.push(''); + if (useColors) { + output.push(`${colors.dim}💰 Access ${workTokensK}k tokens of past research & decisions for just ${totalReadTokens.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.${colors.reset}`); + } else { + output.push(`💰 Access ${workTokensK}k tokens of past research & decisions for just ${totalReadTokens.toLocaleString()}t. Use the mem-search skill to access memories by ID instead of re-reading files.`); + } + } + } + + db?.close(); + return output.join('\n').trimEnd(); +} diff --git a/src/services/sqlite/Database.ts b/src/services/sqlite/Database.ts index 9d3a7d18..a3064f0f 100644 --- a/src/services/sqlite/Database.ts +++ b/src/services/sqlite/Database.ts @@ -1,9 +1,6 @@ -import { Database as BunDatabase } from 'bun:sqlite'; +import { Database } from 'better-sqlite3'; import { DATA_DIR, DB_PATH, ensureDir } from '../../shared/paths.js'; -// Type alias for better-sqlite3 compatibility -type Database = BunDatabase; - export interface Migration { version: number; up: (db: Database) => void; @@ -47,7 +44,7 @@ export class DatabaseManager { // Ensure the data directory exists ensureDir(DATA_DIR); - this.db = new BunDatabase(DB_PATH, { create: true, readwrite: true }); + this.db = new Database(DB_PATH, { create: true, readwrite: true }); // Apply optimized SQLite settings this.db.run('PRAGMA journal_mode = WAL'); @@ -171,4 +168,4 @@ export async function initializeDatabase(): Promise { return await manager.initialize(); } -export { BunDatabase as Database }; \ No newline at end of file +export { Database }; \ No newline at end of file diff --git a/src/services/sqlite/SessionSearch.ts b/src/services/sqlite/SessionSearch.ts index 1fd86bd9..2c39962f 100644 --- a/src/services/sqlite/SessionSearch.ts +++ b/src/services/sqlite/SessionSearch.ts @@ -1,4 +1,5 @@ import Database from 'better-sqlite3'; +import { TableNameRow } from '../../types/database.js'; import { DATA_DIR, DB_PATH, ensureDir } from '../../shared/paths.js'; import { ObservationSearchResult, @@ -48,8 +49,8 @@ export class SessionSearch { private ensureFTSTables(): void { try { // Check if FTS tables already exist - const tables = this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name LIKE '%_fts'").all() as any[]; - const hasFTS = tables.some((t: any) => t.name === 'observations_fts' || t.name === 'session_summaries_fts'); + const tables = this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name LIKE '%_fts'").all() as TableNameRow[]; + const hasFTS = tables.some(t => t.name === 'observations_fts' || t.name === 'session_summaries_fts'); if (hasFTS) { // Already migrated diff --git a/src/services/sqlite/SessionStore.ts b/src/services/sqlite/SessionStore.ts index 5c58e883..b46d017c 100644 --- a/src/services/sqlite/SessionStore.ts +++ b/src/services/sqlite/SessionStore.ts @@ -1,6 +1,17 @@ import Database from 'better-sqlite3'; import { DATA_DIR, DB_PATH, ensureDir } from '../../shared/paths.js'; import { logger } from '../../utils/logger.js'; +import { + TableColumnInfo, + IndexInfo, + TableNameRow, + SchemaVersion, + SdkSessionRecord, + ObservationRecord, + SessionSummaryRecord, + UserPromptRecord, + LatestPromptResult +} from '../../types/database.js'; /** * Session data store for SDK sessions, observations, and summaries @@ -47,7 +58,7 @@ export class SessionStore { `); // Get applied migrations - const appliedVersions = this.db.prepare('SELECT version FROM schema_versions ORDER BY version').all() as Array<{version: number}>; + const appliedVersions = this.db.prepare('SELECT version FROM schema_versions ORDER BY version').all() as SchemaVersion[]; const maxApplied = appliedVersions.length > 0 ? Math.max(...appliedVersions.map(v => v.version)) : 0; // Only run migration004 if no migrations have been applied @@ -131,12 +142,12 @@ export class SessionStore { private ensureWorkerPortColumn(): void { try { // Check if migration already applied - const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(5) as {version: number} | undefined; + const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(5) as SchemaVersion | undefined; if (applied) return; // Check if column exists - const tableInfo = this.db.pragma('table_info(sdk_sessions)'); - const hasWorkerPort = (tableInfo as any[]).some((col: any) => col.name === 'worker_port'); + const tableInfo = this.db.pragma('table_info(sdk_sessions)') as TableColumnInfo[]; + const hasWorkerPort = tableInfo.some(col => col.name === 'worker_port'); if (!hasWorkerPort) { this.db.exec('ALTER TABLE sdk_sessions ADD COLUMN worker_port INTEGER'); @@ -156,12 +167,12 @@ export class SessionStore { private ensurePromptTrackingColumns(): void { try { // Check if migration already applied - const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(6) as {version: number} | undefined; + const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(6) as SchemaVersion | undefined; if (applied) return; // Check sdk_sessions for prompt_counter - const sessionsInfo = this.db.pragma('table_info(sdk_sessions)'); - const hasPromptCounter = (sessionsInfo as any[]).some((col: any) => col.name === 'prompt_counter'); + const sessionsInfo = this.db.pragma('table_info(sdk_sessions)') as TableColumnInfo[]; + const hasPromptCounter = sessionsInfo.some(col => col.name === 'prompt_counter'); if (!hasPromptCounter) { this.db.exec('ALTER TABLE sdk_sessions ADD COLUMN prompt_counter INTEGER DEFAULT 0'); @@ -169,8 +180,8 @@ export class SessionStore { } // Check observations for prompt_number - const observationsInfo = this.db.pragma('table_info(observations)'); - const obsHasPromptNumber = (observationsInfo as any[]).some((col: any) => col.name === 'prompt_number'); + const observationsInfo = this.db.pragma('table_info(observations)') as TableColumnInfo[]; + const obsHasPromptNumber = observationsInfo.some(col => col.name === 'prompt_number'); if (!obsHasPromptNumber) { this.db.exec('ALTER TABLE observations ADD COLUMN prompt_number INTEGER'); @@ -178,8 +189,8 @@ export class SessionStore { } // Check session_summaries for prompt_number - const summariesInfo = this.db.pragma('table_info(session_summaries)'); - const sumHasPromptNumber = (summariesInfo as any[]).some((col: any) => col.name === 'prompt_number'); + const summariesInfo = this.db.pragma('table_info(session_summaries)') as TableColumnInfo[]; + const sumHasPromptNumber = summariesInfo.some(col => col.name === 'prompt_number'); if (!sumHasPromptNumber) { this.db.exec('ALTER TABLE session_summaries ADD COLUMN prompt_number INTEGER'); @@ -199,12 +210,12 @@ export class SessionStore { private removeSessionSummariesUniqueConstraint(): void { try { // Check if migration already applied - const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(7) as {version: number} | undefined; + const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(7) as SchemaVersion | undefined; if (applied) return; // Check if UNIQUE constraint exists - const summariesIndexes = this.db.pragma('index_list(session_summaries)'); - const hasUniqueConstraint = (summariesIndexes as any[]).some((idx: any) => idx.unique === 1); + const summariesIndexes = this.db.pragma('index_list(session_summaries)') as IndexInfo[]; + const hasUniqueConstraint = summariesIndexes.some(idx => idx.unique === 1); if (!hasUniqueConstraint) { // Already migrated (no constraint exists) @@ -284,12 +295,12 @@ export class SessionStore { private addObservationHierarchicalFields(): void { try { // Check if migration already applied - const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(8) as {version: number} | undefined; + const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(8) as SchemaVersion | undefined; if (applied) return; // Check if new fields already exist - const tableInfo = this.db.pragma('table_info(observations)'); - const hasTitle = (tableInfo as any[]).some((col: any) => col.name === 'title'); + const tableInfo = this.db.pragma('table_info(observations)') as TableColumnInfo[]; + const hasTitle = tableInfo.some(col => col.name === 'title'); if (hasTitle) { // Already migrated @@ -326,12 +337,12 @@ export class SessionStore { private makeObservationsTextNullable(): void { try { // Check if migration already applied - const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(9) as {version: number} | undefined; + const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(9) as SchemaVersion | undefined; if (applied) return; // Check if text column is already nullable - const tableInfo = this.db.pragma('table_info(observations)'); - const textColumn = (tableInfo as any[]).find((col: any) => col.name === 'text'); + const tableInfo = this.db.pragma('table_info(observations)') as TableColumnInfo[]; + const textColumn = tableInfo.find(col => col.name === 'text'); if (!textColumn || textColumn.notnull === 0) { // Already migrated or text column doesn't exist @@ -413,12 +424,12 @@ export class SessionStore { private createUserPromptsTable(): void { try { // Check if migration already applied - const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(10) as {version: number} | undefined; + const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(10) as SchemaVersion | undefined; if (applied) return; // Check if table already exists - const tableInfo = this.db.pragma('table_info(user_prompts)'); - if ((tableInfo as any[]).length > 0) { + const tableInfo = this.db.pragma('table_info(user_prompts)') as TableColumnInfo[]; + if (tableInfo.length > 0) { // Already migrated this.db.prepare('INSERT OR IGNORE INTO schema_versions (version, applied_at) VALUES (?, ?)').run(10, new Date().toISOString()); return; @@ -502,12 +513,12 @@ export class SessionStore { private ensureDiscoveryTokensColumn(): void { try { // Check if migration already applied to avoid unnecessary re-runs - const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(11) as {version: number} | undefined; + const applied = this.db.prepare('SELECT version FROM schema_versions WHERE version = ?').get(11) as SchemaVersion | undefined; if (applied) return; // Check if discovery_tokens column exists in observations table - const observationsInfo = this.db.pragma('table_info(observations)'); - const obsHasDiscoveryTokens = (observationsInfo as any[]).some((col: any) => col.name === 'discovery_tokens'); + const observationsInfo = this.db.pragma('table_info(observations)') as TableColumnInfo[]; + const obsHasDiscoveryTokens = observationsInfo.some(col => col.name === 'discovery_tokens'); if (!obsHasDiscoveryTokens) { this.db.exec('ALTER TABLE observations ADD COLUMN discovery_tokens INTEGER DEFAULT 0'); @@ -515,8 +526,8 @@ export class SessionStore { } // Check if discovery_tokens column exists in session_summaries table - const summariesInfo = this.db.pragma('table_info(session_summaries)'); - const sumHasDiscoveryTokens = (summariesInfo as any[]).some((col: any) => col.name === 'discovery_tokens'); + const summariesInfo = this.db.pragma('table_info(session_summaries)') as TableColumnInfo[]; + const sumHasDiscoveryTokens = summariesInfo.some(col => col.name === 'discovery_tokens'); if (!sumHasDiscoveryTokens) { this.db.exec('ALTER TABLE session_summaries ADD COLUMN discovery_tokens INTEGER DEFAULT 0'); @@ -556,7 +567,7 @@ export class SessionStore { LIMIT ? `); - return stmt.all(project, limit) as any[]; + return stmt.all(project, limit); } /** @@ -581,7 +592,7 @@ export class SessionStore { LIMIT ? `); - return stmt.all(project, limit) as any[]; + return stmt.all(project, limit); } /** @@ -601,7 +612,7 @@ export class SessionStore { LIMIT ? `); - return stmt.all(project, limit) as any[]; + return stmt.all(project, limit); } /** @@ -625,7 +636,7 @@ export class SessionStore { LIMIT ? `); - return stmt.all(limit) as any[]; + return stmt.all(limit); } /** @@ -655,7 +666,7 @@ export class SessionStore { LIMIT ? `); - return stmt.all(limit) as any[]; + return stmt.all(limit); } /** @@ -685,7 +696,7 @@ export class SessionStore { LIMIT ? `); - return stmt.all(limit) as any[]; + return stmt.all(limit); } /** @@ -703,6 +714,34 @@ export class SessionStore { return rows.map(row => row.project); } + /** + * Get latest user prompt with session info for a Claude session + * Used for syncing prompts to Chroma during session initialization + */ + getLatestUserPrompt(claudeSessionId: string): { + id: number; + claude_session_id: string; + sdk_session_id: string; + project: string; + prompt_number: number; + prompt_text: string; + created_at_epoch: number; + } | undefined { + const stmt = this.db.prepare(` + SELECT + up.*, + s.sdk_session_id, + s.project + FROM user_prompts up + JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id + WHERE up.claude_session_id = ? + ORDER BY up.created_at_epoch DESC + LIMIT 1 + `); + + return stmt.get(claudeSessionId) as LatestPromptResult | undefined; + } + /** * Get recent sessions with their status and summary info */ @@ -732,7 +771,7 @@ export class SessionStore { ORDER BY started_at_epoch ASC `); - return stmt.all(project, limit) as any[]; + return stmt.all(project, limit); } /** @@ -751,20 +790,20 @@ export class SessionStore { ORDER BY created_at_epoch ASC `); - return stmt.all(sdkSessionId) as any[]; + return stmt.all(sdkSessionId); } /** * Get a single observation by ID */ - getObservationById(id: number): any | null { + getObservationById(id: number): ObservationRecord | null { const stmt = this.db.prepare(` SELECT * FROM observations WHERE id = ? `); - return stmt.get(id) as any || null; + return stmt.get(id) as ObservationRecord | undefined || null; } /** @@ -773,7 +812,7 @@ export class SessionStore { getObservationsByIds( ids: number[], options: { orderBy?: 'date_desc' | 'date_asc'; limit?: number } = {} - ): any[] { + ): ObservationRecord[] { if (ids.length === 0) return []; const { orderBy = 'date_desc', limit } = options; @@ -791,7 +830,7 @@ export class SessionStore { ${limitClause} `); - return stmt.all(...ids) as any[]; + return stmt.all(...ids) as ObservationRecord[]; } /** @@ -819,7 +858,7 @@ export class SessionStore { LIMIT 1 `); - return stmt.get(sdkSessionId) as any || null; + return stmt.get(sdkSessionId) || null; } /** @@ -892,7 +931,7 @@ export class SessionStore { LIMIT 1 `); - return stmt.get(id) as any || null; + return stmt.get(id) || null; } /** @@ -911,7 +950,7 @@ export class SessionStore { LIMIT 1 `); - return stmt.get(claudeSessionId) as any || null; + return stmt.get(claudeSessionId) || null; } /** @@ -925,7 +964,7 @@ export class SessionStore { LIMIT 1 `); - return stmt.get(claudeSessionId) as any || null; + return stmt.get(claudeSessionId) || null; } /** @@ -1315,7 +1354,7 @@ export class SessionStore { getSessionSummariesByIds( ids: number[], options: { orderBy?: 'date_desc' | 'date_asc'; limit?: number } = {} - ): any[] { + ): SessionSummaryRecord[] { if (ids.length === 0) return []; const { orderBy = 'date_desc', limit } = options; @@ -1330,7 +1369,7 @@ export class SessionStore { ${limitClause} `); - return stmt.all(...ids) as any[]; + return stmt.all(...ids) as SessionSummaryRecord[]; } /** @@ -1340,7 +1379,7 @@ export class SessionStore { getUserPromptsByIds( ids: number[], options: { orderBy?: 'date_desc' | 'date_asc'; limit?: number } = {} - ): any[] { + ): UserPromptRecord[] { if (ids.length === 0) return []; const { orderBy = 'date_desc', limit } = options; @@ -1360,7 +1399,7 @@ export class SessionStore { ${limitClause} `); - return stmt.all(...ids) as any[]; + return stmt.all(...ids) as UserPromptRecord[]; } /** @@ -1423,8 +1462,8 @@ export class SessionStore { `; try { - const beforeRecords = this.db.prepare(beforeQuery).all(anchorObservationId, ...projectParams, depthBefore + 1) as any[]; - const afterRecords = this.db.prepare(afterQuery).all(anchorObservationId, ...projectParams, depthAfter + 1) as any[]; + const beforeRecords = this.db.prepare(beforeQuery).all(anchorObservationId, ...projectParams, depthBefore + 1) as Array<{id: number; created_at_epoch: number}>; + const afterRecords = this.db.prepare(afterQuery).all(anchorObservationId, ...projectParams, depthAfter + 1) as Array<{id: number; created_at_epoch: number}>; // Get the earliest and latest timestamps from boundary observations if (beforeRecords.length === 0 && afterRecords.length === 0) { @@ -1456,8 +1495,8 @@ export class SessionStore { `; try { - const beforeRecords = this.db.prepare(beforeQuery).all(anchorEpoch, ...projectParams, depthBefore) as any[]; - const afterRecords = this.db.prepare(afterQuery).all(anchorEpoch, ...projectParams, depthAfter + 1) as any[]; + const beforeRecords = this.db.prepare(beforeQuery).all(anchorEpoch, ...projectParams, depthBefore) as Array<{created_at_epoch: number}>; + const afterRecords = this.db.prepare(afterQuery).all(anchorEpoch, ...projectParams, depthAfter + 1) as Array<{created_at_epoch: number}>; if (beforeRecords.length === 0 && afterRecords.length === 0) { return { observations: [], sessions: [], prompts: [] }; @@ -1495,9 +1534,9 @@ export class SessionStore { `; try { - const observations = this.db.prepare(obsQuery).all(startEpoch, endEpoch, ...projectParams) as any[]; - const sessions = this.db.prepare(sessQuery).all(startEpoch, endEpoch, ...projectParams) as any[]; - const prompts = this.db.prepare(promptQuery).all(startEpoch, endEpoch, ...projectParams) as any[]; + const observations = this.db.prepare(obsQuery).all(startEpoch, endEpoch, ...projectParams) as ObservationRecord[]; + const sessions = this.db.prepare(sessQuery).all(startEpoch, endEpoch, ...projectParams) as SessionSummaryRecord[]; + const prompts = this.db.prepare(promptQuery).all(startEpoch, endEpoch, ...projectParams) as UserPromptRecord[]; return { observations, diff --git a/src/services/sqlite/migrations.ts b/src/services/sqlite/migrations.ts index 7101b4a2..b8459d34 100644 --- a/src/services/sqlite/migrations.ts +++ b/src/services/sqlite/migrations.ts @@ -1,4 +1,4 @@ -import { Database } from 'bun:sqlite'; +import { Database } from 'better-sqlite3'; import { Migration } from './Database.js'; /** diff --git a/src/services/sync/ChromaSync.ts b/src/services/sync/ChromaSync.ts index c1e4b876..a1cec082 100644 --- a/src/services/sync/ChromaSync.ts +++ b/src/services/sync/ChromaSync.ts @@ -733,6 +733,79 @@ export class ChromaSync { } } + /** + * Query Chroma collection for semantic search + * Used by SearchManager for vector-based search + */ + async queryChroma( + query: string, + limit: number, + whereFilter?: Record + ): Promise<{ ids: number[]; distances: number[]; metadatas: any[] }> { + await this.ensureConnection(); + + if (!this.client) { + throw new Error('Chroma client not initialized'); + } + + const whereStringified = whereFilter ? JSON.stringify(whereFilter) : undefined; + + const arguments_obj = { + collection_name: this.collectionName, + query_texts: [query], + n_results: limit, + include: ['documents', 'metadatas', 'distances'], + where: whereStringified + }; + + const result = await this.client.callTool({ + name: 'chroma_query_documents', + arguments: arguments_obj + }); + + const resultText = result.content[0]?.text || ''; + + // Parse JSON response + let parsed: any; + try { + parsed = JSON.parse(resultText); + } catch (error) { + logger.error('CHROMA_SYNC', 'Failed to parse Chroma response', { project: this.project }, error as Error); + return { ids: [], distances: [], metadatas: [] }; + } + + // Extract unique IDs from document IDs + const ids: number[] = []; + const docIds = parsed.ids?.[0] || []; + for (const docId of docIds) { + // Extract sqlite_id from document ID (supports three formats): + // - obs_{id}_narrative, obs_{id}_fact_0, etc (observations) + // - summary_{id}_request, summary_{id}_learned, etc (session summaries) + // - prompt_{id} (user prompts) + const obsMatch = docId.match(/obs_(\d+)_/); + const summaryMatch = docId.match(/summary_(\d+)_/); + const promptMatch = docId.match(/prompt_(\d+)/); + + let sqliteId: number | null = null; + if (obsMatch) { + sqliteId = parseInt(obsMatch[1], 10); + } else if (summaryMatch) { + sqliteId = parseInt(summaryMatch[1], 10); + } else if (promptMatch) { + sqliteId = parseInt(promptMatch[1], 10); + } + + if (sqliteId !== null && !ids.includes(sqliteId)) { + ids.push(sqliteId); + } + } + + const distances = parsed.distances?.[0] || []; + const metadatas = parsed.metadatas?.[0] || []; + + return { ids, distances, metadatas }; + } + /** * Close the Chroma client connection */ diff --git a/src/services/worker-service.ts b/src/services/worker-service.ts index 8cc0557f..8804744f 100644 --- a/src/services/worker-service.ts +++ b/src/services/worker-service.ts @@ -1,41 +1,38 @@ /** - * Worker Service v2: Clean Object-Oriented Architecture + * Worker Service - Slim Orchestrator * - * This is a complete rewrite following the architecture document. - * Key improvements: - * - Single database connection (no open/close churn) - * - Event-driven queues (zero polling) - * - DRY utilities for pagination and settings - * - Clean separation of concerns - * - ~600-700 lines (down from 1173) + * Refactored from 2000-line monolith to ~150-line orchestrator. + * Routes organized by domain in http/routes/*.ts + * See src/services/worker/README.md for architecture details. */ -import express, { Request, Response } from 'express'; -import cors from 'cors'; +import express from 'express'; import http from 'http'; import path from 'path'; -import { readFileSync, writeFileSync, statSync, existsSync, renameSync } from 'fs'; -import { homedir } from 'os'; -import { getPackageRoot } from '../shared/paths.js'; -import { getWorkerPort } from '../shared/worker-utils.js'; -import { logger } from '../utils/logger.js'; import { Client } from '@modelcontextprotocol/sdk/client/index.js'; import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'; +import { getWorkerPort } from '../shared/worker-utils.js'; +import { logger } from '../utils/logger.js'; -// Import composed services +// Import composed domain services import { DatabaseManager } from './worker/DatabaseManager.js'; import { SessionManager } from './worker/SessionManager.js'; import { SSEBroadcaster } from './worker/SSEBroadcaster.js'; import { SDKAgent } from './worker/SDKAgent.js'; import { PaginationHelper } from './worker/PaginationHelper.js'; import { SettingsManager } from './worker/SettingsManager.js'; -import { getBranchInfo, switchBranch, pullUpdates, type BranchInfo, type SwitchResult } from './worker/BranchManager.js'; -import { - OBSERVATION_TYPES, - OBSERVATION_CONCEPTS, - DEFAULT_OBSERVATION_TYPES_STRING, - DEFAULT_OBSERVATION_CONCEPTS_STRING -} from '../constants/observation-metadata.js'; +import { SearchManager } from './worker/SearchManager.js'; +import { FormattingService } from './worker/FormattingService.js'; +import { TimelineService } from './worker/TimelineService.js'; +import { SessionEventBroadcaster } from './worker/events/SessionEventBroadcaster.js'; + +// Import HTTP layer +import { createMiddleware, summarizeRequestBody as summarizeBody } from './worker/http/middleware.js'; +import { ViewerRoutes } from './worker/http/routes/ViewerRoutes.js'; +import { SessionRoutes } from './worker/http/routes/SessionRoutes.js'; +import { DataRoutes } from './worker/http/routes/DataRoutes.js'; +import { SearchRoutes } from './worker/http/routes/SearchRoutes.js'; +import { SettingsRoutes } from './worker/http/routes/SettingsRoutes.js'; export class WorkerService { private app: express.Application; @@ -43,35 +40,53 @@ export class WorkerService { private startTime: number = Date.now(); private mcpClient: Client; - // Composed services + // Domain services private dbManager: DatabaseManager; private sessionManager: SessionManager; private sseBroadcaster: SSEBroadcaster; private sdkAgent: SDKAgent; private paginationHelper: PaginationHelper; private settingsManager: SettingsManager; + private sessionEventBroadcaster: SessionEventBroadcaster; + + // Route handlers + private viewerRoutes: ViewerRoutes; + private sessionRoutes: SessionRoutes; + private dataRoutes: DataRoutes; + private searchRoutes: SearchRoutes | null; + private settingsRoutes: SettingsRoutes; constructor() { this.app = express(); - // Initialize services (dependency injection) + // Initialize domain services this.dbManager = new DatabaseManager(); this.sessionManager = new SessionManager(this.dbManager); this.sseBroadcaster = new SSEBroadcaster(); this.sdkAgent = new SDKAgent(this.dbManager, this.sessionManager); this.paginationHelper = new PaginationHelper(this.dbManager); this.settingsManager = new SettingsManager(this.dbManager); + this.sessionEventBroadcaster = new SessionEventBroadcaster(this.sseBroadcaster, this); // Set callback for when sessions are deleted (to update activity indicator) this.sessionManager.setOnSessionDeleted(() => { this.broadcastProcessingStatus(); }); + // Initialize MCP client this.mcpClient = new Client({ name: 'worker-search-proxy', version: '1.0.0' }, { capabilities: {} }); + // Initialize route handlers (SearchRoutes will use MCP client initially, then switch to SearchManager after DB init) + this.viewerRoutes = new ViewerRoutes(this.sseBroadcaster, this.dbManager, this.sessionManager); + this.sessionRoutes = new SessionRoutes(this.sessionManager, this.dbManager, this.sdkAgent, this.sessionEventBroadcaster, this); + this.dataRoutes = new DataRoutes(this.paginationHelper, this.dbManager, this.sessionManager, this.sseBroadcaster, this, this.startTime); + // SearchRoutes needs SearchManager which requires initialized DB - will be created in initializeBackground() + this.searchRoutes = null; + this.settingsRoutes = new SettingsRoutes(this.settingsManager); + this.setupMiddleware(); this.setupRoutes(); } @@ -80,188 +95,32 @@ export class WorkerService { * Setup Express middleware */ private setupMiddleware(): void { - this.app.use(express.json({ limit: '50mb' })); - this.app.use(cors()); - - // HTTP request/response logging middleware - this.app.use((req, res, next) => { - // Skip logging for static assets and health checks - if (req.path.startsWith('/health') || req.path === '/' || req.path.includes('.')) { - return next(); - } - - const start = Date.now(); - const requestId = `${req.method}-${Date.now()}`; - - // Log incoming request with body summary - const bodySummary = this.summarizeRequestBody(req.method, req.path, req.body); - logger.info('HTTP', `→ ${req.method} ${req.path}`, { requestId }, bodySummary); - - // Capture response - const originalSend = res.send.bind(res); - res.send = function(body: any) { - const duration = Date.now() - start; - logger.info('HTTP', `← ${res.statusCode} ${req.path}`, { requestId, duration: `${duration}ms` }); - return originalSend(body); - }; - - next(); - }); - - // Serve static files for web UI (viewer-bundle.js, logos, fonts, etc.) - const packageRoot = getPackageRoot(); - const uiDir = path.join(packageRoot, 'plugin', 'ui'); - this.app.use(express.static(uiDir)); + const middlewares = createMiddleware(this.summarizeRequestBody.bind(this)); + middlewares.forEach(mw => this.app.use(mw)); } /** - * Summarize request body for logging - */ - private summarizeRequestBody(method: string, path: string, body: any): string { - if (!body || Object.keys(body).length === 0) return ''; - - // Session init - if (path.includes('/init')) { - return ''; - } - - // Observations - if (path.includes('/observations')) { - const toolName = body.tool_name || '?'; - const toolInput = body.tool_input; - const toolSummary = logger.formatTool(toolName, toolInput); - return `tool=${toolSummary}`; - } - - // Summarize request - if (path.includes('/summarize')) { - return 'requesting summary'; - } - - return ''; - } - - /** - * Setup HTTP routes + * Setup HTTP routes (delegate to route classes) */ private setupRoutes(): void { - // Health & Viewer - this.app.get('/health', this.handleHealth.bind(this)); - this.app.get('/', this.handleViewerUI.bind(this)); - this.app.get('/stream', this.handleSSEStream.bind(this)); + // Health check endpoint + this.app.get('/api/health', (_req, res) => { + res.status(200).json({ status: 'ok' }); + }); - // Session endpoints - this.app.post('/sessions/:sessionDbId/init', this.handleSessionInit.bind(this)); - this.app.post('/sessions/:sessionDbId/observations', this.handleObservations.bind(this)); - this.app.post('/sessions/:sessionDbId/summarize', this.handleSummarize.bind(this)); - this.app.get('/sessions/:sessionDbId/status', this.handleSessionStatus.bind(this)); - this.app.delete('/sessions/:sessionDbId', this.handleSessionDelete.bind(this)); - this.app.post('/sessions/:sessionDbId/complete', this.handleSessionComplete.bind(this)); - - // Data retrieval - this.app.get('/api/observations', this.handleGetObservations.bind(this)); - this.app.get('/api/summaries', this.handleGetSummaries.bind(this)); - this.app.get('/api/prompts', this.handleGetPrompts.bind(this)); - - // Fetch by ID - this.app.get('/api/observation/:id', this.handleGetObservationById.bind(this)); - this.app.get('/api/session/:id', this.handleGetSessionById.bind(this)); - this.app.get('/api/prompt/:id', this.handleGetPromptById.bind(this)); - - this.app.get('/api/stats', this.handleGetStats.bind(this)); - this.app.get('/api/projects', this.handleGetProjects.bind(this)); - this.app.get('/api/processing-status', this.handleGetProcessingStatus.bind(this)); - this.app.post('/api/processing', this.handleSetProcessing.bind(this)); - - // Settings - this.app.get('/api/settings', this.handleGetSettings.bind(this)); - this.app.post('/api/settings', this.handleUpdateSettings.bind(this)); - - // MCP toggle - this.app.get('/api/mcp/status', this.handleGetMcpStatus.bind(this)); - this.app.post('/api/mcp/toggle', this.handleToggleMcp.bind(this)); - - // Branch switching (beta toggle) - this.app.get('/api/branch/status', this.handleGetBranchStatus.bind(this)); - this.app.post('/api/branch/switch', this.handleSwitchBranch.bind(this)); - this.app.post('/api/branch/update', this.handleUpdateBranch.bind(this)); - - // Search API endpoints (for skill-based search) - // Unified endpoints (new consolidated API) - this.app.get('/api/search', this.handleUnifiedSearch.bind(this)); - this.app.get('/api/timeline', this.handleUnifiedTimeline.bind(this)); - this.app.get('/api/decisions', this.handleDecisions.bind(this)); - this.app.get('/api/changes', this.handleChanges.bind(this)); - this.app.get('/api/how-it-works', this.handleHowItWorks.bind(this)); - - // Backward compatibility endpoints (use /api/search with type param instead) - this.app.get('/api/search/observations', this.handleSearchObservations.bind(this)); - this.app.get('/api/search/sessions', this.handleSearchSessions.bind(this)); - this.app.get('/api/search/prompts', this.handleSearchPrompts.bind(this)); - this.app.get('/api/search/by-concept', this.handleSearchByConcept.bind(this)); - this.app.get('/api/search/by-file', this.handleSearchByFile.bind(this)); - this.app.get('/api/search/by-type', this.handleSearchByType.bind(this)); - this.app.get('/api/context/recent', this.handleGetRecentContext.bind(this)); - this.app.get('/api/context/timeline', this.handleGetContextTimeline.bind(this)); - this.app.get('/api/context/preview', this.handleContextPreview.bind(this)); - this.app.get('/api/timeline/by-query', this.handleGetTimelineByQuery.bind(this)); - this.app.get('/api/search/help', this.handleSearchHelp.bind(this)); + this.viewerRoutes.setupRoutes(this.app); + this.sessionRoutes.setupRoutes(this.app); + this.dataRoutes.setupRoutes(this.app); + // searchRoutes is set up after database initialization in initializeBackground() + this.settingsRoutes.setupRoutes(this.app); } - /** - * Cleanup orphaned MCP server processes (uvx/chroma) from previous sessions - */ - private async cleanupOrphanedProcesses(): Promise { - try { - const { execSync } = await import('child_process'); - - // Find orphaned uvx processes (which spawn chroma servers) - try { - const processes = execSync('pgrep -fl uvx', { encoding: 'utf-8', stdio: 'pipe', windowsHide: true }).trim(); - if (processes) { - const processCount = processes.split('\n').length; - logger.info('WORKER', 'Cleaning up orphaned MCP processes', { count: processCount }); - - // Kill the processes - execSync('pkill -f uvx', { stdio: 'pipe', windowsHide: true }); - logger.success('WORKER', `Cleaned up ${processCount} orphaned MCP server processes`); - } - } catch (error: any) { - // pgrep returns exit code 1 if no processes found (not an error) - if (error.status === 1) { - logger.debug('WORKER', 'No orphaned MCP processes to clean up'); - } else { - throw error; - } - } - } catch (error) { - // Don't fail startup if cleanup fails - logger.warn('WORKER', 'Failed to cleanup orphaned processes (non-fatal)', {}, error as Error); - } - } /** * Start the worker service */ async start(): Promise { - // Cleanup orphaned processes from previous sessions - await this.cleanupOrphanedProcesses(); - - // Initialize database (once, stays open) - await this.dbManager.initialize(); - - // Connect to MCP search server - const searchServerPath = path.join(__dirname, '..', '..', 'plugin', 'scripts', 'search-server.cjs'); - const transport = new StdioClientTransport({ - command: 'node', - args: [searchServerPath], - env: process.env - }); - - await this.mcpClient.connect(transport); - logger.success('WORKER', 'Connected to MCP search server'); - - // Start HTTP server + // Start HTTP server FIRST - make port available immediately const port = getWorkerPort(); this.server = await new Promise((resolve, reject) => { const srv = this.app.listen(port, () => resolve(srv)); @@ -269,6 +128,44 @@ export class WorkerService { }); logger.info('SYSTEM', 'Worker started', { port, pid: process.pid }); + + // Do slow initialization in background (non-blocking) + this.initializeBackground().catch((error) => { + logger.error('SYSTEM', 'Background initialization failed', {}, error as Error); + }); + } + + /** + * Background initialization - runs after HTTP server is listening + */ + private async initializeBackground(): Promise { + // Initialize database (once, stays open) + await this.dbManager.initialize(); + + // Initialize search services (requires initialized database) + const formattingService = new FormattingService(); + const timelineService = new TimelineService(); + const searchManager = new SearchManager( + this.dbManager.getSessionSearch(), + this.dbManager.getSessionStore(), + this.dbManager.getChromaSync(), + formattingService, + timelineService + ); + this.searchRoutes = new SearchRoutes(searchManager); + this.searchRoutes.setupRoutes(this.app); // Setup search routes now that SearchManager is ready + logger.info('WORKER', 'SearchManager initialized and search routes registered'); + + // Connect to MCP server + const mcpServerPath = path.join(__dirname, '..', '..', 'plugin', 'scripts', 'mcp-server.cjs'); + const transport = new StdioClientTransport({ + command: 'node', + args: [mcpServerPath], + env: process.env + }); + + await this.mcpClient.connect(transport); + logger.success('WORKER', 'Connected to MCP server'); } /** @@ -278,7 +175,7 @@ export class WorkerService { // Shutdown all active sessions await this.sessionManager.shutdownAll(); - // Close MCP client connection (terminates search server process) + // Close MCP client connection (terminates MCP server process) if (this.mcpClient) { try { await this.mcpClient.close(); @@ -301,780 +198,19 @@ export class WorkerService { logger.info('SYSTEM', 'Worker shutdown complete'); } - // ============================================================================ - // Route Handlers - // ============================================================================ - /** - * Health check endpoint + * Summarize request body for logging + * Used to avoid logging sensitive data or large payloads */ - private handleHealth(req: Request, res: Response): void { - res.json({ status: 'ok', timestamp: Date.now() }); + private summarizeRequestBody(method: string, path: string, body: any): string { + return summarizeBody(method, path, body); } - /** - * Serve viewer UI - */ - private handleViewerUI(req: Request, res: Response): void { - try { - const packageRoot = getPackageRoot(); - const viewerPath = path.join(packageRoot, 'plugin', 'ui', 'viewer.html'); - const html = readFileSync(viewerPath, 'utf-8'); - res.setHeader('Content-Type', 'text/html'); - res.send(html); - } catch (error) { - logger.failure('WORKER', 'Viewer UI error', {}, error as Error); - res.status(500).json({ error: 'Failed to load viewer UI' }); - } - } - - /** - * SSE stream endpoint - */ - private handleSSEStream(req: Request, res: Response): void { - // Setup SSE headers - res.setHeader('Content-Type', 'text/event-stream'); - res.setHeader('Cache-Control', 'no-cache'); - res.setHeader('Connection', 'keep-alive'); - - // Add client to broadcaster - this.sseBroadcaster.addClient(res); - - // Send initial_load event with projects list - const allProjects = this.dbManager.getSessionStore().getAllProjects(); - this.sseBroadcaster.broadcast({ - type: 'initial_load', - projects: allProjects, - timestamp: Date.now() - }); - - // Send initial processing status (based on queue depth + active generators) - const isProcessing = this.sessionManager.isAnySessionProcessing(); - const queueDepth = this.sessionManager.getTotalActiveWork(); // Includes queued + actively processing - this.sseBroadcaster.broadcast({ - type: 'processing_status', - isProcessing, - queueDepth - }); - } - - /** - * Initialize a new session - */ - private handleSessionInit(req: Request, res: Response): void { - try { - const sessionDbId = parseInt(req.params.sessionDbId, 10); - const { userPrompt, promptNumber } = req.body; - const session = this.sessionManager.initializeSession(sessionDbId, userPrompt, promptNumber); - - // Get the latest user_prompt for this session to sync to Chroma - const db = this.dbManager.getSessionStore().db; - const latestPrompt = db.prepare(` - SELECT - up.*, - s.sdk_session_id, - s.project - FROM user_prompts up - JOIN sdk_sessions s ON up.claude_session_id = s.claude_session_id - WHERE up.claude_session_id = ? - ORDER BY up.created_at_epoch DESC - LIMIT 1 - `).get(session.claudeSessionId) as any; - - // Broadcast new prompt to SSE clients (for web UI) - if (latestPrompt) { - this.sseBroadcaster.broadcast({ - type: 'new_prompt', - prompt: { - id: latestPrompt.id, - claude_session_id: latestPrompt.claude_session_id, - project: latestPrompt.project, - prompt_number: latestPrompt.prompt_number, - prompt_text: latestPrompt.prompt_text, - created_at_epoch: latestPrompt.created_at_epoch - } - }); - - // Start activity indicator immediately when prompt arrives (work is about to begin) - this.sseBroadcaster.broadcast({ - type: 'processing_status', - isProcessing: true - }); - - // Sync user prompt to Chroma with error logging - const chromaStart = Date.now(); - const promptText = latestPrompt.prompt_text; - this.dbManager.getChromaSync().syncUserPrompt( - latestPrompt.id, - latestPrompt.sdk_session_id, - latestPrompt.project, - promptText, - latestPrompt.prompt_number, - latestPrompt.created_at_epoch - ).then(() => { - const chromaDuration = Date.now() - chromaStart; - const truncatedPrompt = promptText.length > 60 - ? promptText.substring(0, 60) + '...' - : promptText; - logger.debug('CHROMA', 'User prompt synced', { - promptId: latestPrompt.id, - duration: `${chromaDuration}ms`, - prompt: truncatedPrompt - }); - }).catch(err => { - logger.error('CHROMA', 'Failed to sync user_prompt', { - promptId: latestPrompt.id, - sessionId: sessionDbId - }, err); - }); - } - - // Broadcast processing status (based on queue depth) - this.broadcastProcessingStatus(); - - // Start SDK agent in background (pass worker ref for spinner control) - logger.info('SESSION', 'Generator starting', { - sessionId: sessionDbId, - project: session.project, - promptNum: session.lastPromptNumber - }); - - session.generatorPromise = this.sdkAgent.startSession(session, this) - .catch(err => { - logger.failure('SDK', 'SDK agent error', { sessionId: sessionDbId }, err); - }) - .finally(() => { - // Clear generator reference when completed - logger.info('SESSION', `Generator finished`, { sessionId: sessionDbId }); - session.generatorPromise = null; - // Broadcast status change (generator finished, may stop spinner) - this.broadcastProcessingStatus(); - }); - - // Broadcast SSE event - this.sseBroadcaster.broadcast({ - type: 'session_started', - sessionDbId, - project: session.project - }); - - res.json({ status: 'initialized', sessionDbId, port: getWorkerPort() }); - } catch (error) { - logger.failure('WORKER', 'Session init failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Queue observations for processing - * CRITICAL: Ensures SDK agent is running to process the queue (ALWAYS SAVE EVERYTHING) - */ - private handleObservations(req: Request, res: Response): void { - try { - const sessionDbId = parseInt(req.params.sessionDbId, 10); - const { tool_name, tool_input, tool_response, prompt_number, cwd } = req.body; - - this.sessionManager.queueObservation(sessionDbId, { - tool_name, - tool_input, - tool_response, - prompt_number, - cwd - }); - - // CRITICAL: Ensure SDK agent is running to consume the queue - const session = this.sessionManager.getSession(sessionDbId); - if (session && !session.generatorPromise) { - logger.info('SESSION', 'Generator auto-starting (observation)', { - sessionId: sessionDbId, - queueDepth: session.pendingMessages.length - }); - - session.generatorPromise = this.sdkAgent.startSession(session, this) - .catch(err => { - logger.failure('SDK', 'SDK agent error', { sessionId: sessionDbId }, err); - }) - .finally(() => { - // Clear generator reference when completed - logger.info('SESSION', `Generator finished`, { sessionId: sessionDbId }); - session.generatorPromise = null; - // Broadcast status change (generator finished, may stop spinner) - this.broadcastProcessingStatus(); - }); - } - - // Broadcast activity status (queue depth changed) - this.broadcastProcessingStatus(); - - // Broadcast SSE event - this.sseBroadcaster.broadcast({ - type: 'observation_queued', - sessionDbId - }); - - res.json({ status: 'queued' }); - } catch (error) { - logger.failure('WORKER', 'Observation queuing failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Queue summarize request - * CRITICAL: Ensures SDK agent is running to process the queue (ALWAYS SAVE EVERYTHING) - */ - private handleSummarize(req: Request, res: Response): void { - try { - const sessionDbId = parseInt(req.params.sessionDbId, 10); - const { last_user_message, last_assistant_message } = req.body; - - this.sessionManager.queueSummarize(sessionDbId, last_user_message, last_assistant_message); - - // CRITICAL: Ensure SDK agent is running to consume the queue - const session = this.sessionManager.getSession(sessionDbId); - if (session && !session.generatorPromise) { - logger.info('SESSION', 'Generator auto-starting (summarize)', { - sessionId: sessionDbId, - queueDepth: session.pendingMessages.length - }); - - session.generatorPromise = this.sdkAgent.startSession(session, this) - .catch(err => { - logger.failure('SDK', 'SDK agent error', { sessionId: sessionDbId }, err); - }) - .finally(() => { - // Clear generator reference when completed - logger.info('SESSION', `Generator finished`, { sessionId: sessionDbId }); - session.generatorPromise = null; - // Broadcast status change (generator finished, may stop spinner) - this.broadcastProcessingStatus(); - }); - } - - // Broadcast activity status (queue depth changed) - this.broadcastProcessingStatus(); - - res.json({ status: 'queued' }); - } catch (error) { - logger.failure('WORKER', 'Summarize queuing failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Get session status - */ - private handleSessionStatus(req: Request, res: Response): void { - try { - const sessionDbId = parseInt(req.params.sessionDbId, 10); - const session = this.sessionManager.getSession(sessionDbId); - - if (!session) { - res.json({ status: 'not_found' }); - return; - } - - res.json({ - status: 'active', - sessionDbId, - project: session.project, - queueLength: session.pendingMessages.length, - uptime: Date.now() - session.startTime - }); - } catch (error) { - logger.failure('WORKER', 'Session status failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Delete a session - */ - private async handleSessionDelete(req: Request, res: Response): Promise { - try { - const sessionDbId = parseInt(req.params.sessionDbId, 10); - await this.sessionManager.deleteSession(sessionDbId); - - // Mark session complete in database - this.dbManager.markSessionComplete(sessionDbId); - - // Broadcast SSE event - this.sseBroadcaster.broadcast({ - type: 'session_completed', - sessionDbId - }); - - res.json({ status: 'deleted' }); - } catch (error) { - logger.failure('WORKER', 'Session delete failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Complete a session (backward compatibility for cleanup-hook) - * cleanup-hook expects POST /sessions/:sessionDbId/complete instead of DELETE - */ - private async handleSessionComplete(req: Request, res: Response): Promise { - try { - const sessionDbId = parseInt(req.params.sessionDbId, 10); - if (isNaN(sessionDbId)) { - res.status(400).json({ success: false, error: 'Invalid session ID' }); - return; - } - - await this.sessionManager.deleteSession(sessionDbId); - - // Mark session complete in database - this.dbManager.markSessionComplete(sessionDbId); - - // Broadcast processing status (based on queue depth) - this.broadcastProcessingStatus(); - - // Broadcast SSE event - this.sseBroadcaster.broadcast({ - type: 'session_completed', - timestamp: Date.now(), - sessionDbId - }); - - res.json({ success: true }); - } catch (error) { - logger.failure('WORKER', 'Session complete failed', {}, error as Error); - res.status(500).json({ success: false, error: String(error) }); - } - } - - /** - * Get paginated observations - */ - private handleGetObservations(req: Request, res: Response): void { - try { - const { offset, limit, project } = parsePaginationParams(req); - const result = this.paginationHelper.getObservations(offset, limit, project); - res.json(result); - } catch (error) { - logger.failure('WORKER', 'Get observations failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Get paginated summaries - */ - private handleGetSummaries(req: Request, res: Response): void { - try { - const { offset, limit, project } = parsePaginationParams(req); - const result = this.paginationHelper.getSummaries(offset, limit, project); - res.json(result); - } catch (error) { - logger.failure('WORKER', 'Get summaries failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Get paginated user prompts - */ - private handleGetPrompts(req: Request, res: Response): void { - try { - const { offset, limit, project } = parsePaginationParams(req); - const result = this.paginationHelper.getPrompts(offset, limit, project); - res.json(result); - } catch (error) { - logger.failure('WORKER', 'Get prompts failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Get observation by ID - * GET /api/observation/:id - */ - private handleGetObservationById(req: Request, res: Response): void { - try { - const id = parseInt(req.params.id, 10); - if (isNaN(id)) { - res.status(400).json({ error: 'Invalid observation ID' }); - return; - } - - const store = this.dbManager.getSessionStore(); - const observation = store.getObservationById(id); - - if (!observation) { - res.status(404).json({ error: `Observation #${id} not found` }); - return; - } - - res.json(observation); - } catch (error) { - logger.failure('WORKER', 'Get observation by ID failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Get session by ID - * GET /api/session/:id - */ - private handleGetSessionById(req: Request, res: Response): void { - try { - const id = parseInt(req.params.id, 10); - if (isNaN(id)) { - res.status(400).json({ error: 'Invalid session ID' }); - return; - } - - const store = this.dbManager.getSessionStore(); - const sessions = store.getSessionSummariesByIds([id]); - - if (sessions.length === 0) { - res.status(404).json({ error: `Session #${id} not found` }); - return; - } - - res.json(sessions[0]); - } catch (error) { - logger.failure('WORKER', 'Get session by ID failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Get user prompt by ID - * GET /api/prompt/:id - */ - private handleGetPromptById(req: Request, res: Response): void { - try { - const id = parseInt(req.params.id, 10); - if (isNaN(id)) { - res.status(400).json({ error: 'Invalid prompt ID' }); - return; - } - - const store = this.dbManager.getSessionStore(); - const prompts = store.getUserPromptsByIds([id]); - - if (prompts.length === 0) { - res.status(404).json({ error: `Prompt #${id} not found` }); - return; - } - - res.json(prompts[0]); - } catch (error) { - logger.failure('WORKER', 'Get prompt by ID failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Get database statistics (with worker metadata) - */ - private handleGetStats(req: Request, res: Response): void { - try { - const db = this.dbManager.getSessionStore().db; - - // Read version from package.json - const packageRoot = getPackageRoot(); - const packageJsonPath = path.join(packageRoot, 'package.json'); - const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')); - const version = packageJson.version; - - // Get database stats - const totalObservations = db.prepare('SELECT COUNT(*) as count FROM observations').get() as { count: number }; - const totalSessions = db.prepare('SELECT COUNT(*) as count FROM sdk_sessions').get() as { count: number }; - const totalSummaries = db.prepare('SELECT COUNT(*) as count FROM session_summaries').get() as { count: number }; - - // Get database file size and path - const dbPath = path.join(homedir(), '.claude-mem', 'claude-mem.db'); - let dbSize = 0; - if (existsSync(dbPath)) { - dbSize = statSync(dbPath).size; - } - - // Worker metadata - const uptime = Math.floor((Date.now() - this.startTime) / 1000); - const activeSessions = this.sessionManager.getActiveSessionCount(); - const sseClients = this.sseBroadcaster.getClientCount(); - - res.json({ - worker: { - version, - uptime, - activeSessions, - sseClients, - port: getWorkerPort() - }, - database: { - path: dbPath, - size: dbSize, - observations: totalObservations.count, - sessions: totalSessions.count, - summaries: totalSummaries.count - } - }); - } catch (error) { - logger.failure('WORKER', 'Get stats failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Get list of distinct projects from observations - * GET /api/projects - */ - private handleGetProjects(req: Request, res: Response): void { - try { - const db = this.dbManager.getSessionStore().db; - - const rows = db.prepare(` - SELECT DISTINCT project - FROM observations - WHERE project IS NOT NULL - GROUP BY project - ORDER BY MAX(created_at_epoch) DESC - `).all() as Array<{ project: string }>; - - const projects = rows.map(row => row.project); - - res.json({ projects }); - } catch (error) { - logger.failure('WORKER', 'Get projects failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Validate context settings from request body - */ - private validateContextSettings(settings: any): { valid: boolean; error?: string } { - // Validate boolean string values - const booleanSettings = [ - 'CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS', - 'CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS', - 'CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT', - 'CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT', - 'CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY', - 'CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE', - ]; - - for (const key of booleanSettings) { - if (settings[key] && !['true', 'false'].includes(settings[key])) { - return { valid: false, error: `${key} must be "true" or "false"` }; - } - } - - // Validate FULL_COUNT (0-20) - if (settings.CLAUDE_MEM_CONTEXT_FULL_COUNT) { - const count = parseInt(settings.CLAUDE_MEM_CONTEXT_FULL_COUNT, 10); - if (isNaN(count) || count < 0 || count > 20) { - return { valid: false, error: 'CLAUDE_MEM_CONTEXT_FULL_COUNT must be between 0 and 20' }; - } - } - - // Validate SESSION_COUNT (1-50) - if (settings.CLAUDE_MEM_CONTEXT_SESSION_COUNT) { - const count = parseInt(settings.CLAUDE_MEM_CONTEXT_SESSION_COUNT, 10); - if (isNaN(count) || count < 1 || count > 50) { - return { valid: false, error: 'CLAUDE_MEM_CONTEXT_SESSION_COUNT must be between 1 and 50' }; - } - } - - // Validate FULL_FIELD - if (settings.CLAUDE_MEM_CONTEXT_FULL_FIELD) { - if (!['narrative', 'facts'].includes(settings.CLAUDE_MEM_CONTEXT_FULL_FIELD)) { - return { valid: false, error: 'CLAUDE_MEM_CONTEXT_FULL_FIELD must be "narrative" or "facts"' }; - } - } - - // Validate observation types - if (settings.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES) { - const types = settings.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES.split(',').map((t: string) => t.trim()); - for (const type of types) { - if (type && !OBSERVATION_TYPES.includes(type as any)) { - return { valid: false, error: `Invalid observation type: ${type}. Valid types: ${OBSERVATION_TYPES.join(', ')}` }; - } - } - } - - // Validate observation concepts - if (settings.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS) { - const concepts = settings.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS.split(',').map((c: string) => c.trim()); - for (const concept of concepts) { - if (concept && !OBSERVATION_CONCEPTS.includes(concept as any)) { - return { valid: false, error: `Invalid observation concept: ${concept}. Valid concepts: ${OBSERVATION_CONCEPTS.join(', ')}` }; - } - } - } - - return { valid: true }; - } - - /** - * Get environment settings (from ~/.claude/settings.json) - */ - private handleGetSettings(req: Request, res: Response): void { - try { - const settingsPath = path.join(homedir(), '.claude-mem', 'settings.json'); - - if (!existsSync(settingsPath)) { - // Return defaults if file doesn't exist - res.json({ - CLAUDE_MEM_MODEL: 'claude-haiku-4-5', - CLAUDE_MEM_CONTEXT_OBSERVATIONS: '50', - CLAUDE_MEM_WORKER_PORT: '37777', - // Token Economics - CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS: 'true', - CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS: 'true', - CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT: 'true', - CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT: 'true', - // Observation Filtering - CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES: DEFAULT_OBSERVATION_TYPES_STRING, - CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS: DEFAULT_OBSERVATION_CONCEPTS_STRING, - // Display Configuration - CLAUDE_MEM_CONTEXT_FULL_COUNT: '5', - CLAUDE_MEM_CONTEXT_FULL_FIELD: 'narrative', - CLAUDE_MEM_CONTEXT_SESSION_COUNT: '10', - // Feature Toggles - CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY: 'true', - CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE: 'false', - }); - return; - } - - const settingsData = readFileSync(settingsPath, 'utf-8'); - const settings = JSON.parse(settingsData); - const env = settings.env || {}; - - res.json({ - CLAUDE_MEM_MODEL: env.CLAUDE_MEM_MODEL || 'claude-haiku-4-5', - CLAUDE_MEM_CONTEXT_OBSERVATIONS: env.CLAUDE_MEM_CONTEXT_OBSERVATIONS || '50', - CLAUDE_MEM_WORKER_PORT: env.CLAUDE_MEM_WORKER_PORT || '37777', - // Token Economics - CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS: env.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS || 'true', - CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS: env.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS || 'true', - CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT: env.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT || 'true', - CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT: env.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT || 'true', - // Observation Filtering - CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES: env.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES || DEFAULT_OBSERVATION_TYPES_STRING, - CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS: env.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS || DEFAULT_OBSERVATION_CONCEPTS_STRING, - // Display Configuration - CLAUDE_MEM_CONTEXT_FULL_COUNT: env.CLAUDE_MEM_CONTEXT_FULL_COUNT || '5', - CLAUDE_MEM_CONTEXT_FULL_FIELD: env.CLAUDE_MEM_CONTEXT_FULL_FIELD || 'narrative', - CLAUDE_MEM_CONTEXT_SESSION_COUNT: env.CLAUDE_MEM_CONTEXT_SESSION_COUNT || '10', - // Feature Toggles - CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY: env.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY || 'true', - CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE: env.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE || 'false', - }); - } catch (error) { - logger.failure('WORKER', 'Get settings failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Update environment settings (in ~/.claude/settings.json) with validation - */ - private handleUpdateSettings(req: Request, res: Response): void { - try { - // Validate CLAUDE_MEM_CONTEXT_OBSERVATIONS - if (req.body.CLAUDE_MEM_CONTEXT_OBSERVATIONS) { - const obsCount = parseInt(req.body.CLAUDE_MEM_CONTEXT_OBSERVATIONS, 10); - if (isNaN(obsCount) || obsCount < 1 || obsCount > 200) { - res.status(400).json({ - success: false, - error: 'CLAUDE_MEM_CONTEXT_OBSERVATIONS must be between 1 and 200' - }); - return; - } - } - - // Validate CLAUDE_MEM_WORKER_PORT - if (req.body.CLAUDE_MEM_WORKER_PORT) { - const port = parseInt(req.body.CLAUDE_MEM_WORKER_PORT, 10); - if (isNaN(port) || port < 1024 || port > 65535) { - res.status(400).json({ - success: false, - error: 'CLAUDE_MEM_WORKER_PORT must be between 1024 and 65535' - }); - return; - } - } - - // Validate context settings - const validation = this.validateContextSettings(req.body); - if (!validation.valid) { - res.status(400).json({ - success: false, - error: validation.error - }); - return; - } - - // Read existing settings - const settingsPath = path.join(homedir(), '.claude-mem', 'settings.json'); - let settings: any = { env: {} }; - - if (existsSync(settingsPath)) { - const settingsData = readFileSync(settingsPath, 'utf-8'); - settings = JSON.parse(settingsData); - if (!settings.env) { - settings.env = {}; - } - } - - // Update all settings from request body - const settingKeys = [ - 'CLAUDE_MEM_MODEL', - 'CLAUDE_MEM_CONTEXT_OBSERVATIONS', - 'CLAUDE_MEM_WORKER_PORT', - 'CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS', - 'CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS', - 'CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT', - 'CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT', - 'CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES', - 'CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS', - 'CLAUDE_MEM_CONTEXT_FULL_COUNT', - 'CLAUDE_MEM_CONTEXT_FULL_FIELD', - 'CLAUDE_MEM_CONTEXT_SESSION_COUNT', - 'CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY', - 'CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE', - ]; - - for (const key of settingKeys) { - if (req.body[key] !== undefined) { - settings.env[key] = req.body[key]; - } - } - - // Write back - writeFileSync(settingsPath, JSON.stringify(settings, null, 2), 'utf-8'); - - logger.info('WORKER', 'Settings updated'); - res.json({ success: true, message: 'Settings updated successfully' }); - } catch (error) { - logger.failure('WORKER', 'Update settings failed', {}, error as Error); - res.status(500).json({ success: false, error: String(error) }); - } - } - - /** - * Get processing status (for viewer UI spinner and queue indicator) - */ - private handleGetProcessingStatus(req: Request, res: Response): void { - const isProcessing = this.sessionManager.isAnySessionProcessing(); - const queueDepth = this.sessionManager.getTotalActiveWork(); // Includes queued + actively processing - res.json({ isProcessing, queueDepth }); - } - - // ============================================================================ - // Processing Status Helpers - // ============================================================================ - /** * Broadcast processing status change to SSE clients * Checks both queue depth and active generators to prevent premature spinner stop + * + * PUBLIC: Called by route handlers (SessionRoutes, DataRoutes) */ broadcastProcessingStatus(): void { const isProcessing = this.sessionManager.isAnySessionProcessing(); @@ -1093,616 +229,6 @@ export class WorkerService { queueDepth }); } - - /** - * Set processing status (called by hooks) - * NOTE: This now broadcasts computed status based on active processing (ignores input) - */ - private handleSetProcessing(req: Request, res: Response): void { - try { - // Broadcast current computed status (ignores manual input) - this.broadcastProcessingStatus(); - - const isProcessing = this.sessionManager.isAnySessionProcessing(); - const queueDepth = this.sessionManager.getTotalQueueDepth(); - const activeSessions = this.sessionManager.getActiveSessionCount(); - logger.debug('WORKER', 'Processing status broadcast', { isProcessing, queueDepth, activeSessions }); - - res.json({ status: 'ok', isProcessing }); - } catch (error) { - logger.failure('WORKER', 'Failed to broadcast processing status', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - // ============================================================================ - // MCP Toggle Handlers - // ============================================================================ - - /** - * GET /api/mcp/status - Check if MCP search server is enabled - */ - private handleGetMcpStatus(req: Request, res: Response): void { - try { - const enabled = this.isMcpEnabled(); - res.json({ enabled }); - } catch (error) { - logger.failure('WORKER', 'Get MCP status failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * POST /api/mcp/toggle - Toggle MCP search server on/off - * Body: { enabled: boolean } - */ - private handleToggleMcp(req: Request, res: Response): void { - try { - const { enabled } = req.body; - - if (typeof enabled !== 'boolean') { - res.status(400).json({ error: 'enabled must be a boolean' }); - return; - } - - this.toggleMcp(enabled); - res.json({ success: true, enabled: this.isMcpEnabled() }); - } catch (error) { - logger.failure('WORKER', 'Toggle MCP failed', {}, error as Error); - res.status(500).json({ success: false, error: (error as Error).message }); - } - } - - // ============================================================================ - // MCP Toggle Helpers - // ============================================================================ - - /** - * Check if MCP search server is enabled - */ - private isMcpEnabled(): boolean { - const packageRoot = getPackageRoot(); - const mcpPath = path.join(packageRoot, 'plugin', '.mcp.json'); - return existsSync(mcpPath); - } - - /** - * Toggle MCP search server (rename .mcp.json <-> .mcp.json.disabled) - */ - private toggleMcp(enabled: boolean): void { - try { - const packageRoot = getPackageRoot(); - const mcpPath = path.join(packageRoot, 'plugin', '.mcp.json'); - const mcpDisabledPath = path.join(packageRoot, 'plugin', '.mcp.json.disabled'); - - if (enabled && existsSync(mcpDisabledPath)) { - // Enable: rename .mcp.json.disabled -> .mcp.json - renameSync(mcpDisabledPath, mcpPath); - logger.info('WORKER', 'MCP search server enabled'); - } else if (!enabled && existsSync(mcpPath)) { - // Disable: rename .mcp.json -> .mcp.json.disabled - renameSync(mcpPath, mcpDisabledPath); - logger.info('WORKER', 'MCP search server disabled'); - } else { - logger.debug('WORKER', 'MCP toggle no-op (already in desired state)', { enabled }); - } - } catch (error) { - logger.failure('WORKER', 'Failed to toggle MCP', { enabled }, error as Error); - throw error; - } - } - - // ============================================================================ - // Branch Switching Handlers (Beta Toggle) - // ============================================================================ - - /** - * GET /api/branch/status - Get current branch information - */ - private handleGetBranchStatus(req: Request, res: Response): void { - try { - const info = getBranchInfo(); - res.json(info); - } catch (error) { - logger.failure('WORKER', 'Failed to get branch status', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * POST /api/branch/switch - Switch to a different branch - * Body: { branch: "main" | "beta/7.0" } - */ - private async handleSwitchBranch(req: Request, res: Response): Promise { - try { - const { branch } = req.body; - - if (!branch) { - res.status(400).json({ success: false, error: 'Missing branch parameter' }); - return; - } - - // Validate branch name - const allowedBranches = ['main', 'beta/7.0']; - if (!allowedBranches.includes(branch)) { - res.status(400).json({ - success: false, - error: `Invalid branch. Allowed: ${allowedBranches.join(', ')}` - }); - return; - } - - logger.info('WORKER', 'Branch switch requested', { branch }); - - const result = await switchBranch(branch); - - if (result.success) { - // Schedule worker restart after response is sent - setTimeout(() => { - logger.info('WORKER', 'Restarting worker after branch switch'); - process.exit(0); // PM2 will restart the worker - }, 1000); - } - - res.json(result); - } catch (error) { - logger.failure('WORKER', 'Branch switch failed', {}, error as Error); - res.status(500).json({ success: false, error: (error as Error).message }); - } - } - - /** - * POST /api/branch/update - Pull latest updates for current branch - */ - private async handleUpdateBranch(req: Request, res: Response): Promise { - try { - logger.info('WORKER', 'Branch update requested'); - - const result = await pullUpdates(); - - if (result.success) { - // Schedule worker restart after response is sent - setTimeout(() => { - logger.info('WORKER', 'Restarting worker after branch update'); - process.exit(0); // PM2 will restart the worker - }, 1000); - } - - res.json(result); - } catch (error) { - logger.failure('WORKER', 'Branch update failed', {}, error as Error); - res.status(500).json({ success: false, error: (error as Error).message }); - } - } - - // ============================================================================ - // Search API Handlers (for skill-based search) - // ============================================================================ - - // ============================================================================ - // Unified Search API Handlers (New Consolidated API) - // ============================================================================ - - /** - * Unified search across all memory types (observations, sessions, prompts) - * GET /api/search?query=...&format=index&limit=20 - */ - private async handleUnifiedSearch(req: Request, res: Response): Promise { - try { - const result = await this.mcpClient.callTool({ - name: 'search', - arguments: req.query - }); - res.json(result.content); - } catch (error) { - logger.failure('WORKER', 'Unified search failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Unified timeline (anchor or query-based) - * GET /api/timeline?anchor=123 OR GET /api/timeline?query=... - */ - private async handleUnifiedTimeline(req: Request, res: Response): Promise { - try { - const result = await this.mcpClient.callTool({ - name: 'timeline', - arguments: req.query - }); - res.json(result.content); - } catch (error) { - logger.failure('WORKER', 'Unified timeline failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Semantic shortcut for finding decision observations - * GET /api/decisions?format=index&limit=20 - */ - private async handleDecisions(req: Request, res: Response): Promise { - try { - const result = await this.mcpClient.callTool({ - name: 'decisions', - arguments: req.query - }); - res.json(result.content); - } catch (error) { - logger.failure('WORKER', 'Decisions search failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Semantic shortcut for finding change-related observations - * GET /api/changes?format=index&limit=20 - */ - private async handleChanges(req: Request, res: Response): Promise { - try { - const result = await this.mcpClient.callTool({ - name: 'changes', - arguments: req.query - }); - res.json(result.content); - } catch (error) { - logger.failure('WORKER', 'Changes search failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Semantic shortcut for finding "how it works" explanations - * GET /api/how-it-works?format=index&limit=20 - */ - private async handleHowItWorks(req: Request, res: Response): Promise { - try { - const result = await this.mcpClient.callTool({ - name: 'how_it_works', - arguments: req.query - }); - res.json(result.content); - } catch (error) { - logger.failure('WORKER', 'How it works search failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - // ============================================================================ - // Backward Compatibility API Handlers - // All functionality available via /api/search with type/obs_type/concepts/files params - // ============================================================================ - - /** - * Search observations (use /api/search?type=observations instead) - * GET /api/search/observations?query=...&format=index&limit=20&project=... - */ - private async handleSearchObservations(req: Request, res: Response): Promise { - try { - const result = await this.mcpClient.callTool({ - name: 'search_observations', - arguments: req.query - }); - res.json(result.content); - } catch (error) { - logger.failure('WORKER', 'Search failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Search session summaries - * GET /api/search/sessions?query=...&format=index&limit=20 - */ - private async handleSearchSessions(req: Request, res: Response): Promise { - try { - const result = await this.mcpClient.callTool({ - name: 'search_sessions', - arguments: req.query - }); - res.json(result.content); - } catch (error) { - logger.failure('WORKER', 'Search failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Search user prompts - * GET /api/search/prompts?query=...&format=index&limit=20 - */ - private async handleSearchPrompts(req: Request, res: Response): Promise { - try { - const result = await this.mcpClient.callTool({ - name: 'search_user_prompts', - arguments: req.query - }); - res.json(result.content); - } catch (error) { - logger.failure('WORKER', 'Search failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Search observations by concept - * GET /api/search/by-concept?concept=discovery&format=index&limit=5 - */ - private async handleSearchByConcept(req: Request, res: Response): Promise { - try { - const result = await this.mcpClient.callTool({ - name: 'find_by_concept', - arguments: req.query - }); - res.json(result.content); - } catch (error) { - logger.failure('WORKER', 'Search failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Search by file path - * GET /api/search/by-file?filePath=...&format=index&limit=10 - */ - private async handleSearchByFile(req: Request, res: Response): Promise { - try { - const result = await this.mcpClient.callTool({ - name: 'find_by_file', - arguments: req.query - }); - res.json(result.content); - } catch (error) { - logger.failure('WORKER', 'Search failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Search observations by type - * GET /api/search/by-type?type=bugfix&format=index&limit=10 - */ - private async handleSearchByType(req: Request, res: Response): Promise { - try { - const result = await this.mcpClient.callTool({ - name: 'find_by_type', - arguments: req.query - }); - res.json(result.content); - } catch (error) { - logger.failure('WORKER', 'Search failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Get recent context (summaries and observations for a project) - * GET /api/context/recent?project=...&limit=3 - */ - private async handleGetRecentContext(req: Request, res: Response): Promise { - try { - const result = await this.mcpClient.callTool({ - name: 'get_recent_context', - arguments: req.query - }); - res.json(result.content); - } catch (error) { - logger.failure('WORKER', 'Search failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Get context timeline around an anchor point - * GET /api/context/timeline?anchor=123&depth_before=10&depth_after=10&project=... - */ - private async handleGetContextTimeline(req: Request, res: Response): Promise { - try { - const result = await this.mcpClient.callTool({ - name: 'get_context_timeline', - arguments: req.query - }); - res.json(result.content); - } catch (error) { - logger.failure('WORKER', 'Search failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Generate context preview for settings modal - * GET /api/context/preview?project=... - */ - private async handleContextPreview(req: Request, res: Response): Promise { - try { - // Dynamic import to use BUILT context-hook function - const packageRoot = getPackageRoot(); - const contextHookPath = path.join(packageRoot, 'plugin', 'scripts', 'context-hook.js'); - const { contextHook } = await import(contextHookPath); - - // Get project from query parameter - const projectName = req.query.project as string; - - if (!projectName) { - return res.status(400).json({ error: 'Project parameter is required' }); - } - - // Use project name as CWD (contextHook uses path.basename to get project) - const cwd = `/preview/${projectName}`; - - // Generate preview context (with colors for terminal display) - const contextText = await contextHook( - { - session_id: 'preview-' + Date.now(), - cwd: cwd - }, - true // useColors=true for ANSI terminal output - ); - - // Return as plain text - res.setHeader('Content-Type', 'text/plain; charset=utf-8'); - res.send(contextText); - } catch (error) { - logger.failure('WORKER', 'Context preview generation failed', {}, error as Error); - res.status(500).json({ - error: 'Failed to generate context preview', - message: (error as Error).message - }); - } - } - - /** - * Get timeline by query (search first, then get timeline around best match) - * GET /api/timeline/by-query?query=...&mode=auto&depth_before=10&depth_after=10 - */ - private async handleGetTimelineByQuery(req: Request, res: Response): Promise { - try { - const result = await this.mcpClient.callTool({ - name: 'get_timeline_by_query', - arguments: req.query - }); - res.json(result.content); - } catch (error) { - logger.failure('WORKER', 'Search failed', {}, error as Error); - res.status(500).json({ error: (error as Error).message }); - } - } - - /** - * Get search help documentation - * GET /api/search/help - */ - private handleSearchHelp(req: Request, res: Response): void { - res.json({ - title: 'Claude-Mem Search API', - description: 'HTTP API for searching persistent memory', - endpoints: [ - { - path: '/api/search/observations', - method: 'GET', - description: 'Search observations using full-text search', - parameters: { - query: 'Search query (required)', - format: 'Response format: "index" or "full" (default: "full")', - limit: 'Number of results (default: 20)', - project: 'Filter by project name (optional)' - } - }, - { - path: '/api/search/sessions', - method: 'GET', - description: 'Search session summaries using full-text search', - parameters: { - query: 'Search query (required)', - format: 'Response format: "index" or "full" (default: "full")', - limit: 'Number of results (default: 20)' - } - }, - { - path: '/api/search/prompts', - method: 'GET', - description: 'Search user prompts using full-text search', - parameters: { - query: 'Search query (required)', - format: 'Response format: "index" or "full" (default: "full")', - limit: 'Number of results (default: 20)', - project: 'Filter by project name (optional)' - } - }, - { - path: '/api/search/by-concept', - method: 'GET', - description: 'Find observations by concept tag', - parameters: { - concept: 'Concept tag (required): discovery, decision, bugfix, feature, refactor', - format: 'Response format: "index" or "full" (default: "full")', - limit: 'Number of results (default: 10)', - project: 'Filter by project name (optional)' - } - }, - { - path: '/api/search/by-file', - method: 'GET', - description: 'Find observations and sessions by file path', - parameters: { - filePath: 'File path or partial path (required)', - format: 'Response format: "index" or "full" (default: "full")', - limit: 'Number of results per type (default: 10)', - project: 'Filter by project name (optional)' - } - }, - { - path: '/api/search/by-type', - method: 'GET', - description: 'Find observations by type', - parameters: { - type: 'Observation type (required): discovery, decision, bugfix, feature, refactor', - format: 'Response format: "index" or "full" (default: "full")', - limit: 'Number of results (default: 10)', - project: 'Filter by project name (optional)' - } - }, - { - path: '/api/context/recent', - method: 'GET', - description: 'Get recent session context including summaries and observations', - parameters: { - project: 'Project name (default: current directory)', - limit: 'Number of recent sessions (default: 3)' - } - }, - { - path: '/api/context/timeline', - method: 'GET', - description: 'Get unified timeline around a specific point in time', - parameters: { - anchor: 'Anchor point: observation ID, session ID (e.g., "S123"), or ISO timestamp (required)', - depth_before: 'Number of records before anchor (default: 10)', - depth_after: 'Number of records after anchor (default: 10)', - project: 'Filter by project name (optional)' - } - }, - { - path: '/api/timeline/by-query', - method: 'GET', - description: 'Search for best match, then get timeline around it', - parameters: { - query: 'Search query (required)', - mode: 'Search mode: "auto", "observations", or "sessions" (default: "auto")', - depth_before: 'Number of records before match (default: 10)', - depth_after: 'Number of records after match (default: 10)', - project: 'Filter by project name (optional)' - } - }, - { - path: '/api/search/help', - method: 'GET', - description: 'Get this help documentation' - } - ], - examples: [ - 'curl "http://localhost:37777/api/search/observations?query=authentication&format=index&limit=5"', - 'curl "http://localhost:37777/api/search/by-type?type=bugfix&limit=10"', - 'curl "http://localhost:37777/api/context/recent?project=claude-mem&limit=3"', - 'curl "http://localhost:37777/api/context/timeline?anchor=123&depth_before=5&depth_after=5"' - ] - }); - } -} - -// ============================================================================ -// Utilities -// ============================================================================ - -/** - * Parse pagination parameters from request - */ -function parsePaginationParams(req: Request): { offset: number; limit: number; project?: string } { - const offset = parseInt(req.query.offset as string, 10) || 0; - const limit = Math.min(parseInt(req.query.limit as string, 10) || 20, 100); // Max 100 - const project = req.query.project as string | undefined; - - return { offset, limit, project }; } // ============================================================================ @@ -1729,11 +255,8 @@ if (require.main === module || !module.parent) { process.exit(0); }); - // Start the worker - worker.start().catch(error => { - logger.failure('SYSTEM', 'Worker startup failed', {}, error); + worker.start().catch((error) => { + logger.failure('SYSTEM', 'Worker failed to start', {}, error as Error); process.exit(1); }); } - -export default WorkerService; diff --git a/src/services/worker/FormattingService.ts b/src/services/worker/FormattingService.ts new file mode 100644 index 00000000..980543a2 --- /dev/null +++ b/src/services/worker/FormattingService.ts @@ -0,0 +1,233 @@ +/** + * FormattingService - Handles all formatting logic for search results + * Extracted from mcp-server.ts to follow worker service organization pattern + */ + +import { ObservationSearchResult, SessionSummarySearchResult, UserPromptSearchResult } from '../sqlite/types.js'; + +export type FormatType = 'index' | 'full'; + +export class FormattingService { + /** + * Format search tips footer + */ + formatSearchTips(): string { + return `\n--- +💡 Search Strategy: +ALWAYS search with index format FIRST to get an overview and identify relevant results. +This is critical for token efficiency - index format uses ~10x fewer tokens than full format. + +Search workflow: +1. Initial search: Use default (index) format to see titles, dates, and sources +2. Review results: Identify which items are most relevant to your needs +3. Deep dive: Only then use format: "full" on specific items of interest +4. Narrow down: Use filters (type, dateStart/dateEnd, concepts, files) to refine results + +Other tips: +• To search by concept: Use find_by_concept tool +• To browse by type: Use find_by_type with ["decision", "feature", etc.] +• To sort by date: Use orderBy: "date_desc" or "date_asc"`; + } + + /** + * Format observation as index entry (title, date, ID only) + */ + formatObservationIndex(obs: ObservationSearchResult, index: number): string { + const title = obs.title || `Observation #${obs.id}`; + const date = new Date(obs.created_at_epoch).toLocaleString(); + const type = obs.type ? `[${obs.type}]` : ''; + + return `${index + 1}. ${type} ${title} + Date: ${date} + Source: claude-mem://observation/${obs.id}`; + } + + /** + * Format session summary as index entry (title, date, ID only) + */ + formatSessionIndex(session: SessionSummarySearchResult, index: number): string { + const title = session.request || `Session ${session.sdk_session_id?.substring(0, 8) || 'unknown'}`; + const date = new Date(session.created_at_epoch).toLocaleString(); + + return `${index + 1}. ${title} + Date: ${date} + Source: claude-mem://session/${session.sdk_session_id}`; + } + + /** + * Format user prompt as index entry (full text - don't truncate context!) + */ + formatUserPromptIndex(prompt: UserPromptSearchResult, index: number): string { + const date = new Date(prompt.created_at_epoch).toLocaleString(); + + return `${index + 1}. "${prompt.prompt_text}" + Date: ${date} | Prompt #${prompt.prompt_number} + Source: claude-mem://user-prompt/${prompt.id}`; + } + + /** + * Format observation as text content with metadata + */ + formatObservationResult(obs: ObservationSearchResult): string { + const title = obs.title || `Observation #${obs.id}`; + + // Build content from available fields + const contentParts: string[] = []; + contentParts.push(`## ${title}`); + contentParts.push(`*Source: claude-mem://observation/${obs.id}*`); + contentParts.push(''); + + if (obs.subtitle) { + contentParts.push(`**${obs.subtitle}**`); + contentParts.push(''); + } + + if (obs.narrative) { + contentParts.push(obs.narrative); + contentParts.push(''); + } + + if (obs.text) { + contentParts.push(obs.text); + contentParts.push(''); + } + + // Add metadata + const metadata: string[] = []; + metadata.push(`Type: ${obs.type}`); + + if (obs.facts) { + try { + const facts = JSON.parse(obs.facts); + if (facts.length > 0) { + metadata.push(`Facts: ${facts.join('; ')}`); + } + } catch {} + } + + if (obs.concepts) { + try { + const concepts = JSON.parse(obs.concepts); + if (concepts.length > 0) { + metadata.push(`Concepts: ${concepts.join(', ')}`); + } + } catch {} + } + + if (obs.files_read || obs.files_modified) { + const files: string[] = []; + if (obs.files_read) { + try { + files.push(...JSON.parse(obs.files_read)); + } catch {} + } + if (obs.files_modified) { + try { + files.push(...JSON.parse(obs.files_modified)); + } catch {} + } + if (files.length > 0) { + metadata.push(`Files: ${[...new Set(files)].join(', ')}`); + } + } + + if (metadata.length > 0) { + contentParts.push('---'); + contentParts.push(metadata.join(' | ')); + } + + // Add date + const date = new Date(obs.created_at_epoch).toLocaleString(); + contentParts.push(''); + contentParts.push(`---`); + contentParts.push(`Date: ${date}`); + + return contentParts.join('\n'); + } + + /** + * Format session summary as text content with metadata + */ + formatSessionResult(session: SessionSummarySearchResult): string { + const title = session.request || `Session ${session.sdk_session_id?.substring(0, 8) || 'unknown'}`; + + // Build content from available fields + const contentParts: string[] = []; + contentParts.push(`## ${title}`); + contentParts.push(`*Source: claude-mem://session/${session.sdk_session_id}*`); + contentParts.push(''); + + if (session.completed) { + contentParts.push(`**Completed:** ${session.completed}`); + contentParts.push(''); + } + + if (session.learned) { + contentParts.push(`**Learned:** ${session.learned}`); + contentParts.push(''); + } + + if (session.investigated) { + contentParts.push(`**Investigated:** ${session.investigated}`); + contentParts.push(''); + } + + if (session.next_steps) { + contentParts.push(`**Next Steps:** ${session.next_steps}`); + contentParts.push(''); + } + + if (session.notes) { + contentParts.push(`**Notes:** ${session.notes}`); + contentParts.push(''); + } + + // Add metadata + const metadata: string[] = []; + + if (session.files_read || session.files_edited) { + const files: string[] = []; + if (session.files_read) { + try { + files.push(...JSON.parse(session.files_read)); + } catch {} + } + if (session.files_edited) { + try { + files.push(...JSON.parse(session.files_edited)); + } catch {} + } + if (files.length > 0) { + metadata.push(`Files: ${[...new Set(files)].join(', ')}`); + } + } + + const date = new Date(session.created_at_epoch).toLocaleDateString(); + metadata.push(`Date: ${date}`); + + if (metadata.length > 0) { + contentParts.push('---'); + contentParts.push(metadata.join(' | ')); + } + + return contentParts.join('\n'); + } + + /** + * Format user prompt as text content with metadata + */ + formatUserPromptResult(prompt: UserPromptSearchResult): string { + const contentParts: string[] = []; + contentParts.push(`## User Prompt #${prompt.prompt_number}`); + contentParts.push(`*Source: claude-mem://user-prompt/${prompt.id}*`); + contentParts.push(''); + contentParts.push(prompt.prompt_text); + contentParts.push(''); + contentParts.push('---'); + + const date = new Date(prompt.created_at_epoch).toLocaleString(); + contentParts.push(`Date: ${date}`); + + return contentParts.join('\n'); + } +} diff --git a/src/services/worker/README.md b/src/services/worker/README.md new file mode 100644 index 00000000..1f5937c2 --- /dev/null +++ b/src/services/worker/README.md @@ -0,0 +1,155 @@ +# Worker Service Architecture + +## Overview + +The Worker Service is an Express HTTP server that handles all claude-mem operations. It runs on port 37777 (configurable via `CLAUDE_MEM_WORKER_PORT`) and is managed by PM2. + +## Request Flow + +``` +Hook (plugin/scripts/*-hook.js) + → HTTP Request to Worker (localhost:37777) + → Route Handler (http/routes/*.ts) + → MCP Server Tool (for search) OR Domain Service (for session/data) + → Database (SQLite3 + Chroma vector DB) +``` + +## Directory Structure + +``` +src/services/worker/ +├── README.md # This file +├── WorkerService.ts # Slim orchestrator (~150 lines) +├── http/ # HTTP layer +│ ├── middleware.ts # Shared middleware (logging, CORS, etc.) +│ └── routes/ # Route handlers organized by domain +│ ├── SessionRoutes.ts # Session lifecycle (init, observations, summarize, complete) +│ ├── DataRoutes.ts # Data retrieval (get observations, summaries, prompts, stats) +│ ├── SearchRoutes.ts # Search/MCP proxy (all search endpoints) +│ ├── SettingsRoutes.ts # Settings, MCP toggle, branch switching +│ └── ViewerRoutes.ts # Health check, viewer UI, SSE stream +└── domain/ # Business logic (existing services, NO CHANGES in Phase 1) + ├── DatabaseManager.ts # SQLite connection management + ├── SessionManager.ts # Session state tracking + ├── SDKAgent.ts # Claude Agent SDK for observations/summaries + ├── SSEBroadcaster.ts # Server-Sent Events for real-time updates + ├── PaginationHelper.ts # Query pagination utilities + ├── SettingsManager.ts # User settings CRUD + └── BranchManager.ts # Git branch operations +``` + +## Route Organization + +### ViewerRoutes.ts +- `GET /health` - Health check endpoint +- `GET /` - Serve viewer UI (React app) +- `GET /stream` - SSE stream for real-time updates + +### SessionRoutes.ts +Session lifecycle operations (use domain services directly): +- `POST /sessions/init` - Initialize new session +- `POST /sessions/:sessionId/observations` - Add tool usage observations +- `POST /sessions/:sessionId/summarize` - Trigger session summary +- `GET /sessions/:sessionId/status` - Get session status +- `DELETE /sessions/:sessionId` - Delete session +- `POST /sessions/:sessionId/complete` - Mark session complete +- `POST /sessions/claude-id/:claudeId/observations` - Add observations by claude_id +- `POST /sessions/claude-id/:claudeId/summarize` - Summarize by claude_id +- `POST /sessions/claude-id/:claudeId/complete` - Complete by claude_id + +### DataRoutes.ts +Data retrieval operations (use domain services directly): +- `GET /observations` - List observations (paginated) +- `GET /summaries` - List session summaries (paginated) +- `GET /prompts` - List user prompts (paginated) +- `GET /observations/:id` - Get observation by ID +- `GET /sessions/:sessionId` - Get session by ID +- `GET /prompts/:id` - Get prompt by ID +- `GET /stats` - Get database statistics +- `GET /projects` - List all projects +- `GET /processing` - Get processing status +- `POST /processing` - Set processing status + +### SearchRoutes.ts +All search operations (proxy to MCP server): +- `GET /search` - Unified search (observations + sessions + prompts) +- `GET /timeline` - Unified timeline context +- `GET /decisions` - Decision-type observations +- `GET /changes` - Change-related observations +- `GET /how-it-works` - How-it-works explanations +- `GET /search/observations` - Search observations +- `GET /search/sessions` - Search sessions +- `GET /search/prompts` - Search prompts +- `GET /search/by-concept` - Find by concept tag +- `GET /search/by-file` - Find by file path +- `GET /search/by-type` - Find by observation type +- `GET /search/recent-context` - Get recent context +- `GET /search/context-timeline` - Get context timeline +- `GET /context/preview` - Preview context +- `GET /context/inject` - Inject context +- `GET /search/timeline-by-query` - Timeline by search query +- `GET /search/help` - Search help + +### SettingsRoutes.ts +Settings and configuration (use domain services directly): +- `GET /settings` - Get user settings +- `POST /settings` - Update user settings +- `GET /mcp/status` - Get MCP server status +- `POST /mcp/toggle` - Toggle MCP server on/off +- `GET /branch/status` - Get git branch info +- `POST /branch/switch` - Switch git branch +- `POST /branch/update` - Pull branch updates + +## Current State (Phase 1) + +**Phase 1** is a pure code reorganization with ZERO functional changes: +- Extract route handlers from WorkerService.ts monolith +- Organize into logical route classes +- Keep all existing behavior identical + +**MCP vs Direct DB Split** (inherited, not changed in Phase 1): +- Search operations → MCP server (claude-mem-search) +- Session/data operations → Direct DB access via domain services + +## Future Phase 2 + +Phase 2 will unify the architecture: +1. Expand MCP server to handle ALL operations (not just search) +2. Convert all route handlers to proxy through MCP +3. Move database logic from domain services into MCP tools +4. Result: Worker becomes pure HTTP → MCP proxy for maximum portability + +This separation allows the worker to be deployed anywhere (as a CLI tool, cloud service, etc.) without carrying database dependencies. + +## Adding New Endpoints + +1. Choose the appropriate route file based on the endpoint's purpose +2. Add the route handler method to the class +3. Register the route in the `setupRoutes()` method +4. Import any needed domain services in the constructor +5. Follow the existing patterns for error handling and logging + +Example: +```typescript +// In DataRoutes.ts +private async handleGetFoo(req: Request, res: Response): Promise { + try { + const result = await this.dbManager.getFoo(); + res.json(result); + } catch (error) { + logger.failure('WORKER', 'Get foo failed', {}, error as Error); + res.status(500).json({ error: (error as Error).message }); + } +} + +// Register in setupRoutes() +app.get('/foo', this.handleGetFoo.bind(this)); +``` + +## Key Design Principles + +1. **Progressive Disclosure**: Navigate from high-level (WorkerService.ts) to specific routes to implementation details +2. **Single Responsibility**: Each route class handles one domain area +3. **Dependency Injection**: Route classes receive only the services they need +4. **Consistent Error Handling**: All handlers use try/catch with logger.failure() +5. **Bound Methods**: All route handlers use `.bind(this)` to preserve context diff --git a/src/services/worker/SDKAgent.ts b/src/services/worker/SDKAgent.ts index 664b9434..2f80de02 100644 --- a/src/services/worker/SDKAgent.ts +++ b/src/services/worker/SDKAgent.ts @@ -11,13 +11,13 @@ import { execSync } from 'child_process'; import { homedir } from 'os'; import path from 'path'; -import { existsSync, readFileSync } from 'fs'; import { DatabaseManager } from './DatabaseManager.js'; import { SessionManager } from './SessionManager.js'; import { logger } from '../../utils/logger.js'; import { silentDebug } from '../../utils/silent-debug.js'; import { parseObservations, parseSummary } from '../../sdk/parser.js'; import { buildInitPrompt, buildObservationPrompt, buildSummaryPrompt, buildContinuationPrompt } from '../../sdk/prompts.js'; +import { SettingsDefaultsManager } from './settings/SettingsDefaultsManager.js'; import type { ActiveSession, SDKUserMessage, PendingMessage } from '../worker-types.js'; // Import Agent SDK (assumes it's installed) @@ -425,17 +425,8 @@ export class SDKAgent { * Get model ID from settings or environment */ private getModelId(): string { - try { - const settingsPath = path.join(homedir(), '.claude-mem', 'settings.json'); - if (existsSync(settingsPath)) { - const settings = JSON.parse(readFileSync(settingsPath, 'utf-8')); - const modelId = settings.env?.CLAUDE_MEM_MODEL; - if (modelId) return modelId; - } - } catch { - // Fall through to env var or default - } - - return process.env.CLAUDE_MEM_MODEL || 'claude-haiku-4-5'; + const settingsPath = path.join(homedir(), '.claude-mem', 'settings.json'); + const settings = SettingsDefaultsManager.loadFromFile(settingsPath); + return settings.CLAUDE_MEM_MODEL; } } diff --git a/src/servers/search-server.ts b/src/services/worker/SearchManager.ts similarity index 51% rename from src/servers/search-server.ts rename to src/services/worker/SearchManager.ts index 63c00849..d43c50b6 100644 --- a/src/servers/search-server.ts +++ b/src/services/worker/SearchManager.ts @@ -1,467 +1,89 @@ /** - * Claude-mem MCP Search Server - * Exposes SessionSearch capabilities as MCP tools with search_result formatting + * SearchManager - Core search orchestration for claude-mem + * Extracted from mcp-server.ts to centralize business logic in Worker services + * + * This class contains all tool handler logic that was previously in the MCP server. + * The MCP server now acts as a thin HTTP wrapper that calls these methods via HTTP. */ -import { Server } from '@modelcontextprotocol/sdk/server/index.js'; -import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; -import { Client } from '@modelcontextprotocol/sdk/client/index.js'; -import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'; -import { - CallToolRequestSchema, - ListToolsRequestSchema, -} from '@modelcontextprotocol/sdk/types.js'; -import { z } from 'zod'; -import { zodToJsonSchema } from 'zod-to-json-schema'; import { basename } from 'path'; -import { SessionSearch } from '../services/sqlite/SessionSearch.js'; -import { SessionStore } from '../services/sqlite/SessionStore.js'; -import { ObservationSearchResult, SessionSummarySearchResult, UserPromptSearchResult } from '../services/sqlite/types.js'; -import { VECTOR_DB_DIR } from '../shared/paths.js'; -import { silentDebug } from '../utils/silent-debug.js'; +import { SessionSearch } from '../sqlite/SessionSearch.js'; +import { SessionStore } from '../sqlite/SessionStore.js'; +import { ChromaSync } from '../sync/ChromaSync.js'; +import { FormattingService } from './FormattingService.js'; +import { TimelineService, TimelineItem } from './TimelineService.js'; +import { ObservationSearchResult, SessionSummarySearchResult, UserPromptSearchResult } from '../sqlite/types.js'; +import { silentDebug } from '../../utils/silent-debug.js'; -// Initialize search instances -let search: SessionSearch; -let store: SessionStore; -let chromaClient: Client | null = null; const COLLECTION_NAME = 'cm__claude-mem'; -try { - search = new SessionSearch(); - store = new SessionStore(); -} catch (error: any) { - console.error('[search-server] Failed to initialize search:', error.message); - process.exit(1); -} +export class SearchManager { + constructor( + private sessionSearch: SessionSearch, + private sessionStore: SessionStore, + private chromaSync: ChromaSync, + private formatter: FormattingService, + private timelineService: TimelineService + ) {} -/** - * Query Chroma vector database via MCP - */ -async function queryChroma( - query: string, - limit: number, - whereFilter?: Record -): Promise<{ ids: number[]; distances: number[]; metadatas: any[] }> { - if (!chromaClient) { - throw new Error('Chroma client not initialized'); + /** + * Query Chroma vector database via ChromaSync + */ + private async queryChroma( + query: string, + limit: number, + whereFilter?: Record + ): Promise<{ ids: number[]; distances: number[]; metadatas: any[] }> { + return await this.chromaSync.queryChroma(query, limit, whereFilter); } - silentDebug('queryChroma called', { query, limit, whereFilter }); + /** + * Helper to normalize query parameters from URL-friendly format + * Converts comma-separated strings to arrays and flattens date params + */ + private normalizeParams(args: any): any { + const normalized: any = { ...args }; - const whereStringified = whereFilter ? JSON.stringify(whereFilter) : undefined; - silentDebug('where filter stringified', { whereFilter, whereStringified }); - - const arguments_obj = { - collection_name: COLLECTION_NAME, - query_texts: [query], - n_results: limit, - include: ['documents', 'metadatas', 'distances'], - where: whereStringified - }; - silentDebug('calling chroma_query_documents', arguments_obj); - - const result = await chromaClient.callTool({ - name: 'chroma_query_documents', - arguments: arguments_obj - }); - - const resultText = result.content[0]?.text || ''; - silentDebug('chroma response received', { - hasContent: !!result.content[0]?.text, - textLength: resultText.length, - textPreview: resultText.substring(0, 200) - }); - - // Parse JSON response - let parsed: any; - try { - parsed = JSON.parse(resultText); - } catch (error) { - console.error('[search-server] Failed to parse Chroma response as JSON:', error); - console.error('[search-server] Raw Chroma response:', resultText); - return { ids: [], distances: [], metadatas: [] }; - } - - // Extract unique IDs from document IDs - const ids: number[] = []; - const docIds = parsed.ids?.[0] || []; - for (const docId of docIds) { - // Extract sqlite_id from document ID (supports three formats): - // - obs_{id}_narrative, obs_{id}_fact_0, etc (observations) - // - summary_{id}_request, summary_{id}_learned, etc (session summaries) - // - prompt_{id} (user prompts) - const obsMatch = docId.match(/obs_(\d+)_/); - const summaryMatch = docId.match(/summary_(\d+)_/); - const promptMatch = docId.match(/prompt_(\d+)/); - - let sqliteId: number | null = null; - if (obsMatch) { - sqliteId = parseInt(obsMatch[1], 10); - } else if (summaryMatch) { - sqliteId = parseInt(summaryMatch[1], 10); - } else if (promptMatch) { - sqliteId = parseInt(promptMatch[1], 10); + // Parse comma-separated concepts into array + if (normalized.concepts && typeof normalized.concepts === 'string') { + normalized.concepts = normalized.concepts.split(',').map((s: string) => s.trim()).filter(Boolean); } - if (sqliteId !== null && !ids.includes(sqliteId)) { - ids.push(sqliteId); + // Parse comma-separated files into array + if (normalized.files && typeof normalized.files === 'string') { + normalized.files = normalized.files.split(',').map((s: string) => s.trim()).filter(Boolean); } - } - const distances = parsed.distances?.[0] || []; - const metadatas = parsed.metadatas?.[0] || []; - - return { ids, distances, metadatas }; -} - -/** - * Format search tips footer - */ -function formatSearchTips(): string { - return `\n--- -💡 Search Strategy: -ALWAYS search with index format FIRST to get an overview and identify relevant results. -This is critical for token efficiency - index format uses ~10x fewer tokens than full format. - -Search workflow: -1. Initial search: Use default (index) format to see titles, dates, and sources -2. Review results: Identify which items are most relevant to your needs -3. Deep dive: Only then use format: "full" on specific items of interest -4. Narrow down: Use filters (type, dateStart/dateEnd, concepts, files) to refine results - -Other tips: -• To search by concept: Use find_by_concept tool -• To browse by type: Use find_by_type with ["decision", "feature", etc.] -• To sort by date: Use orderBy: "date_desc" or "date_asc"`; -} - -/** - * Timeline item for unified chronological display - */ -interface TimelineItem { - type: 'observation' | 'session' | 'prompt'; - data: any; - epoch: number; -} - -/** - * Filter timeline items to respect depth_before/depth_after window around anchor - */ -function filterTimelineByDepth( - items: TimelineItem[], - anchorId: number | string, - anchorEpoch: number, - depth_before: number, - depth_after: number -): TimelineItem[] { - if (items.length === 0) return items; - - let anchorIndex = -1; - if (typeof anchorId === 'number') { - anchorIndex = items.findIndex(item => item.type === 'observation' && item.data.id === anchorId); - } else if (typeof anchorId === 'string' && anchorId.startsWith('S')) { - const sessionNum = parseInt(anchorId.slice(1), 10); - anchorIndex = items.findIndex(item => item.type === 'session' && item.data.id === sessionNum); - } else { - // Timestamp anchor - find closest item - anchorIndex = items.findIndex(item => item.epoch >= anchorEpoch); - if (anchorIndex === -1) anchorIndex = items.length - 1; - } - - if (anchorIndex === -1) return items; - - const startIndex = Math.max(0, anchorIndex - depth_before); - const endIndex = Math.min(items.length, anchorIndex + depth_after + 1); - return items.slice(startIndex, endIndex); -} - -/** - * Format observation as index entry (title, date, ID only) - */ -function formatObservationIndex(obs: ObservationSearchResult, index: number): string { - const title = obs.title || `Observation #${obs.id}`; - const date = new Date(obs.created_at_epoch).toLocaleString(); - const type = obs.type ? `[${obs.type}]` : ''; - - return `${index + 1}. ${type} ${title} - Date: ${date} - Source: claude-mem://observation/${obs.id}`; -} - -/** - * Format session summary as index entry (title, date, ID only) - */ -function formatSessionIndex(session: SessionSummarySearchResult, index: number): string { - const title = session.request || `Session ${session.sdk_session_id?.substring(0, 8) || 'unknown'}`; - const date = new Date(session.created_at_epoch).toLocaleString(); - - return `${index + 1}. ${title} - Date: ${date} - Source: claude-mem://session/${session.sdk_session_id}`; -} - -/** - * Format observation as text content with metadata - */ -function formatObservationResult(obs: ObservationSearchResult): string { - const title = obs.title || `Observation #${obs.id}`; - - // Build content from available fields - const contentParts: string[] = []; - contentParts.push(`## ${title}`); - contentParts.push(`*Source: claude-mem://observation/${obs.id}*`); - contentParts.push(''); - - if (obs.subtitle) { - contentParts.push(`**${obs.subtitle}**`); - contentParts.push(''); - } - - if (obs.narrative) { - contentParts.push(obs.narrative); - contentParts.push(''); - } - - if (obs.text) { - contentParts.push(obs.text); - contentParts.push(''); - } - - // Add metadata - const metadata: string[] = []; - metadata.push(`Type: ${obs.type}`); - - if (obs.facts) { - try { - const facts = JSON.parse(obs.facts); - if (facts.length > 0) { - metadata.push(`Facts: ${facts.join('; ')}`); - } - } catch {} - } - - if (obs.concepts) { - try { - const concepts = JSON.parse(obs.concepts); - if (concepts.length > 0) { - metadata.push(`Concepts: ${concepts.join(', ')}`); - } - } catch {} - } - - if (obs.files_read || obs.files_modified) { - const files: string[] = []; - if (obs.files_read) { - try { - files.push(...JSON.parse(obs.files_read)); - } catch {} + // Parse comma-separated obs_type into array + if (normalized.obs_type && typeof normalized.obs_type === 'string') { + normalized.obs_type = normalized.obs_type.split(',').map((s: string) => s.trim()).filter(Boolean); } - if (obs.files_modified) { - try { - files.push(...JSON.parse(obs.files_modified)); - } catch {} + + // Parse comma-separated type (for filterSchema) into array + if (normalized.type && typeof normalized.type === 'string' && normalized.type.includes(',')) { + normalized.type = normalized.type.split(',').map((s: string) => s.trim()).filter(Boolean); } - if (files.length > 0) { - metadata.push(`Files: ${[...new Set(files)].join(', ')}`); + + // Flatten dateStart/dateEnd into dateRange object + if (normalized.dateStart || normalized.dateEnd) { + normalized.dateRange = { + start: normalized.dateStart, + end: normalized.dateEnd + }; + delete normalized.dateStart; + delete normalized.dateEnd; } + + return normalized; } - if (metadata.length > 0) { - contentParts.push('---'); - contentParts.push(metadata.join(' | ')); - } - - // Add date - const date = new Date(obs.created_at_epoch).toLocaleString(); - contentParts.push(''); - contentParts.push(`---`); - contentParts.push(`Date: ${date}`); - - return contentParts.join('\n'); -} - -/** - * Format session summary as text content with metadata - */ -function formatSessionResult(session: SessionSummarySearchResult): string { - const title = session.request || `Session ${session.sdk_session_id?.substring(0, 8) || 'unknown'}`; - - // Build content from available fields - const contentParts: string[] = []; - contentParts.push(`## ${title}`); - contentParts.push(`*Source: claude-mem://session/${session.sdk_session_id}*`); - contentParts.push(''); - - if (session.completed) { - contentParts.push(`**Completed:** ${session.completed}`); - contentParts.push(''); - } - - if (session.learned) { - contentParts.push(`**Learned:** ${session.learned}`); - contentParts.push(''); - } - - if (session.investigated) { - contentParts.push(`**Investigated:** ${session.investigated}`); - contentParts.push(''); - } - - if (session.next_steps) { - contentParts.push(`**Next Steps:** ${session.next_steps}`); - contentParts.push(''); - } - - if (session.notes) { - contentParts.push(`**Notes:** ${session.notes}`); - contentParts.push(''); - } - - // Add metadata - const metadata: string[] = []; - - if (session.files_read || session.files_edited) { - const files: string[] = []; - if (session.files_read) { - try { - files.push(...JSON.parse(session.files_read)); - } catch {} - } - if (session.files_edited) { - try { - files.push(...JSON.parse(session.files_edited)); - } catch {} - } - if (files.length > 0) { - metadata.push(`Files: ${[...new Set(files)].join(', ')}`); - } - } - - const date = new Date(session.created_at_epoch).toLocaleDateString(); - metadata.push(`Date: ${date}`); - - if (metadata.length > 0) { - contentParts.push('---'); - contentParts.push(metadata.join(' | ')); - } - - return contentParts.join('\n'); -} - -/** - * Format user prompt as index entry (full text - don't truncate context!) - */ -function formatUserPromptIndex(prompt: UserPromptSearchResult, index: number): string { - const date = new Date(prompt.created_at_epoch).toLocaleString(); - - return `${index + 1}. "${prompt.prompt_text}" - Date: ${date} | Prompt #${prompt.prompt_number} - Source: claude-mem://user-prompt/${prompt.id}`; -} - -/** - * Format user prompt as text content with metadata - */ -function formatUserPromptResult(prompt: UserPromptSearchResult): string { - const contentParts: string[] = []; - contentParts.push(`## User Prompt #${prompt.prompt_number}`); - contentParts.push(`*Source: claude-mem://user-prompt/${prompt.id}*`); - contentParts.push(''); - contentParts.push(prompt.prompt_text); - contentParts.push(''); - contentParts.push('---'); - - const date = new Date(prompt.created_at_epoch).toLocaleString(); - contentParts.push(`Date: ${date}`); - - return contentParts.join('\n'); -} - -/** - * Helper to normalize query parameters from URL-friendly format - * Converts comma-separated strings to arrays and flattens date params - */ -function normalizeParams(args: any): any { - const normalized: any = { ...args }; - - // Parse comma-separated concepts into array - if (normalized.concepts && typeof normalized.concepts === 'string') { - normalized.concepts = normalized.concepts.split(',').map((s: string) => s.trim()).filter(Boolean); - } - - // Parse comma-separated files into array - if (normalized.files && typeof normalized.files === 'string') { - normalized.files = normalized.files.split(',').map((s: string) => s.trim()).filter(Boolean); - } - - // Parse comma-separated obs_type into array - if (normalized.obs_type && typeof normalized.obs_type === 'string') { - normalized.obs_type = normalized.obs_type.split(',').map((s: string) => s.trim()).filter(Boolean); - } - - // Parse comma-separated type (for filterSchema) into array - if (normalized.type && typeof normalized.type === 'string' && normalized.type.includes(',')) { - normalized.type = normalized.type.split(',').map((s: string) => s.trim()).filter(Boolean); - } - - // Flatten dateStart/dateEnd into dateRange object - if (normalized.dateStart || normalized.dateEnd) { - normalized.dateRange = { - start: normalized.dateStart, - end: normalized.dateEnd - }; - delete normalized.dateStart; - delete normalized.dateEnd; - } - - return normalized; -} - -/** - * Common filter schema (accepts simple strings that get normalized to arrays) - */ -const filterSchema = z.object({ - project: z.string().optional().describe('Filter by project name'), - type: z.union([ - z.enum(['decision', 'bugfix', 'feature', 'refactor', 'discovery', 'change']), - z.array(z.enum(['decision', 'bugfix', 'feature', 'refactor', 'discovery', 'change'])) - ]).optional().describe('Filter by observation type (single value or comma-separated list)'), - concepts: z.union([z.string(), z.array(z.string())]).optional().describe('Filter by concept tags (single value or comma-separated list)'), - files: z.union([z.string(), z.array(z.string())]).optional().describe('Filter by file paths (single value or comma-separated list for partial match)'), - dateStart: z.union([z.string(), z.number()]).optional().describe('Start date (ISO string or epoch)'), - dateEnd: z.union([z.string(), z.number()]).optional().describe('End date (ISO string or epoch)'), - dateRange: z.object({ - start: z.union([z.string(), z.number()]).optional().describe('Start date (ISO string or epoch)'), - end: z.union([z.string(), z.number()]).optional().describe('End date (ISO string or epoch)') - }).optional().describe('Filter by date range (use dateStart/dateEnd instead for simpler URLs)'), - limit: z.number().min(1).max(100).default(20).describe('Maximum number of results'), - offset: z.number().min(0).default(0).describe('Number of results to skip'), - orderBy: z.enum(['relevance', 'date_desc', 'date_asc']).default('date_desc').describe('Sort order') -}); - -// Define tool schemas -const tools = [ - { - name: 'search', - description: 'Unified search across all memory types (observations, sessions, and user prompts) using vector-first semantic search (ChromaDB). Returns combined results from all document types. IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.', - inputSchema: z.object({ - query: z.string().optional().describe('Natural language search query for semantic ranking via ChromaDB vector search. Optional - omit for date-filtered queries only (Chroma cannot filter by date, requires direct SQLite).'), - format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'), - type: z.enum(['observations', 'sessions', 'prompts']).optional().describe('Filter by document type (observations, sessions, or prompts). Omit to search all types.'), - obs_type: z.string().optional().describe('Filter observations by type (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change). Only applies when type="observations"'), - concepts: z.string().optional().describe('Filter by concept tags (single value or comma-separated list). Only applies when type="observations"'), - files: z.string().optional().describe('Filter by file paths (single value or comma-separated list for partial match). Only applies when type="observations"'), - project: z.string().optional().describe('Filter by project name'), - dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), - dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)'), - limit: z.number().min(1).max(100).default(20).describe('Maximum number of results'), - offset: z.number().min(0).default(0).describe('Number of results to skip'), - orderBy: z.enum(['relevance', 'date_desc', 'date_asc']).default('date_desc').describe('Sort order') - }), - handler: async (args: any) => { + /** + * Tool handler: search + */ + async search(args: any): Promise { try { // Normalize URL-friendly params to internal format - const normalized = normalizeParams(args); + const normalized = this.normalizeParams(args); const { query, format = 'index', type, obs_type, concepts, files, ...options } = normalized; let observations: ObservationSearchResult[] = []; let sessions: SessionSummarySearchResult[] = []; @@ -475,23 +97,23 @@ const tools = [ // PATH 1: FILTER-ONLY (no query text) - Skip Chroma/FTS5, use direct SQLite filtering // This path enables date filtering which Chroma cannot do (requires direct SQLite access) if (!query) { - console.error(`[search-server] Filter-only query (no query text), using direct SQLite filtering (enables date filters)`); + silentDebug(`[search-server] Filter-only query (no query text), using direct SQLite filtering (enables date filters)`); const obsOptions = { ...options, type: obs_type, concepts, files }; if (searchObservations) { - observations = search.searchObservations(undefined, obsOptions); + observations = this.sessionSearch.searchObservations(undefined, obsOptions); } if (searchSessions) { - sessions = search.searchSessions(undefined, options); + sessions = this.sessionSearch.searchSessions(undefined, options); } if (searchPrompts) { - prompts = search.searchUserPrompts(undefined, options); + prompts = this.sessionSearch.searchUserPrompts(undefined, options); } } // PATH 2: CHROMA SEMANTIC SEARCH (query text + Chroma available) - else if (chromaClient) { + else if (this.chromaSync) { let chromaSucceeded = false; try { - console.error(`[search-server] Using ChromaDB semantic search (type filter: ${type || 'all'})`); + silentDebug(`[search-server] Using ChromaDB semantic search (type filter: ${type || 'all'})`); // Build Chroma where filter for doc_type let whereFilter: Record | undefined; @@ -504,9 +126,9 @@ const tools = [ } // Step 1: Chroma semantic search with optional type filter - const chromaResults = await queryChroma(query, 100, whereFilter); + const chromaResults = await this.queryChroma(query, 100, whereFilter); chromaSucceeded = true; // Chroma didn't throw error - console.error(`[search-server] ChromaDB returned ${chromaResults.ids.length} semantic matches`); + silentDebug(`[search-server] ChromaDB returned ${chromaResults.ids.length} semantic matches`); if (chromaResults.ids.length > 0) { // Step 2: Filter by recency (90 days) @@ -517,7 +139,7 @@ const tools = [ isRecent: meta && meta.created_at_epoch > ninetyDaysAgo })).filter(item => item.isRecent); - console.error(`[search-server] ${recentMetadata.length} results within 90-day window`); + silentDebug(`[search-server] ${recentMetadata.length} results within 90-day window`); // Step 3: Categorize IDs by document type const obsIds: number[] = []; @@ -535,29 +157,29 @@ const tools = [ } } - console.error(`[search-server] Categorized: ${obsIds.length} obs, ${sessionIds.length} sessions, ${promptIds.length} prompts`); + silentDebug(`[search-server] Categorized: ${obsIds.length} obs, ${sessionIds.length} sessions, ${promptIds.length} prompts`); // Step 4: Hydrate from SQLite with additional filters if (obsIds.length > 0) { // Apply obs_type, concepts, files filters if provided const obsOptions = { ...options, type: obs_type, concepts, files }; - observations = store.getObservationsByIds(obsIds, obsOptions); + observations = this.sessionStore.getObservationsByIds(obsIds, obsOptions); } if (sessionIds.length > 0) { - sessions = store.getSessionSummariesByIds(sessionIds, { orderBy: 'date_desc', limit: options.limit }); + sessions = this.sessionStore.getSessionSummariesByIds(sessionIds, { orderBy: 'date_desc', limit: options.limit }); } if (promptIds.length > 0) { - prompts = store.getUserPromptsByIds(promptIds, { orderBy: 'date_desc', limit: options.limit }); + prompts = this.sessionStore.getUserPromptsByIds(promptIds, { orderBy: 'date_desc', limit: options.limit }); } - console.error(`[search-server] Hydrated ${observations.length} obs, ${sessions.length} sessions, ${prompts.length} prompts from SQLite`); + silentDebug(`[search-server] Hydrated ${observations.length} obs, ${sessions.length} sessions, ${prompts.length} prompts from SQLite`); } else { // Chroma returned 0 results - this is the correct answer, don't fall back to FTS5 - console.error(`[search-server] ChromaDB found no matches (this is final - NOT falling back to FTS5)`); + silentDebug(`[search-server] ChromaDB found no matches (this is final - NOT falling back to FTS5)`); } } catch (chromaError: any) { - console.error('[search-server] ChromaDB failed - returning empty results (FTS5 fallback removed):', chromaError.message); - console.error('[search-server] Install UVX/Python to enable vector search: https://docs.astral.sh/uv/getting-started/installation/'); + silentDebug('[search-server] ChromaDB failed - returning empty results (FTS5 fallback removed):', chromaError.message); + silentDebug('[search-server] Install UVX/Python to enable vector search: https://docs.astral.sh/uv/getting-started/installation/'); // Return empty results - no fallback observations = []; sessions = []; @@ -566,8 +188,8 @@ const tools = [ } // ChromaDB not initialized - return empty results (no fallback) else { - console.error(`[search-server] ChromaDB not initialized - returning empty results (FTS5 fallback removed)`); - console.error(`[search-server] Install UVX/Python to enable vector search: https://docs.astral.sh/uv/getting-started/installation/`); + silentDebug(`[search-server] ChromaDB not initialized - returning empty results (FTS5 fallback removed)`); + silentDebug(`[search-server] Install UVX/Python to enable vector search: https://docs.astral.sh/uv/getting-started/installation/`); observations = []; sessions = []; prompts = []; @@ -613,22 +235,22 @@ const tools = [ const header = `Found ${totalResults} result(s) matching "${query}" (${observations.length} obs, ${sessions.length} sessions, ${prompts.length} prompts):\n\n`; const formattedResults = limitedResults.map((item, i) => { if (item.type === 'observation') { - return formatObservationIndex(item.data, i); + return this.formatter.formatObservationIndex(item.data, i); } else if (item.type === 'session') { - return formatSessionIndex(item.data, i); + return this.formatter.formatSessionIndex(item.data, i); } else { - return formatUserPromptIndex(item.data, i); + return this.formatter.formatUserPromptIndex(item.data, i); } }); - combinedText = header + formattedResults.join('\n\n') + formatSearchTips(); + combinedText = header + formattedResults.join('\n\n') + this.formatter.formatSearchTips(); } else { const formattedResults = limitedResults.map(item => { if (item.type === 'observation') { - return formatObservationResult(item.data); + return this.formatter.formatObservationResult(item.data); } else if (item.type === 'session') { - return formatSessionResult(item.data); + return this.formatter.formatSessionResult(item.data); } else { - return formatUserPromptResult(item.data); + return this.formatter.formatUserPromptResult(item.data); } }); combinedText = formattedResults.join('\n\n---\n\n'); @@ -649,22 +271,12 @@ const tools = [ isError: true }; } - } - }, - { - name: 'timeline', - description: 'Get a unified timeline of context around a specific point in time OR search query. Supports two modes: (1) anchor-based: provide observation ID, session ID, or timestamp to center timeline around; (2) query-based: provide natural language query to find relevant observation and center timeline around it. All record types (observations, sessions, prompts) are interleaved chronologically.', - inputSchema: z.object({ - anchor: z.union([ - z.number(), - z.string() - ]).optional().describe('Anchor point: observation ID (number), session ID (e.g., "S123"), or ISO timestamp. Use this OR query, not both.'), - query: z.string().optional().describe('Natural language search query to find relevant observation as anchor. Use this OR anchor, not both.'), - depth_before: z.number().min(0).max(50).default(10).describe('Number of records to retrieve before anchor (default: 10)'), - depth_after: z.number().min(0).max(50).default(10).describe('Number of records to retrieve after anchor (default: 10)'), - project: z.string().optional().describe('Filter by project name') - }), - handler: async (args: any) => { + } + + /** + * Tool handler: timeline + */ + async timeline(args: any): Promise { try { const { anchor, query, depth_before = 10, depth_after = 10, project } = args; @@ -691,20 +303,20 @@ const tools = [ let anchorId: string | number; let anchorEpoch: number; - let timeline: any; + let timelineData: any; // MODE 1: Query-based timeline if (query) { // Step 1: Search for observations let results: ObservationSearchResult[] = []; - if (chromaClient) { + if (this.chromaSync) { try { - console.error('[search-server] Using hybrid semantic search for timeline query'); - const chromaResults = await queryChroma(query, 100); - console.error(`[search-server] Chroma returned ${chromaResults.ids.length} semantic matches`); + silentDebug('[search-server] Using hybrid semantic search for timeline query'); + const chromaResults = await this.queryChroma(query, 100); + silentDebug(`[search-server] Chroma returned ${chromaResults?.ids?.length ?? 0} semantic matches`); - if (chromaResults.ids.length > 0) { + if (chromaResults?.ids && chromaResults.ids.length > 0) { const ninetyDaysAgo = Date.now() - (90 * 24 * 60 * 60 * 1000); const recentIds = chromaResults.ids.filter((_id, idx) => { const meta = chromaResults.metadatas[idx]; @@ -712,11 +324,11 @@ const tools = [ }); if (recentIds.length > 0) { - results = store.getObservationsByIds(recentIds, { orderBy: 'date_desc', limit: 1 }); + results = this.sessionStore.getObservationsByIds(recentIds, { orderBy: 'date_desc', limit: 1 }); } } } catch (chromaError: any) { - console.error('[search-server] Chroma query failed - no results (FTS5 fallback removed):', chromaError.message); + silentDebug('[search-server] Chroma query failed - no results (FTS5 fallback removed):', chromaError.message); } } @@ -733,13 +345,13 @@ const tools = [ const topResult = results[0]; anchorId = topResult.id; anchorEpoch = topResult.created_at_epoch; - console.error(`[search-server] Query mode: Using observation #${topResult.id} as timeline anchor`); - timeline = store.getTimelineAroundObservation(topResult.id, topResult.created_at_epoch, depth_before, depth_after, project); + silentDebug(`[search-server] Query mode: Using observation #${topResult.id} as timeline anchor`); + timelineData = this.sessionStore.getTimelineAroundObservation(topResult.id, topResult.created_at_epoch, depth_before, depth_after, project); } // MODE 2: Anchor-based timeline else if (typeof anchor === 'number') { // Observation ID - const obs = store.getObservationById(anchor); + const obs = this.sessionStore.getObservationById(anchor); if (!obs) { return { content: [{ @@ -751,13 +363,13 @@ const tools = [ } anchorId = anchor; anchorEpoch = obs.created_at_epoch; - timeline = store.getTimelineAroundObservation(anchor, anchorEpoch, depth_before, depth_after, project); + timelineData = this.sessionStore.getTimelineAroundObservation(anchor, anchorEpoch, depth_before, depth_after, project); } else if (typeof anchor === 'string') { // Session ID or ISO timestamp if (anchor.startsWith('S') || anchor.startsWith('#S')) { const sessionId = anchor.replace(/^#?S/, ''); const sessionNum = parseInt(sessionId, 10); - const sessions = store.getSessionSummariesByIds([sessionNum]); + const sessions = this.sessionStore.getSessionSummariesByIds([sessionNum]); if (sessions.length === 0) { return { content: [{ @@ -769,7 +381,7 @@ const tools = [ } anchorEpoch = sessions[0].created_at_epoch; anchorId = `S${sessionNum}`; - timeline = store.getTimelineAroundTimestamp(anchorEpoch, depth_before, depth_after, project); + timelineData = this.sessionStore.getTimelineAroundTimestamp(anchorEpoch, depth_before, depth_after, project); } else { // ISO timestamp const date = new Date(anchor); @@ -784,7 +396,7 @@ const tools = [ } anchorEpoch = date.getTime(); anchorId = anchor; - timeline = store.getTimelineAroundTimestamp(anchorEpoch, depth_before, depth_after, project); + timelineData = this.sessionStore.getTimelineAroundTimestamp(anchorEpoch, depth_before, depth_after, project); } } else { return { @@ -798,14 +410,14 @@ const tools = [ // Combine, sort, and filter timeline items const items: TimelineItem[] = [ - ...timeline.observations.map((obs: any) => ({ type: 'observation' as const, data: obs, epoch: obs.created_at_epoch })), - ...timeline.sessions.map((sess: any) => ({ type: 'session' as const, data: sess, epoch: sess.created_at_epoch })), - ...timeline.prompts.map((prompt: any) => ({ type: 'prompt' as const, data: prompt, epoch: prompt.created_at_epoch })) + ...(timelineData.observations || []).map((obs: any) => ({ type: 'observation' as const, data: obs, epoch: obs.created_at_epoch })), + ...(timelineData.sessions || []).map((sess: any) => ({ type: 'session' as const, data: sess, epoch: sess.created_at_epoch })), + ...(timelineData.prompts || []).map((prompt: any) => ({ type: 'prompt' as const, data: prompt, epoch: prompt.created_at_epoch })) ]; items.sort((a, b) => a.epoch - b.epoch); - const filteredItems = filterTimelineByDepth(items, anchorId, anchorEpoch, depth_before, depth_after); + const filteredItems = this.timelineService.filterByDepth(items, anchorId, anchorEpoch, depth_before, depth_after); - if (filteredItems.length === 0) { + if (!filteredItems || filteredItems.length === 0) { return { content: [{ type: 'text' as const, @@ -817,25 +429,25 @@ const tools = [ } // Format timeline (helper functions) - function formatDate(epochMs: number): string { + const formatDate = (epochMs: number): string => { const date = new Date(epochMs); return date.toLocaleString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }); - } + }; - function formatTime(epochMs: number): string { + const formatTime = (epochMs: number): string => { const date = new Date(epochMs); return date.toLocaleString('en-US', { hour: 'numeric', minute: '2-digit', hour12: true }); - } + }; - function formatDateTime(epochMs: number): string { + const formatDateTime = (epochMs: number): string => { const date = new Date(epochMs); return date.toLocaleString('en-US', { month: 'short', @@ -844,12 +456,12 @@ const tools = [ minute: '2-digit', hour12: true }); - } + }; - function estimateTokens(text: string | null): number { + const estimateTokens = (text: string | null): number => { if (!text) return 0; return Math.ceil(text.length / 4); - } + }; // Format results const lines: string[] = []; @@ -857,14 +469,14 @@ const tools = [ // Header if (query) { const anchorObs = filteredItems.find(item => item.type === 'observation' && item.data.id === anchorId); - const anchorTitle = anchorObs ? (anchorObs.data.title || 'Untitled') : 'Unknown'; + const anchorTitle = anchorObs && anchorObs.type === 'observation' ? ((anchorObs.data as ObservationSearchResult).title || 'Untitled') : 'Unknown'; lines.push(`# Timeline for query: "${query}"`); lines.push(`**Anchor:** Observation #${anchorId} - ${anchorTitle}`); } else { lines.push(`# Timeline around anchor: ${anchorId}`); } - lines.push(`**Window:** ${depth_before} records before → ${depth_after} records after | **Items:** ${filteredItems.length}`); + lines.push(`**Window:** ${depth_before} records before → ${depth_after} records after | **Items:** ${filteredItems?.length ?? 0}`); lines.push(''); // Legend @@ -911,7 +523,7 @@ const tools = [ lastTime = ''; } - const sess = item.data; + const sess = item.data as SessionSummarySearchResult; const title = sess.request || 'Session summary'; const link = `claude-mem://session-summary/${sess.id}`; const marker = isAnchor ? ' ← **ANCHOR**' : ''; @@ -926,14 +538,14 @@ const tools = [ lastTime = ''; } - const prompt = item.data; - const truncated = prompt.prompt.length > 100 ? prompt.prompt.substring(0, 100) + '...' : prompt.prompt; + const prompt = item.data as UserPromptSearchResult; + const truncated = prompt.prompt_text.length > 100 ? prompt.prompt_text.substring(0, 100) + '...' : prompt.prompt_text; lines.push(`**💬 User Prompt #${prompt.prompt_number}** (${formatDateTime(item.epoch)})`); lines.push(`> ${truncated}`); lines.push(''); } else if (item.type === 'observation') { - const obs = item.data; + const obs = item.data as ObservationSearchResult; const file = 'General'; if (file !== currentFile) { @@ -993,49 +605,39 @@ const tools = [ isError: true }; } - } - }, - { - name: 'decisions', - description: 'Semantic shortcut to find decision-type observations. Returns observations where important architectural, technical, or process decisions were made. Supports optional semantic search query to filter decisions by relevance.', - inputSchema: z.object({ - query: z.string().optional().describe('Search query to filter decisions semantically'), - format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default), "full" for complete details'), - project: z.string().optional().describe('Filter by project name'), - dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), - dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)'), - limit: z.number().min(1).max(100).default(20).describe('Maximum number of results'), - offset: z.number().min(0).default(0).describe('Number of results to skip'), - orderBy: z.enum(['relevance', 'date_desc', 'date_asc']).default('date_desc').describe('Sort order') - }), - handler: async (args: any) => { + } + + /** + * Tool handler: decisions + */ + async decisions(args: any): Promise { try { - const normalized = normalizeParams(args); + const normalized = this.normalizeParams(args); const { query, format = 'index', ...filters } = normalized; let results: ObservationSearchResult[] = []; // Search for decision-type observations - if (chromaClient) { + if (this.chromaSync) { try { if (query) { // Semantic search filtered to decision type - console.error('[search-server] Using Chroma semantic search with type=decision filter'); - const chromaResults = await queryChroma(query, Math.min((filters.limit || 20) * 2, 100), { type: 'decision' }); + silentDebug('[search-server] Using Chroma semantic search with type=decision filter'); + const chromaResults = await this.queryChroma(query, Math.min((filters.limit || 20) * 2, 100), { type: 'decision' }); const obsIds = chromaResults.ids; if (obsIds.length > 0) { - results = store.getObservationsByIds(obsIds, { ...filters, type: 'decision' }); + results = this.sessionStore.getObservationsByIds(obsIds, { ...filters, type: 'decision' }); // Preserve Chroma ranking order results.sort((a, b) => obsIds.indexOf(a.id) - obsIds.indexOf(b.id)); } } else { // No query: get all decisions, rank by "decision" keyword - console.error('[search-server] Using metadata-first + semantic ranking for decisions'); - const metadataResults = search.findByType('decision', filters); + silentDebug('[search-server] Using metadata-first + semantic ranking for decisions'); + const metadataResults = this.sessionSearch.findByType('decision', filters); if (metadataResults.length > 0) { const ids = metadataResults.map(obs => obs.id); - const chromaResults = await queryChroma('decision', Math.min(ids.length, 100)); + const chromaResults = await this.queryChroma('decision', Math.min(ids.length, 100)); const rankedIds: number[] = []; for (const chromaId of chromaResults.ids) { @@ -1045,18 +647,18 @@ const tools = [ } if (rankedIds.length > 0) { - results = store.getObservationsByIds(rankedIds, { limit: filters.limit || 20 }); + results = this.sessionStore.getObservationsByIds(rankedIds, { limit: filters.limit || 20 }); results.sort((a, b) => rankedIds.indexOf(a.id) - rankedIds.indexOf(b.id)); } } } } catch (chromaError: any) { - console.error('[search-server] Chroma search failed, using SQLite fallback:', chromaError.message); + silentDebug('[search-server] Chroma search failed, using SQLite fallback:', chromaError.message); } } if (results.length === 0) { - results = search.findByType('decision', filters); + results = this.sessionSearch.findByType('decision', filters); } if (results.length === 0) { @@ -1071,10 +673,10 @@ const tools = [ let combinedText: string; if (format === 'index') { const header = `Found ${results.length} decision(s):\n\n`; - const formattedResults = results.map((obs, i) => formatObservationIndex(obs, i)); + const formattedResults = results.map((obs, i) => this.formatter.formatObservationIndex(obs, i)); combinedText = header + formattedResults.join('\n\n'); } else { - const formattedResults = results.map((obs) => formatObservationResult(obs)); + const formattedResults = results.map((obs) => this.formatter.formatObservationResult(obs)); combinedText = formattedResults.join('\n\n---\n\n'); } @@ -1093,35 +695,26 @@ const tools = [ isError: true }; } - } - }, - { - name: 'changes', - description: 'Semantic shortcut to find change-related observations. Returns observations documenting what changed in the codebase, system behavior, or project state. Searches for type="change" OR concept="change" OR concept="what-changed".', - inputSchema: z.object({ - format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default), "full" for complete details'), - project: z.string().optional().describe('Filter by project name'), - dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), - dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)'), - limit: z.number().min(1).max(100).default(20).describe('Maximum number of results'), - offset: z.number().min(0).default(0).describe('Number of results to skip'), - orderBy: z.enum(['relevance', 'date_desc', 'date_asc']).default('date_desc').describe('Sort order') - }), - handler: async (args: any) => { + } + + /** + * Tool handler: changes + */ + async changes(args: any): Promise { try { - const normalized = normalizeParams(args); + const normalized = this.normalizeParams(args); const { format = 'index', ...filters } = normalized; let results: ObservationSearchResult[] = []; // Search for change-type observations and change-related concepts - if (chromaClient) { + if (this.chromaSync) { try { - console.error('[search-server] Using hybrid search for change-related observations'); + silentDebug('[search-server] Using hybrid search for change-related observations'); // Get all observations with type="change" or concepts containing change - const typeResults = search.findByType('change', filters); - const conceptChangeResults = search.findByConcept('change', filters); - const conceptWhatChangedResults = search.findByConcept('what-changed', filters); + const typeResults = this.sessionSearch.findByType('change', filters); + const conceptChangeResults = this.sessionSearch.findByConcept('change', filters); + const conceptWhatChangedResults = this.sessionSearch.findByConcept('what-changed', filters); // Combine and deduplicate const allIds = new Set(); @@ -1129,7 +722,7 @@ const tools = [ if (allIds.size > 0) { const idsArray = Array.from(allIds); - const chromaResults = await queryChroma('what changed', Math.min(idsArray.length, 100)); + const chromaResults = await this.queryChroma('what changed', Math.min(idsArray.length, 100)); const rankedIds: number[] = []; for (const chromaId of chromaResults.ids) { @@ -1139,19 +732,19 @@ const tools = [ } if (rankedIds.length > 0) { - results = store.getObservationsByIds(rankedIds, { limit: filters.limit || 20 }); + results = this.sessionStore.getObservationsByIds(rankedIds, { limit: filters.limit || 20 }); results.sort((a, b) => rankedIds.indexOf(a.id) - rankedIds.indexOf(b.id)); } } } catch (chromaError: any) { - console.error('[search-server] Chroma ranking failed, using SQLite order:', chromaError.message); + silentDebug('[search-server] Chroma ranking failed, using SQLite order:', chromaError.message); } } if (results.length === 0) { - const typeResults = search.findByType('change', filters); - const conceptResults = search.findByConcept('change', filters); - const whatChangedResults = search.findByConcept('what-changed', filters); + const typeResults = this.sessionSearch.findByType('change', filters); + const conceptResults = this.sessionSearch.findByConcept('change', filters); + const whatChangedResults = this.sessionSearch.findByConcept('what-changed', filters); const allIds = new Set(); [...typeResults, ...conceptResults, ...whatChangedResults].forEach(obs => allIds.add(obs.id)); @@ -1178,10 +771,10 @@ const tools = [ let combinedText: string; if (format === 'index') { const header = `Found ${results.length} change-related observation(s):\n\n`; - const formattedResults = results.map((obs, i) => formatObservationIndex(obs, i)); + const formattedResults = results.map((obs, i) => this.formatter.formatObservationIndex(obs, i)); combinedText = header + formattedResults.join('\n\n'); } else { - const formattedResults = results.map((obs) => formatObservationResult(obs)); + const formattedResults = results.map((obs) => this.formatter.formatObservationResult(obs)); combinedText = formattedResults.join('\n\n---\n\n'); } @@ -1200,35 +793,26 @@ const tools = [ isError: true }; } - } - }, - { - name: 'how_it_works', - description: 'Semantic shortcut to find "how it works" explanations. Returns observations documenting system architecture, component interactions, data flow, and technical mechanisms. Searches for concept="how-it-works".', - inputSchema: z.object({ - format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default), "full" for complete details'), - project: z.string().optional().describe('Filter by project name'), - dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), - dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)'), - limit: z.number().min(1).max(100).default(20).describe('Maximum number of results'), - offset: z.number().min(0).default(0).describe('Number of results to skip'), - orderBy: z.enum(['relevance', 'date_desc', 'date_asc']).default('date_desc').describe('Sort order') - }), - handler: async (args: any) => { + } + + /** + * Tool handler: how_it_works + */ + async howItWorks(args: any): Promise { try { - const normalized = normalizeParams(args); + const normalized = this.normalizeParams(args); const { format = 'index', ...filters } = normalized; let results: ObservationSearchResult[] = []; // Search for how-it-works concept observations - if (chromaClient) { + if (this.chromaSync) { try { - console.error('[search-server] Using metadata-first + semantic ranking for how-it-works'); - const metadataResults = search.findByConcept('how-it-works', filters); + silentDebug('[search-server] Using metadata-first + semantic ranking for how-it-works'); + const metadataResults = this.sessionSearch.findByConcept('how-it-works', filters); if (metadataResults.length > 0) { const ids = metadataResults.map(obs => obs.id); - const chromaResults = await queryChroma('how it works architecture', Math.min(ids.length, 100)); + const chromaResults = await this.queryChroma('how it works architecture', Math.min(ids.length, 100)); const rankedIds: number[] = []; for (const chromaId of chromaResults.ids) { @@ -1238,17 +822,17 @@ const tools = [ } if (rankedIds.length > 0) { - results = store.getObservationsByIds(rankedIds, { limit: filters.limit || 20 }); + results = this.sessionStore.getObservationsByIds(rankedIds, { limit: filters.limit || 20 }); results.sort((a, b) => rankedIds.indexOf(a.id) - rankedIds.indexOf(b.id)); } } } catch (chromaError: any) { - console.error('[search-server] Chroma ranking failed, using SQLite order:', chromaError.message); + silentDebug('[search-server] Chroma ranking failed, using SQLite order:', chromaError.message); } } if (results.length === 0) { - results = search.findByConcept('how-it-works', filters); + results = this.sessionSearch.findByConcept('how-it-works', filters); } if (results.length === 0) { @@ -1263,10 +847,10 @@ const tools = [ let combinedText: string; if (format === 'index') { const header = `Found ${results.length} "how it works" observation(s):\n\n`; - const formattedResults = results.map((obs, i) => formatObservationIndex(obs, i)); + const formattedResults = results.map((obs, i) => this.formatter.formatObservationIndex(obs, i)); combinedText = header + formattedResults.join('\n\n'); } else { - const formattedResults = results.map((obs) => formatObservationResult(obs)); + const formattedResults = results.map((obs) => this.formatter.formatObservationResult(obs)); combinedText = formattedResults.join('\n\n---\n\n'); } @@ -1285,30 +869,25 @@ const tools = [ isError: true }; } - } - }, - { - name: 'search_observations', - description: 'DEPRECATED: Use the unified "search" tool instead. Search observations using vector-first semantic search (ChromaDB). IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.', - inputSchema: z.object({ - query: z.string().describe('Natural language search query for semantic ranking via ChromaDB vector search'), - format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'), - ...filterSchema.shape - }), - handler: async (args: any) => { + } + + /** + * Tool handler: search_observations + */ + async searchObservations(args: any): Promise { try { - const normalized = normalizeParams(args); + const normalized = this.normalizeParams(args); const { query, format = 'index', ...options } = normalized; let results: ObservationSearchResult[] = []; // Vector-first search via ChromaDB - if (chromaClient) { + if (this.chromaSync) { try { - console.error('[search-server] Using hybrid semantic search (Chroma + SQLite)'); + silentDebug('[search-server] Using hybrid semantic search (Chroma + SQLite)'); // Step 1: Chroma semantic search (top 100) - const chromaResults = await queryChroma(query, 100); - console.error(`[search-server] Chroma returned ${chromaResults.ids.length} semantic matches`); + const chromaResults = await this.queryChroma(query, 100); + silentDebug(`[search-server] Chroma returned ${chromaResults.ids.length} semantic matches`); if (chromaResults.ids.length > 0) { // Step 2: Filter by recency (90 days) @@ -1318,17 +897,17 @@ const tools = [ return meta && meta.created_at_epoch > ninetyDaysAgo; }); - console.error(`[search-server] ${recentIds.length} results within 90-day window`); + silentDebug(`[search-server] ${recentIds.length} results within 90-day window`); // Step 3: Hydrate from SQLite in temporal order if (recentIds.length > 0) { const limit = options.limit || 20; - results = store.getObservationsByIds(recentIds, { orderBy: 'date_desc', limit }); - console.error(`[search-server] Hydrated ${results.length} observations from SQLite`); + results = this.sessionStore.getObservationsByIds(recentIds, { orderBy: 'date_desc', limit }); + silentDebug(`[search-server] Hydrated ${results.length} observations from SQLite`); } } } catch (chromaError: any) { - console.error('[search-server] Chroma query failed - no results (FTS5 fallback removed):', chromaError.message); + silentDebug('[search-server] Chroma query failed - no results (FTS5 fallback removed):', chromaError.message); } } @@ -1345,10 +924,10 @@ const tools = [ let combinedText: string; if (format === 'index') { const header = `Found ${results.length} observation(s) matching "${query}":\n\n`; - const formattedResults = results.map((obs, i) => formatObservationIndex(obs, i)); - combinedText = header + formattedResults.join('\n\n') + formatSearchTips(); + const formattedResults = results.map((obs, i) => this.formatter.formatObservationIndex(obs, i)); + combinedText = header + formattedResults.join('\n\n') + this.formatter.formatSearchTips(); } else { - const formattedResults = results.map((obs) => formatObservationResult(obs)); + const formattedResults = results.map((obs) => this.formatter.formatObservationResult(obs)); combinedText = formattedResults.join('\n\n---\n\n'); } @@ -1367,35 +946,25 @@ const tools = [ isError: true }; } - } - }, - { - name: 'search_sessions', - description: 'DEPRECATED: Use the unified "search" tool instead. Search session summaries using vector-first semantic search (ChromaDB). IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.', - inputSchema: z.object({ - query: z.string().describe('Natural language search query for semantic ranking via ChromaDB vector search'), - format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'), - project: z.string().optional().describe('Filter by project name'), - dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), - dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)'), - limit: z.number().min(1).max(100).default(20).describe('Maximum number of results'), - offset: z.number().min(0).default(0).describe('Number of results to skip'), - orderBy: z.enum(['relevance', 'date_desc', 'date_asc']).default('date_desc').describe('Sort order') - }), - handler: async (args: any) => { + } + + /** + * Tool handler: search_sessions + */ + async searchSessions(args: any): Promise { try { - const normalized = normalizeParams(args); + const normalized = this.normalizeParams(args); const { query, format = 'index', ...options } = normalized; let results: SessionSummarySearchResult[] = []; // Vector-first search via ChromaDB - if (chromaClient) { + if (this.chromaSync) { try { - console.error('[search-server] Using hybrid semantic search for sessions'); + silentDebug('[search-server] Using hybrid semantic search for sessions'); // Step 1: Chroma semantic search (top 100) - const chromaResults = await queryChroma(query, 100, { doc_type: 'session_summary' }); - console.error(`[search-server] Chroma returned ${chromaResults.ids.length} semantic matches`); + const chromaResults = await this.queryChroma(query, 100, { doc_type: 'session_summary' }); + silentDebug(`[search-server] Chroma returned ${chromaResults.ids.length} semantic matches`); if (chromaResults.ids.length > 0) { // Step 2: Filter by recency (90 days) @@ -1405,17 +974,17 @@ const tools = [ return meta && meta.created_at_epoch > ninetyDaysAgo; }); - console.error(`[search-server] ${recentIds.length} results within 90-day window`); + silentDebug(`[search-server] ${recentIds.length} results within 90-day window`); // Step 3: Hydrate from SQLite in temporal order if (recentIds.length > 0) { const limit = options.limit || 20; - results = store.getSessionSummariesByIds(recentIds, { orderBy: 'date_desc', limit }); - console.error(`[search-server] Hydrated ${results.length} sessions from SQLite`); + results = this.sessionStore.getSessionSummariesByIds(recentIds, { orderBy: 'date_desc', limit }); + silentDebug(`[search-server] Hydrated ${results.length} sessions from SQLite`); } } } catch (chromaError: any) { - console.error('[search-server] Chroma query failed - no results (FTS5 fallback removed):', chromaError.message); + silentDebug('[search-server] Chroma query failed - no results (FTS5 fallback removed):', chromaError.message); } } @@ -1432,10 +1001,10 @@ const tools = [ let combinedText: string; if (format === 'index') { const header = `Found ${results.length} session(s) matching "${query}":\n\n`; - const formattedResults = results.map((session, i) => formatSessionIndex(session, i)); - combinedText = header + formattedResults.join('\n\n') + formatSearchTips(); + const formattedResults = results.map((session, i) => this.formatter.formatSessionIndex(session, i)); + combinedText = header + formattedResults.join('\n\n') + this.formatter.formatSearchTips(); } else { - const formattedResults = results.map((session) => formatSessionResult(session)); + const formattedResults = results.map((session) => this.formatter.formatSessionResult(session)); combinedText = formattedResults.join('\n\n---\n\n'); } @@ -1454,40 +1023,107 @@ const tools = [ isError: true }; } - } - }, - { - name: 'find_by_concept', - description: 'Find observations tagged with a specific concept. Available concepts: "discovery", "problem-solution", "what-changed", "how-it-works", "pattern", "gotcha", "change". IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.', - inputSchema: z.object({ - concept: z.string().describe('Concept tag to search for. Available: discovery, problem-solution, what-changed, how-it-works, pattern, gotcha, change'), - format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'), - project: z.string().optional().describe('Filter by project name'), - dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), - dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)'), - limit: z.number().min(1).max(100).default(20).describe('Maximum results. IMPORTANT: Start with 3-5 to avoid exceeding MCP token limits, even in index mode.'), - offset: z.number().min(0).default(0).describe('Number of results to skip'), - orderBy: z.enum(['relevance', 'date_desc', 'date_asc']).default('date_desc').describe('Sort order') - }), - handler: async (args: any) => { + } + + /** + * Tool handler: search_user_prompts + */ + async searchUserPrompts(args: any): Promise { try { - const normalized = normalizeParams(args); - const { concept, format = 'index', ...filters } = normalized; + const normalized = this.normalizeParams(args); + const { query, format = 'index', ...options } = normalized; + let results: UserPromptSearchResult[] = []; + + // Vector-first search via ChromaDB + if (this.chromaSync) { + try { + silentDebug('[search-server] Using hybrid semantic search for user prompts'); + + // Step 1: Chroma semantic search (top 100) + const chromaResults = await this.queryChroma(query, 100, { doc_type: 'user_prompt' }); + silentDebug(`[search-server] Chroma returned ${chromaResults.ids.length} semantic matches`); + + if (chromaResults.ids.length > 0) { + // Step 2: Filter by recency (90 days) + const ninetyDaysAgo = Date.now() - (90 * 24 * 60 * 60 * 1000); + const recentIds = chromaResults.ids.filter((_id, idx) => { + const meta = chromaResults.metadatas[idx]; + return meta && meta.created_at_epoch > ninetyDaysAgo; + }); + + silentDebug(`[search-server] ${recentIds.length} results within 90-day window`); + + // Step 3: Hydrate from SQLite in temporal order + if (recentIds.length > 0) { + const limit = options.limit || 20; + results = this.sessionStore.getUserPromptsByIds(recentIds, { orderBy: 'date_desc', limit }); + silentDebug(`[search-server] Hydrated ${results.length} user prompts from SQLite`); + } + } + } catch (chromaError: any) { + silentDebug('[search-server] Chroma query failed - no results (FTS5 fallback removed):', chromaError.message); + } + } + + if (results.length === 0) { + return { + content: [{ + type: 'text' as const, + text: query ? `No user prompts found matching "${query}"` : 'No user prompts found' + }] + }; + } + + // Format based on requested format + let combinedText: string; + if (format === 'index') { + const header = `Found ${results.length} user prompt(s) matching "${query}":\n\n`; + const formattedResults = results.map((prompt, i) => this.formatter.formatUserPromptIndex(prompt, i)); + combinedText = header + formattedResults.join('\n\n') + this.formatter.formatSearchTips(); + } else { + const formattedResults = results.map((prompt) => this.formatter.formatUserPromptResult(prompt)); + combinedText = formattedResults.join('\n\n---\n\n'); + } + + return { + content: [{ + type: 'text' as const, + text: combinedText + }] + }; + } catch (error: any) { + return { + content: [{ + type: 'text' as const, + text: `Search failed: ${error.message}` + }], + isError: true + }; + } + } + + /** + * Tool handler: find_by_concept + */ + async findByConcept(args: any): Promise { + try { + const normalized = this.normalizeParams(args); + const { concepts: concept, format = 'index', ...filters } = normalized; let results: ObservationSearchResult[] = []; // Metadata-first, semantic-enhanced search - if (chromaClient) { + if (this.chromaSync) { try { - console.error('[search-server] Using metadata-first + semantic ranking for concept search'); + silentDebug('[search-server] Using metadata-first + semantic ranking for concept search'); // Step 1: SQLite metadata filter (get all IDs with this concept) - const metadataResults = search.findByConcept(concept, filters); - console.error(`[search-server] Found ${metadataResults.length} observations with concept "${concept}"`); + const metadataResults = this.sessionSearch.findByConcept(concept, filters); + silentDebug(`[search-server] Found ${metadataResults.length} observations with concept "${concept}"`); if (metadataResults.length > 0) { // Step 2: Chroma semantic ranking (rank by relevance to concept) const ids = metadataResults.map(obs => obs.id); - const chromaResults = await queryChroma(concept, Math.min(ids.length, 100)); + const chromaResults = await this.queryChroma(concept, Math.min(ids.length, 100)); // Intersect: Keep only IDs that passed metadata filter, in semantic rank order const rankedIds: number[] = []; @@ -1497,25 +1133,25 @@ const tools = [ } } - console.error(`[search-server] Chroma ranked ${rankedIds.length} results by semantic relevance`); + silentDebug(`[search-server] Chroma ranked ${rankedIds.length} results by semantic relevance`); // Step 3: Hydrate in semantic rank order if (rankedIds.length > 0) { - results = store.getObservationsByIds(rankedIds, { limit: filters.limit || 20 }); + results = this.sessionStore.getObservationsByIds(rankedIds, { limit: filters.limit || 20 }); // Restore semantic ranking order results.sort((a, b) => rankedIds.indexOf(a.id) - rankedIds.indexOf(b.id)); } } } catch (chromaError: any) { - console.error('[search-server] Chroma ranking failed, using SQLite order:', chromaError.message); + silentDebug('[search-server] Chroma ranking failed, using SQLite order:', chromaError.message); // Fall through to SQLite fallback } } // Fall back to SQLite-only if Chroma unavailable or failed if (results.length === 0) { - console.error('[search-server] Using SQLite-only concept search'); - results = search.findByConcept(concept, filters); + silentDebug('[search-server] Using SQLite-only concept search'); + results = this.sessionSearch.findByConcept(concept, filters); } if (results.length === 0) { @@ -1531,10 +1167,10 @@ const tools = [ let combinedText: string; if (format === 'index') { const header = `Found ${results.length} observation(s) with concept "${concept}":\n\n`; - const formattedResults = results.map((obs, i) => formatObservationIndex(obs, i)); - combinedText = header + formattedResults.join('\n\n') + formatSearchTips(); + const formattedResults = results.map((obs, i) => this.formatter.formatObservationIndex(obs, i)); + combinedText = header + formattedResults.join('\n\n') + this.formatter.formatSearchTips(); } else { - const formattedResults = results.map((obs) => formatObservationResult(obs)); + const formattedResults = results.map((obs) => this.formatter.formatObservationResult(obs)); combinedText = formattedResults.join('\n\n---\n\n'); } @@ -1553,36 +1189,26 @@ const tools = [ isError: true }; } - } - }, - { - name: 'find_by_file', - description: 'Find observations and sessions that reference a specific file path. IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.', - inputSchema: z.object({ - filePath: z.string().describe('File path to search for (supports partial matching)'), - format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'), - project: z.string().optional().describe('Filter by project name'), - dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), - dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)'), - limit: z.number().min(1).max(100).default(20).describe('Maximum results. IMPORTANT: Start with 3-5 to avoid exceeding MCP token limits, even in index mode.'), - offset: z.number().min(0).default(0).describe('Number of results to skip'), - orderBy: z.enum(['relevance', 'date_desc', 'date_asc']).default('date_desc').describe('Sort order') - }), - handler: async (args: any) => { + } + + /** + * Tool handler: find_by_file + */ + async findByFile(args: any): Promise { try { - const normalized = normalizeParams(args); - const { filePath, format = 'index', ...filters } = normalized; + const normalized = this.normalizeParams(args); + const { files: filePath, format = 'index', ...filters } = normalized; let observations: ObservationSearchResult[] = []; let sessions: SessionSummarySearchResult[] = []; // Metadata-first, semantic-enhanced search for observations - if (chromaClient) { + if (this.chromaSync) { try { - console.error('[search-server] Using metadata-first + semantic ranking for file search'); + silentDebug('[search-server] Using metadata-first + semantic ranking for file search'); // Step 1: SQLite metadata filter (get all results with this file) - const metadataResults = search.findByFile(filePath, filters); - console.error(`[search-server] Found ${metadataResults.observations.length} observations, ${metadataResults.sessions.length} sessions for file "${filePath}"`); + const metadataResults = this.sessionSearch.findByFile(filePath, filters); + silentDebug(`[search-server] Found ${metadataResults.observations.length} observations, ${metadataResults.sessions.length} sessions for file "${filePath}"`); // Sessions: Keep as-is (already summarized, no semantic ranking needed) sessions = metadataResults.sessions; @@ -1591,7 +1217,7 @@ const tools = [ if (metadataResults.observations.length > 0) { // Step 2: Chroma semantic ranking (rank by relevance to file path) const ids = metadataResults.observations.map(obs => obs.id); - const chromaResults = await queryChroma(filePath, Math.min(ids.length, 100)); + const chromaResults = await this.queryChroma(filePath, Math.min(ids.length, 100)); // Intersect: Keep only IDs that passed metadata filter, in semantic rank order const rankedIds: number[] = []; @@ -1601,25 +1227,25 @@ const tools = [ } } - console.error(`[search-server] Chroma ranked ${rankedIds.length} observations by semantic relevance`); + silentDebug(`[search-server] Chroma ranked ${rankedIds.length} observations by semantic relevance`); // Step 3: Hydrate in semantic rank order if (rankedIds.length > 0) { - observations = store.getObservationsByIds(rankedIds, { limit: filters.limit || 20 }); + observations = this.sessionStore.getObservationsByIds(rankedIds, { limit: filters.limit || 20 }); // Restore semantic ranking order observations.sort((a, b) => rankedIds.indexOf(a.id) - rankedIds.indexOf(b.id)); } } } catch (chromaError: any) { - console.error('[search-server] Chroma ranking failed, using SQLite order:', chromaError.message); + silentDebug('[search-server] Chroma ranking failed, using SQLite order:', chromaError.message); // Fall through to SQLite fallback } } // Fall back to SQLite-only if Chroma unavailable or failed if (observations.length === 0 && sessions.length === 0) { - console.error('[search-server] Using SQLite-only file search'); - const results = search.findByFile(filePath, filters); + silentDebug('[search-server] Using SQLite-only file search'); + const results = this.sessionSearch.findByFile(filePath, filters); observations = results.observations; sessions = results.sessions; } @@ -1642,26 +1268,26 @@ const tools = [ // Add observations observations.forEach((obs, i) => { - formattedResults.push(formatObservationIndex(obs, i)); + formattedResults.push(this.formatter.formatObservationIndex(obs, i)); }); // Add sessions sessions.forEach((session, i) => { - formattedResults.push(formatSessionIndex(session, i + observations.length)); + formattedResults.push(this.formatter.formatSessionIndex(session, i + observations.length)); }); - combinedText = header + formattedResults.join('\n\n') + formatSearchTips(); + combinedText = header + formattedResults.join('\n\n') + this.formatter.formatSearchTips(); } else { const formattedResults: string[] = []; // Add observations observations.forEach((obs) => { - formattedResults.push(formatObservationResult(obs)); + formattedResults.push(this.formatter.formatObservationResult(obs)); }); // Add sessions sessions.forEach((session) => { - formattedResults.push(formatSessionResult(session)); + formattedResults.push(this.formatter.formatSessionResult(session)); }); combinedText = formattedResults.join('\n\n---\n\n'); @@ -1682,41 +1308,31 @@ const tools = [ isError: true }; } - } - }, - { - name: 'find_by_type', - description: 'Find observations of a specific type (decision, bugfix, feature, refactor, discovery, change). IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.', - inputSchema: z.object({ - type: z.string().describe('Observation type(s) to filter by (single value or comma-separated list: decision,bugfix,feature,refactor,discovery,change)'), - format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for titles/dates only (default, RECOMMENDED for initial search), "full" for complete details (use only after reviewing index results)'), - project: z.string().optional().describe('Filter by project name'), - dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), - dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)'), - limit: z.number().min(1).max(100).default(20).describe('Maximum results. IMPORTANT: Start with 3-5 to avoid exceeding MCP token limits, even in index mode.'), - offset: z.number().min(0).default(0).describe('Number of results to skip'), - orderBy: z.enum(['relevance', 'date_desc', 'date_asc']).default('date_desc').describe('Sort order') - }), - handler: async (args: any) => { + } + + /** + * Tool handler: find_by_type + */ + async findByType(args: any): Promise { try { - const normalized = normalizeParams(args); + const normalized = this.normalizeParams(args); const { type, format = 'index', ...filters } = normalized; const typeStr = Array.isArray(type) ? type.join(', ') : type; let results: ObservationSearchResult[] = []; // Metadata-first, semantic-enhanced search - if (chromaClient) { + if (this.chromaSync) { try { - console.error('[search-server] Using metadata-first + semantic ranking for type search'); + silentDebug('[search-server] Using metadata-first + semantic ranking for type search'); // Step 1: SQLite metadata filter (get all IDs with this type) - const metadataResults = search.findByType(type, filters); - console.error(`[search-server] Found ${metadataResults.length} observations with type "${typeStr}"`); + const metadataResults = this.sessionSearch.findByType(type, filters); + silentDebug(`[search-server] Found ${metadataResults.length} observations with type "${typeStr}"`); if (metadataResults.length > 0) { // Step 2: Chroma semantic ranking (rank by relevance to type) const ids = metadataResults.map(obs => obs.id); - const chromaResults = await queryChroma(typeStr, Math.min(ids.length, 100)); + const chromaResults = await this.queryChroma(typeStr, Math.min(ids.length, 100)); // Intersect: Keep only IDs that passed metadata filter, in semantic rank order const rankedIds: number[] = []; @@ -1726,25 +1342,25 @@ const tools = [ } } - console.error(`[search-server] Chroma ranked ${rankedIds.length} results by semantic relevance`); + silentDebug(`[search-server] Chroma ranked ${rankedIds.length} results by semantic relevance`); // Step 3: Hydrate in semantic rank order if (rankedIds.length > 0) { - results = store.getObservationsByIds(rankedIds, { limit: filters.limit || 20 }); + results = this.sessionStore.getObservationsByIds(rankedIds, { limit: filters.limit || 20 }); // Restore semantic ranking order results.sort((a, b) => rankedIds.indexOf(a.id) - rankedIds.indexOf(b.id)); } } } catch (chromaError: any) { - console.error('[search-server] Chroma ranking failed, using SQLite order:', chromaError.message); + silentDebug('[search-server] Chroma ranking failed, using SQLite order:', chromaError.message); // Fall through to SQLite fallback } } // Fall back to SQLite-only if Chroma unavailable or failed if (results.length === 0) { - console.error('[search-server] Using SQLite-only type search'); - results = search.findByType(type, filters); + silentDebug('[search-server] Using SQLite-only type search'); + results = this.sessionSearch.findByType(type, filters); } if (results.length === 0) { @@ -1760,10 +1376,10 @@ const tools = [ let combinedText: string; if (format === 'index') { const header = `Found ${results.length} observation(s) with type "${typeStr}":\n\n`; - const formattedResults = results.map((obs, i) => formatObservationIndex(obs, i)); - combinedText = header + formattedResults.join('\n\n') + formatSearchTips(); + const formattedResults = results.map((obs, i) => this.formatter.formatObservationIndex(obs, i)); + combinedText = header + formattedResults.join('\n\n') + this.formatter.formatSearchTips(); } else { - const formattedResults = results.map((obs) => formatObservationResult(obs)); + const formattedResults = results.map((obs) => this.formatter.formatObservationResult(obs)); combinedText = formattedResults.join('\n\n---\n\n'); } @@ -1782,21 +1398,17 @@ const tools = [ isError: true }; } - } - }, - { - name: 'get_recent_context', - description: 'Get recent session context including summaries and observations for a project', - inputSchema: z.object({ - project: z.string().optional().describe('Project name (defaults to current working directory basename)'), - limit: z.number().min(1).max(10).default(3).describe('Number of recent sessions to retrieve') - }), - handler: async (args: any) => { + } + + /** + * Tool handler: get_recent_context + */ + async getRecentContext(args: any): Promise { try { const project = args.project || basename(process.cwd()); const limit = args.limit || 3; - const sessions = store.getRecentSessionsWithStatus(project, limit); + const sessions = this.sessionStore.getRecentSessionsWithStatus(project, limit); if (sessions.length === 0) { return { @@ -1820,7 +1432,7 @@ const tools = [ lines.push(''); if (session.has_summary) { - const summary = store.getSummaryForSession(session.sdk_session_id); + const summary = this.sessionStore.getSummaryForSession(session.sdk_session_id); if (summary) { const promptLabel = summary.prompt_number ? ` (Prompt #${summary.prompt_number})` : ''; lines.push(`**Summary${promptLabel}**`); @@ -1870,7 +1482,7 @@ const tools = [ lines.push(`**Request:** ${session.user_prompt}`); } - const observations = store.getObservationsForSession(session.sdk_session_id); + const observations = this.sessionStore.getObservationsForSession(session.sdk_session_id); if (observations.length > 0) { lines.push(''); lines.push(`**Observations (${observations.length}):**`); @@ -1920,118 +1532,22 @@ const tools = [ isError: true }; } - } - }, - { - name: 'search_user_prompts', - description: 'DEPRECATED: Use the unified "search" tool instead. Search raw user prompts using vector-first semantic search (ChromaDB). Use this to find what the user actually said/requested across all sessions. IMPORTANT: Always use index format first (default) to get an overview with minimal token usage, then use format: "full" only for specific items of interest.', - inputSchema: z.object({ - query: z.string().describe('Natural language search query for semantic ranking via ChromaDB vector search'), - format: z.enum(['index', 'full']).default('index').describe('Output format: "index" for truncated prompts/dates (default, RECOMMENDED for initial search), "full" for complete prompt text (use only after reviewing index results)'), - project: z.string().optional().describe('Filter by project name'), - dateStart: z.union([z.string(), z.number()]).optional().describe('Start date for filtering (ISO string or epoch timestamp)'), - dateEnd: z.union([z.string(), z.number()]).optional().describe('End date for filtering (ISO string or epoch timestamp)'), - limit: z.number().min(1).max(100).default(20).describe('Maximum number of results'), - offset: z.number().min(0).default(0).describe('Number of results to skip'), - orderBy: z.enum(['relevance', 'date_desc', 'date_asc']).default('date_desc').describe('Sort order') - }), - handler: async (args: any) => { - try { - const normalized = normalizeParams(args); - const { query, format = 'index', ...options } = normalized; - let results: UserPromptSearchResult[] = []; + } - // Vector-first search via ChromaDB - if (chromaClient) { - try { - console.error('[search-server] Using hybrid semantic search for user prompts'); - - // Step 1: Chroma semantic search (top 100) - const chromaResults = await queryChroma(query, 100, { doc_type: 'user_prompt' }); - console.error(`[search-server] Chroma returned ${chromaResults.ids.length} semantic matches`); - - if (chromaResults.ids.length > 0) { - // Step 2: Filter by recency (90 days) - const ninetyDaysAgo = Date.now() - (90 * 24 * 60 * 60 * 1000); - const recentIds = chromaResults.ids.filter((_id, idx) => { - const meta = chromaResults.metadatas[idx]; - return meta && meta.created_at_epoch > ninetyDaysAgo; - }); - - console.error(`[search-server] ${recentIds.length} results within 90-day window`); - - // Step 3: Hydrate from SQLite in temporal order - if (recentIds.length > 0) { - const limit = options.limit || 20; - results = store.getUserPromptsByIds(recentIds, { orderBy: 'date_desc', limit }); - console.error(`[search-server] Hydrated ${results.length} user prompts from SQLite`); - } - } - } catch (chromaError: any) { - console.error('[search-server] Chroma query failed - no results (FTS5 fallback removed):', chromaError.message); - } - } - - if (results.length === 0) { - return { - content: [{ - type: 'text' as const, - text: `No user prompts found matching "${query}"` - }] - }; - } - - // Format based on requested format - let combinedText: string; - if (format === 'index') { - const header = `Found ${results.length} user prompt(s) matching "${query}":\n\n`; - const formattedResults = results.map((prompt, i) => formatUserPromptIndex(prompt, i)); - combinedText = header + formattedResults.join('\n\n') + formatSearchTips(); - } else { - const formattedResults = results.map((prompt) => formatUserPromptResult(prompt)); - combinedText = formattedResults.join('\n\n---\n\n'); - } - - return { - content: [{ - type: 'text' as const, - text: combinedText - }] - }; - } catch (error: any) { - return { - content: [{ - type: 'text' as const, - text: `Search failed: ${error.message}` - }], - isError: true - }; - } - } - }, - { - name: 'get_context_timeline', - description: 'Get a unified timeline of context (observations, sessions, and prompts) around a specific point in time. All record types are interleaved chronologically. Useful for understanding "what was happening when X occurred". Returns depth_before records before anchor + anchor + depth_after records after (total: depth_before + 1 + depth_after mixed records).', - inputSchema: z.object({ - anchor: z.union([ - z.number().describe('Observation ID to center timeline around'), - z.string().describe('Session ID (format: S123) or ISO timestamp to center timeline around') - ]).describe('Anchor point: observation ID, session ID (e.g., "S123"), or ISO timestamp'), - depth_before: z.number().min(0).max(50).default(10).describe('Number of records to retrieve before anchor, not including anchor (default: 10)'), - depth_after: z.number().min(0).max(50).default(10).describe('Number of records to retrieve after anchor, not including anchor (default: 10)'), - project: z.string().optional().describe('Filter by project name') - }), - handler: async (args: any) => { + /** + * Tool handler: get_context_timeline + */ + async getContextTimeline(args: any): Promise { try { const { anchor, depth_before = 10, depth_after = 10, project } = args; let anchorEpoch: number; let anchorId: string | number = anchor; // Resolve anchor and get timeline data - let timeline; + let timelineData; if (typeof anchor === 'number') { // Observation ID - use ID-based boundary detection - const obs = store.getObservationById(anchor); + const obs = this.sessionStore.getObservationById(anchor); if (!obs) { return { content: [{ @@ -2042,13 +1558,13 @@ const tools = [ }; } anchorEpoch = obs.created_at_epoch; - timeline = store.getTimelineAroundObservation(anchor, anchorEpoch, depth_before, depth_after, project); + timelineData = this.sessionStore.getTimelineAroundObservation(anchor, anchorEpoch, depth_before, depth_after, project); } else if (typeof anchor === 'string') { // Session ID or ISO timestamp if (anchor.startsWith('S') || anchor.startsWith('#S')) { const sessionId = anchor.replace(/^#?S/, ''); const sessionNum = parseInt(sessionId, 10); - const sessions = store.getSessionSummariesByIds([sessionNum]); + const sessions = this.sessionStore.getSessionSummariesByIds([sessionNum]); if (sessions.length === 0) { return { content: [{ @@ -2060,7 +1576,7 @@ const tools = [ } anchorEpoch = sessions[0].created_at_epoch; anchorId = `S${sessionNum}`; - timeline = store.getTimelineAroundTimestamp(anchorEpoch, depth_before, depth_after, project); + timelineData = this.sessionStore.getTimelineAroundTimestamp(anchorEpoch, depth_before, depth_after, project); } else { // ISO timestamp const date = new Date(anchor); @@ -2074,7 +1590,7 @@ const tools = [ }; } anchorEpoch = date.getTime(); // Keep as milliseconds - timeline = store.getTimelineAroundTimestamp(anchorEpoch, depth_before, depth_after, project); + timelineData = this.sessionStore.getTimelineAroundTimestamp(anchorEpoch, depth_before, depth_after, project); } } else { return { @@ -2088,14 +1604,14 @@ const tools = [ // Combine, sort, and filter timeline items const items: TimelineItem[] = [ - ...timeline.observations.map(obs => ({ type: 'observation' as const, data: obs, epoch: obs.created_at_epoch })), - ...timeline.sessions.map(sess => ({ type: 'session' as const, data: sess, epoch: sess.created_at_epoch })), - ...timeline.prompts.map(prompt => ({ type: 'prompt' as const, data: prompt, epoch: prompt.created_at_epoch })) + ...timelineData.observations.map(obs => ({ type: 'observation' as const, data: obs, epoch: obs.created_at_epoch })), + ...timelineData.sessions.map(sess => ({ type: 'session' as const, data: sess, epoch: sess.created_at_epoch })), + ...timelineData.prompts.map(prompt => ({ type: 'prompt' as const, data: prompt, epoch: prompt.created_at_epoch })) ]; items.sort((a, b) => a.epoch - b.epoch); - const filteredItems = filterTimelineByDepth(items, anchorId, anchorEpoch, depth_before, depth_after); + const filteredItems = this.timelineService.filterByDepth(items, anchorId, anchorEpoch, depth_before, depth_after); - if (filteredItems.length === 0) { + if (!filteredItems || filteredItems.length === 0) { const anchorDate = new Date(anchorEpoch).toLocaleString(); return { content: [{ @@ -2106,25 +1622,25 @@ const tools = [ } // Helper functions matching context-hook.ts - function formatDate(epochMs: number): string { + const formatDate = (epochMs: number): string => { const date = new Date(epochMs); return date.toLocaleString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }); - } + }; - function formatTime(epochMs: number): string { + const formatTime = (epochMs: number): string => { const date = new Date(epochMs); return date.toLocaleString('en-US', { hour: 'numeric', minute: '2-digit', hour12: true }); - } + }; - function formatDateTime(epochMs: number): string { + const formatDateTime = (epochMs: number): string => { const date = new Date(epochMs); return date.toLocaleString('en-US', { month: 'short', @@ -2133,19 +1649,19 @@ const tools = [ minute: '2-digit', hour12: true }); - } + }; - function estimateTokens(text: string | null): number { + const estimateTokens = (text: string | null): number => { if (!text) return 0; return Math.ceil(text.length / 4); - } + }; // Format results matching context-hook.ts exactly const lines: string[] = []; // Header lines.push(`# Timeline around anchor: ${anchorId}`); - lines.push(`**Window:** ${depth_before} records before → ${depth_after} records after | **Items:** ${filteredItems.length}`); + lines.push(`**Window:** ${depth_before} records before → ${depth_after} records after | **Items:** ${filteredItems?.length ?? 0}`); lines.push(''); // Legend @@ -2194,7 +1710,7 @@ const tools = [ } // Render session - const sess = item.data; + const sess = item.data as SessionSummarySearchResult; const title = sess.request || 'Session summary'; const link = `claude-mem://session-summary/${sess.id}`; const marker = isAnchor ? ' ← **ANCHOR**' : ''; @@ -2211,15 +1727,15 @@ const tools = [ } // Render prompt - const prompt = item.data; - const truncated = prompt.prompt.length > 100 ? prompt.prompt.substring(0, 100) + '...' : prompt.prompt; + const prompt = item.data as UserPromptSearchResult; + const truncated = prompt.prompt_text.length > 100 ? prompt.prompt_text.substring(0, 100) + '...' : prompt.prompt_text; lines.push(`**💬 User Prompt #${prompt.prompt_number}** (${formatDateTime(item.epoch)})`); lines.push(`> ${truncated}`); lines.push(''); } else if (item.type === 'observation') { // Render observation in table - const obs = item.data; + const obs = item.data as ObservationSearchResult; const file = 'General'; // Simplified for timeline view // Check if we need a new file section @@ -2284,20 +1800,12 @@ const tools = [ isError: true }; } - } - }, - { - name: 'get_timeline_by_query', - description: 'Search for observations using natural language and get timeline context around the best match. Two modes: "auto" (default) automatically uses top result as timeline anchor; "interactive" returns top matches for you to choose from. This combines search + timeline into a single operation for faster context discovery.', - inputSchema: z.object({ - query: z.string().describe('Natural language search query to find relevant observations'), - mode: z.enum(['auto', 'interactive']).default('auto').describe('auto: Automatically use top search result as timeline anchor. interactive: Show top N search results for manual anchor selection.'), - depth_before: z.number().min(0).max(50).default(10).describe('Number of timeline records before anchor (default: 10)'), - depth_after: z.number().min(0).max(50).default(10).describe('Number of timeline records after anchor (default: 10)'), - limit: z.number().min(1).max(20).default(5).describe('For interactive mode: number of top search results to display (default: 5)'), - project: z.string().optional().describe('Filter by project name') - }), - handler: async (args: any) => { + } + + /** + * Tool handler: get_timeline_by_query + */ + async getTimelineByQuery(args: any): Promise { try { const { query, mode = 'auto', depth_before = 10, depth_after = 10, limit = 5, project } = args; @@ -2305,11 +1813,11 @@ const tools = [ let results: ObservationSearchResult[] = []; // Use hybrid search if available - if (chromaClient) { + if (this.chromaSync) { try { - console.error('[search-server] Using hybrid semantic search for timeline query'); - const chromaResults = await queryChroma(query, 100); - console.error(`[search-server] Chroma returned ${chromaResults.ids.length} semantic matches`); + silentDebug('[search-server] Using hybrid semantic search for timeline query'); + const chromaResults = await this.queryChroma(query, 100); + silentDebug(`[search-server] Chroma returned ${chromaResults.ids.length} semantic matches`); if (chromaResults.ids.length > 0) { // Filter by recency (90 days) @@ -2319,15 +1827,15 @@ const tools = [ return meta && meta.created_at_epoch > ninetyDaysAgo; }); - console.error(`[search-server] ${recentIds.length} results within 90-day window`); + silentDebug(`[search-server] ${recentIds.length} results within 90-day window`); if (recentIds.length > 0) { - results = store.getObservationsByIds(recentIds, { orderBy: 'date_desc', limit: mode === 'auto' ? 1 : limit }); - console.error(`[search-server] Hydrated ${results.length} observations from SQLite`); + results = this.sessionStore.getObservationsByIds(recentIds, { orderBy: 'date_desc', limit: mode === 'auto' ? 1 : limit }); + silentDebug(`[search-server] Hydrated ${results.length} observations from SQLite`); } } } catch (chromaError: any) { - console.error('[search-server] Chroma query failed - no results (FTS5 fallback removed):', chromaError.message); + silentDebug('[search-server] Chroma query failed - no results (FTS5 fallback removed):', chromaError.message); } } @@ -2378,10 +1886,10 @@ const tools = [ } else { // Auto mode: Use top result as timeline anchor const topResult = results[0]; - console.error(`[search-server] Auto mode: Using observation #${topResult.id} as timeline anchor`); + silentDebug(`[search-server] Auto mode: Using observation #${topResult.id} as timeline anchor`); // Get timeline around this observation - const timeline = store.getTimelineAroundObservation( + const timelineData = this.sessionStore.getTimelineAroundObservation( topResult.id, topResult.created_at_epoch, depth_before, @@ -2391,14 +1899,14 @@ const tools = [ // Combine, sort, and filter timeline items const items: TimelineItem[] = [ - ...timeline.observations.map(obs => ({ type: 'observation' as const, data: obs, epoch: obs.created_at_epoch })), - ...timeline.sessions.map(sess => ({ type: 'session' as const, data: sess, epoch: sess.created_at_epoch })), - ...timeline.prompts.map(prompt => ({ type: 'prompt' as const, data: prompt, epoch: prompt.created_at_epoch })) + ...(timelineData.observations || []).map(obs => ({ type: 'observation' as const, data: obs, epoch: obs.created_at_epoch })), + ...(timelineData.sessions || []).map(sess => ({ type: 'session' as const, data: sess, epoch: sess.created_at_epoch })), + ...(timelineData.prompts || []).map(prompt => ({ type: 'prompt' as const, data: prompt, epoch: prompt.created_at_epoch })) ]; items.sort((a, b) => a.epoch - b.epoch); - const filteredItems = filterTimelineByDepth(items, topResult.id, 0, depth_before, depth_after); + const filteredItems = this.timelineService.filterByDepth(items, topResult.id, 0, depth_before, depth_after); - if (filteredItems.length === 0) { + if (!filteredItems || filteredItems.length === 0) { return { content: [{ type: 'text' as const, @@ -2408,25 +1916,25 @@ const tools = [ } // Helper functions (reused from get_context_timeline) - function formatDate(epochMs: number): string { + const formatDate = (epochMs: number): string => { const date = new Date(epochMs); return date.toLocaleString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }); - } + }; - function formatTime(epochMs: number): string { + const formatTime = (epochMs: number): string => { const date = new Date(epochMs); return date.toLocaleString('en-US', { hour: 'numeric', minute: '2-digit', hour12: true }); - } + }; - function formatDateTime(epochMs: number): string { + const formatDateTime = (epochMs: number): string => { const date = new Date(epochMs); return date.toLocaleString('en-US', { month: 'short', @@ -2435,12 +1943,12 @@ const tools = [ minute: '2-digit', hour12: true }); - } + }; - function estimateTokens(text: string | null): number { + const estimateTokens = (text: string | null): number => { if (!text) return 0; return Math.ceil(text.length / 4); - } + }; // Format timeline (reused from get_context_timeline) const lines: string[] = []; @@ -2448,7 +1956,7 @@ const tools = [ // Header lines.push(`# Timeline for query: "${query}"`); lines.push(`**Anchor:** Observation #${topResult.id} - ${topResult.title || 'Untitled'}`); - lines.push(`**Window:** ${depth_before} records before → ${depth_after} records after | **Items:** ${filteredItems.length}`); + lines.push(`**Window:** ${depth_before} records before → ${depth_after} records after | **Items:** ${filteredItems?.length ?? 0}`); lines.push(''); // Legend @@ -2494,7 +2002,7 @@ const tools = [ } // Render session - const sess = item.data; + const sess = item.data as SessionSummarySearchResult; const title = sess.request || 'Session summary'; const link = `claude-mem://session-summary/${sess.id}`; @@ -2510,15 +2018,15 @@ const tools = [ } // Render prompt - const prompt = item.data; - const truncated = prompt.prompt.length > 100 ? prompt.prompt.substring(0, 100) + '...' : prompt.prompt; + const prompt = item.data as UserPromptSearchResult; + const truncated = prompt.prompt_text.length > 100 ? prompt.prompt_text.substring(0, 100) + '...' : prompt.prompt_text; lines.push(`**💬 User Prompt #${prompt.prompt_number}** (${formatDateTime(item.epoch)})`); lines.push(`> ${truncated}`); lines.push(''); } else if (item.type === 'observation') { // Render observation in table - const obs = item.data; + const obs = item.data as ObservationSearchResult; const file = 'General'; // Simplified for timeline view // Check if we need a new file section @@ -2584,137 +2092,5 @@ const tools = [ isError: true }; } - } } -]; - -/** - * Create and start the MCP server - */ -const server = new Server( - { - name: 'claude-mem-search', - version: '1.0.0', - }, - { - capabilities: { - tools: {}, - }, - } -); - -// Register tools/list handler -server.setRequestHandler(ListToolsRequestSchema, async () => { - return { - tools: tools.map(tool => ({ - name: tool.name, - description: tool.description, - inputSchema: zodToJsonSchema(tool.inputSchema) as any - })) - }; -}); - -// Register tools/call handler -server.setRequestHandler(CallToolRequestSchema, async (request) => { - const tool = tools.find(t => t.name === request.params.name); - - if (!tool) { - throw new Error(`Unknown tool: ${request.params.name}`); - } - - try { - return await tool.handler(request.params.arguments || {}); - } catch (error: any) { - return { - content: [{ - type: 'text' as const, - text: `Tool execution failed: ${error.message}` - }], - isError: true - }; - } -}); - -// Cleanup function to properly terminate all child processes -async function cleanup() { - console.error('[search-server] Shutting down...'); - - // Close Chroma client (terminates uvx/python processes) - if (chromaClient) { - try { - await chromaClient.close(); - console.error('[search-server] Chroma client closed'); - } catch (error: any) { - console.error('[search-server] Error closing Chroma client:', error.message); - } - } - - // Close database connections - if (search) { - try { - search.close(); - console.error('[search-server] SessionSearch closed'); - } catch (error: any) { - console.error('[search-server] Error closing SessionSearch:', error.message); - } - } - - if (store) { - try { - store.close(); - console.error('[search-server] SessionStore closed'); - } catch (error: any) { - console.error('[search-server] Error closing SessionStore:', error.message); - } - } - - console.error('[search-server] Shutdown complete'); - process.exit(0); } - -// Register cleanup handlers for graceful shutdown -process.on('SIGTERM', cleanup); -process.on('SIGINT', cleanup); - -// Start the server -async function main() { - // Start the MCP server FIRST (critical - must start before blocking operations) - const transport = new StdioServerTransport(); - await server.connect(transport); - console.error('[search-server] Claude-mem search server started'); - - // Initialize Chroma client in background (non-blocking) - setTimeout(async () => { - try { - console.error('[search-server] Initializing Chroma client...'); - // Use Python 3.13 by default to avoid onnxruntime compatibility issues with Python 3.14+ - const pythonVersion = process.env.CLAUDE_MEM_PYTHON_VERSION || '3.13'; - const chromaTransport = new StdioClientTransport({ - command: 'uvx', - args: ['--python', pythonVersion, 'chroma-mcp', '--client-type', 'persistent', '--data-dir', VECTOR_DB_DIR], - stderr: 'ignore' - }); - - const client = new Client({ - name: 'claude-mem-search-chroma-client', - version: '1.0.0' - }, { - capabilities: {} - }); - - await client.connect(chromaTransport); - chromaClient = client; - console.error('[search-server] Chroma client connected successfully'); - } catch (error: any) { - console.error('[search-server] Failed to initialize Chroma client:', error.message); - console.error('[search-server] Vector search unavailable - text queries will return empty results (FTS5 fallback removed)'); - console.error('[search-server] Install UVX/Python to enable vector search: https://docs.astral.sh/uv/getting-started/installation/'); - chromaClient = null; - } - }, 0); -} - -main().catch((error) => { - console.error('[search-server] Fatal error:', error); - process.exit(1); -}); diff --git a/src/services/worker/SettingsManager.ts b/src/services/worker/SettingsManager.ts index 3d6afbc8..9a5a41d0 100644 --- a/src/services/worker/SettingsManager.ts +++ b/src/services/worker/SettingsManager.ts @@ -37,7 +37,7 @@ export class SettingsManager { for (const row of rows) { const key = row.key as keyof ViewerSettings; if (key in settings) { - (settings as any)[key] = JSON.parse(row.value); + settings[key] = JSON.parse(row.value) as ViewerSettings[typeof key]; } } diff --git a/src/services/worker/TimelineService.ts b/src/services/worker/TimelineService.ts new file mode 100644 index 00000000..fe974138 --- /dev/null +++ b/src/services/worker/TimelineService.ts @@ -0,0 +1,270 @@ +/** + * TimelineService - Handles timeline building, filtering, and formatting + * Extracted from mcp-server.ts to follow worker service organization pattern + */ + +import { ObservationSearchResult, SessionSummarySearchResult, UserPromptSearchResult } from '../sqlite/types.js'; + +/** + * Timeline item for unified chronological display + */ +export interface TimelineItem { + type: 'observation' | 'session' | 'prompt'; + data: ObservationSearchResult | SessionSummarySearchResult | UserPromptSearchResult; + epoch: number; +} + +export interface TimelineData { + observations: ObservationSearchResult[]; + sessions: SessionSummarySearchResult[]; + prompts: UserPromptSearchResult[]; +} + +export class TimelineService { + /** + * Build timeline items from observations, sessions, and prompts + */ + buildTimeline(data: TimelineData): TimelineItem[] { + const items: TimelineItem[] = [ + ...data.observations.map(obs => ({ type: 'observation' as const, data: obs, epoch: obs.created_at_epoch })), + ...data.sessions.map(sess => ({ type: 'session' as const, data: sess, epoch: sess.created_at_epoch })), + ...data.prompts.map(prompt => ({ type: 'prompt' as const, data: prompt, epoch: prompt.created_at_epoch })) + ]; + items.sort((a, b) => a.epoch - b.epoch); + return items; + } + + /** + * Filter timeline items to respect depth_before/depth_after window around anchor + */ + filterByDepth( + items: TimelineItem[], + anchorId: number | string, + anchorEpoch: number, + depth_before: number, + depth_after: number + ): TimelineItem[] { + if (items.length === 0) return items; + + let anchorIndex = -1; + if (typeof anchorId === 'number') { + anchorIndex = items.findIndex(item => item.type === 'observation' && (item.data as ObservationSearchResult).id === anchorId); + } else if (typeof anchorId === 'string' && anchorId.startsWith('S')) { + const sessionNum = parseInt(anchorId.slice(1), 10); + anchorIndex = items.findIndex(item => item.type === 'session' && (item.data as SessionSummarySearchResult).id === sessionNum); + } else { + // Timestamp anchor - find closest item + anchorIndex = items.findIndex(item => item.epoch >= anchorEpoch); + if (anchorIndex === -1) anchorIndex = items.length - 1; + } + + if (anchorIndex === -1) return items; + + const startIndex = Math.max(0, anchorIndex - depth_before); + const endIndex = Math.min(items.length, anchorIndex + depth_after + 1); + return items.slice(startIndex, endIndex); + } + + /** + * Format timeline items as markdown with grouped days and tables + */ + formatTimeline( + items: TimelineItem[], + anchorId: number | string | null, + query?: string, + depth_before?: number, + depth_after?: number + ): string { + if (items.length === 0) { + return query + ? `Found observation matching "${query}", but no timeline context available.` + : 'No timeline items found'; + } + + const lines: string[] = []; + + // Header + if (query && anchorId) { + const anchorObs = items.find(item => item.type === 'observation' && (item.data as ObservationSearchResult).id === anchorId); + const anchorTitle = anchorObs ? ((anchorObs.data as ObservationSearchResult).title || 'Untitled') : 'Unknown'; + lines.push(`# Timeline for query: "${query}"`); + lines.push(`**Anchor:** Observation #${anchorId} - ${anchorTitle}`); + } else if (anchorId) { + lines.push(`# Timeline around anchor: ${anchorId}`); + } else { + lines.push(`# Timeline`); + } + + if (depth_before !== undefined && depth_after !== undefined) { + lines.push(`**Window:** ${depth_before} records before → ${depth_after} records after | **Items:** ${items.length}`); + } else { + lines.push(`**Items:** ${items.length}`); + } + lines.push(''); + + // Legend + lines.push(`**Legend:** 🎯 session-request | 🔴 bugfix | 🟣 feature | 🔄 refactor | ✅ change | 🔵 discovery | 🧠 decision`); + lines.push(''); + + // Group by day + const dayMap = new Map(); + for (const item of items) { + const day = this.formatDate(item.epoch); + if (!dayMap.has(day)) { + dayMap.set(day, []); + } + dayMap.get(day)!.push(item); + } + + // Sort days chronologically + const sortedDays = Array.from(dayMap.entries()).sort((a, b) => { + const aDate = new Date(a[0]).getTime(); + const bDate = new Date(b[0]).getTime(); + return aDate - bDate; + }); + + // Render each day + for (const [day, dayItems] of sortedDays) { + lines.push(`### ${day}`); + lines.push(''); + + let currentFile: string | null = null; + let lastTime = ''; + let tableOpen = false; + + for (const item of dayItems) { + const isAnchor = ( + (typeof anchorId === 'number' && item.type === 'observation' && (item.data as ObservationSearchResult).id === anchorId) || + (typeof anchorId === 'string' && anchorId.startsWith('S') && item.type === 'session' && `S${(item.data as SessionSummarySearchResult).id}` === anchorId) + ); + + if (item.type === 'session') { + if (tableOpen) { + lines.push(''); + tableOpen = false; + currentFile = null; + lastTime = ''; + } + + const sess = item.data as SessionSummarySearchResult; + const title = sess.request || 'Session summary'; + const link = `claude-mem://session-summary/${sess.id}`; + const marker = isAnchor ? ' ← **ANCHOR**' : ''; + + lines.push(`**🎯 #S${sess.id}** ${title} (${this.formatDateTime(item.epoch)}) [→](${link})${marker}`); + lines.push(''); + } else if (item.type === 'prompt') { + if (tableOpen) { + lines.push(''); + tableOpen = false; + currentFile = null; + lastTime = ''; + } + + const prompt = item.data as UserPromptSearchResult; + const truncated = prompt.prompt_text.length > 100 ? prompt.prompt_text.substring(0, 100) + '...' : prompt.prompt_text; + + lines.push(`**💬 User Prompt #${prompt.prompt_number}** (${this.formatDateTime(item.epoch)})`); + lines.push(`> ${truncated}`); + lines.push(''); + } else if (item.type === 'observation') { + const obs = item.data as ObservationSearchResult; + const file = 'General'; + + if (file !== currentFile) { + if (tableOpen) { + lines.push(''); + } + + lines.push(`**${file}**`); + lines.push(`| ID | Time | T | Title | Tokens |`); + lines.push(`|----|------|---|-------|--------|`); + + currentFile = file; + tableOpen = true; + lastTime = ''; + } + + const icon = this.getTypeIcon(obs.type); + const time = this.formatTime(item.epoch); + const title = obs.title || 'Untitled'; + const tokens = this.estimateTokens(obs.narrative); + + const showTime = time !== lastTime; + const timeDisplay = showTime ? time : '″'; + lastTime = time; + + const anchorMarker = isAnchor ? ' ← **ANCHOR**' : ''; + lines.push(`| #${obs.id} | ${timeDisplay} | ${icon} | ${title}${anchorMarker} | ~${tokens} |`); + } + } + + if (tableOpen) { + lines.push(''); + } + } + + return lines.join('\n'); + } + + /** + * Get icon for observation type + */ + private getTypeIcon(type: string): string { + switch (type) { + case 'bugfix': return '🔴'; + case 'feature': return '🟣'; + case 'refactor': return '🔄'; + case 'change': return '✅'; + case 'discovery': return '🔵'; + case 'decision': return '🧠'; + default: return '•'; + } + } + + /** + * Format date for grouping (e.g., "Dec 7, 2025") + */ + private formatDate(epochMs: number): string { + const date = new Date(epochMs); + return date.toLocaleString('en-US', { + month: 'short', + day: 'numeric', + year: 'numeric' + }); + } + + /** + * Format time (e.g., "6:30 PM") + */ + private formatTime(epochMs: number): string { + const date = new Date(epochMs); + return date.toLocaleString('en-US', { + hour: 'numeric', + minute: '2-digit', + hour12: true + }); + } + + /** + * Format date and time (e.g., "Dec 7, 6:30 PM") + */ + private formatDateTime(epochMs: number): string { + const date = new Date(epochMs); + return date.toLocaleString('en-US', { + month: 'short', + day: 'numeric', + hour: 'numeric', + minute: '2-digit', + hour12: true + }); + } + + /** + * Estimate tokens from text length (~4 chars per token) + */ + private estimateTokens(text: string | null): number { + if (!text) return 0; + return Math.ceil(text.length / 4); + } +} diff --git a/src/services/worker/events/SessionEventBroadcaster.ts b/src/services/worker/events/SessionEventBroadcaster.ts new file mode 100644 index 00000000..1a532b60 --- /dev/null +++ b/src/services/worker/events/SessionEventBroadcaster.ts @@ -0,0 +1,96 @@ +/** + * Session Event Broadcaster + * + * Provides semantic broadcast methods for session lifecycle events. + * Consolidates SSE broadcasting and processing status updates. + */ + +import { SSEBroadcaster } from '../SSEBroadcaster.js'; +import type { WorkerService } from '../../worker-service.js'; + +export class SessionEventBroadcaster { + constructor( + private sseBroadcaster: SSEBroadcaster, + private workerService: WorkerService + ) {} + + /** + * Broadcast new user prompt arrival + * Starts activity indicator to show work is beginning + */ + broadcastNewPrompt(prompt: { + id: number; + claude_session_id: string; + project: string; + prompt_number: number; + prompt_text: string; + created_at_epoch: number; + }): void { + // Broadcast prompt details + this.sseBroadcaster.broadcast({ + type: 'new_prompt', + prompt + }); + + // Start activity indicator (work is about to begin) + this.sseBroadcaster.broadcast({ + type: 'processing_status', + isProcessing: true + }); + + // Update processing status based on queue depth + this.workerService.broadcastProcessingStatus(); + } + + /** + * Broadcast session initialization + */ + broadcastSessionStarted(sessionDbId: number, project: string): void { + this.sseBroadcaster.broadcast({ + type: 'session_started', + sessionDbId, + project + }); + + // Update processing status + this.workerService.broadcastProcessingStatus(); + } + + /** + * Broadcast observation queued + * Updates processing status to reflect new queue depth + */ + broadcastObservationQueued(sessionDbId: number): void { + this.sseBroadcaster.broadcast({ + type: 'observation_queued', + sessionDbId + }); + + // Update processing status (queue depth changed) + this.workerService.broadcastProcessingStatus(); + } + + /** + * Broadcast session completion + * Updates processing status to reflect session removal + */ + broadcastSessionCompleted(sessionDbId: number): void { + this.sseBroadcaster.broadcast({ + type: 'session_completed', + timestamp: Date.now(), + sessionDbId + }); + + // Update processing status (session removed from queue) + this.workerService.broadcastProcessingStatus(); + } + + /** + * Broadcast summarize request queued + * Updates processing status to reflect new queue depth + */ + broadcastSummarizeQueued(): void { + // Update processing status (queue depth changed) + this.workerService.broadcastProcessingStatus(); + } +} diff --git a/src/services/worker/http/BaseRouteHandler.ts b/src/services/worker/http/BaseRouteHandler.ts new file mode 100644 index 00000000..67bf224d --- /dev/null +++ b/src/services/worker/http/BaseRouteHandler.ts @@ -0,0 +1,82 @@ +/** + * BaseRouteHandler + * + * Base class for all route handlers providing: + * - Automatic try-catch wrapping with error logging + * - Integer parameter validation + * - Required body parameter validation + * - Standard HTTP response helpers + * - Centralized error handling + */ + +import { Request, Response } from 'express'; +import { logger } from '../../../utils/logger.js'; + +export abstract class BaseRouteHandler { + /** + * Wrap handler with automatic try-catch and error logging + */ + protected wrapHandler( + handler: (req: Request, res: Response) => void | Promise + ): (req: Request, res: Response) => void { + return (req: Request, res: Response): void => { + try { + const result = handler(req, res); + if (result instanceof Promise) { + result.catch(error => this.handleError(res, error as Error)); + } + } catch (error) { + this.handleError(res, error as Error); + } + }; + } + + /** + * Parse and validate integer parameter + * Returns the integer value or sends 400 error response + */ + protected parseIntParam(req: Request, res: Response, paramName: string): number | null { + const value = parseInt(req.params[paramName], 10); + if (isNaN(value)) { + this.badRequest(res, `Invalid ${paramName}`); + return null; + } + return value; + } + + /** + * Validate required body parameters + * Returns true if all required params present, sends 400 error otherwise + */ + protected validateRequired(req: Request, res: Response, params: string[]): boolean { + for (const param of params) { + if (req.body[param] === undefined || req.body[param] === null) { + this.badRequest(res, `Missing ${param}`); + return false; + } + } + return true; + } + + /** + * Send 400 Bad Request response + */ + protected badRequest(res: Response, message: string): void { + res.status(400).json({ error: message }); + } + + /** + * Send 404 Not Found response + */ + protected notFound(res: Response, message: string): void { + res.status(404).json({ error: message }); + } + + /** + * Centralized error logging and response + */ + protected handleError(res: Response, error: Error, context?: string): void { + logger.failure('WORKER', context || 'Request failed', {}, error); + res.status(500).json({ error: error.message }); + } +} diff --git a/src/services/worker/http/middleware.ts b/src/services/worker/http/middleware.ts new file mode 100644 index 00000000..52fcd19d --- /dev/null +++ b/src/services/worker/http/middleware.ts @@ -0,0 +1,89 @@ +/** + * HTTP Middleware for Worker Service + * + * Extracted from WorkerService.ts for better organization. + * Handles request/response logging, CORS, JSON parsing, and static file serving. + */ + +import express, { Request, Response, NextFunction, RequestHandler } from 'express'; +import cors from 'cors'; +import path from 'path'; +import { getPackageRoot } from '../../../shared/paths.js'; +import { logger } from '../../../utils/logger.js'; + +/** + * Create all middleware for the worker service + * @param summarizeRequestBody - Function to summarize request bodies for logging + * @returns Array of middleware functions + */ +export function createMiddleware( + summarizeRequestBody: (method: string, path: string, body: any) => string +): RequestHandler[] { + const middlewares: RequestHandler[] = []; + + // JSON parsing with 50mb limit + middlewares.push(express.json({ limit: '50mb' })); + + // CORS + middlewares.push(cors()); + + // HTTP request/response logging + middlewares.push((req: Request, res: Response, next: NextFunction) => { + // Skip logging for static assets and health checks + if (req.path.startsWith('/health') || req.path === '/' || req.path.includes('.')) { + return next(); + } + + const start = Date.now(); + const requestId = `${req.method}-${Date.now()}`; + + // Log incoming request with body summary + const bodySummary = summarizeRequestBody(req.method, req.path, req.body); + logger.info('HTTP', `→ ${req.method} ${req.path}`, { requestId }, bodySummary); + + // Capture response + const originalSend = res.send.bind(res); + res.send = function(body: any) { + const duration = Date.now() - start; + logger.info('HTTP', `← ${res.statusCode} ${req.path}`, { requestId, duration: `${duration}ms` }); + return originalSend(body); + }; + + next(); + }); + + // Serve static files for web UI (viewer-bundle.js, logos, fonts, etc.) + const packageRoot = getPackageRoot(); + const uiDir = path.join(packageRoot, 'plugin', 'ui'); + middlewares.push(express.static(uiDir)); + + return middlewares; +} + +/** + * Summarize request body for logging + * Used to avoid logging sensitive data or large payloads + */ +export function summarizeRequestBody(method: string, path: string, body: any): string { + if (!body || Object.keys(body).length === 0) return ''; + + // Session init + if (path.includes('/init')) { + return ''; + } + + // Observations + if (path.includes('/observations')) { + const toolName = body.tool_name || '?'; + const toolInput = body.tool_input; + const toolSummary = logger.formatTool(toolName, toolInput); + return `tool=${toolSummary}`; + } + + // Summarize request + if (path.includes('/summarize')) { + return 'requesting summary'; + } + + return ''; +} diff --git a/src/services/worker/http/routes/DataRoutes.ts b/src/services/worker/http/routes/DataRoutes.ts new file mode 100644 index 00000000..41d355ad --- /dev/null +++ b/src/services/worker/http/routes/DataRoutes.ts @@ -0,0 +1,239 @@ +/** + * Data Routes + * + * Handles data retrieval operations: observations, summaries, prompts, stats, processing status. + * All endpoints use direct database access via domain services. + */ + +import express, { Request, Response } from 'express'; +import path from 'path'; +import { readFileSync, statSync, existsSync } from 'fs'; +import { homedir } from 'os'; +import { getPackageRoot } from '../../../../shared/paths.js'; +import { getWorkerPort } from '../../../../shared/worker-utils.js'; +import { PaginationHelper } from '../../PaginationHelper.js'; +import { DatabaseManager } from '../../DatabaseManager.js'; +import { SessionManager } from '../../SessionManager.js'; +import { SSEBroadcaster } from '../../SSEBroadcaster.js'; +import type { WorkerService } from '../../../worker-service.js'; +import { BaseRouteHandler } from '../BaseRouteHandler.js'; + +export class DataRoutes extends BaseRouteHandler { + constructor( + private paginationHelper: PaginationHelper, + private dbManager: DatabaseManager, + private sessionManager: SessionManager, + private sseBroadcaster: SSEBroadcaster, + private workerService: WorkerService, + private startTime: number + ) { + super(); + } + + setupRoutes(app: express.Application): void { + // Pagination endpoints + app.get('/api/observations', this.handleGetObservations.bind(this)); + app.get('/api/summaries', this.handleGetSummaries.bind(this)); + app.get('/api/prompts', this.handleGetPrompts.bind(this)); + + // Fetch by ID endpoints + app.get('/api/observation/:id', this.handleGetObservationById.bind(this)); + app.get('/api/session/:id', this.handleGetSessionById.bind(this)); + app.get('/api/prompt/:id', this.handleGetPromptById.bind(this)); + + // Metadata endpoints + app.get('/api/stats', this.handleGetStats.bind(this)); + app.get('/api/projects', this.handleGetProjects.bind(this)); + + // Processing status endpoints + app.get('/api/processing-status', this.handleGetProcessingStatus.bind(this)); + app.post('/api/processing', this.handleSetProcessing.bind(this)); + } + + /** + * Get paginated observations + */ + private handleGetObservations = this.wrapHandler((req: Request, res: Response): void => { + const { offset, limit, project } = this.parsePaginationParams(req); + const result = this.paginationHelper.getObservations(offset, limit, project); + res.json(result); + }); + + /** + * Get paginated summaries + */ + private handleGetSummaries = this.wrapHandler((req: Request, res: Response): void => { + const { offset, limit, project } = this.parsePaginationParams(req); + const result = this.paginationHelper.getSummaries(offset, limit, project); + res.json(result); + }); + + /** + * Get paginated user prompts + */ + private handleGetPrompts = this.wrapHandler((req: Request, res: Response): void => { + const { offset, limit, project } = this.parsePaginationParams(req); + const result = this.paginationHelper.getPrompts(offset, limit, project); + res.json(result); + }); + + /** + * Get observation by ID + * GET /api/observation/:id + */ + private handleGetObservationById = this.wrapHandler((req: Request, res: Response): void => { + const id = this.parseIntParam(req, res, 'id'); + if (id === null) return; + + const store = this.dbManager.getSessionStore(); + const observation = store.getObservationById(id); + + if (!observation) { + this.notFound(res, `Observation #${id} not found`); + return; + } + + res.json(observation); + }); + + /** + * Get session by ID + * GET /api/session/:id + */ + private handleGetSessionById = this.wrapHandler((req: Request, res: Response): void => { + const id = this.parseIntParam(req, res, 'id'); + if (id === null) return; + + const store = this.dbManager.getSessionStore(); + const sessions = store.getSessionSummariesByIds([id]); + + if (sessions.length === 0) { + this.notFound(res, `Session #${id} not found`); + return; + } + + res.json(sessions[0]); + }); + + /** + * Get user prompt by ID + * GET /api/prompt/:id + */ + private handleGetPromptById = this.wrapHandler((req: Request, res: Response): void => { + const id = this.parseIntParam(req, res, 'id'); + if (id === null) return; + + const store = this.dbManager.getSessionStore(); + const prompts = store.getUserPromptsByIds([id]); + + if (prompts.length === 0) { + this.notFound(res, `Prompt #${id} not found`); + return; + } + + res.json(prompts[0]); + }); + + /** + * Get database statistics (with worker metadata) + */ + private handleGetStats = this.wrapHandler((req: Request, res: Response): void => { + const db = this.dbManager.getSessionStore().db; + + // Read version from package.json + const packageRoot = getPackageRoot(); + const packageJsonPath = path.join(packageRoot, 'package.json'); + const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')); + const version = packageJson.version; + + // Get database stats + const totalObservations = db.prepare('SELECT COUNT(*) as count FROM observations').get() as { count: number }; + const totalSessions = db.prepare('SELECT COUNT(*) as count FROM sdk_sessions').get() as { count: number }; + const totalSummaries = db.prepare('SELECT COUNT(*) as count FROM session_summaries').get() as { count: number }; + + // Get database file size and path + const dbPath = path.join(homedir(), '.claude-mem', 'claude-mem.db'); + let dbSize = 0; + if (existsSync(dbPath)) { + dbSize = statSync(dbPath).size; + } + + // Worker metadata + const uptime = Math.floor((Date.now() - this.startTime) / 1000); + const activeSessions = this.sessionManager.getActiveSessionCount(); + const sseClients = this.sseBroadcaster.getClientCount(); + + res.json({ + worker: { + version, + uptime, + activeSessions, + sseClients, + port: getWorkerPort() + }, + database: { + path: dbPath, + size: dbSize, + observations: totalObservations.count, + sessions: totalSessions.count, + summaries: totalSummaries.count + } + }); + }); + + /** + * Get list of distinct projects from observations + * GET /api/projects + */ + private handleGetProjects = this.wrapHandler((req: Request, res: Response): void => { + const db = this.dbManager.getSessionStore().db; + + const rows = db.prepare(` + SELECT DISTINCT project + FROM observations + WHERE project IS NOT NULL + GROUP BY project + ORDER BY MAX(created_at_epoch) DESC + `).all() as Array<{ project: string }>; + + const projects = rows.map(row => row.project); + + res.json({ projects }); + }); + + /** + * Get current processing status + * GET /api/processing-status + */ + private handleGetProcessingStatus = this.wrapHandler((req: Request, res: Response): void => { + const isProcessing = this.sessionManager.isAnySessionProcessing(); + const queueDepth = this.sessionManager.getTotalActiveWork(); // Includes queued + actively processing + res.json({ isProcessing, queueDepth }); + }); + + /** + * Set processing status (called by hooks) + * NOTE: This now broadcasts computed status based on active processing (ignores input) + */ + private handleSetProcessing = this.wrapHandler((req: Request, res: Response): void => { + // Broadcast current computed status (ignores manual input) + this.workerService.broadcastProcessingStatus(); + + const isProcessing = this.sessionManager.isAnySessionProcessing(); + const queueDepth = this.sessionManager.getTotalQueueDepth(); + const activeSessions = this.sessionManager.getActiveSessionCount(); + + res.json({ status: 'ok', isProcessing }); + }); + + /** + * Parse pagination parameters from request query + */ + private parsePaginationParams(req: Request): { offset: number; limit: number; project?: string } { + const offset = parseInt(req.query.offset as string, 10) || 0; + const limit = Math.min(parseInt(req.query.limit as string, 10) || 20, 100); // Max 100 + const project = req.query.project as string | undefined; + + return { offset, limit, project }; + } +} diff --git a/src/services/worker/http/routes/SearchRoutes.ts b/src/services/worker/http/routes/SearchRoutes.ts new file mode 100644 index 00000000..bb30af8c --- /dev/null +++ b/src/services/worker/http/routes/SearchRoutes.ts @@ -0,0 +1,360 @@ +/** + * Search Routes + * + * Handles all search operations via SearchManager. + * All endpoints call SearchManager methods directly. + */ + +import express, { Request, Response } from 'express'; +import { SearchManager } from '../../SearchManager.js'; +import { BaseRouteHandler } from '../BaseRouteHandler.js'; + +export class SearchRoutes extends BaseRouteHandler { + constructor( + private searchManager: SearchManager + ) { + super(); + } + + setupRoutes(app: express.Application): void { + // Unified endpoints (new consolidated API) + app.get('/api/search', this.handleUnifiedSearch.bind(this)); + app.get('/api/timeline', this.handleUnifiedTimeline.bind(this)); + app.get('/api/decisions', this.handleDecisions.bind(this)); + app.get('/api/changes', this.handleChanges.bind(this)); + app.get('/api/how-it-works', this.handleHowItWorks.bind(this)); + + // Backward compatibility endpoints + app.get('/api/search/observations', this.handleSearchObservations.bind(this)); + app.get('/api/search/sessions', this.handleSearchSessions.bind(this)); + app.get('/api/search/prompts', this.handleSearchPrompts.bind(this)); + app.get('/api/search/by-concept', this.handleSearchByConcept.bind(this)); + app.get('/api/search/by-file', this.handleSearchByFile.bind(this)); + app.get('/api/search/by-type', this.handleSearchByType.bind(this)); + + // Context endpoints + app.get('/api/context/recent', this.handleGetRecentContext.bind(this)); + app.get('/api/context/timeline', this.handleGetContextTimeline.bind(this)); + app.get('/api/context/preview', this.handleContextPreview.bind(this)); + app.get('/api/context/inject', this.handleContextInject.bind(this)); + + // Timeline and help endpoints + app.get('/api/timeline/by-query', this.handleGetTimelineByQuery.bind(this)); + app.get('/api/search/help', this.handleSearchHelp.bind(this)); + } + + /** + * Unified search (observations + sessions + prompts) + * GET /api/search?query=...&type=observations&format=index&limit=20 + */ + private handleUnifiedSearch = this.wrapHandler(async (req: Request, res: Response): Promise => { + const result = await this.searchManager.search(req.query); + res.json(result.content); + }); + + /** + * Unified timeline (anchor or query-based) + * GET /api/timeline?anchor=123 OR GET /api/timeline?query=... + */ + private handleUnifiedTimeline = this.wrapHandler(async (req: Request, res: Response): Promise => { + const result = await this.searchManager.timeline(req.query); + res.json(result.content); + }); + + /** + * Semantic shortcut for finding decision observations + * GET /api/decisions?format=index&limit=20 + */ + private handleDecisions = this.wrapHandler(async (req: Request, res: Response): Promise => { + const result = await this.searchManager.decisions(req.query); + res.json(result.content); + }); + + /** + * Semantic shortcut for finding change-related observations + * GET /api/changes?format=index&limit=20 + */ + private handleChanges = this.wrapHandler(async (req: Request, res: Response): Promise => { + const result = await this.searchManager.changes(req.query); + res.json(result.content); + }); + + /** + * Semantic shortcut for finding "how it works" explanations + * GET /api/how-it-works?format=index&limit=20 + */ + private handleHowItWorks = this.wrapHandler(async (req: Request, res: Response): Promise => { + const result = await this.searchManager.howItWorks(req.query); + res.json(result.content); + }); + + /** + * Search observations (use /api/search?type=observations instead) + * GET /api/search/observations?query=...&format=index&limit=20&project=... + */ + private handleSearchObservations = this.wrapHandler(async (req: Request, res: Response): Promise => { + const result = await this.searchManager.searchObservations(req.query); + res.json(result.content); + }); + + /** + * Search session summaries + * GET /api/search/sessions?query=...&format=index&limit=20 + */ + private handleSearchSessions = this.wrapHandler(async (req: Request, res: Response): Promise => { + const result = await this.searchManager.searchSessions(req.query); + res.json(result.content); + }); + + /** + * Search user prompts + * GET /api/search/prompts?query=...&format=index&limit=20 + */ + private handleSearchPrompts = this.wrapHandler(async (req: Request, res: Response): Promise => { + const result = await this.searchManager.searchUserPrompts(req.query); + res.json(result.content); + }); + + /** + * Search observations by concept + * GET /api/search/by-concept?concept=discovery&format=index&limit=5 + */ + private handleSearchByConcept = this.wrapHandler(async (req: Request, res: Response): Promise => { + const result = await this.searchManager.findByConcept(req.query); + res.json(result.content); + }); + + /** + * Search by file path + * GET /api/search/by-file?filePath=...&format=index&limit=10 + */ + private handleSearchByFile = this.wrapHandler(async (req: Request, res: Response): Promise => { + const result = await this.searchManager.findByFile(req.query); + res.json(result.content); + }); + + /** + * Search observations by type + * GET /api/search/by-type?type=bugfix&format=index&limit=10 + */ + private handleSearchByType = this.wrapHandler(async (req: Request, res: Response): Promise => { + const result = await this.searchManager.findByType(req.query); + res.json(result.content); + }); + + /** + * Get recent context (summaries and observations for a project) + * GET /api/context/recent?project=...&limit=3 + */ + private handleGetRecentContext = this.wrapHandler(async (req: Request, res: Response): Promise => { + const result = await this.searchManager.getRecentContext(req.query); + res.json(result.content); + }); + + /** + * Get context timeline around an anchor point + * GET /api/context/timeline?anchor=123&depth_before=10&depth_after=10&project=... + */ + private handleGetContextTimeline = this.wrapHandler(async (req: Request, res: Response): Promise => { + const result = await this.searchManager.getContextTimeline(req.query); + res.json(result.content); + }); + + /** + * Generate context preview for settings modal + * GET /api/context/preview?project=... + */ + private handleContextPreview = this.wrapHandler(async (req: Request, res: Response): Promise => { + const projectName = req.query.project as string; + + if (!projectName) { + this.badRequest(res, 'Project parameter is required'); + return; + } + + // Import context generator (runs in worker, has access to database) + const { generateContext } = await import('../../../context-generator.js'); + + // Use project name as CWD (generateContext uses path.basename to get project) + const cwd = `/preview/${projectName}`; + + // Generate context with colors for terminal display + const contextText = await generateContext( + { + session_id: 'preview-' + Date.now(), + cwd: cwd + }, + true // useColors=true for ANSI terminal output + ); + + // Return as plain text + res.setHeader('Content-Type', 'text/plain; charset=utf-8'); + res.send(contextText); + }); + + /** + * Context injection endpoint for hooks + * GET /api/context/inject?project=...&colors=true + * + * Returns pre-formatted context string ready for display. + * Use colors=true for ANSI-colored terminal output. + */ + private handleContextInject = this.wrapHandler(async (req: Request, res: Response): Promise => { + const projectName = req.query.project as string; + const useColors = req.query.colors === 'true'; + + if (!projectName) { + this.badRequest(res, 'Project parameter is required'); + return; + } + + // Import context generator (runs in worker, has access to database) + const { generateContext } = await import('../../../context-generator.js'); + + // Use project name as CWD (generateContext uses path.basename to get project) + const cwd = `/context/${projectName}`; + + // Generate context + const contextText = await generateContext( + { + session_id: 'context-inject-' + Date.now(), + cwd: cwd + }, + useColors + ); + + // Return as plain text + res.setHeader('Content-Type', 'text/plain; charset=utf-8'); + res.send(contextText); + }); + + /** + * Get timeline by query (search first, then get timeline around best match) + * GET /api/timeline/by-query?query=...&mode=auto&depth_before=10&depth_after=10 + */ + private handleGetTimelineByQuery = this.wrapHandler(async (req: Request, res: Response): Promise => { + const result = await this.searchManager.getTimelineByQuery(req.query); + res.json(result.content); + }); + + /** + * Get search help documentation + * GET /api/search/help + */ + private handleSearchHelp = this.wrapHandler((req: Request, res: Response): void => { + res.json({ + title: 'Claude-Mem Search API', + description: 'HTTP API for searching persistent memory', + endpoints: [ + { + path: '/api/search/observations', + method: 'GET', + description: 'Search observations using full-text search', + parameters: { + query: 'Search query (required)', + format: 'Response format: "index" or "full" (default: "full")', + limit: 'Number of results (default: 20)', + project: 'Filter by project name (optional)' + } + }, + { + path: '/api/search/sessions', + method: 'GET', + description: 'Search session summaries using full-text search', + parameters: { + query: 'Search query (required)', + format: 'Response format: "index" or "full" (default: "full")', + limit: 'Number of results (default: 20)' + } + }, + { + path: '/api/search/prompts', + method: 'GET', + description: 'Search user prompts using full-text search', + parameters: { + query: 'Search query (required)', + format: 'Response format: "index" or "full" (default: "full")', + limit: 'Number of results (default: 20)', + project: 'Filter by project name (optional)' + } + }, + { + path: '/api/search/by-concept', + method: 'GET', + description: 'Find observations by concept tag', + parameters: { + concept: 'Concept tag (required): discovery, decision, bugfix, feature, refactor', + format: 'Response format: "index" or "full" (default: "full")', + limit: 'Number of results (default: 10)', + project: 'Filter by project name (optional)' + } + }, + { + path: '/api/search/by-file', + method: 'GET', + description: 'Find observations and sessions by file path', + parameters: { + filePath: 'File path or partial path (required)', + format: 'Response format: "index" or "full" (default: "full")', + limit: 'Number of results per type (default: 10)', + project: 'Filter by project name (optional)' + } + }, + { + path: '/api/search/by-type', + method: 'GET', + description: 'Find observations by type', + parameters: { + type: 'Observation type (required): discovery, decision, bugfix, feature, refactor', + format: 'Response format: "index" or "full" (default: "full")', + limit: 'Number of results (default: 10)', + project: 'Filter by project name (optional)' + } + }, + { + path: '/api/context/recent', + method: 'GET', + description: 'Get recent session context including summaries and observations', + parameters: { + project: 'Project name (default: current directory)', + limit: 'Number of recent sessions (default: 3)' + } + }, + { + path: '/api/context/timeline', + method: 'GET', + description: 'Get unified timeline around a specific point in time', + parameters: { + anchor: 'Anchor point: observation ID, session ID (e.g., "S123"), or ISO timestamp (required)', + depth_before: 'Number of records before anchor (default: 10)', + depth_after: 'Number of records after anchor (default: 10)', + project: 'Filter by project name (optional)' + } + }, + { + path: '/api/timeline/by-query', + method: 'GET', + description: 'Search for best match, then get timeline around it', + parameters: { + query: 'Search query (required)', + mode: 'Search mode: "auto", "observations", or "sessions" (default: "auto")', + depth_before: 'Number of records before match (default: 10)', + depth_after: 'Number of records after match (default: 10)', + project: 'Filter by project name (optional)' + } + }, + { + path: '/api/search/help', + method: 'GET', + description: 'Get this help documentation' + } + ], + examples: [ + 'curl "http://localhost:37777/api/search/observations?query=authentication&format=index&limit=5"', + 'curl "http://localhost:37777/api/search/by-type?type=bugfix&limit=10"', + 'curl "http://localhost:37777/api/context/recent?project=claude-mem&limit=3"', + 'curl "http://localhost:37777/api/context/timeline?anchor=123&depth_before=5&depth_after=5"' + ] + }); + }); +} diff --git a/src/services/worker/http/routes/SessionRoutes.ts b/src/services/worker/http/routes/SessionRoutes.ts new file mode 100644 index 00000000..5b69e069 --- /dev/null +++ b/src/services/worker/http/routes/SessionRoutes.ts @@ -0,0 +1,390 @@ +/** + * Session Routes + * + * Handles session lifecycle operations: initialization, observations, summarization, completion. + * These routes manage the flow of work through the Claude Agent SDK. + */ + +import express, { Request, Response } from 'express'; +import { getWorkerPort } from '../../../../shared/worker-utils.js'; +import { logger } from '../../../../utils/logger.js'; +import { stripMemoryTagsFromJson } from '../../../../utils/tag-stripping.js'; +import { SessionManager } from '../../SessionManager.js'; +import { DatabaseManager } from '../../DatabaseManager.js'; +import { SDKAgent } from '../../SDKAgent.js'; +import type { WorkerService } from '../../../worker-service.js'; +import { BaseRouteHandler } from '../BaseRouteHandler.js'; +import { SessionEventBroadcaster } from '../../events/SessionEventBroadcaster.js'; +import { SessionCompletionHandler } from '../../session/SessionCompletionHandler.js'; +import { PrivacyCheckValidator } from '../../validation/PrivacyCheckValidator.js'; + +export class SessionRoutes extends BaseRouteHandler { + private completionHandler: SessionCompletionHandler; + + constructor( + private sessionManager: SessionManager, + private dbManager: DatabaseManager, + private sdkAgent: SDKAgent, + private eventBroadcaster: SessionEventBroadcaster, + private workerService: WorkerService + ) { + super(); + this.completionHandler = new SessionCompletionHandler( + sessionManager, + dbManager, + eventBroadcaster + ); + } + + /** + * Ensures SDK agent generator is running for a session + * Auto-starts if not already running to process pending queue + */ + private ensureGeneratorRunning(sessionDbId: number, source: string): void { + const session = this.sessionManager.getSession(sessionDbId); + if (session && !session.generatorPromise) { + logger.info('SESSION', `Generator auto-starting (${source})`, { + sessionId: sessionDbId, + queueDepth: session.pendingMessages.length + }); + + session.generatorPromise = this.sdkAgent.startSession(session, this.workerService) + .catch(err => { + logger.failure('SDK', 'SDK agent error', { sessionId: sessionDbId }, err); + }) + .finally(() => { + logger.info('SESSION', `Generator finished`, { sessionId: sessionDbId }); + session.generatorPromise = null; + this.workerService.broadcastProcessingStatus(); + }); + } + } + + setupRoutes(app: express.Application): void { + // Legacy session endpoints (use sessionDbId) + app.post('/sessions/:sessionDbId/init', this.handleSessionInit.bind(this)); + app.post('/sessions/:sessionDbId/observations', this.handleObservations.bind(this)); + app.post('/sessions/:sessionDbId/summarize', this.handleSummarize.bind(this)); + app.get('/sessions/:sessionDbId/status', this.handleSessionStatus.bind(this)); + app.delete('/sessions/:sessionDbId', this.handleSessionDelete.bind(this)); + app.post('/sessions/:sessionDbId/complete', this.handleSessionComplete.bind(this)); + + // New session endpoints (use claudeSessionId) + app.post('/api/sessions/observations', this.handleObservationsByClaudeId.bind(this)); + app.post('/api/sessions/summarize', this.handleSummarizeByClaudeId.bind(this)); + app.post('/api/sessions/complete', this.handleSessionCompleteByClaudeId.bind(this)); + } + + /** + * Initialize a new session + */ + private handleSessionInit = this.wrapHandler((req: Request, res: Response): void => { + const sessionDbId = this.parseIntParam(req, res, 'sessionDbId'); + if (sessionDbId === null) return; + + const { userPrompt, promptNumber } = req.body; + const session = this.sessionManager.initializeSession(sessionDbId, userPrompt, promptNumber); + + // Get the latest user_prompt for this session to sync to Chroma + const latestPrompt = this.dbManager.getSessionStore().getLatestUserPrompt(session.claudeSessionId); + + // Broadcast new prompt to SSE clients (for web UI) + if (latestPrompt) { + this.eventBroadcaster.broadcastNewPrompt({ + id: latestPrompt.id, + claude_session_id: latestPrompt.claude_session_id, + project: latestPrompt.project, + prompt_number: latestPrompt.prompt_number, + prompt_text: latestPrompt.prompt_text, + created_at_epoch: latestPrompt.created_at_epoch + }); + + // Sync user prompt to Chroma with error logging + const chromaStart = Date.now(); + const promptText = latestPrompt.prompt_text; + this.dbManager.getChromaSync().syncUserPrompt( + latestPrompt.id, + latestPrompt.sdk_session_id, + latestPrompt.project, + promptText, + latestPrompt.prompt_number, + latestPrompt.created_at_epoch + ).then(() => { + const chromaDuration = Date.now() - chromaStart; + const truncatedPrompt = promptText.length > 60 + ? promptText.substring(0, 60) + '...' + : promptText; + logger.debug('CHROMA', 'User prompt synced', { + promptId: latestPrompt.id, + duration: `${chromaDuration}ms`, + prompt: truncatedPrompt + }); + }).catch(err => { + logger.error('CHROMA', 'Failed to sync user_prompt', { + promptId: latestPrompt.id, + sessionId: sessionDbId + }, err); + }); + } + + // Start SDK agent in background (pass worker ref for spinner control) + logger.info('SESSION', 'Generator starting', { + sessionId: sessionDbId, + project: session.project, + promptNum: session.lastPromptNumber + }); + + session.generatorPromise = this.sdkAgent.startSession(session, this.workerService) + .catch(err => { + logger.failure('SDK', 'SDK agent error', { sessionId: sessionDbId }, err); + }) + .finally(() => { + // Clear generator reference when completed + logger.info('SESSION', `Generator finished`, { sessionId: sessionDbId }); + session.generatorPromise = null; + // Broadcast status change (generator finished, may stop spinner) + this.workerService.broadcastProcessingStatus(); + }); + + // Broadcast session started event + this.eventBroadcaster.broadcastSessionStarted(sessionDbId, session.project); + + res.json({ status: 'initialized', sessionDbId, port: getWorkerPort() }); + }); + + /** + * Queue observations for processing + * CRITICAL: Ensures SDK agent is running to process the queue (ALWAYS SAVE EVERYTHING) + */ + private handleObservations = this.wrapHandler((req: Request, res: Response): void => { + const sessionDbId = this.parseIntParam(req, res, 'sessionDbId'); + if (sessionDbId === null) return; + + const { tool_name, tool_input, tool_response, prompt_number, cwd } = req.body; + + this.sessionManager.queueObservation(sessionDbId, { + tool_name, + tool_input, + tool_response, + prompt_number, + cwd + }); + + // CRITICAL: Ensure SDK agent is running to consume the queue + this.ensureGeneratorRunning(sessionDbId, 'observation'); + + // Broadcast observation queued event + this.eventBroadcaster.broadcastObservationQueued(sessionDbId); + + res.json({ status: 'queued' }); + }); + + /** + * Queue summarize request + * CRITICAL: Ensures SDK agent is running to process the queue (ALWAYS SAVE EVERYTHING) + */ + private handleSummarize = this.wrapHandler((req: Request, res: Response): void => { + const sessionDbId = this.parseIntParam(req, res, 'sessionDbId'); + if (sessionDbId === null) return; + + const { last_user_message, last_assistant_message } = req.body; + + this.sessionManager.queueSummarize(sessionDbId, last_user_message, last_assistant_message); + + // CRITICAL: Ensure SDK agent is running to consume the queue + this.ensureGeneratorRunning(sessionDbId, 'summarize'); + + // Broadcast summarize queued event + this.eventBroadcaster.broadcastSummarizeQueued(); + + res.json({ status: 'queued' }); + }); + + /** + * Get session status + */ + private handleSessionStatus = this.wrapHandler((req: Request, res: Response): void => { + const sessionDbId = this.parseIntParam(req, res, 'sessionDbId'); + if (sessionDbId === null) return; + + const session = this.sessionManager.getSession(sessionDbId); + + if (!session) { + res.json({ status: 'not_found' }); + return; + } + + res.json({ + status: 'active', + sessionDbId, + project: session.project, + queueLength: session.pendingMessages.length, + uptime: Date.now() - session.startTime + }); + }); + + /** + * Delete a session + */ + private handleSessionDelete = this.wrapHandler(async (req: Request, res: Response): Promise => { + const sessionDbId = this.parseIntParam(req, res, 'sessionDbId'); + if (sessionDbId === null) return; + + await this.completionHandler.completeByDbId(sessionDbId); + + res.json({ status: 'deleted' }); + }); + + /** + * Complete a session (backward compatibility for cleanup-hook) + * cleanup-hook expects POST /sessions/:sessionDbId/complete instead of DELETE + */ + private handleSessionComplete = this.wrapHandler(async (req: Request, res: Response): Promise => { + const sessionDbId = this.parseIntParam(req, res, 'sessionDbId'); + if (sessionDbId === null) return; + + await this.completionHandler.completeByDbId(sessionDbId); + + res.json({ success: true }); + }); + + /** + * Queue observations by claudeSessionId (post-tool-use-hook uses this) + * POST /api/sessions/observations + * Body: { claudeSessionId, tool_name, tool_input, tool_response, cwd } + */ + private handleObservationsByClaudeId = this.wrapHandler((req: Request, res: Response): void => { + const { claudeSessionId, tool_name, tool_input, tool_response, cwd } = req.body; + + if (!claudeSessionId) { + return this.badRequest(res, 'Missing claudeSessionId'); + } + + const store = this.dbManager.getSessionStore(); + + // Get or create session + const sessionDbId = store.createSDKSession(claudeSessionId, '', ''); + const promptNumber = store.getPromptCounter(sessionDbId); + + // Privacy check: skip if user prompt was entirely private + const userPrompt = PrivacyCheckValidator.checkUserPromptPrivacy( + store, + claudeSessionId, + promptNumber, + 'observation', + sessionDbId, + { tool_name } + ); + if (!userPrompt) { + res.json({ status: 'skipped', reason: 'private' }); + return; + } + + // Strip memory tags from tool_input and tool_response + let cleanedToolInput = '{}'; + let cleanedToolResponse = '{}'; + + try { + cleanedToolInput = tool_input !== undefined + ? stripMemoryTagsFromJson(JSON.stringify(tool_input)) + : '{}'; + } catch (error) { + cleanedToolInput = '{"error": "Failed to serialize tool_input"}'; + } + + try { + cleanedToolResponse = tool_response !== undefined + ? stripMemoryTagsFromJson(JSON.stringify(tool_response)) + : '{}'; + } catch (error) { + cleanedToolResponse = '{"error": "Failed to serialize tool_response"}'; + } + + // Queue observation + this.sessionManager.queueObservation(sessionDbId, { + tool_name, + tool_input: cleanedToolInput, + tool_response: cleanedToolResponse, + prompt_number: promptNumber, + cwd: cwd || '' + }); + + // Ensure SDK agent is running + this.ensureGeneratorRunning(sessionDbId, 'observation'); + + // Broadcast observation queued event + this.eventBroadcaster.broadcastObservationQueued(sessionDbId); + + res.json({ status: 'queued' }); + }); + + /** + * Queue summarize by claudeSessionId (summary-hook uses this) + * POST /api/sessions/summarize + * Body: { claudeSessionId, last_user_message, last_assistant_message } + * + * Checks privacy, queues summarize request for SDK agent + */ + private handleSummarizeByClaudeId = this.wrapHandler((req: Request, res: Response): void => { + const { claudeSessionId, last_user_message, last_assistant_message } = req.body; + + if (!claudeSessionId) { + return this.badRequest(res, 'Missing claudeSessionId'); + } + + const store = this.dbManager.getSessionStore(); + + // Get or create session + const sessionDbId = store.createSDKSession(claudeSessionId, '', ''); + const promptNumber = store.getPromptCounter(sessionDbId); + + // Privacy check: skip if user prompt was entirely private + const userPrompt = PrivacyCheckValidator.checkUserPromptPrivacy( + store, + claudeSessionId, + promptNumber, + 'summarize', + sessionDbId + ); + if (!userPrompt) { + res.json({ status: 'skipped', reason: 'private' }); + return; + } + + // Queue summarize + this.sessionManager.queueSummarize(sessionDbId, last_user_message || '', last_assistant_message); + + // Ensure SDK agent is running + this.ensureGeneratorRunning(sessionDbId, 'summarize'); + + // Broadcast summarize queued event + this.eventBroadcaster.broadcastSummarizeQueued(); + + res.json({ status: 'queued' }); + }); + + /** + * Complete session by claudeSessionId (cleanup-hook uses this) + * POST /api/sessions/complete + * Body: { claudeSessionId } + * + * Marks session complete, stops SDK agent, broadcasts status + */ + private handleSessionCompleteByClaudeId = this.wrapHandler(async (req: Request, res: Response): Promise => { + const { claudeSessionId } = req.body; + + if (!claudeSessionId) { + return this.badRequest(res, 'Missing claudeSessionId'); + } + + const found = await this.completionHandler.completeByClaudeId(claudeSessionId); + + if (!found) { + // No active session - nothing to clean up (may have already been completed) + res.json({ success: true, message: 'No active session found' }); + return; + } + + res.json({ success: true }); + }); +} diff --git a/src/services/worker/http/routes/SettingsRoutes.ts b/src/services/worker/http/routes/SettingsRoutes.ts new file mode 100644 index 00000000..b0aa0436 --- /dev/null +++ b/src/services/worker/http/routes/SettingsRoutes.ts @@ -0,0 +1,325 @@ +/** + * Settings Routes + * + * Handles settings management, MCP toggle, and branch switching. + * Settings are stored in ~/.claude-mem/settings.json + */ + +import express, { Request, Response } from 'express'; +import path from 'path'; +import { readFileSync, writeFileSync, existsSync, renameSync } from 'fs'; +import { homedir } from 'os'; +import { getPackageRoot } from '../../../../shared/paths.js'; +import { logger } from '../../../../utils/logger.js'; +import { SettingsManager } from '../../SettingsManager.js'; +import { getBranchInfo, switchBranch, pullUpdates } from '../../BranchManager.js'; +import { + OBSERVATION_TYPES, + OBSERVATION_CONCEPTS, + ObservationType, + ObservationConcept +} from '../../../../constants/observation-metadata.js'; +import { BaseRouteHandler } from '../BaseRouteHandler.js'; +import { SettingsDefaultsManager } from '../../settings/SettingsDefaultsManager.js'; + +export class SettingsRoutes extends BaseRouteHandler { + constructor( + private settingsManager: SettingsManager + ) { + super(); + } + + setupRoutes(app: express.Application): void { + // Settings endpoints + app.get('/api/settings', this.handleGetSettings.bind(this)); + app.post('/api/settings', this.handleUpdateSettings.bind(this)); + + // MCP toggle endpoints + app.get('/api/mcp/status', this.handleGetMcpStatus.bind(this)); + app.post('/api/mcp/toggle', this.handleToggleMcp.bind(this)); + + // Branch switching endpoints + app.get('/api/branch/status', this.handleGetBranchStatus.bind(this)); + app.post('/api/branch/switch', this.handleSwitchBranch.bind(this)); + app.post('/api/branch/update', this.handleUpdateBranch.bind(this)); + } + + /** + * Get environment settings (from ~/.claude/settings.json) + */ + private handleGetSettings = this.wrapHandler((req: Request, res: Response): void => { + const settingsPath = path.join(homedir(), '.claude-mem', 'settings.json'); + const settings = SettingsDefaultsManager.loadFromFile(settingsPath); + res.json(settings); + }); + + /** + * Update environment settings (in ~/.claude/settings.json) with validation + */ + private handleUpdateSettings = this.wrapHandler((req: Request, res: Response): void => { + // Validate CLAUDE_MEM_CONTEXT_OBSERVATIONS + if (req.body.CLAUDE_MEM_CONTEXT_OBSERVATIONS) { + const obsCount = parseInt(req.body.CLAUDE_MEM_CONTEXT_OBSERVATIONS, 10); + if (isNaN(obsCount) || obsCount < 1 || obsCount > 200) { + res.status(400).json({ + success: false, + error: 'CLAUDE_MEM_CONTEXT_OBSERVATIONS must be between 1 and 200' + }); + return; + } + } + + // Validate CLAUDE_MEM_WORKER_PORT + if (req.body.CLAUDE_MEM_WORKER_PORT) { + const port = parseInt(req.body.CLAUDE_MEM_WORKER_PORT, 10); + if (isNaN(port) || port < 1024 || port > 65535) { + res.status(400).json({ + success: false, + error: 'CLAUDE_MEM_WORKER_PORT must be between 1024 and 65535' + }); + return; + } + } + + // Validate context settings + const validation = this.validateContextSettings(req.body); + if (!validation.valid) { + res.status(400).json({ + success: false, + error: validation.error + }); + return; + } + + // Read existing settings + const settingsPath = path.join(homedir(), '.claude-mem', 'settings.json'); + let settings: any = { env: {} }; + + if (existsSync(settingsPath)) { + const settingsData = readFileSync(settingsPath, 'utf-8'); + settings = JSON.parse(settingsData); + if (!settings.env) { + settings.env = {}; + } + } + + // Update all settings from request body + const settingKeys = [ + 'CLAUDE_MEM_MODEL', + 'CLAUDE_MEM_CONTEXT_OBSERVATIONS', + 'CLAUDE_MEM_WORKER_PORT', + 'CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS', + 'CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS', + 'CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT', + 'CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT', + 'CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES', + 'CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS', + 'CLAUDE_MEM_CONTEXT_FULL_COUNT', + 'CLAUDE_MEM_CONTEXT_FULL_FIELD', + 'CLAUDE_MEM_CONTEXT_SESSION_COUNT', + 'CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY', + 'CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE', + ]; + + for (const key of settingKeys) { + if (req.body[key] !== undefined) { + settings.env[key] = req.body[key]; + } + } + + // Write back + writeFileSync(settingsPath, JSON.stringify(settings, null, 2), 'utf-8'); + + logger.info('WORKER', 'Settings updated'); + res.json({ success: true, message: 'Settings updated successfully' }); + }); + + /** + * GET /api/mcp/status - Check if MCP search server is enabled + */ + private handleGetMcpStatus = this.wrapHandler((req: Request, res: Response): void => { + const enabled = this.isMcpEnabled(); + res.json({ enabled }); + }); + + /** + * POST /api/mcp/toggle - Toggle MCP search server on/off + * Body: { enabled: boolean } + */ + private handleToggleMcp = this.wrapHandler((req: Request, res: Response): void => { + const { enabled } = req.body; + + if (typeof enabled !== 'boolean') { + this.badRequest(res, 'enabled must be a boolean'); + return; + } + + this.toggleMcp(enabled); + res.json({ success: true, enabled: this.isMcpEnabled() }); + }); + + /** + * GET /api/branch/status - Get current branch information + */ + private handleGetBranchStatus = this.wrapHandler((req: Request, res: Response): void => { + const info = getBranchInfo(); + res.json(info); + }); + + /** + * POST /api/branch/switch - Switch to a different branch + * Body: { branch: "main" | "beta/7.0" } + */ + private handleSwitchBranch = this.wrapHandler(async (req: Request, res: Response): Promise => { + const { branch } = req.body; + + if (!branch) { + res.status(400).json({ success: false, error: 'Missing branch parameter' }); + return; + } + + // Validate branch name + const allowedBranches = ['main', 'beta/7.0']; + if (!allowedBranches.includes(branch)) { + res.status(400).json({ + success: false, + error: `Invalid branch. Allowed: ${allowedBranches.join(', ')}` + }); + return; + } + + logger.info('WORKER', 'Branch switch requested', { branch }); + + const result = await switchBranch(branch); + + if (result.success) { + // Schedule worker restart after response is sent + setTimeout(() => { + logger.info('WORKER', 'Restarting worker after branch switch'); + process.exit(0); // PM2 will restart the worker + }, 1000); + } + + res.json(result); + }); + + /** + * POST /api/branch/update - Pull latest updates for current branch + */ + private handleUpdateBranch = this.wrapHandler(async (req: Request, res: Response): Promise => { + logger.info('WORKER', 'Branch update requested'); + + const result = await pullUpdates(); + + if (result.success) { + // Schedule worker restart after response is sent + setTimeout(() => { + logger.info('WORKER', 'Restarting worker after branch update'); + process.exit(0); // PM2 will restart the worker + }, 1000); + } + + res.json(result); + }); + + /** + * Validate context settings from request body + */ + private validateContextSettings(settings: any): { valid: boolean; error?: string } { + // Validate boolean string values + const booleanSettings = [ + 'CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS', + 'CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS', + 'CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT', + 'CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT', + 'CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY', + 'CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE', + ]; + + for (const key of booleanSettings) { + if (settings[key] && !['true', 'false'].includes(settings[key])) { + return { valid: false, error: `${key} must be "true" or "false"` }; + } + } + + // Validate FULL_COUNT (0-20) + if (settings.CLAUDE_MEM_CONTEXT_FULL_COUNT) { + const count = parseInt(settings.CLAUDE_MEM_CONTEXT_FULL_COUNT, 10); + if (isNaN(count) || count < 0 || count > 20) { + return { valid: false, error: 'CLAUDE_MEM_CONTEXT_FULL_COUNT must be between 0 and 20' }; + } + } + + // Validate SESSION_COUNT (1-50) + if (settings.CLAUDE_MEM_CONTEXT_SESSION_COUNT) { + const count = parseInt(settings.CLAUDE_MEM_CONTEXT_SESSION_COUNT, 10); + if (isNaN(count) || count < 1 || count > 50) { + return { valid: false, error: 'CLAUDE_MEM_CONTEXT_SESSION_COUNT must be between 1 and 50' }; + } + } + + // Validate FULL_FIELD + if (settings.CLAUDE_MEM_CONTEXT_FULL_FIELD) { + if (!['narrative', 'facts'].includes(settings.CLAUDE_MEM_CONTEXT_FULL_FIELD)) { + return { valid: false, error: 'CLAUDE_MEM_CONTEXT_FULL_FIELD must be "narrative" or "facts"' }; + } + } + + // Validate observation types + if (settings.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES) { + const types = settings.CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES.split(',').map((t: string) => t.trim()); + for (const type of types) { + if (type && !OBSERVATION_TYPES.includes(type as ObservationType)) { + return { valid: false, error: `Invalid observation type: ${type}. Valid types: ${OBSERVATION_TYPES.join(', ')}` }; + } + } + } + + // Validate observation concepts + if (settings.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS) { + const concepts = settings.CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS.split(',').map((c: string) => c.trim()); + for (const concept of concepts) { + if (concept && !OBSERVATION_CONCEPTS.includes(concept as ObservationConcept)) { + return { valid: false, error: `Invalid observation concept: ${concept}. Valid concepts: ${OBSERVATION_CONCEPTS.join(', ')}` }; + } + } + } + + return { valid: true }; + } + + /** + * Check if MCP search server is enabled + */ + private isMcpEnabled(): boolean { + const packageRoot = getPackageRoot(); + const mcpPath = path.join(packageRoot, 'plugin', '.mcp.json'); + return existsSync(mcpPath); + } + + /** + * Toggle MCP search server (rename .mcp.json <-> .mcp.json.disabled) + */ + private toggleMcp(enabled: boolean): void { + try { + const packageRoot = getPackageRoot(); + const mcpPath = path.join(packageRoot, 'plugin', '.mcp.json'); + const mcpDisabledPath = path.join(packageRoot, 'plugin', '.mcp.json.disabled'); + + if (enabled && existsSync(mcpDisabledPath)) { + // Enable: rename .mcp.json.disabled -> .mcp.json + renameSync(mcpDisabledPath, mcpPath); + logger.info('WORKER', 'MCP search server enabled'); + } else if (!enabled && existsSync(mcpPath)) { + // Disable: rename .mcp.json -> .mcp.json.disabled + renameSync(mcpPath, mcpDisabledPath); + logger.info('WORKER', 'MCP search server disabled'); + } else { + logger.debug('WORKER', 'MCP toggle no-op (already in desired state)', { enabled }); + } + } catch (error) { + logger.failure('WORKER', 'Failed to toggle MCP', { enabled }, error as Error); + throw error; + } + } +} diff --git a/src/services/worker/http/routes/ViewerRoutes.ts b/src/services/worker/http/routes/ViewerRoutes.ts new file mode 100644 index 00000000..691be7a6 --- /dev/null +++ b/src/services/worker/http/routes/ViewerRoutes.ts @@ -0,0 +1,79 @@ +/** + * Viewer Routes + * + * Handles health check, viewer UI, and SSE stream endpoints. + * These are used by the web viewer UI at http://localhost:37777 + */ + +import express, { Request, Response } from 'express'; +import path from 'path'; +import { readFileSync } from 'fs'; +import { getPackageRoot } from '../../../../shared/paths.js'; +import { SSEBroadcaster } from '../../SSEBroadcaster.js'; +import { DatabaseManager } from '../../DatabaseManager.js'; +import { SessionManager } from '../../SessionManager.js'; +import { BaseRouteHandler } from '../BaseRouteHandler.js'; + +export class ViewerRoutes extends BaseRouteHandler { + constructor( + private sseBroadcaster: SSEBroadcaster, + private dbManager: DatabaseManager, + private sessionManager: SessionManager + ) { + super(); + } + + setupRoutes(app: express.Application): void { + app.get('/health', this.handleHealth.bind(this)); + app.get('/', this.handleViewerUI.bind(this)); + app.get('/stream', this.handleSSEStream.bind(this)); + } + + /** + * Health check endpoint + */ + private handleHealth = this.wrapHandler((req: Request, res: Response): void => { + res.json({ status: 'ok', timestamp: Date.now() }); + }); + + /** + * Serve viewer UI + */ + private handleViewerUI = this.wrapHandler((req: Request, res: Response): void => { + const packageRoot = getPackageRoot(); + const viewerPath = path.join(packageRoot, 'plugin', 'ui', 'viewer.html'); + const html = readFileSync(viewerPath, 'utf-8'); + res.setHeader('Content-Type', 'text/html'); + res.send(html); + }); + + /** + * SSE stream endpoint + */ + private handleSSEStream = this.wrapHandler((req: Request, res: Response): void => { + // Setup SSE headers + res.setHeader('Content-Type', 'text/event-stream'); + res.setHeader('Cache-Control', 'no-cache'); + res.setHeader('Connection', 'keep-alive'); + + // Add client to broadcaster + this.sseBroadcaster.addClient(res); + + // Send initial_load event with projects list + const allProjects = this.dbManager.getSessionStore().getAllProjects(); + this.sseBroadcaster.broadcast({ + type: 'initial_load', + projects: allProjects, + timestamp: Date.now() + }); + + // Send initial processing status (based on queue depth + active generators) + const isProcessing = this.sessionManager.isAnySessionProcessing(); + const queueDepth = this.sessionManager.getTotalActiveWork(); // Includes queued + actively processing + this.sseBroadcaster.broadcast({ + type: 'processing_status', + isProcessing, + queueDepth + }); + }); +} diff --git a/src/services/worker/session/SessionCompletionHandler.ts b/src/services/worker/session/SessionCompletionHandler.ts new file mode 100644 index 00000000..3c1f3038 --- /dev/null +++ b/src/services/worker/session/SessionCompletionHandler.ts @@ -0,0 +1,62 @@ +/** + * Session Completion Handler + * + * Consolidates session completion logic to eliminate duplication across + * three different completion endpoints (DELETE, POST by DB ID, POST by Claude ID). + * + * All completion flows follow the same pattern: + * 1. Delete session from SessionManager (aborts SDK agent) + * 2. Mark session complete in database + * 3. Broadcast session completed event + */ + +import { SessionManager } from '../SessionManager.js'; +import { DatabaseManager } from '../DatabaseManager.js'; +import { SessionEventBroadcaster } from '../events/SessionEventBroadcaster.js'; + +export class SessionCompletionHandler { + constructor( + private sessionManager: SessionManager, + private dbManager: DatabaseManager, + private eventBroadcaster: SessionEventBroadcaster + ) {} + + /** + * Complete session by database ID + * Used by DELETE /api/sessions/:id and POST /api/sessions/:id/complete + */ + async completeByDbId(sessionDbId: number): Promise { + // Delete from session manager (aborts SDK agent) + await this.sessionManager.deleteSession(sessionDbId); + + // Mark session complete in database + this.dbManager.markSessionComplete(sessionDbId); + + // Broadcast session completed event + this.eventBroadcaster.broadcastSessionCompleted(sessionDbId); + } + + /** + * Complete session by Claude session ID + * Used by POST /api/sessions/complete (cleanup-hook endpoint) + * + * @returns true if session was found and completed, false if no active session found + */ + async completeByClaudeId(claudeSessionId: string): Promise { + const store = this.dbManager.getSessionStore(); + + // Find session by claudeSessionId + const session = store.findActiveSDKSession(claudeSessionId); + if (!session) { + // No active session - nothing to clean up (may have already been completed) + return false; + } + + const sessionDbId = session.id; + + // Complete using standard flow + await this.completeByDbId(sessionDbId); + + return true; + } +} diff --git a/src/services/worker/settings/SettingsDefaultsManager.ts b/src/services/worker/settings/SettingsDefaultsManager.ts new file mode 100644 index 00000000..3005b552 --- /dev/null +++ b/src/services/worker/settings/SettingsDefaultsManager.ts @@ -0,0 +1,110 @@ +/** + * SettingsDefaultsManager + * + * Single source of truth for all default configuration values. + * Provides methods to get defaults with optional environment variable overrides. + */ + +import { readFileSync, existsSync } from 'fs'; +import { DEFAULT_OBSERVATION_TYPES_STRING, DEFAULT_OBSERVATION_CONCEPTS_STRING } from '../../../constants/observation-metadata.js'; + +export interface SettingsDefaults { + CLAUDE_MEM_MODEL: string; + CLAUDE_MEM_CONTEXT_OBSERVATIONS: string; + CLAUDE_MEM_WORKER_PORT: string; + // Token Economics + CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS: string; + CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS: string; + CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT: string; + CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT: string; + // Observation Filtering + CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES: string; + CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS: string; + // Display Configuration + CLAUDE_MEM_CONTEXT_FULL_COUNT: string; + CLAUDE_MEM_CONTEXT_FULL_FIELD: string; + CLAUDE_MEM_CONTEXT_SESSION_COUNT: string; + // Feature Toggles + CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY: string; + CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE: string; +} + +export class SettingsDefaultsManager { + /** + * Default values for all settings + */ + private static readonly DEFAULTS: SettingsDefaults = { + CLAUDE_MEM_MODEL: 'claude-haiku-4-5', + CLAUDE_MEM_CONTEXT_OBSERVATIONS: '50', + CLAUDE_MEM_WORKER_PORT: '37777', + // Token Economics + CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS: 'true', + CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS: 'true', + CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT: 'true', + CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT: 'true', + // Observation Filtering + CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES: DEFAULT_OBSERVATION_TYPES_STRING, + CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS: DEFAULT_OBSERVATION_CONCEPTS_STRING, + // Display Configuration + CLAUDE_MEM_CONTEXT_FULL_COUNT: '5', + CLAUDE_MEM_CONTEXT_FULL_FIELD: 'narrative', + CLAUDE_MEM_CONTEXT_SESSION_COUNT: '10', + // Feature Toggles + CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY: 'true', + CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE: 'false', + }; + + /** + * Get all defaults as an object + */ + static getAllDefaults(): SettingsDefaults { + return { ...this.DEFAULTS }; + } + + /** + * Get a default value with optional environment variable override + */ + static get(key: keyof SettingsDefaults): string { + return process.env[key] || this.DEFAULTS[key]; + } + + /** + * Get an integer default value with optional environment variable override + */ + static getInt(key: keyof SettingsDefaults): number { + const value = this.get(key); + return parseInt(value, 10); + } + + /** + * Get a boolean default value with optional environment variable override + */ + static getBool(key: keyof SettingsDefaults): boolean { + const value = this.get(key); + return value === 'true'; + } + + /** + * Load settings from file with fallback to defaults + * Returns merged settings with defaults as fallback + */ + static loadFromFile(settingsPath: string): SettingsDefaults { + if (!existsSync(settingsPath)) { + return this.getAllDefaults(); + } + + const settingsData = readFileSync(settingsPath, 'utf-8'); + const settings = JSON.parse(settingsData); + const env = settings.env || {}; + + // Merge file settings with defaults + const result: SettingsDefaults = { ...this.DEFAULTS }; + for (const key of Object.keys(this.DEFAULTS) as Array) { + if (env[key] !== undefined) { + result[key] = env[key]; + } + } + + return result; + } +} diff --git a/src/services/worker/validation/PrivacyCheckValidator.ts b/src/services/worker/validation/PrivacyCheckValidator.ts new file mode 100644 index 00000000..4ec801b0 --- /dev/null +++ b/src/services/worker/validation/PrivacyCheckValidator.ts @@ -0,0 +1,41 @@ +import { SessionStore } from '../../sqlite/SessionStore.js'; +import { logger } from '../../../utils/logger.js'; + +/** + * Validates user prompt privacy for session operations + * + * Centralizes privacy checks to avoid duplicate validation logic across route handlers. + * If user prompt was entirely private (stripped to empty string), we skip processing. + */ +export class PrivacyCheckValidator { + /** + * Check if user prompt is public (not entirely private) + * + * @param store - SessionStore instance + * @param claudeSessionId - Claude session ID + * @param promptNumber - Prompt number within session + * @param operationType - Type of operation being validated ('observation' or 'summarize') + * @returns User prompt text if public, null if private + */ + static checkUserPromptPrivacy( + store: SessionStore, + claudeSessionId: string, + promptNumber: number, + operationType: 'observation' | 'summarize', + sessionDbId: number, + additionalContext?: Record + ): string | null { + const userPrompt = store.getUserPrompt(claudeSessionId, promptNumber); + + if (!userPrompt || userPrompt.trim() === '') { + logger.debug('HOOK', `Skipping ${operationType} - user prompt was entirely private`, { + sessionId: sessionDbId, + promptNumber, + ...additionalContext + }); + return null; + } + + return userPrompt; + } +} diff --git a/src/shared/worker-utils.ts b/src/shared/worker-utils.ts index 21c982b2..ce80fb34 100644 --- a/src/shared/worker-utils.ts +++ b/src/shared/worker-utils.ts @@ -1,8 +1,8 @@ import path from "path"; import { homedir } from "os"; -import { existsSync, readFileSync } from "fs"; import { spawnSync } from "child_process"; import { getPackageRoot } from "./paths.js"; +import { SettingsDefaultsManager } from "../services/worker/settings/SettingsDefaultsManager.js"; // Named constants for health checks const HEALTH_CHECK_TIMEOUT_MS = 100; @@ -14,17 +14,9 @@ const WORKER_STARTUP_RETRIES = 10; * Priority: ~/.claude-mem/settings.json > env var > default */ export function getWorkerPort(): number { - try { - const settingsPath = path.join(homedir(), '.claude-mem', 'settings.json'); - if (existsSync(settingsPath)) { - const settings = JSON.parse(readFileSync(settingsPath, 'utf-8')); - const port = parseInt(settings.env?.CLAUDE_MEM_WORKER_PORT, 10); - if (!isNaN(port)) return port; - } - } catch { - // Fall through to env var or default - } - return parseInt(process.env.CLAUDE_MEM_WORKER_PORT || '37777', 10); + const settingsPath = path.join(homedir(), '.claude-mem', 'settings.json'); + const settings = SettingsDefaultsManager.loadFromFile(settingsPath); + return parseInt(settings.CLAUDE_MEM_WORKER_PORT, 10); } /** diff --git a/src/types/database.ts b/src/types/database.ts new file mode 100644 index 00000000..54cdb161 --- /dev/null +++ b/src/types/database.ts @@ -0,0 +1,138 @@ +/** + * TypeScript types for database query results + * Provides type safety for better-sqlite3 query results + */ + +/** + * Schema information from sqlite3 PRAGMA table_info + */ +export interface TableColumnInfo { + cid: number; + name: string; + type: string; + notnull: number; + dflt_value: string | null; + pk: number; +} + +/** + * Index information from sqlite3 PRAGMA index_list + */ +export interface IndexInfo { + seq: number; + name: string; + unique: number; + origin: string; + partial: number; +} + +/** + * Table name from sqlite_master + */ +export interface TableNameRow { + name: string; +} + +/** + * Schema version record + */ +export interface SchemaVersion { + version: number; +} + +/** + * SDK Session database record + */ +export interface SdkSessionRecord { + id: number; + claude_session_id: string; + sdk_session_id: string | null; + project: string; + user_prompt: string | null; + started_at: string; + started_at_epoch: number; + completed_at: string | null; + completed_at_epoch: number | null; + status: 'active' | 'completed' | 'failed'; + worker_port?: number; + prompt_counter?: number; +} + +/** + * Observation database record + */ +export interface ObservationRecord { + id: number; + sdk_session_id: string; + project: string; + text: string | null; + type: 'decision' | 'bugfix' | 'feature' | 'refactor' | 'discovery' | 'change'; + created_at: string; + created_at_epoch: number; + title?: string; + concept?: string; + source_files?: string; + prompt_number?: number; + discovery_tokens?: number; +} + +/** + * Session Summary database record + */ +export interface SessionSummaryRecord { + id: number; + sdk_session_id: string; + project: string; + request: string | null; + investigated: string | null; + learned: string | null; + completed: string | null; + next_steps: string | null; + created_at: string; + created_at_epoch: number; + prompt_number?: number; + discovery_tokens?: number; +} + +/** + * User Prompt database record + */ +export interface UserPromptRecord { + id: number; + claude_session_id: string; + prompt_number: number; + prompt_text: string; + created_at: string; + created_at_epoch: number; +} + +/** + * Latest user prompt with session join + */ +export interface LatestPromptResult { + id: number; + claude_session_id: string; + sdk_session_id: string; + project: string; + prompt_number: number; + prompt_text: string; + created_at_epoch: number; +} + +/** + * Observation with context (for time-based queries) + */ +export interface ObservationWithContext { + id: number; + sdk_session_id: string; + project: string; + text: string | null; + type: string; + created_at: string; + created_at_epoch: number; + title?: string; + concept?: string; + source_files?: string; + prompt_number?: number; + discovery_tokens?: number; +} diff --git a/tests/happy-paths/context-injection.test.ts b/tests/happy-paths/context-injection.test.ts new file mode 100644 index 00000000..3ca83295 --- /dev/null +++ b/tests/happy-paths/context-injection.test.ts @@ -0,0 +1,125 @@ +/** + * Happy Path Test: Context Injection (SessionStart) + * + * Tests that when a session starts, the context hook can retrieve + * formatted context from the worker containing recent observations. + */ +import { describe, it, expect, beforeEach, vi } from 'vitest'; +import { sampleObservation, featureObservation } from '../helpers/scenarios.js'; + +describe('Context Injection (SessionStart)', () => { + const WORKER_PORT = 37777; + const PROJECT_NAME = 'claude-mem'; + + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('returns formatted context when observations exist', async () => { + // This is a component test that verifies the happy path: + // Session starts → Hook calls worker → Worker queries database → Returns formatted context + + // Setup: Mock fetch to simulate worker response + const mockContext = `# [claude-mem] recent context + +## Recent Work (2 observations) + +### [bugfix] Fixed parser bug +The XML parser was not handling empty tags correctly. +Files: /project/src/parser.ts + +### [feature] Added search functionality +Implemented full-text search using FTS5. +Files: /project/src/services/search.ts`; + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + text: async () => mockContext + }); + + // Execute: Call context endpoint (what the hook does) + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/context/inject?project=${encodeURIComponent(PROJECT_NAME)}` + ); + + // Verify: Response is successful + expect(response.ok).toBe(true); + expect(response.status).toBe(200); + + // Verify: Context contains observations + const text = await response.text(); + expect(text).toContain('recent context'); + expect(text).toContain('Fixed parser bug'); + expect(text).toContain('Added search functionality'); + expect(text).toContain('bugfix'); + expect(text).toContain('feature'); + }); + + it('returns fallback message when worker is down', async () => { + // Setup: Mock fetch to simulate worker not available + global.fetch = vi.fn().mockRejectedValue(new Error('ECONNREFUSED')); + + // Execute: Attempt to call context endpoint + try { + await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/context/inject?project=${encodeURIComponent(PROJECT_NAME)}` + ); + } catch (error: any) { + // Verify: Error indicates worker is down + expect(error.message).toContain('ECONNREFUSED'); + } + + // The hook should handle this gracefully and return a fallback message + // (This would be tested in hook-specific tests, not the worker endpoint tests) + }); + + it('handles empty observations gracefully', async () => { + // Setup: Mock fetch to simulate no observations available + const emptyContext = `# [claude-mem] recent context + +No observations found for this project.`; + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + text: async () => emptyContext + }); + + // Execute: Call context endpoint + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/context/inject?project=${encodeURIComponent(PROJECT_NAME)}` + ); + + // Verify: Returns success with empty message + expect(response.ok).toBe(true); + const text = await response.text(); + expect(text).toContain('No observations found'); + }); + + it('supports colored output when requested', async () => { + // Setup: Mock fetch to simulate colored response + const coloredContext = `# [claude-mem] recent context + +## Recent Work (1 observation) + +### \x1b[33m[bugfix]\x1b[0m Fixed parser bug +The XML parser was not handling empty tags correctly.`; + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + text: async () => coloredContext + }); + + // Execute: Call context endpoint with colors parameter + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/context/inject?project=${encodeURIComponent(PROJECT_NAME)}&colors=true` + ); + + // Verify: Response contains ANSI color codes + expect(response.ok).toBe(true); + const text = await response.text(); + expect(text).toContain('\x1b['); // ANSI escape code + }); +}); diff --git a/tests/happy-paths/observation-capture.test.ts b/tests/happy-paths/observation-capture.test.ts new file mode 100644 index 00000000..2a6f9dae --- /dev/null +++ b/tests/happy-paths/observation-capture.test.ts @@ -0,0 +1,283 @@ +/** + * Happy Path Test: Observation Capture (PostToolUse) + * + * Tests that tool usage is captured and queued for SDK processing. + * This is the core functionality of claude-mem - turning tool usage + * into compressed observations. + */ +import { describe, it, expect, beforeEach, vi } from 'vitest'; +import { + bashCommandScenario, + readFileScenario, + writeFileScenario, + editFileScenario, + grepScenario, + sessionScenario +} from '../helpers/scenarios.js'; + +describe('Observation Capture (PostToolUse)', () => { + const WORKER_PORT = 37777; + + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('captures Bash command observation', async () => { + // Setup: Mock worker response + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ status: 'queued' }) + }); + + // Execute: Send Bash tool observation + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionScenario.claudeSessionId, + tool_name: bashCommandScenario.tool_name, + tool_input: bashCommandScenario.tool_input, + tool_response: bashCommandScenario.tool_response, + cwd: '/project/claude-mem' + }) + } + ); + + // Verify: Observation queued successfully + expect(response.ok).toBe(true); + const result = await response.json(); + expect(result.status).toBe('queued'); + + // Verify: Correct data sent to worker + const fetchCall = (global.fetch as any).mock.calls[0]; + const requestBody = JSON.parse(fetchCall[1].body); + expect(requestBody.tool_name).toBe('Bash'); + expect(requestBody.tool_input.command).toBe('git status'); + }); + + it('captures Read file observation', async () => { + // Setup: Mock worker response + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ status: 'queued' }) + }); + + // Execute: Send Read tool observation + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionScenario.claudeSessionId, + tool_name: readFileScenario.tool_name, + tool_input: readFileScenario.tool_input, + tool_response: readFileScenario.tool_response, + cwd: '/project' + }) + } + ); + + // Verify: Observation queued successfully + expect(response.ok).toBe(true); + const result = await response.json(); + expect(result.status).toBe('queued'); + + // Verify: File path captured correctly + const fetchCall = (global.fetch as any).mock.calls[0]; + const requestBody = JSON.parse(fetchCall[1].body); + expect(requestBody.tool_name).toBe('Read'); + expect(requestBody.tool_input.file_path).toContain('index.ts'); + }); + + it('captures Write file observation', async () => { + // Setup: Mock worker response + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ status: 'queued' }) + }); + + // Execute: Send Write tool observation + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionScenario.claudeSessionId, + tool_name: writeFileScenario.tool_name, + tool_input: writeFileScenario.tool_input, + tool_response: writeFileScenario.tool_response, + cwd: '/project' + }) + } + ); + + // Verify: Observation queued successfully + expect(response.ok).toBe(true); + const result = await response.json(); + expect(result.status).toBe('queued'); + }); + + it('captures Edit file observation', async () => { + // Setup: Mock worker response + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ status: 'queued' }) + }); + + // Execute: Send Edit tool observation + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionScenario.claudeSessionId, + tool_name: editFileScenario.tool_name, + tool_input: editFileScenario.tool_input, + tool_response: editFileScenario.tool_response, + cwd: '/project' + }) + } + ); + + // Verify: Observation queued successfully + expect(response.ok).toBe(true); + const result = await response.json(); + expect(result.status).toBe('queued'); + + // Verify: Edit details captured + const fetchCall = (global.fetch as any).mock.calls[0]; + const requestBody = JSON.parse(fetchCall[1].body); + expect(requestBody.tool_name).toBe('Edit'); + expect(requestBody.tool_input.old_string).toBe('const PORT = 3000;'); + expect(requestBody.tool_input.new_string).toBe('const PORT = 8080;'); + }); + + it('captures Grep search observation', async () => { + // Setup: Mock worker response + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ status: 'queued' }) + }); + + // Execute: Send Grep tool observation + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionScenario.claudeSessionId, + tool_name: grepScenario.tool_name, + tool_input: grepScenario.tool_input, + tool_response: grepScenario.tool_response, + cwd: '/project' + }) + } + ); + + // Verify: Observation queued successfully + expect(response.ok).toBe(true); + const result = await response.json(); + expect(result.status).toBe('queued'); + }); + + it('handles rapid succession of observations (burst mode)', async () => { + // Setup: Mock worker to accept all observations + let observationCount = 0; + global.fetch = vi.fn().mockImplementation(async () => { + const currentId = ++observationCount; + return { + ok: true, + status: 200, + json: async () => ({ status: 'queued', observationId: currentId }) + }; + }); + + // Execute: Send 5 observations rapidly (simulates active coding session) + const observations = [ + bashCommandScenario, + readFileScenario, + writeFileScenario, + editFileScenario, + grepScenario + ]; + + const promises = observations.map(obs => + fetch(`http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionScenario.claudeSessionId, + tool_name: obs.tool_name, + tool_input: obs.tool_input, + tool_response: obs.tool_response, + cwd: '/project' + }) + }) + ); + + const responses = await Promise.all(promises); + + // Verify: All observations queued successfully + expect(responses.every(r => r.ok)).toBe(true); + expect(observationCount).toBe(5); + + // Verify: Each got unique ID + const results = await Promise.all(responses.map(r => r.json())); + const ids = results.map(r => r.observationId); + expect(new Set(ids).size).toBe(5); // All IDs unique + }); + + it('preserves tool metadata in observation', async () => { + // Setup: Mock worker response + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ status: 'queued' }) + }); + + const complexTool = { + tool_name: 'Task', + tool_input: { + subagent_type: 'Explore', + prompt: 'Find authentication code', + description: 'Search for auth' + }, + tool_response: { + result: 'Found auth in /src/auth.ts', + files_analyzed: ['/src/auth.ts', '/src/login.ts'] + } + }; + + // Execute: Send complex tool observation + await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionScenario.claudeSessionId, + ...complexTool, + cwd: '/project' + }) + } + ); + + // Verify: All metadata preserved in request + const fetchCall = (global.fetch as any).mock.calls[0]; + const requestBody = JSON.parse(fetchCall[1].body); + expect(requestBody.tool_name).toBe('Task'); + expect(requestBody.tool_input.subagent_type).toBe('Explore'); + expect(requestBody.tool_response.files_analyzed).toHaveLength(2); + }); +}); diff --git a/tests/happy-paths/search.test.ts b/tests/happy-paths/search.test.ts new file mode 100644 index 00000000..35046e55 --- /dev/null +++ b/tests/happy-paths/search.test.ts @@ -0,0 +1,328 @@ +/** + * Happy Path Test: Search (MCP Tools) + * + * Tests that the search functionality correctly finds and returns + * stored observations matching user queries. + */ +import { describe, it, expect, beforeEach, vi } from 'vitest'; +import { sampleObservation, featureObservation } from '../helpers/scenarios.js'; + +describe('Search (MCP Tools)', () => { + const WORKER_PORT = 37777; + + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('finds observations matching query', async () => { + // This tests the happy path: + // User asks "what did we do?" → Search skill queries worker → + // Worker searches database → Returns relevant observations + + // Setup: Mock search response with matching observations + const searchResults = [ + { + id: 1, + title: 'Parser bugfix', + content: 'Fixed XML parsing issue with self-closing tags', + type: 'bugfix', + created_at: '2024-01-01T10:00:00Z' + }, + { + id: 2, + title: 'Parser optimization', + content: 'Improved parser performance by 50%', + type: 'feature', + created_at: '2024-01-02T10:00:00Z' + } + ]; + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ results: searchResults, total: 2 }) + }); + + // Execute: Search for "parser" + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/search?query=parser&project=claude-mem` + ); + + // Verify: Found matching observations + expect(response.ok).toBe(true); + const data = await response.json(); + expect(data.results).toHaveLength(2); + expect(data.results[0].title).toContain('Parser'); + expect(data.results[1].title).toContain('Parser'); + }); + + it('returns empty results when no matches found', async () => { + // Setup: Mock empty search results + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ results: [], total: 0 }) + }); + + // Execute: Search for non-existent term + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/search?query=nonexistent&project=claude-mem` + ); + + // Verify: Returns empty results gracefully + expect(response.ok).toBe(true); + const data = await response.json(); + expect(data.results).toHaveLength(0); + expect(data.total).toBe(0); + }); + + it('supports filtering by observation type', async () => { + // Setup: Mock filtered search results + const bugfixResults = [ + { + id: 1, + title: 'Fixed parser bug', + type: 'bugfix', + created_at: '2024-01-01T10:00:00Z' + } + ]; + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ results: bugfixResults, total: 1 }) + }); + + // Execute: Search for bugfixes only + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/search/by-type?type=bugfix&project=claude-mem` + ); + + // Verify: Returns only bugfixes + expect(response.ok).toBe(true); + const data = await response.json(); + expect(data.results).toHaveLength(1); + expect(data.results[0].type).toBe('bugfix'); + }); + + it('supports filtering by concept tags', async () => { + // Setup: Mock concept-filtered results + const conceptResults = [ + { + id: 1, + title: 'How parser works', + concepts: ['how-it-works', 'parser'], + created_at: '2024-01-01T10:00:00Z' + } + ]; + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ results: conceptResults, total: 1 }) + }); + + // Execute: Search by concept + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/search/by-concept?concept=how-it-works&project=claude-mem` + ); + + // Verify: Returns observations with that concept + expect(response.ok).toBe(true); + const data = await response.json(); + expect(data.results).toHaveLength(1); + expect(data.results[0].concepts).toContain('how-it-works'); + }); + + it('supports pagination for large result sets', async () => { + // Setup: Mock paginated results + const page1Results = Array.from({ length: 20 }, (_, i) => ({ + id: i + 1, + title: `Observation ${i + 1}`, + created_at: '2024-01-01T10:00:00Z' + })); + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ + results: page1Results, + total: 50, + page: 1, + limit: 20 + }) + }); + + // Execute: Search with pagination + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/search?query=observation&project=claude-mem&limit=20&offset=0` + ); + + // Verify: Returns paginated results + expect(response.ok).toBe(true); + const data = await response.json(); + expect(data.results).toHaveLength(20); + expect(data.total).toBe(50); + expect(data.page).toBe(1); + }); + + it('supports date range filtering', async () => { + // Setup: Mock date-filtered results + const recentResults = [ + { + id: 5, + title: 'Recent observation', + created_at: '2024-01-05T10:00:00Z' + } + ]; + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ results: recentResults, total: 1 }) + }); + + // Execute: Search with date range + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/search?query=observation&project=claude-mem&dateStart=2024-01-05&dateEnd=2024-01-06` + ); + + // Verify: Returns observations in date range + expect(response.ok).toBe(true); + const data = await response.json(); + expect(data.results).toHaveLength(1); + expect(data.results[0].created_at).toContain('2024-01-05'); + }); + + it('returns observations with file references', async () => { + // Setup: Mock results with file paths + const fileResults = [ + { + id: 1, + title: 'Updated parser', + files: ['src/parser.ts', 'tests/parser.test.ts'], + created_at: '2024-01-01T10:00:00Z' + } + ]; + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ results: fileResults, total: 1 }) + }); + + // Execute: Search + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/search?query=parser&project=claude-mem` + ); + + // Verify: File references included + expect(response.ok).toBe(true); + const data = await response.json(); + expect(data.results[0].files).toHaveLength(2); + expect(data.results[0].files).toContain('src/parser.ts'); + }); + + it('supports semantic search ranking', async () => { + // Setup: Mock results ordered by relevance + const rankedResults = [ + { + id: 2, + title: 'Parser bug fix', + content: 'Fixed critical parser bug', + relevance: 0.95 + }, + { + id: 5, + title: 'Parser documentation', + content: 'Updated parser docs', + relevance: 0.72 + }, + { + id: 10, + title: 'Mentioned parser briefly', + content: 'Also updated the parser', + relevance: 0.45 + } + ]; + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ + results: rankedResults, + total: 3, + orderBy: 'relevance' + }) + }); + + // Execute: Search with relevance ordering + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/search?query=parser+bug&project=claude-mem&orderBy=relevance` + ); + + // Verify: Results ordered by relevance + expect(response.ok).toBe(true); + const data = await response.json(); + expect(data.results).toHaveLength(3); + expect(data.results[0].relevance).toBeGreaterThan(data.results[1].relevance); + expect(data.results[1].relevance).toBeGreaterThan(data.results[2].relevance); + }); + + it('handles special characters in search queries', async () => { + // Setup: Mock results for special character query + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ results: [], total: 0 }) + }); + + // Execute: Search with special characters + const queries = [ + 'function*', + 'variable: string', + 'array[0]', + 'path/to/file', + 'tag', + 'price $99' + ]; + + for (const query of queries) { + await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/search?query=${encodeURIComponent(query)}&project=claude-mem` + ); + } + + // Verify: All queries processed without error + expect(global.fetch).toHaveBeenCalledTimes(queries.length); + }); + + it('supports project-specific search', async () => { + // Setup: Mock results from specific project + const projectResults = [ + { + id: 1, + title: 'Claude-mem feature', + project: 'claude-mem', + created_at: '2024-01-01T10:00:00Z' + } + ]; + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ results: projectResults, total: 1 }) + }); + + // Execute: Search specific project + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/search?query=feature&project=claude-mem` + ); + + // Verify: Returns only results from that project + expect(response.ok).toBe(true); + const data = await response.json(); + expect(data.results).toHaveLength(1); + expect(data.results[0].project).toBe('claude-mem'); + }); +}); diff --git a/tests/happy-paths/session-cleanup.test.ts b/tests/happy-paths/session-cleanup.test.ts new file mode 100644 index 00000000..e2932947 --- /dev/null +++ b/tests/happy-paths/session-cleanup.test.ts @@ -0,0 +1,246 @@ +/** + * Happy Path Test: Session Cleanup (SessionEnd) + * + * Tests that when a session ends, the worker marks it complete + * and performs necessary cleanup operations. + */ +import { describe, it, expect, beforeEach, vi } from 'vitest'; +import { sessionScenario } from '../helpers/scenarios.js'; + +describe('Session Cleanup (SessionEnd)', () => { + const WORKER_PORT = 37777; + + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('marks session complete and stops SDK agent', async () => { + // This tests the happy path: + // Session ends → Hook notifies worker → Worker marks session complete → + // SDK agent stopped → Resources cleaned up + + // Setup: Mock successful response from worker + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ status: 'completed' }) + }); + + // Execute: Send complete request (what cleanup-hook does) + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/complete`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionScenario.claudeSessionId, + reason: 'user_exit' + }) + } + ); + + // Verify: Session marked complete + expect(response.ok).toBe(true); + const result = await response.json(); + expect(result.status).toBe('completed'); + + // Verify: Correct data sent to worker + const fetchCall = (global.fetch as any).mock.calls[0]; + const requestBody = JSON.parse(fetchCall[1].body); + expect(requestBody.claudeSessionId).toBe(sessionScenario.claudeSessionId); + expect(requestBody.reason).toBe('user_exit'); + }); + + it('handles missing session ID gracefully', async () => { + // Setup: Mock error response + global.fetch = vi.fn().mockResolvedValue({ + ok: false, + status: 400, + json: async () => ({ error: 'Missing claudeSessionId' }) + }); + + // Execute: Send complete request without session ID + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/complete`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + reason: 'user_exit' + }) + } + ); + + // Verify: Returns error + expect(response.ok).toBe(false); + expect(response.status).toBe(400); + const error = await response.json(); + expect(error.error).toContain('Missing claudeSessionId'); + }); + + it('handles different session end reasons', async () => { + // Setup: Track all cleanup requests + const cleanupRequests: any[] = []; + global.fetch = vi.fn().mockImplementation(async (url, options) => { + const body = JSON.parse(options.body); + cleanupRequests.push(body); + return { + ok: true, + status: 200, + json: async () => ({ status: 'completed' }) + }; + }); + + // Test different end reasons + const reasons = [ + 'user_exit', // User explicitly ended session + 'timeout', // Session timed out + 'error', // Error occurred + 'restart', // Session restarting + 'clear' // User cleared context + ]; + + // Execute: Send cleanup for each reason + for (const reason of reasons) { + await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/complete`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: `session-${reason}`, + reason + }) + } + ); + } + + // Verify: All cleanup requests processed + expect(cleanupRequests.length).toBe(5); + expect(cleanupRequests.map(r => r.reason)).toEqual(reasons); + }); + + it('completes multiple sessions independently', async () => { + // Setup: Track session completions + const completedSessions: string[] = []; + global.fetch = vi.fn().mockImplementation(async (url, options) => { + const body = JSON.parse(options.body); + completedSessions.push(body.claudeSessionId); + return { + ok: true, + status: 200, + json: async () => ({ status: 'completed' }) + }; + }); + + const sessions = [ + 'session-abc-123', + 'session-def-456', + 'session-ghi-789' + ]; + + // Execute: Complete multiple sessions + for (const sessionId of sessions) { + await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/complete`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionId, + reason: 'user_exit' + }) + } + ); + } + + // Verify: All sessions completed + expect(completedSessions).toEqual(sessions); + }); + + it('handles cleanup when session not found', async () => { + // Setup: Mock 404 response for non-existent session + global.fetch = vi.fn().mockResolvedValue({ + ok: false, + status: 404, + json: async () => ({ error: 'Session not found' }) + }); + + // Execute: Try to complete non-existent session + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/complete`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: 'non-existent-session', + reason: 'user_exit' + }) + } + ); + + // Verify: Returns 404 (graceful handling) + expect(response.ok).toBe(false); + expect(response.status).toBe(404); + }); + + it('supports optional metadata in cleanup request', async () => { + // Setup: Mock worker response + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ status: 'completed' }) + }); + + // Execute: Send cleanup with additional metadata + await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/complete`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionScenario.claudeSessionId, + reason: 'user_exit', + duration_seconds: 1800, + observations_count: 25, + project: 'claude-mem' + }) + } + ); + + // Verify: Metadata included in request + const fetchCall = (global.fetch as any).mock.calls[0]; + const requestBody = JSON.parse(fetchCall[1].body); + expect(requestBody.duration_seconds).toBe(1800); + expect(requestBody.observations_count).toBe(25); + expect(requestBody.project).toBe('claude-mem'); + }); + + it('handles worker being down during cleanup', async () => { + // Setup: Mock worker unreachable + global.fetch = vi.fn().mockRejectedValue(new Error('ECONNREFUSED')); + + // Execute: Attempt to complete session + try { + await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/complete`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionScenario.claudeSessionId, + reason: 'user_exit' + }) + } + ); + // Should throw, so fail if we get here + expect(true).toBe(false); + } catch (error: any) { + // Verify: Error indicates worker is down + expect(error.message).toContain('ECONNREFUSED'); + } + + // The hook should log this but not fail the session end + // (This graceful degradation would be tested in hook-specific tests) + }); +}); diff --git a/tests/happy-paths/session-init.test.ts b/tests/happy-paths/session-init.test.ts new file mode 100644 index 00000000..329d9466 --- /dev/null +++ b/tests/happy-paths/session-init.test.ts @@ -0,0 +1,181 @@ +/** + * Happy Path Test: Session Initialization + * + * Tests that when a user's first tool use occurs, the session is + * created in the database and observations can be queued. + */ +import { describe, it, expect, beforeEach, vi } from 'vitest'; +import { bashCommandScenario, sessionScenario } from '../helpers/scenarios.js'; + +describe('Session Initialization (UserPromptSubmit)', () => { + const WORKER_PORT = 37777; + + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('creates session when first observation is sent', async () => { + // This tests the happy path: + // User types first prompt → Tool runs → Hook sends observation → + // Worker creates session → Observation queued for SDK processing + + // Setup: Mock successful response from worker + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ status: 'queued', sessionId: 1 }) + }); + + // Execute: Send first observation (what save-hook does) + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionScenario.claudeSessionId, + tool_name: bashCommandScenario.tool_name, + tool_input: bashCommandScenario.tool_input, + tool_response: bashCommandScenario.tool_response, + cwd: '/project/claude-mem' + }) + } + ); + + // Verify: Session created and observation queued + expect(response.ok).toBe(true); + const result = await response.json(); + expect(result.status).toBe('queued'); + expect(result.sessionId).toBeDefined(); + + // Verify: fetch was called with correct endpoint and data + expect(global.fetch).toHaveBeenCalledWith( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, + expect.objectContaining({ + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: expect.stringContaining(sessionScenario.claudeSessionId) + }) + ); + }); + + it('handles missing claudeSessionId gracefully', async () => { + // Setup: Mock error response for missing session ID + global.fetch = vi.fn().mockResolvedValue({ + ok: false, + status: 400, + json: async () => ({ error: 'Missing claudeSessionId' }) + }); + + // Execute: Send observation without session ID + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + tool_name: 'Bash', + tool_input: { command: 'ls' }, + tool_response: { stdout: 'file.txt' } + }) + } + ); + + // Verify: Returns 400 error + expect(response.ok).toBe(false); + expect(response.status).toBe(400); + const error = await response.json(); + expect(error.error).toContain('Missing claudeSessionId'); + }); + + it('queues multiple observations for the same session', async () => { + // Setup: Mock successful responses + let callCount = 0; + global.fetch = vi.fn().mockImplementation(async () => { + const currentId = ++callCount; + return { + ok: true, + status: 200, + json: async () => ({ status: 'queued', observationId: currentId }) + }; + }); + + const sessionId = sessionScenario.claudeSessionId; + + // Execute: Send multiple observations for the same session + const obs1 = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionId, + tool_name: 'Read', + tool_input: { file_path: '/test.ts' }, + tool_response: { content: 'code...' } + }) + } + ); + + const obs2 = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionId, + tool_name: 'Edit', + tool_input: { file_path: '/test.ts', old_string: 'old', new_string: 'new' }, + tool_response: { success: true } + }) + } + ); + + // Verify: Both observations were queued successfully + expect(obs1.ok).toBe(true); + expect(obs2.ok).toBe(true); + + const result1 = await obs1.json(); + const result2 = await obs2.json(); + + expect(result1.status).toBe('queued'); + expect(result2.status).toBe('queued'); + expect(result1.observationId).toBe(1); + expect(result2.observationId).toBe(2); + }); + + it('includes project context from cwd', async () => { + // Setup: Mock successful response + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ status: 'queued' }) + }); + + const projectPath = '/Users/alice/projects/my-app'; + + // Execute: Send observation with cwd + await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionScenario.claudeSessionId, + tool_name: 'Bash', + tool_input: { command: 'npm test' }, + tool_response: { stdout: 'PASS', exit_code: 0 }, + cwd: projectPath + }) + } + ); + + // Verify: Request includes cwd + expect(global.fetch).toHaveBeenCalledWith( + expect.any(String), + expect.objectContaining({ + body: expect.stringContaining(projectPath) + }) + ); + }); +}); diff --git a/tests/happy-paths/session-summary.test.ts b/tests/happy-paths/session-summary.test.ts new file mode 100644 index 00000000..b8e35c00 --- /dev/null +++ b/tests/happy-paths/session-summary.test.ts @@ -0,0 +1,247 @@ +/** + * Happy Path Test: Session Summary (Stop) + * + * Tests that when a user pauses or stops a session, the SDK + * generates a summary from the conversation context. + */ +import { describe, it, expect, beforeEach, vi } from 'vitest'; +import { sessionSummaryScenario, sessionScenario } from '../helpers/scenarios.js'; + +describe('Session Summary (Stop)', () => { + const WORKER_PORT = 37777; + + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('generates summary from last messages', async () => { + // This tests the happy path: + // User stops/pauses → Hook sends last messages → Worker queues for SDK → + // SDK generates summary → Summary saved to database + + // Setup: Mock successful response from worker + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ status: 'queued' }) + }); + + // Execute: Send summarize request (what summary-hook does) + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/summarize`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionSummaryScenario.claudeSessionId, + last_user_message: sessionSummaryScenario.last_user_message, + last_assistant_message: sessionSummaryScenario.last_assistant_message, + cwd: '/project/claude-mem' + }) + } + ); + + // Verify: Summary queued successfully + expect(response.ok).toBe(true); + const result = await response.json(); + expect(result.status).toBe('queued'); + + // Verify: Correct data sent to worker + const fetchCall = (global.fetch as any).mock.calls[0]; + const requestBody = JSON.parse(fetchCall[1].body); + expect(requestBody.last_user_message).toBe('Thanks, that fixed it!'); + expect(requestBody.last_assistant_message).toContain('parser'); + }); + + it('handles missing session ID gracefully', async () => { + // Setup: Mock error response + global.fetch = vi.fn().mockResolvedValue({ + ok: false, + status: 400, + json: async () => ({ error: 'Missing claudeSessionId' }) + }); + + // Execute: Send summarize without session ID + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/summarize`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + last_user_message: 'Some message', + last_assistant_message: 'Some response' + }) + } + ); + + // Verify: Returns error + expect(response.ok).toBe(false); + expect(response.status).toBe(400); + const error = await response.json(); + expect(error.error).toContain('Missing claudeSessionId'); + }); + + it('generates summary for different conversation types', async () => { + // Setup: Mock worker responses + const summaries: any[] = []; + global.fetch = vi.fn().mockImplementation(async (url, options) => { + const body = JSON.parse(options.body); + summaries.push(body); + return { + ok: true, + status: 200, + json: async () => ({ status: 'queued', summaryId: summaries.length }) + }; + }); + + // Test different conversation scenarios + const scenarios = [ + { + type: 'bug_fix', + user: 'Thanks for fixing the parser bug!', + assistant: 'I fixed the XML parser to handle self-closing tags in src/parser.ts:42.' + }, + { + type: 'feature_addition', + user: 'Perfect! The search feature works great.', + assistant: 'I added FTS5 full-text search in src/services/search.ts.' + }, + { + type: 'exploration', + user: 'That helps me understand the codebase better.', + assistant: 'The authentication flow uses JWT tokens stored in localStorage.' + }, + { + type: 'refactoring', + user: 'Much cleaner now!', + assistant: 'I refactored the duplicate code into a shared utility function in src/utils/helpers.ts.' + } + ]; + + // Execute: Send summary for each scenario + for (const scenario of scenarios) { + await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/summarize`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: `session-${scenario.type}`, + last_user_message: scenario.user, + last_assistant_message: scenario.assistant, + cwd: '/project' + }) + } + ); + } + + // Verify: All summaries queued + expect(summaries.length).toBe(4); + expect(summaries[0].last_user_message).toContain('parser bug'); + expect(summaries[1].last_user_message).toContain('search'); + expect(summaries[2].last_user_message).toContain('understand'); + expect(summaries[3].last_user_message).toContain('cleaner'); + }); + + it('preserves long conversation context', async () => { + // Setup: Mock worker response + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ status: 'queued' }) + }); + + // Execute: Send summary with long messages (realistic scenario) + const longAssistantMessage = `I've fixed the bug in the parser. Here's what I did: + +1. Added null check for empty tags in src/parser.ts:42 +2. Updated the regex pattern to handle self-closing tags +3. Added unit tests to verify the fix works +4. Ran the test suite and confirmed all tests pass + +The issue was that the parser wasn't handling XML tags like correctly. +It was only expecting format. Now it handles both formats.`; + + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/summarize`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionScenario.claudeSessionId, + last_user_message: 'Thanks for the detailed explanation!', + last_assistant_message: longAssistantMessage, + cwd: '/project' + }) + } + ); + + // Verify: Long message preserved + expect(response.ok).toBe(true); + const fetchCall = (global.fetch as any).mock.calls[0]; + const requestBody = JSON.parse(fetchCall[1].body); + expect(requestBody.last_assistant_message.length).toBeGreaterThan(200); + expect(requestBody.last_assistant_message).toContain('parser.ts:42'); + expect(requestBody.last_assistant_message).toContain('self-closing tags'); + }); + + it('handles empty or minimal messages gracefully', async () => { + // Setup: Mock worker response + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ status: 'queued' }) + }); + + // Execute: Send summary with minimal messages + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/summarize`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionScenario.claudeSessionId, + last_user_message: 'Thanks!', + last_assistant_message: 'Done.', + cwd: '/project' + }) + } + ); + + // Verify: Still processes minimal messages + expect(response.ok).toBe(true); + const result = await response.json(); + expect(result.status).toBe('queued'); + }); + + it('includes project context from cwd', async () => { + // Setup: Mock worker response + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => ({ status: 'queued' }) + }); + + const projectPath = '/Users/alice/projects/my-app'; + + // Execute: Send summary with project context + await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/summarize`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionScenario.claudeSessionId, + last_user_message: 'Great!', + last_assistant_message: 'Fixed the bug.', + cwd: projectPath + }) + } + ); + + // Verify: Project context included + const fetchCall = (global.fetch as any).mock.calls[0]; + const requestBody = JSON.parse(fetchCall[1].body); + expect(requestBody.cwd).toBe(projectPath); + }); +}); diff --git a/tests/helpers/mocks.ts b/tests/helpers/mocks.ts new file mode 100644 index 00000000..ea8ea3d5 --- /dev/null +++ b/tests/helpers/mocks.ts @@ -0,0 +1,82 @@ +/** + * Reusable mock factories for testing dependencies. + */ +import { vi } from 'vitest'; + +/** + * Mock fetch that succeeds with a JSON response + */ +export const mockFetchSuccess = (data: any = { success: true }) => { + return vi.fn().mockResolvedValue({ + ok: true, + status: 200, + json: async () => data, + text: async () => JSON.stringify(data) + }); +}; + +/** + * Mock fetch that fails with worker down error + */ +export const mockFetchWorkerDown = () => { + return vi.fn().mockRejectedValue( + new Error('ECONNREFUSED') + ); +}; + +/** + * Mock fetch that returns 500 error + */ +export const mockFetchServerError = () => { + return vi.fn().mockResolvedValue({ + ok: false, + status: 500, + json: async () => ({ error: 'Internal Server Error' }), + text: async () => 'Internal Server Error' + }); +}; + +/** + * Mock database operations + */ +export const mockDb = { + createSDKSession: vi.fn().mockReturnValue(1), + addObservation: vi.fn().mockReturnValue(1), + getObservationById: vi.fn(), + getObservations: vi.fn().mockReturnValue([]), + searchObservations: vi.fn().mockReturnValue([]), + markSessionCompleted: vi.fn(), + getSession: vi.fn(), + getSessions: vi.fn().mockReturnValue([]), +}; + +/** + * Mock SDK agent + */ +export const mockSdkAgent = { + startSession: vi.fn(), + stopSession: vi.fn(), + processObservation: vi.fn(), + generateSummary: vi.fn(), +}; + +/** + * Mock session manager + */ +export const mockSessionManager = { + queueObservation: vi.fn(), + queueSummarize: vi.fn(), + getSession: vi.fn(), + createSession: vi.fn(), + completeSession: vi.fn(), +}; + +/** + * Helper to reset all mocks + */ +export const resetAllMocks = () => { + vi.clearAllMocks(); + Object.values(mockDb).forEach(mock => mock.mockClear()); + Object.values(mockSdkAgent).forEach(mock => mock.mockClear()); + Object.values(mockSessionManager).forEach(mock => mock.mockClear()); +}; diff --git a/tests/helpers/scenarios.ts b/tests/helpers/scenarios.ts new file mode 100644 index 00000000..dabe206d --- /dev/null +++ b/tests/helpers/scenarios.ts @@ -0,0 +1,107 @@ +/** + * Real-world test scenarios extracted from actual claude-mem usage. + * These represent typical tool usage patterns that generate observations. + */ + +// A real Bash command observation +export const bashCommandScenario = { + tool_name: 'Bash', + tool_input: { + command: 'git status', + description: 'Check git status' + }, + tool_response: { + stdout: 'On branch main\nnothing to commit, working tree clean', + exit_code: 0 + } +}; + +// A real Read file observation +export const readFileScenario = { + tool_name: 'Read', + tool_input: { + file_path: '/project/src/index.ts' + }, + tool_response: { + content: 'export function main() { console.log("Hello"); }' + } +}; + +// A real Write file observation +export const writeFileScenario = { + tool_name: 'Write', + tool_input: { + file_path: '/project/src/config.ts', + content: 'export const API_KEY = "test";' + }, + tool_response: { + success: true + } +}; + +// A real Edit file observation +export const editFileScenario = { + tool_name: 'Edit', + tool_input: { + file_path: '/project/src/app.ts', + old_string: 'const PORT = 3000;', + new_string: 'const PORT = 8080;' + }, + tool_response: { + success: true + } +}; + +// A real Grep search observation +export const grepScenario = { + tool_name: 'Grep', + tool_input: { + pattern: 'function.*main', + path: '/project/src' + }, + tool_response: { + matches: [ + 'src/index.ts:10:export function main() {', + 'src/cli.ts:5:function mainCli() {' + ] + } +}; + +// A real session with prompts +export const sessionScenario = { + claudeSessionId: 'abc-123-def-456', + project: 'claude-mem', + userPrompt: 'Help me fix the bug in the parser' +}; + +// Another session scenario +export const sessionWithBuildScenario = { + claudeSessionId: 'xyz-789-ghi-012', + project: 'my-app', + userPrompt: 'Run the build and fix any type errors' +}; + +// Test observation data +export const sampleObservation = { + title: 'Fixed parser bug', + type: 'bugfix' as const, + content: 'The XML parser was not handling empty tags correctly. Added check for self-closing tags.', + files: ['/project/src/parser.ts'], + concepts: ['bugfix', 'parser', 'xml'] +}; + +// Another observation +export const featureObservation = { + title: 'Added search functionality', + type: 'feature' as const, + content: 'Implemented full-text search using FTS5 for observations and sessions.', + files: ['/project/src/services/search.ts'], + concepts: ['feature', 'search', 'fts5'] +}; + +// Session summary scenario +export const sessionSummaryScenario = { + claudeSessionId: 'abc-123-def-456', + last_user_message: 'Thanks, that fixed it!', + last_assistant_message: 'The bug was in the parser. I added a check for self-closing tags in src/parser.ts:42.' +}; diff --git a/tests/integration/full-lifecycle.test.ts b/tests/integration/full-lifecycle.test.ts new file mode 100644 index 00000000..73aeeed9 --- /dev/null +++ b/tests/integration/full-lifecycle.test.ts @@ -0,0 +1,352 @@ +/** + * Integration Test: Full Observation Lifecycle + * + * Tests the complete flow from tool usage to observation storage + * and retrieval through search. This validates that all components + * work together correctly. + */ +import { describe, it, expect, beforeEach, vi } from 'vitest'; +import { + bashCommandScenario, + sessionScenario, + sampleObservation +} from '../helpers/scenarios.js'; + +describe('Full Observation Lifecycle', () => { + const WORKER_PORT = 37777; + let sessionId: string; + + beforeEach(() => { + vi.clearAllMocks(); + sessionId = sessionScenario.claudeSessionId; + }); + + it('observation flows from hook to database to search', async () => { + /** + * This integration test simulates the complete happy path: + * + * 1. Session starts → Context injected + * 2. User types prompt → First tool runs + * 3. Tool result captured → Observation queued + * 4. SDK processes → Observation saved + * 5. Search finds observation + * 6. Session ends → Cleanup + */ + + // === Step 1: Context Injection (SessionStart) === + global.fetch = vi.fn().mockResolvedValueOnce({ + ok: true, + status: 200, + text: async () => '# [claude-mem] recent context\n\nNo observations yet.' + }); + + const contextResponse = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/context/inject?project=claude-mem` + ); + expect(contextResponse.ok).toBe(true); + const contextText = await contextResponse.text(); + expect(contextText).toContain('recent context'); + + // === Step 2 & 3: Tool runs, Observation captured (PostToolUse) === + global.fetch = vi.fn().mockResolvedValueOnce({ + ok: true, + status: 200, + json: async () => ({ status: 'queued', observationId: 1 }) + }); + + const observationResponse = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionId, + tool_name: bashCommandScenario.tool_name, + tool_input: bashCommandScenario.tool_input, + tool_response: bashCommandScenario.tool_response, + cwd: '/project/claude-mem' + }) + } + ); + expect(observationResponse.ok).toBe(true); + const obsResult = await observationResponse.json(); + expect(obsResult.status).toBe('queued'); + + // === Step 4: Simulate SDK processing and saving observation === + // In a real flow, the SDK would process the tool data and generate an observation + // For this test, we simulate the observation being saved to the database + + // === Step 5: Search finds the observation === + global.fetch = vi.fn().mockResolvedValueOnce({ + ok: true, + status: 200, + json: async () => ({ + results: [ + { + id: 1, + title: 'Git status check', + content: 'Checked repository status, working tree clean', + type: 'discovery', + files: [], + created_at: new Date().toISOString() + } + ], + total: 1 + }) + }); + + const searchResponse = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/search?query=git+status&project=claude-mem` + ); + expect(searchResponse.ok).toBe(true); + const searchResults = await searchResponse.json(); + expect(searchResults.results).toHaveLength(1); + expect(searchResults.results[0].title).toContain('Git'); + + // === Step 6: Session summary (Stop) === + global.fetch = vi.fn().mockResolvedValueOnce({ + ok: true, + status: 200, + json: async () => ({ status: 'queued' }) + }); + + const summaryResponse = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/summarize`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionId, + last_user_message: 'Thanks!', + last_assistant_message: 'Checked git status successfully.', + cwd: '/project/claude-mem' + }) + } + ); + expect(summaryResponse.ok).toBe(true); + + // === Step 7: Session cleanup (SessionEnd) === + global.fetch = vi.fn().mockResolvedValueOnce({ + ok: true, + status: 200, + json: async () => ({ status: 'completed' }) + }); + + const cleanupResponse = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/complete`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionId, + reason: 'user_exit' + }) + } + ); + expect(cleanupResponse.ok).toBe(true); + + // Verify: All steps completed successfully + expect(global.fetch).toHaveBeenCalled(); + }); + + it('handles multiple observations in a single session', async () => { + /** + * Tests a more realistic session with multiple tool uses + * and observations being generated. + */ + + // Track all observations in this session + const observations: any[] = []; + + // Mock worker to accept multiple observations + let obsCount = 0; + global.fetch = vi.fn().mockImplementation(async (url: string, options?: any) => { + if (url.includes('/api/sessions/observations') && options?.method === 'POST') { + obsCount++; + const body = JSON.parse(options.body); + observations.push(body); + return { + ok: true, + status: 200, + json: async () => ({ status: 'queued', observationId: obsCount }) + }; + } + if (url.includes('/api/search')) { + return { + ok: true, + status: 200, + json: async () => ({ + results: observations.map((obs, i) => ({ + id: i + 1, + title: `Observation ${i + 1}`, + content: `Tool: ${obs.tool_name}`, + type: 'discovery', + created_at: new Date().toISOString() + })), + total: observations.length + }) + }; + } + return { ok: true, status: 200, json: async () => ({}) }; + }); + + // Simulate 5 different tool uses + const tools = [ + { name: 'Bash', input: { command: 'npm test' } }, + { name: 'Read', input: { file_path: '/src/index.ts' } }, + { name: 'Edit', input: { file_path: '/src/index.ts', old_string: 'old', new_string: 'new' } }, + { name: 'Grep', input: { pattern: 'function', path: '/src' } }, + { name: 'Write', input: { file_path: '/src/new.ts', content: 'code' } } + ]; + + // Send observations for each tool + for (const tool of tools) { + const response = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionId, + tool_name: tool.name, + tool_input: tool.input, + tool_response: { success: true }, + cwd: '/project' + }) + } + ); + expect(response.ok).toBe(true); + } + + // Verify: All observations were queued + expect(observations).toHaveLength(5); + expect(observations.map(o => o.tool_name)).toEqual(['Bash', 'Read', 'Edit', 'Grep', 'Write']); + + // Search finds all observations + const searchResponse = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/search?query=observation&project=test-project` + ); + const searchResults = await searchResponse.json(); + expect(searchResults.results).toHaveLength(5); + }); + + it('preserves context across session lifecycle', async () => { + /** + * Tests that observations from one session can be found + * when starting a new session in the same project. + */ + + // Session 1: Create some observations + global.fetch = vi.fn().mockImplementation(async (url: string, options?: any) => { + if (url.includes('/api/sessions/observations')) { + return { + ok: true, + status: 200, + json: async () => ({ status: 'queued', observationId: 1 }) + }; + } + if (url.includes('/api/context/inject')) { + return { + ok: true, + status: 200, + text: async () => `# [test-project] recent context + +## Recent Work (1 observation) + +### [bugfix] Fixed parser bug +The XML parser now handles self-closing tags correctly. +Files: /src/parser.ts` + }; + } + return { ok: true, status: 200, json: async () => ({}) }; + }); + + // Session 1: Add observation + await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: 'session-1', + tool_name: 'Edit', + tool_input: { file_path: '/src/parser.ts' }, + tool_response: { success: true }, + cwd: '/project/test-project' + }) + } + ); + + // Session 2: Start new session, should see context from session 1 + const contextResponse = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/context/inject?project=test-project` + ); + const context = await contextResponse.text(); + + // Verify: Context includes previous session's work + expect(context).toContain('Fixed parser bug'); + expect(context).toContain('parser.ts'); + }); + + it('handles error recovery gracefully', async () => { + /** + * Tests that the system continues to work even if some + * operations fail along the way. + */ + + let callCount = 0; + global.fetch = vi.fn().mockImplementation(async () => { + callCount++; + + // First call fails (simulating transient error) + if (callCount === 1) { + return { + ok: false, + status: 500, + json: async () => ({ error: 'Temporary error' }) + }; + } + + // Subsequent calls succeed + return { + ok: true, + status: 200, + json: async () => ({ status: 'queued' }) + }; + }); + + // First attempt fails + const firstAttempt = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionId, + tool_name: 'Bash', + tool_input: { command: 'test' }, + tool_response: {}, + cwd: '/project' + }) + } + ); + expect(firstAttempt.ok).toBe(false); + + // Retry succeeds + const secondAttempt = await fetch( + `http://127.0.0.1:${WORKER_PORT}/api/sessions/observations`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + claudeSessionId: sessionId, + tool_name: 'Bash', + tool_input: { command: 'test' }, + tool_response: {}, + cwd: '/project' + }) + } + ); + expect(secondAttempt.ok).toBe(true); + }); +}); diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 00000000..938fa9e4 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + globals: true, + include: ['tests/**/*.test.ts'], + exclude: [ + '**/node_modules/**', + '**/dist/**', + // Exclude node:test format files (they use node's native test runner) + 'tests/strip-memory-tags.test.ts', + 'tests/user-prompt-tag-stripping.test.ts' + ], + }, +});