diff --git a/.babelrc b/.babelrc deleted file mode 100644 index b30a24c03..000000000 --- a/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["@babel/plugin-transform-runtime", "@babel/plugin-proposal-class-properties"] -} diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 000000000..bffb357a7 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/.gitignore b/.gitignore index 43b305329..1d12faa23 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,5 @@ node_modules/ # tilt tilt_config.json +.next + diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 000000000..b8d6842d7 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 000000000..f9cfa5f91 --- /dev/null +++ b/netlify.toml @@ -0,0 +1,6 @@ +[build] + command = "npm run build" + publish = ".next" + +[[plugins]] + package = "@netlify/plugin-nextjs" \ No newline at end of file diff --git a/next.config.js b/next.config.js new file mode 100644 index 000000000..e79d1a0f1 --- /dev/null +++ b/next.config.js @@ -0,0 +1,9 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, + sassOptions: { + includePaths: ['./node_modules'], + }, +}; + +module.exports = nextConfig; diff --git a/package-lock.json b/package-lock.json index 6115a85a6..28fbbbf9c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,3969 +7,5129 @@ "": { "name": "opencost-ui", "version": "0.1.0", - "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@babel/runtime": "^7.27.0", - "@date-io/core": "^1.3.13", - "@date-io/date-fns": "^1.3.13", - "@material-ui/core": "^4.11.3", - "@material-ui/icons": "^4.11.2", - "@material-ui/pickers": "^3.3.10", - "@material-ui/styles": "^4.11.5", - "axios": "^1.8.4", - "date-fns": "^2.30.0", - "html-to-react": "^1.7.0", - "material-design-icons-iconfont": "^6.1.0", - "prop-types": "^15.7.2", - "react": "^17.0.1", - "react-dom": "^17.0.1", - "react-router-dom": "^5.2.0", - "recharts": "^2.15.3" + "@carbon/charts": "^1.13.0", + "@carbon/charts-react": "^1.13.0", + "@carbon/icons-react": "^11.14.0", + "@carbon/react": "1.36.0", + "next": "13.4.9", + "react": "18.2.0", + "react-dom": "18.2.0", + "sass": "^1.69.5" }, "devDependencies": { - "@babel/core": "^7.26.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-transform-runtime": "^7.26.10", - "@babel/preset-react": "^7.26.3", - "buffer": "^6.0.3", - "parcel": "^2.14.4", - "process": "^0.11.10", - "set-value": "4.1.0" + "eslint": "8.44.0", + "eslint-config-next": "13.4.9" } }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, + "node_modules/@babel/runtime": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, + "node_modules/@carbon/charts": { + "version": "1.27.2", + "resolved": "https://registry.npmjs.org/@carbon/charts/-/charts-1.27.2.tgz", + "integrity": "sha512-0eYS1bgwP/z+lCBQrDT8vOJSMJQVKzT3h51lyXwxn9rx3/GLuseEr1+t65elyjUaBxMAs9wT1kDat2PU2d32lA==", + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@carbon/colors": "^11.37.0", + "@carbon/utils-position": "^1.3.0", + "@ibm/telemetry-js": "^1.9.1", + "@types/d3": "^7.4.3", + "@types/topojson": "^3.2.6", + "d3": "^7.9.0", + "d3-cloud": "^1.2.7", + "d3-sankey": "^0.12.3", + "date-fns": "^4.1.0", + "dompurify": "^3.2.6", + "html-to-image": "1.11.11", + "lodash-es": "^4.17.21", + "topojson-client": "^3.1.0", + "tslib": "^2.8.1" + } + }, + "node_modules/@carbon/charts-react": { + "version": "1.27.2", + "resolved": "https://registry.npmjs.org/@carbon/charts-react/-/charts-react-1.27.2.tgz", + "integrity": "sha512-qqC4O6BWeaLAsP3m++VRGUt/a/esLdB0NKCkjrhfbktC9WQrK8wHdxSPJ++QCBNcp+Xmq2XU1oAP91/y6xep/Q==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@carbon/charts": "1.27.2", + "@carbon/icons-react": "^11.64.0", + "@ibm/telemetry-js": "^1.9.1" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "react": "^16.8.6 || ^17.0.1 || ^18.2.0 || ^19.0.0", + "react-dom": "^16.8.6 || ^17.0.1 || ^18.2.0 || ^19.0.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", - "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", - "dev": true, - "engines": { - "node": ">=6.9.0" + "node_modules/@carbon/colors": { + "version": "11.46.0", + "resolved": "https://registry.npmjs.org/@carbon/colors/-/colors-11.46.0.tgz", + "integrity": "sha512-YL4BH2hxHkUT0+wMn8cO3sYN7rb9Nnp7rGttoblM0iTy83n/urwRPcxudifRwJLtASQpravCyLHdIC9WnTtIAA==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@ibm/telemetry-js": "^1.5.0" } }, - "node_modules/@babel/core": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.8.tgz", - "integrity": "sha512-l+lkXCHS6tQEc5oUpK28xBOZ6+HwaH7YwoYQbLFiYb4nS2/l1tKnZEtEWkD0GuiYdvArf9qBS0XlQGXzPMsNqQ==", - "dev": true, - "license": "MIT", + "node_modules/@carbon/feature-flags": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@carbon/feature-flags/-/feature-flags-0.32.0.tgz", + "integrity": "sha512-a1rFplSEFPwJ4ZsuwvOaKHgoLqPNhjCJdWY6VTgCoytRZqtgYWqwYFEqQkm9/f1mX1lHr6oK/eBpAcmi0Izuvg==", + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.8", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.7", - "@babel/parser": "^7.26.8", - "@babel/template": "^7.26.8", - "@babel/traverse": "^7.26.8", - "@babel/types": "^7.26.8", - "@types/gensync": "^1.0.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "@ibm/telemetry-js": "^1.5.0" } }, - "node_modules/@babel/generator": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.8.tgz", - "integrity": "sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA==", - "dev": true, - "license": "MIT", + "node_modules/@carbon/grid": { + "version": "11.49.0", + "resolved": "https://registry.npmjs.org/@carbon/grid/-/grid-11.49.0.tgz", + "integrity": "sha512-zZfj/sbwJpXboduVFNUXUdV6LmsEH39fNQQMye4V+788sdvs+ErO8L3onBZFpsek5gI4ebwjpWJu2g5szu2+kQ==", + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" + "@carbon/layout": "^11.47.0", + "@ibm/telemetry-js": "^1.5.0" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", - "dev": true, + "node_modules/@carbon/icon-helpers": { + "version": "10.71.0", + "resolved": "https://registry.npmjs.org/@carbon/icon-helpers/-/icon-helpers-10.71.0.tgz", + "integrity": "sha512-T6KcxkNIa609jPC+8A7u5husSY+mH60lCNNa3ivcOyuREoVYHwnieM7GIECigF/oaGaF5eBzrxYFx2+8mLRk1A==", + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" + "@ibm/telemetry-js": "^1.5.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", - "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", - "dev": true, + "node_modules/@carbon/icons-react": { + "version": "11.74.0", + "resolved": "https://registry.npmjs.org/@carbon/icons-react/-/icons-react-11.74.0.tgz", + "integrity": "sha512-tP/ZwM3e86zDm/8mup1NoObdaBl2xqZlroWP/Z1PQ9bCYOOFelR6r34aObWiDBJVpKb5YwwZWYUrl+/98fmDRQ==", + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@babel/compat-data": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "@carbon/icon-helpers": "^10.71.0", + "@ibm/telemetry-js": "^1.5.0", + "prop-types": "^15.8.1" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "react": ">=16" } }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", - "dev": true, + "node_modules/@carbon/layout": { + "version": "11.47.0", + "resolved": "https://registry.npmjs.org/@carbon/layout/-/layout-11.47.0.tgz", + "integrity": "sha512-2XR4TVp3uf2IB0WdoZuDcBbc9C8EN/JvZAw9BdHJ3njng8FlUAQUkTFvfoUsJl10868rqA6YeClCElBS4BHofg==", + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "@ibm/telemetry-js": "^1.5.0" } }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", - "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", - "dev": true, + "node_modules/@carbon/motion": { + "version": "11.40.0", + "resolved": "https://registry.npmjs.org/@carbon/motion/-/motion-11.40.0.tgz", + "integrity": "sha512-QjvjMcC3G289GKYDvrf5dDuyol7SXm0TYaFltx+AkJdU6fptDCJ/qjUL5SdVrsLse3jFuI8rada9tRAL5xHS1g==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@ibm/telemetry-js": "^1.5.0" + } + }, + "node_modules/@carbon/react": { + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/@carbon/react/-/react-1.36.0.tgz", + "integrity": "sha512-w23O+UgyevsVtgM2TL+Y7rzy2HkdHa85DwADdb+NQ5jskeeVbSR1YCkXe9S/VwM+uZq7sMP3Hwico1esh6+DMQ==", + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", + "@babel/runtime": "^7.18.3", + "@carbon/feature-flags": "^0.16.0", + "@carbon/icons-react": "^11.25.0", + "@carbon/layout": "^11.19.0", + "@carbon/styles": "^1.36.0", + "@carbon/telemetry": "0.1.0", + "classnames": "2.3.2", + "copy-to-clipboard": "^3.3.1", + "downshift": "5.2.1", + "flatpickr": "4.6.9", + "invariant": "^2.2.3", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "lodash.findlast": "^4.5.0", + "lodash.isequal": "^4.5.0", + "lodash.omit": "^4.5.0", + "lodash.throttle": "^4.1.1", + "prop-types": "^15.7.2", + "react-is": "^18.2.0", + "use-resize-observer": "^6.0.0", + "wicg-inert": "^3.1.1", + "window-or-global": "^1.0.1" }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "react": "^16.8.6 || ^17.0.1 || ^18.2.0", + "react-dom": "^16.8.6 || ^17.0.1 || ^18.2.0", + "sass": "^1.33.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } + "node_modules/@carbon/react/node_modules/@carbon/feature-flags": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@carbon/feature-flags/-/feature-flags-0.16.0.tgz", + "integrity": "sha512-hCrfVZ6oVnPjjupelbvQX4D0i6GlZuKVverAf0LkOydXHrPjSyuEmg+czsylyCBg4r/hxtSTu91Tq6aqz/DsHg==", + "license": "Apache-2.0" }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, + "node_modules/@carbon/styles": { + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/@carbon/styles/-/styles-1.99.0.tgz", + "integrity": "sha512-71iypyzR97h6Z94XRZyel3IEo4+n9TRylKdsYUJASNs7GNIjsIBlwKRn+upUktsyWVNTV1iQ9uzo3UkFcRiEFQ==", + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@carbon/colors": "^11.46.0", + "@carbon/feature-flags": ">=0.32.0", + "@carbon/grid": "^11.49.0", + "@carbon/layout": "^11.47.0", + "@carbon/motion": "^11.40.0", + "@carbon/themes": "^11.67.0", + "@carbon/type": "^11.53.0", + "@ibm/plex": "6.0.0-next.6", + "@ibm/plex-mono": "1.1.0", + "@ibm/plex-sans": "1.1.0", + "@ibm/plex-sans-arabic": "1.1.0", + "@ibm/plex-sans-devanagari": "1.1.0", + "@ibm/plex-sans-hebrew": "1.1.0", + "@ibm/plex-sans-thai": "1.1.0", + "@ibm/plex-sans-thai-looped": "1.1.0", + "@ibm/plex-serif": "1.1.0", + "@ibm/telemetry-js": "^1.5.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "sass": "^1.33.0" + }, + "peerDependenciesMeta": { + "sass": { + "optional": true + } } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" + "node_modules/@carbon/telemetry": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@carbon/telemetry/-/telemetry-0.1.0.tgz", + "integrity": "sha512-kNWt0bkgPwGW0i5h7HFuljbKRXPvIhsKbB+1tEURAYLXoJg9iJLF1eGvWN5iVoFCS2zje4GR3OGOsvvKVe7Hlg==", + "license": "Apache-2.0", + "bin": { + "carbon-telemetry": "bin/carbon-telemetry.js" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "dev": true, + "node_modules/@carbon/themes": { + "version": "11.67.0", + "resolved": "https://registry.npmjs.org/@carbon/themes/-/themes-11.67.0.tgz", + "integrity": "sha512-sCjmwxvM7nUdsDPef9g2v07Motvd4EYZJJqJyklMfhm9ZJ1oUfwecpW8rLzXylDsOBhrX9s1oCKWG/JqZF3kig==", + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" + "@carbon/colors": "^11.46.0", + "@carbon/layout": "^11.47.0", + "@carbon/type": "^11.53.0", + "@ibm/telemetry-js": "^1.5.0", + "color": "^4.0.0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", - "dev": true, + "node_modules/@carbon/type": { + "version": "11.53.0", + "resolved": "https://registry.npmjs.org/@carbon/type/-/type-11.53.0.tgz", + "integrity": "sha512-x3GeJrkvM8wdpBwYbRr6jUsmR2wSRVbIxmPl7kamSFih32+czp7xpt/frG02EAY5xgaEk3N9YCNYspwco42raA==", + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "@carbon/grid": "^11.49.0", + "@carbon/layout": "^11.47.0", + "@ibm/telemetry-js": "^1.5.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", - "dev": true, + "node_modules/@carbon/utils-position": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@carbon/utils-position/-/utils-position-1.3.0.tgz", + "integrity": "sha512-bfar2dV+fQ15syIrH3n9ujY4PXd1Q+AF2VcTLJIC04IDe2f80zOnJlLNPc/RktHcWTZ7WSQm80cQo3abGcsfTA==", + "hasInstallScript": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@ibm/telemetry-js": "^1.5.1" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", - "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "node_modules/@emnapi/core": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6.9.0" + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "node_modules/@emnapi/runtime": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "tslib": "^2.4.0" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "tslib": "^2.4.0" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@babel/helpers": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", - "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.7" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/parser": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.8.tgz", - "integrity": "sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==", + "node_modules/@eslint/js": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", + "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.26.8" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, "engines": { - "node": ">=6.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=10.10.0" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", - "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" + "node": ">=12.22" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz", - "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==", + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "license": "BSD-3-Clause" + }, + "node_modules/@ibm/plex": { + "version": "6.0.0-next.6", + "resolved": "https://registry.npmjs.org/@ibm/plex/-/plex-6.0.0-next.6.tgz", + "integrity": "sha512-B3uGruTn2rS5gweynLmfSe7yCawSRsJguJJQHVQiqf4rh2RNgJFu8YLE2Zd/JHV0ZXoVMOslcXP2k3hMkxKEyA==", + "license": "OFL-1.1", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=14" } }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz", - "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==", - "dev": true, + "node_modules/@ibm/plex-mono": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ibm/plex-mono/-/plex-mono-1.1.0.tgz", + "integrity": "sha512-hpsdRxR3BRJkC6wGM4MZcUFD6C8M+mmK76RtAy/hlsfPro9FzpXVdIWC+G3jeQOXof109dxlUvmeKxpeKUG68A==", + "hasInstallScript": true, + "license": "OFL-1.1", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-syntax-jsx": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@ibm/telemetry-js": "^1.6.1" } }, - "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz", - "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==", - "dev": true, + "node_modules/@ibm/plex-sans": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ibm/plex-sans/-/plex-sans-1.1.0.tgz", + "integrity": "sha512-WPgvO6Yfj2w5YbhyAr1tv95RUz4LRJlqN+CmYvBglabXteufP1D1E9BABMde+ZIKdRbFJDoKF5eQzfhpnbgZcQ==", + "hasInstallScript": true, + "license": "OFL-1.1", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@ibm/telemetry-js": "^1.6.1" } }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz", - "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==", - "dev": true, + "node_modules/@ibm/plex-sans-arabic": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ibm/plex-sans-arabic/-/plex-sans-arabic-1.1.0.tgz", + "integrity": "sha512-u8wIS6szLAOFvlBjCFZmtpKIqbhuIuniG2N0J+sio8vV6INH58hP0t0QNYrSl9SZtCv2Fwb4oQGuZJY3kJ4+QA==", + "hasInstallScript": true, + "license": "OFL-1.1", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@ibm/telemetry-js": "^1.6.1" } }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.10.tgz", - "integrity": "sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==", - "dev": true, - "license": "MIT", + "node_modules/@ibm/plex-sans-devanagari": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ibm/plex-sans-devanagari/-/plex-sans-devanagari-1.1.0.tgz", + "integrity": "sha512-IVNV9NxXZDzcGZRao/xj+kiFwkdLkcw5vNiKwY8wEzzkpjApXJnPhJ0a7mIKNAh8oIadTIF68+iGtzRKK3nXAQ==", + "hasInstallScript": true, + "license": "OFL-1.1", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.26.5", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.11.0", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@ibm/telemetry-js": "^1.6.1" } }, - "node_modules/@babel/preset-react": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.26.3.tgz", - "integrity": "sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==", - "dev": true, + "node_modules/@ibm/plex-sans-hebrew": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ibm/plex-sans-hebrew/-/plex-sans-hebrew-1.1.0.tgz", + "integrity": "sha512-iix0rLpUD0E8dE8q+/t3B7u1or7h6gEzoy6TK9NwP41AN31WE55f2cFwQAXomBDwr0Ozc9sHYy97NutEukZXzQ==", + "hasInstallScript": true, + "license": "OFL-1.1", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-transform-react-display-name": "^7.25.9", - "@babel/plugin-transform-react-jsx": "^7.25.9", - "@babel/plugin-transform-react-jsx-development": "^7.25.9", - "@babel/plugin-transform-react-pure-annotations": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@ibm/telemetry-js": "^1.6.1" } }, - "node_modules/@babel/runtime": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", - "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", - "license": "MIT", + "node_modules/@ibm/plex-sans-thai": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ibm/plex-sans-thai/-/plex-sans-thai-1.1.0.tgz", + "integrity": "sha512-vk7IrjdO69eEElJpFBppCha/wvU48DFyVuDewcfIf5L6Z11s0vbROANCvKipVPRUz1LE4ron8KoitWGcl3AlfA==", + "hasInstallScript": true, + "license": "OFL-1.1", "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" + "@ibm/telemetry-js": "^1.6.1" } }, - "node_modules/@babel/template": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.8.tgz", - "integrity": "sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q==", - "dev": true, - "license": "MIT", + "node_modules/@ibm/plex-sans-thai-looped": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ibm/plex-sans-thai-looped/-/plex-sans-thai-looped-1.1.0.tgz", + "integrity": "sha512-9zbDGzmtscHgBRTF88y3/92zQx6lmKjz5ZxhgcljilwOpj08BAytDc3mzUl9XGUh+DmOMl0Ql1lk6ecsEYYg2w==", + "hasInstallScript": true, + "license": "OFL-1.1", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8" - }, - "engines": { - "node": ">=6.9.0" + "@ibm/telemetry-js": "^1.6.1" } }, - "node_modules/@babel/traverse": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.8.tgz", - "integrity": "sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==", - "dev": true, - "license": "MIT", + "node_modules/@ibm/plex-serif": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ibm/plex-serif/-/plex-serif-1.1.0.tgz", + "integrity": "sha512-ORIyWlK8t8mvpFI7AAfhVFH+sacink2l9AjLiKZscmAzLVSa2dqFckrPOXqx4dK/cax567gWwCpJNEYk7xWxBQ==", + "hasInstallScript": true, + "license": "OFL-1.1", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.8", - "@babel/parser": "^7.26.8", - "@babel/template": "^7.26.8", - "@babel/types": "^7.26.8", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" + "@ibm/telemetry-js": "^1.6.1" + } + }, + "node_modules/@ibm/telemetry-js": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@ibm/telemetry-js/-/telemetry-js-1.11.0.tgz", + "integrity": "sha512-RO/9j+URJnSfseWg9ZkEX9p+a3Ousd33DBU7rOafoZB08RqdzxFVYJ2/iM50dkBuD0o7WX7GYt1sLbNgCoE+pA==", + "license": "Apache-2.0", + "bin": { + "ibmtelemetry": "dist/collect.js" } }, - "node_modules/@babel/types": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.8.tgz", - "integrity": "sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==", + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" } }, - "node_modules/@date-io/core": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@date-io/core/-/core-1.3.13.tgz", - "integrity": "sha512-AlEKV7TxjeK+jxWVKcCFrfYAk8spX9aCyiToFIiLPtfQbsjmRGLIhb5VZgptQcJdHtLXo7+m0DuurwFgUToQuA==" + "node_modules/@next/env": { + "version": "13.4.9", + "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.9.tgz", + "integrity": "sha512-vuDRK05BOKfmoBYLNi2cujG2jrYbEod/ubSSyqgmEx9n/W3eZaJQdRNhTfumO+qmq/QTzLurW487n/PM/fHOkw==", + "license": "MIT" }, - "node_modules/@date-io/date-fns": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-1.3.13.tgz", - "integrity": "sha512-yXxGzcRUPcogiMj58wVgFjc9qUYrCnnU9eLcyNbsQCmae4jPuZCDoIBR21j8ZURsM7GRtU62VOw5yNd4dDHunA==", + "node_modules/@next/eslint-plugin-next": { + "version": "13.4.9", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.4.9.tgz", + "integrity": "sha512-nDtGpa992tNyAkT/KmSMy7QkHfNZmGCBYhHtafU97DubqxzNdvLsqRtliQ4FU04CysRCtvP2hg8rRC1sAKUTUA==", + "dev": true, + "license": "MIT", "dependencies": { - "@date-io/core": "^1.3.13" - }, - "peerDependencies": { - "date-fns": "^2.0.0" + "glob": "7.1.7" } }, - "node_modules/@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, + "node_modules/@next/swc-darwin-arm64": { + "version": "13.4.9", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.9.tgz", + "integrity": "sha512-TVzGHpZoVBk3iDsTOQA/R6MGmFp0+17SWXMEWd6zG30AfuELmSSMe2SdPqxwXU0gbpWkJL1KgfLzy5ReN0crqQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.0.0" + "node": ">= 10" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, + "node_modules/@next/swc-darwin-x64": { + "version": "13.4.9", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.9.tgz", + "integrity": "sha512-aSfF1fhv28N2e7vrDZ6zOQ+IIthocfaxuMWGReB5GDriF0caTqtHttAvzOMgJgXQtQx6XhyaJMozLTSEXeNN+A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "node": ">= 10" } }, - "node_modules/@lezer/common": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz", - "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@lezer/lr": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz", - "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", - "dev": true, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "13.4.9", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.9.tgz", + "integrity": "sha512-JhKoX5ECzYoTVyIy/7KykeO4Z2lVKq7HGQqvAH+Ip9UFn1MOJkOnkPRB7v4nmzqAoY+Je05Aj5wNABR1N18DMg==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@lezer/common": "^1.0.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.8.5.tgz", - "integrity": "sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw==", + "node_modules/@next/swc-linux-arm64-musl": { + "version": "13.4.9", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.9.tgz", + "integrity": "sha512-OOn6zZBIVkm/4j5gkPdGn4yqQt+gmXaLaSjRSO434WplV8vo2YaBNbSHaTM9wJpZTHVDYyjzuIYVEzy9/5RVZw==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ - "darwin" - ] + "linux" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@lmdb/lmdb-darwin-x64": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.8.5.tgz", - "integrity": "sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug==", + "node_modules/@next/swc-linux-x64-gnu": { + "version": "13.4.9", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.9.tgz", + "integrity": "sha512-iA+fJXFPpW0SwGmx/pivVU+2t4zQHNOOAr5T378PfxPHY6JtjV6/0s1vlAJUdIHeVpX98CLp9k5VuKgxiRHUpg==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ - "darwin" - ] + "linux" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@lmdb/lmdb-linux-arm": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.8.5.tgz", - "integrity": "sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg==", + "node_modules/@next/swc-linux-x64-musl": { + "version": "13.4.9", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.9.tgz", + "integrity": "sha512-rlNf2WUtMM+GAQrZ9gMNdSapkVi3koSW3a+dmBVp42lfugWVvnyzca/xJlN48/7AGx8qu62WyO0ya1ikgOxh6A==", "cpu": [ - "arm" + "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@lmdb/lmdb-linux-arm64": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.8.5.tgz", - "integrity": "sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww==", + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "13.4.9", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.9.tgz", + "integrity": "sha512-5T9ybSugXP77nw03vlgKZxD99AFTHaX8eT1ayKYYnGO9nmYhJjRPxcjU5FyYI+TdkQgEpIcH7p/guPLPR0EbKA==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" - ] + "win32" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@lmdb/lmdb-linux-x64": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.8.5.tgz", - "integrity": "sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ==", + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "13.4.9", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.9.tgz", + "integrity": "sha512-ojZTCt1lP2ucgpoiFgrFj07uq4CZsq4crVXpLGgQfoFq00jPKRPgesuGPaz8lg1yLfvafkU3Jd1i8snKwYR3LA==", "cpu": [ - "x64" + "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" - ] + "win32" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@lmdb/lmdb-win32-x64": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.8.5.tgz", - "integrity": "sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ==", + "node_modules/@next/swc-win32-x64-msvc": { + "version": "13.4.9", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.9.tgz", + "integrity": "sha512-QbT03FXRNdpuL+e9pLnu+XajZdm/TtIXVYY4lA9t+9l0fLZbHXDYEKitAqxrOj37o3Vx5ufxiRAniaIebYDCgw==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "win32" - ] - }, - "node_modules/@material-ui/core": { - "version": "4.12.4", - "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz", - "integrity": "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==", - "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", - "dependencies": { - "@babel/runtime": "^7.4.4", - "@material-ui/styles": "^4.11.5", - "@material-ui/system": "^4.12.2", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.3", - "@types/react-transition-group": "^4.2.0", - "clsx": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "popper.js": "1.16.1-lts", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0", - "react-transition-group": "^4.4.0" - }, + ], "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/material-ui" - }, - "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">= 10" } }, - "node_modules/@material-ui/icons": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz", - "integrity": "sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.4.4" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "@material-ui/core": "^4.0.0", - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">= 8" } }, - "node_modules/@material-ui/pickers": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/@material-ui/pickers/-/pickers-3.3.11.tgz", - "integrity": "sha512-pDYjbjUeabapijS2FpSwK/ruJdk7IGeAshpLbKDa3PRRKRy7Nv6sXxAvUg2F+lID/NwUKgBmCYS5bzrl7Xxqzw==", - "deprecated": "This package no longer supported. It has been relaced by @mui/x-date-pickers", - "dependencies": { - "@babel/runtime": "^7.6.0", - "@date-io/core": "1.x", - "@types/styled-jsx": "^2.2.8", - "clsx": "^1.0.2", - "react-transition-group": "^4.0.0", - "rifm": "^0.7.0" - }, - "peerDependencies": { - "@date-io/core": "^1.3.6", - "@material-ui/core": "^4.0.0", - "prop-types": "^15.6.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/@material-ui/styles": { - "version": "4.11.5", - "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz", - "integrity": "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==", - "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", - "dependencies": { - "@babel/runtime": "^7.4.4", - "@emotion/hash": "^0.8.0", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.3", - "clsx": "^1.0.4", - "csstype": "^2.5.2", - "hoist-non-react-statics": "^3.3.2", - "jss": "^10.5.1", - "jss-plugin-camel-case": "^10.5.1", - "jss-plugin-default-unit": "^10.5.1", - "jss-plugin-global": "^10.5.1", - "jss-plugin-nested": "^10.5.1", - "jss-plugin-props-sort": "^10.5.1", - "jss-plugin-rule-value-function": "^10.5.1", - "jss-plugin-vendor-prefixer": "^10.5.1", - "prop-types": "^15.7.2" - }, - "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/material-ui" - }, - "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" } }, - "node_modules/@material-ui/system": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz", - "integrity": "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.3", - "csstype": "^2.5.2", - "prop-types": "^15.7.2" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/material-ui" - }, - "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">= 8" } }, - "node_modules/@material-ui/types": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", - "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==", - "peerDependencies": { - "@types/react": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" } }, - "node_modules/@material-ui/utils": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz", - "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==", + "node_modules/@parcel/watcher": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", + "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, "dependencies": { - "@babel/runtime": "^7.4.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.3" }, "engines": { - "node": ">=8.0.0" + "node": ">= 10.0.0" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.6", + "@parcel/watcher-darwin-arm64": "2.5.6", + "@parcel/watcher-darwin-x64": "2.5.6", + "@parcel/watcher-freebsd-x64": "2.5.6", + "@parcel/watcher-linux-arm-glibc": "2.5.6", + "@parcel/watcher-linux-arm-musl": "2.5.6", + "@parcel/watcher-linux-arm64-glibc": "2.5.6", + "@parcel/watcher-linux-arm64-musl": "2.5.6", + "@parcel/watcher-linux-x64-glibc": "2.5.6", + "@parcel/watcher-linux-x64-musl": "2.5.6", + "@parcel/watcher-win32-arm64": "2.5.6", + "@parcel/watcher-win32-ia32": "2.5.6", + "@parcel/watcher-win32-x64": "2.5.6" } }, - "node_modules/@mischnic/json-sourcemap": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz", - "integrity": "sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w==", - "dev": true, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", + "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@lezer/common": "^1.0.0", - "@lezer/lr": "^1.0.0", - "json5": "^2.2.1" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=12.0.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", - "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", + "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", - "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", + "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", - "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", + "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", "cpu": [ - "arm" + "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" - ] + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", - "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", + "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", "cpu": [ - "arm64" + "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", - "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", + "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", "cpu": [ - "x64" + "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", - "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", - "cpu": [ - "x64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@parcel/bundler-default": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.14.4.tgz", - "integrity": "sha512-JVqi5Sb7wv2KCTJFAAjHbnl6KC61jKNVYw/GtZm5s/Wxqvxx2tcp93rmRoBFo9X3gSgkg8jp4HkNAUHTxnsPnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/graph": "3.4.4", - "@parcel/plugin": "2.14.4", - "@parcel/rust": "2.14.4", - "@parcel/utils": "2.14.4", - "nullthrows": "^1.1.1" - }, "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/cache": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.14.4.tgz", - "integrity": "sha512-CTTMySgNSgcSwbNWL4gODU1h9hMjBRyiC8/gcKDFqzw0wC/T+ZwX7wc5zNc/S9aJRTmmgvndcYKoVlds7YV2sg==", - "dev": true, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", + "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@parcel/fs": "2.14.4", - "@parcel/logger": "2.14.4", - "@parcel/utils": "2.14.4", - "lmdb": "2.8.5" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 16.0.0" + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.14.4" } }, - "node_modules/@parcel/codeframe": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.14.4.tgz", - "integrity": "sha512-fRKkmFGnQIa/X+Kr8csTWjOwRRh2JfJfTpNS8JhbjBSWvOoKsDG9T2U5Ky8akIG7c9WDGwB3ngONauI1vtaInA==", - "dev": true, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", + "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "chalk": "^4.1.2" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 16.0.0" + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/compressor-raw": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.14.4.tgz", - "integrity": "sha512-wYRdokznP1iI3n6M6leQ0nI65tCIWhZaD0vW3G3qodDFi+qsdpvZymCpNUkh6AYkFFr3Lur+r/+xkWDoqNoMWA==", - "dev": true, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", + "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@parcel/plugin": "2.14.4" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/config-default": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.14.4.tgz", - "integrity": "sha512-bHtr8yT2IZDv5w44/VKoNz07goidO99c6hsp9s0hjSVC1G6krdE+nriryPVfUFbw044LeQThSvA8EwTas72QZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@parcel/bundler-default": "2.14.4", - "@parcel/compressor-raw": "2.14.4", - "@parcel/namer-default": "2.14.4", - "@parcel/optimizer-css": "2.14.4", - "@parcel/optimizer-htmlnano": "2.14.4", - "@parcel/optimizer-image": "2.14.4", - "@parcel/optimizer-svgo": "2.14.4", - "@parcel/optimizer-swc": "2.14.4", - "@parcel/packager-css": "2.14.4", - "@parcel/packager-html": "2.14.4", - "@parcel/packager-js": "2.14.4", - "@parcel/packager-raw": "2.14.4", - "@parcel/packager-svg": "2.14.4", - "@parcel/packager-wasm": "2.14.4", - "@parcel/reporter-dev-server": "2.14.4", - "@parcel/resolver-default": "2.14.4", - "@parcel/runtime-browser-hmr": "2.14.4", - "@parcel/runtime-js": "2.14.4", - "@parcel/runtime-rsc": "2.14.4", - "@parcel/runtime-service-worker": "2.14.4", - "@parcel/transformer-babel": "2.14.4", - "@parcel/transformer-css": "2.14.4", - "@parcel/transformer-html": "2.14.4", - "@parcel/transformer-image": "2.14.4", - "@parcel/transformer-js": "2.14.4", - "@parcel/transformer-json": "2.14.4", - "@parcel/transformer-node": "2.14.4", - "@parcel/transformer-postcss": "2.14.4", - "@parcel/transformer-posthtml": "2.14.4", - "@parcel/transformer-raw": "2.14.4", - "@parcel/transformer-react-refresh-wrap": "2.14.4", - "@parcel/transformer-svg": "2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.14.4" - } - }, - "node_modules/@parcel/core": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.14.4.tgz", - "integrity": "sha512-dtUMmPDXd7CRAWwMlOc6jh6yLRL4wMi/vNMNdX9J/fafCLFgFBmPqWBhQ9tlX015Q8DEcIRWYPumHIn5dzqEbg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/cache": "2.14.4", - "@parcel/diagnostic": "2.14.4", - "@parcel/events": "2.14.4", - "@parcel/feature-flags": "2.14.4", - "@parcel/fs": "2.14.4", - "@parcel/graph": "3.4.4", - "@parcel/logger": "2.14.4", - "@parcel/package-manager": "2.14.4", - "@parcel/plugin": "2.14.4", - "@parcel/profiler": "2.14.4", - "@parcel/rust": "2.14.4", - "@parcel/source-map": "^2.1.1", - "@parcel/types": "2.14.4", - "@parcel/utils": "2.14.4", - "@parcel/workers": "2.14.4", - "base-x": "^3.0.8", - "browserslist": "^4.6.6", - "clone": "^2.1.1", - "dotenv": "^16.4.5", - "dotenv-expand": "^11.0.6", - "json5": "^2.2.0", - "msgpackr": "^1.9.9", - "nullthrows": "^1.1.1", - "semver": "^7.5.2" - }, - "engines": { - "node": ">= 16.0.0" + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", + "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/core/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@parcel/diagnostic": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.14.4.tgz", - "integrity": "sha512-+pElcMMlTnpEIm9MrrSEOh38ylKYYdTYMgv2iZQU7799yzD9sSac9dkGSbbKGDYWhALCuzWQOgdaGG9ExJZw6w==", - "dev": true, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", + "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "nullthrows": "^1.1.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 16.0.0" + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/error-overlay": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/error-overlay/-/error-overlay-2.14.4.tgz", - "integrity": "sha512-GZ6Z1XO/VYqIFNwa3iAYWX7Pskwd+xw9tPw9kjF7tG8wdL9VipkcILJ4APj/G5CKw8XrXH/6NsC7HndNbR7EqA==", - "dev": true, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", + "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", + "cpu": [ + "ia32" + ], "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 16.0.0" + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/events": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.14.4.tgz", - "integrity": "sha512-QzZr291JuENw7BsehKc3z29ukLMApPdjRFcOYXFuMWaHkpC7lzFK/KAY4Mi9HCa3aQe90zCcuxZg+bBsNF9XxQ==", - "dev": true, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", + "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", + "cpu": [ + "x64" + ], "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 16.0.0" + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/feature-flags": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/feature-flags/-/feature-flags-2.14.4.tgz", - "integrity": "sha512-T2HE+lOmlU6PZOUnuXn6UZPXV4higCPgF2c2YXhrzTlSFcLMiAXATyzrylbYY/i/WjiYAlqvmEcaBX5fSaW95g==", - "dev": true, + "node_modules/@parcel/watcher/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", + "optional": true, "engines": { - "node": ">= 16.0.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@parcel/fs": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.14.4.tgz", - "integrity": "sha512-SQbuW6v1URv871FVj23HoC8+UUwpgkQ7iWmG7EITpp6AV42ojRr/jZ93hLjzkQQfYlRI64jUExn6AQAZDN3bqQ==", + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.15.0.tgz", + "integrity": "sha512-ojSshQPKwVvSMR8yT2L/QtUkV5SXi/IfDiJ4/8d6UbTPjiHVmxZzUAzGD8Tzks1b9+qQkZa0isUOvYObedITaw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@parcel/feature-flags": "2.14.4", - "@parcel/rust": "2.14.4", - "@parcel/types-internal": "2.14.4", - "@parcel/utils": "2.14.4", - "@parcel/watcher": "^2.0.7", - "@parcel/workers": "2.14.4" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.14.4" + "tslib": "^2.4.0" + } + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" } }, - "node_modules/@parcel/graph": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-3.4.4.tgz", - "integrity": "sha512-AIbJ8d8aCPcKAkqc45LENjAMIrp8nRGlmky5LyY5244qqnR1B+tsvU47XoGymM3OaXLdVjv8knJ4K0ci9/l/4w==", - "dev": true, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", "license": "MIT", "dependencies": { - "@parcel/feature-flags": "2.14.4", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@types/d3-selection": "*" } }, - "node_modules/@parcel/logger": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.14.4.tgz", - "integrity": "sha512-uqSGeCqraWpbe8gqbb1k9ePrlzdKoOwkdQPcRIv8TTTWZfCt6Qcl08w8didO4iAOz4H5C4Ng82wbVO/ieaMoKg==", - "dev": true, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/events": "2.14.4" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@types/d3-selection": "*" } }, - "node_modules/@parcel/markdown-ansi": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.14.4.tgz", - "integrity": "sha512-B4787HHXHi0wcuYbV4qBibws/yaX4RXoNel5xWdwzn1ZFmeLAXluNjMO2Q6FmII/Lej9OIQEaTppl7/DxJGifg==", - "dev": true, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", "license": "MIT", "dependencies": { - "chalk": "^4.1.2" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@types/d3-array": "*", + "@types/geojson": "*" } }, - "node_modules/@parcel/namer-default": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.14.4.tgz", - "integrity": "sha512-3FvZhkRgYlipj0NGRmw/rZ9ZiuM+a9ZcNW/MHRpytiNNBgcGCpR00XKhhvn0O5//MH13nLpiQXUf+J279CuN2A==", - "dev": true, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "license": "MIT" + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", + "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/plugin": "2.14.4", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@types/d3-selection": "*" } }, - "node_modules/@parcel/node-resolver-core": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-3.5.4.tgz", - "integrity": "sha512-KmmsVD8Ym+19DIbe0Y2SUbdcB+iUfgstR4dBpaogV36DlxV4d0uiia4GCpOO3kG9zlRYMVsfZEwy/NNZHELx3w==", - "dev": true, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", "license": "MIT", "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/diagnostic": "2.14.4", - "@parcel/fs": "2.14.4", - "@parcel/rust": "2.14.4", - "@parcel/utils": "2.14.4", - "nullthrows": "^1.1.1", - "semver": "^7.5.2" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@types/d3-dsv": "*" } }, - "node_modules/@parcel/node-resolver-core/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "license": "MIT" }, - "node_modules/@parcel/optimizer-css": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.14.4.tgz", - "integrity": "sha512-5rwwnsP8pnTqis5fs2YyNUvke6YprWlU8Y9pD55hK1Y1MbYmvCqaIyQv9lcpHJQiqrwsZ2pl5B3Ph5buDSQehQ==", - "dev": true, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "license": "MIT" + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/plugin": "2.14.4", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.14.4", - "browserslist": "^4.6.6", - "lightningcss": "^1.22.1", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@types/geojson": "*" } }, - "node_modules/@parcel/optimizer-htmlnano": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.14.4.tgz", - "integrity": "sha512-hLVaN7ResQcgKRo9uDm7oddC4DwR7qoTFsYn4Ftj8qGbgqB2nRpCCK0R66PA/9U98LyTOlAl1J6TEvxWR+IlKw==", - "dev": true, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/plugin": "2.14.4", - "@parcel/utils": "2.14.4", - "htmlnano": "^2.0.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@types/d3-color": "*" } }, - "node_modules/@parcel/optimizer-image": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.14.4.tgz", - "integrity": "sha512-F5xw6ayFWOxu2XP5MI8g9khOCKNkVj4nGoXrBcgLoCKW4o07buCUKY4Sy04P3u7Leip6TOk7qpt3Q1179h6KTQ==", - "dev": true, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "license": "MIT" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "license": "MIT" + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/plugin": "2.14.4", - "@parcel/rust": "2.14.4", - "@parcel/utils": "2.14.4", - "@parcel/workers": "2.14.4" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.14.4" + "@types/d3-time": "*" } }, - "node_modules/@parcel/optimizer-svgo": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.14.4.tgz", - "integrity": "sha512-bjZ2VHhzclBQ99SC2ZXsFKJ6zi0hXTPbGdaVblMu0iheeXcATdoNzey0eizaoSmLe9IyFJoN6gvnLdQqGfZLZg==", - "dev": true, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "license": "MIT" + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", + "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/plugin": "2.14.4", - "@parcel/utils": "2.14.4" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@types/d3-path": "*" } }, - "node_modules/@parcel/optimizer-swc": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-swc/-/optimizer-swc-2.14.4.tgz", - "integrity": "sha512-7+p5ILEj2S02Rs6YzwF74g0kpAZzF9idDP9zjLVZWo9JYvoRvH0LW90bI7yKXWpKB8QOtwziqgWkcgItSIWBnA==", - "dev": true, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/plugin": "2.14.4", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.14.4", - "@swc/core": "^1.11.5", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@types/d3-selection": "*" } }, - "node_modules/@parcel/package-manager": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.14.4.tgz", - "integrity": "sha512-chF2rBmLtLPZe0qtbqJtq6hNGCRu0+1wFs2j5sqxr1ZttvvhRpATu/7pD+gKTFmfL7iJkOpGTU485SYmyO1xjg==", - "dev": true, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/fs": "2.14.4", - "@parcel/logger": "2.14.4", - "@parcel/node-resolver-core": "3.5.4", - "@parcel/types": "2.14.4", - "@parcel/utils": "2.14.4", - "@parcel/workers": "2.14.4", - "@swc/core": "^1.11.5", - "semver": "^7.5.2" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.14.4" + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" } }, - "node_modules/@parcel/package-manager/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" }, - "node_modules/@parcel/packager-css": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.14.4.tgz", - "integrity": "sha512-AvJhE1AQ4OcuOUtKoifhE1Y8KgYitzKMvmgsgQlwySdrkk6dz+XGHfZ9goTzIUaz9xZzwbJH7h/pvaIP8jQ9yQ==", + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true, + "license": "MIT" + }, + "node_modules/@types/topojson": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@types/topojson/-/topojson-3.2.6.tgz", + "integrity": "sha512-ppfdlxjxofWJ66XdLgIlER/85RvpGyfOf8jrWf+3kVIjEatFxEZYD/Ea83jO672Xu1HRzd/ghwlbcZIUNHTskw==", "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/plugin": "2.14.4", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.14.4", - "lightningcss": "^1.22.1", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@types/geojson": "*", + "@types/topojson-client": "*", + "@types/topojson-server": "*", + "@types/topojson-simplify": "*", + "@types/topojson-specification": "*" } }, - "node_modules/@parcel/packager-html": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.14.4.tgz", - "integrity": "sha512-rsYz3NDaKRCuQOAWGc3eYJ2GHesm62iRCQTMGlZ7Oplp748vu2c1Uee/mP43WlslvDxHtV7rzVNyo88MS6sc5w==", - "dev": true, + "node_modules/@types/topojson-client": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@types/topojson-client/-/topojson-client-3.1.5.tgz", + "integrity": "sha512-C79rySTyPxnQNNguTZNI1Ct4D7IXgvyAs3p9HPecnl6mNrJ5+UhvGNYcZfpROYV2lMHI48kJPxwR+F9C6c7nmw==", "license": "MIT", "dependencies": { - "@parcel/plugin": "2.14.4", - "@parcel/types": "2.14.4", - "@parcel/utils": "2.14.4", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@types/geojson": "*", + "@types/topojson-specification": "*" } }, - "node_modules/@parcel/packager-js": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.14.4.tgz", - "integrity": "sha512-Fz98TzYFcd9xCj6jqMtyd7c3n65GRmuoG7u0S/2g4sJrR5Zen70n1zlBGX7mEoOvB5lKRijzoNqBtB+7bWqS5A==", - "dev": true, + "node_modules/@types/topojson-server": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/topojson-server/-/topojson-server-3.0.4.tgz", + "integrity": "sha512-5+ieK8ePfP+K2VH6Vgs1VCt+fO1U8XZHj0UsF+NktaF0DavAo1q3IvCBXgokk/xmtvoPltSUs6vxuR/zMdOE1g==", "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/plugin": "2.14.4", - "@parcel/rust": "2.14.4", - "@parcel/source-map": "^2.1.1", - "@parcel/types": "2.14.4", - "@parcel/utils": "2.14.4", - "globals": "^13.2.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@types/geojson": "*", + "@types/topojson-specification": "*" } }, - "node_modules/@parcel/packager-js/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, + "node_modules/@types/topojson-simplify": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/topojson-simplify/-/topojson-simplify-3.0.3.tgz", + "integrity": "sha512-sBO5UZ0O2dB0bNwo0vut2yLHhj3neUGi9uL7/ROdm8Gs6dtt4jcB9OGDKr+M2isZwQM2RuzVmifnMZpxj4IGNw==", "license": "MIT", "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/geojson": "*", + "@types/topojson-specification": "*" } }, - "node_modules/@parcel/packager-raw": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.14.4.tgz", - "integrity": "sha512-7yDcPGsSSz4WiCWj2KoC2pNBXNislulI1RXaWyBAMzQhevQ+9D2ga/ZPgpcNjcWr8Y1tRb3QITETkTmZVHmPXQ==", - "dev": true, + "node_modules/@types/topojson-specification": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/topojson-specification/-/topojson-specification-1.0.5.tgz", + "integrity": "sha512-C7KvcQh+C2nr6Y2Ub4YfgvWvWCgP2nOQMtfhlnwsRL4pYmmwzBS7HclGiS87eQfDOU/DLQpX6GEscviaz4yLIQ==", "license": "MIT", "dependencies": { - "@parcel/plugin": "2.14.4" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "@types/geojson": "*" } }, - "node_modules/@parcel/packager-svg": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.14.4.tgz", - "integrity": "sha512-ja5P9PXp+v/mh+UXUXdQ1O35yr2kRqdRlytYrzmAaeILuS1ko2n3ZJoeUYYprYOh/UmLmkgbXh/DyzrhEH7TZw==", - "dev": true, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", "license": "MIT", - "dependencies": { - "@parcel/plugin": "2.14.4", - "@parcel/types": "2.14.4", - "@parcel/utils": "2.14.4", - "posthtml": "^0.16.4" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "optional": true }, - "node_modules/@parcel/packager-wasm": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/packager-wasm/-/packager-wasm-2.14.4.tgz", - "integrity": "sha512-sgGCitPjl80Ku+xZIu3wCIAjOYXVEGJ00uXeexR8hgMx/PMhiHXLWUG8eLYAvxXx/CcLmHDOEBNrl6G3JxsP9g==", + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@parcel/plugin": "2.14.4" + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=16.0.0", - "parcel": "^2.14.4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@parcel/plugin": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.14.4.tgz", - "integrity": "sha512-EcehbthkBtQ9S2jWAzIiSlodbIMZ0bSsN3PC1q9jVaCM16ueObjZohKkzMjzR6Qot91qL0EJoMLzuNvtryvpHA==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "license": "MIT", "dependencies": { - "@parcel/types": "2.14.4" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, "engines": { - "node": ">= 16.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@parcel/profiler": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/profiler/-/profiler-2.14.4.tgz", - "integrity": "sha512-oZAdCDW3bYRpBOuL4coq4OQDN6HXADaSd4X8xJCeGsEsbVfJt0Qg5RgxdWC1L86mukyZMQ9ZrQUpC8aU9CAmFg==", + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, "license": "MIT", - "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/events": "2.14.4", - "@parcel/types-internal": "2.14.4", - "chrome-trace-event": "^1.0.2" - }, "engines": { - "node": ">= 16.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@parcel/reporter-cli": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.14.4.tgz", - "integrity": "sha512-KgBXBiwGb9hqf3A6vw6eIqX1uYaMRjSqYXUUybGTOxonc+yB6J5q+skv1Wuty6IYuBfjNlV/zdvgggVZMl0ZxA==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@parcel/plugin": "2.14.4", - "@parcel/types": "2.14.4", - "@parcel/utils": "2.14.4", - "chalk": "^4.1.2", - "term-size": "^2.2.1" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@parcel/reporter-dev-server": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.14.4.tgz", - "integrity": "sha512-Ezg24vHftV0El0tWcxnsGAxwSdNTMs9M+l9Nbm1k4rydx1lCoKBAhpa2Icv8vKZY8K075giww8TOkjk6zVkAmQ==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "license": "MIT", "dependencies": { - "@parcel/codeframe": "2.14.4", - "@parcel/plugin": "2.14.4", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.14.4" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@parcel/reporter-tracer": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/reporter-tracer/-/reporter-tracer-2.14.4.tgz", - "integrity": "sha512-EN+rzdEnoMuC5qbYIcuP6v1vTb/dDPrrnIEtDFEsSyuBuDfQevtOech8oHzjGEBOlC8svm+OzW/wIj2L2rmF2A==", + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@parcel/plugin": "2.14.4", - "@parcel/utils": "2.14.4", - "chrome-trace-event": "^1.0.3", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@parcel/resolver-default": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.14.4.tgz", - "integrity": "sha512-s4XKnfScF/cwqGyYG/sB4WpktIJ55dvpu64ZiglHkkPvY5wT4p7A61mTIp6ck0ZPYmeG/zfd+P0B3qPpNF5mUw==", + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@parcel/node-resolver-core": "3.5.4", - "@parcel/plugin": "2.14.4" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@parcel/runtime-browser-hmr": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.14.4.tgz", - "integrity": "sha512-7o3XHOkuNy2jUH8xdKJSzIfatdAqvr/PHg9vQN0Cz4r80XCXDh1ovfz/x0Q9gpBv+LMBs+ufZ4tP+RfgJ/jKpQ==", + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@parcel/plugin": "2.14.4", - "@parcel/utils": "2.14.4" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@parcel/runtime-js": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.14.4.tgz", - "integrity": "sha512-F9RvDELU/0fyV2/rHkjpPcLeKF/ZU3gnHIQnkh2Q5/41XhymyNAvMmYGPM6VpbOAnDlYeVjwfyJ41x8FOL6u4Q==", + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/plugin": "2.14.4", - "@parcel/utils": "2.14.4", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@parcel/runtime-rsc": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/runtime-rsc/-/runtime-rsc-2.14.4.tgz", - "integrity": "sha512-FXoO1GWvC/yQOUYX+0rTUQVku91DSJnjegqJaiJSUOEGeJWF9mBmY/3QDkksvhwB25vJkLYsu/M5Fx83OA2u6w==", + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@parcel/plugin": "2.14.4", - "@parcel/rust": "2.14.4", - "@parcel/utils": "2.14.4", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/@parcel/runtime-service-worker": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.14.4.tgz", - "integrity": "sha512-6+vz2DYP9tK+GHRPwW/qfUNvGOHvFpsN/Thk+tSIZ+PHT1DTWfpf02eo7fzpImdZAzllSz3m1IXgrOH00LdOKA==", + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@parcel/plugin": "2.14.4", - "@parcel/utils": "2.14.4", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@parcel/rust": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/rust/-/rust-2.14.4.tgz", - "integrity": "sha512-Ti+ZVr8mMTgrSA7UHcFXxG98anD0C8dGzYfP1+DTgxkcU16nywTv5F/VsPqpV2qiDWrHbm06CEWQbOrowjzvVw==", + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "napi-wasm": "^1.1.2" - }, - "peerDependenciesMeta": { - "napi-wasm": { - "optional": true - } - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@parcel/source-map": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.1.tgz", - "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==", + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": "^12.18.3 || >=14" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@parcel/transformer-babel": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.14.4.tgz", - "integrity": "sha512-9yMnlFuKQYgXJY8OWpcR2vSigpMm5MCEJJl6r+g3KkXHFwK1Gket2sC4Wd5JbHv98SNzJ9rdD4Xrre/eXJu6pw==", + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/plugin": "2.14.4", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.14.4", - "browserslist": "^4.6.6", - "json5": "^2.2.0", - "nullthrows": "^1.1.1", - "semver": "^7.5.2" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@parcel/transformer-babel/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@parcel/transformer-css": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.14.4.tgz", - "integrity": "sha512-sf0NuzPH4kSpL4VgV94xY5kPxoAndoNouUFPaHmN3hW6QiTHShRubfDsginSOHl5QhghSfr4qtP7t7HxCSDq6A==", + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/plugin": "2.14.4", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.14.4", - "browserslist": "^4.6.6", - "lightningcss": "^1.22.1", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@parcel/transformer-html": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.14.4.tgz", - "integrity": "sha512-h0iCfU2SN+gh5LTfZTRiXHavl3CdJ2i3F9jzVrRjdH8pfLqy5eOy1tQ8vyqMsshk+VdlZ1+vUiZ7uaKkkBq/fg==", + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/plugin": "2.14.4", - "@parcel/rust": "2.14.4", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.12.1", - "posthtml-render": "^3.0.0", - "semver": "^7.5.2", - "srcset": "4" + "@napi-rs/wasm-runtime": "^0.2.11" }, "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=14.0.0" } }, - "node_modules/@parcel/transformer-html/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "ISC", + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", "bin": { - "semver": "bin/semver.js" + "acorn": "bin/acorn" }, "engines": { - "node": ">=10" + "node": ">=0.4.0" } }, - "node_modules/@parcel/transformer-html/node_modules/srcset": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", - "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@parcel/transformer-image": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.14.4.tgz", - "integrity": "sha512-QVGAdQ16YxNo7PTzBazUabmrn4dss1EDeMrh0bFUeRTZdYaYu5z/+gnRc5R4oHcHK6oxnECi808TquMQcQxDEA==", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { - "@parcel/plugin": "2.14.4", - "@parcel/utils": "2.14.4", - "@parcel/workers": "2.14.4", - "nullthrows": "^1.1.1" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "peerDependencies": { - "@parcel/core": "^2.14.4" + "node": ">=8" } }, - "node_modules/@parcel/transformer-js": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.14.4.tgz", - "integrity": "sha512-fBC8NVM8xXxjGQY5r88Z46akSErFO5hRVA4kuRI0tkXorjov3Mu4hu6MLq974TEQluSvGXUYGT5Mq2iXZ75M7w==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/plugin": "2.14.4", - "@parcel/rust": "2.14.4", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.14.4", - "@parcel/workers": "2.14.4", - "@swc/helpers": "^0.5.0", - "browserslist": "^4.6.6", - "nullthrows": "^1.1.1", - "regenerator-runtime": "^0.14.1", - "semver": "^7.5.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.14.4" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@parcel/transformer-js/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/@parcel/transformer-json": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.14.4.tgz", - "integrity": "sha512-+28n3/qhc2q6Zoqhufk1YKU442a2JyyE0ILFsT17Of+lcNX+QtXYPOYcky7TNENnoUz9TpOAFev64P99UN7huA==", + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, "license": "MIT", "dependencies": { - "@parcel/plugin": "2.14.4", - "json5": "^2.2.0" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@parcel/transformer-node": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/transformer-node/-/transformer-node-2.14.4.tgz", - "integrity": "sha512-K5k/GkGN4SwGdil8g10AcPPJn+hV0vzcv4l2qYoCqaxxIPCrpjmMnoA8a3kRgxvD8s54KciFYYjmU5Cj5NjvbA==", + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, "license": "MIT", "dependencies": { - "@parcel/plugin": "2.14.4" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/@parcel/transformer-postcss": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.14.4.tgz", - "integrity": "sha512-GxkXkcgG2XGt6ivoUF5yD1tmQPV+d71gUxyBGv1i1jg4x65R12Gc/npzWk9TCH2dShSdHOA90OJpNL4k0JlLtg==", + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/plugin": "2.14.4", - "@parcel/rust": "2.14.4", - "@parcel/utils": "2.14.4", - "clone": "^2.1.1", - "nullthrows": "^1.1.1", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.2" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@parcel/transformer-postcss/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@parcel/transformer-posthtml": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.14.4.tgz", - "integrity": "sha512-V9dnsA5+t7uF/hWc9HwJcaKkmP8K2go6yAQOpxu+knyszfz3t2jw/k4L/VFjqCATf90agal/iRTPVkHvWDCzZw==", + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, "license": "MIT", "dependencies": { - "@parcel/plugin": "2.14.4", - "@parcel/utils": "2.14.4", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.12.1", - "posthtml-render": "^3.0.0", - "semver": "^7.5.2" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@parcel/transformer-posthtml/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@parcel/transformer-raw": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.14.4.tgz", - "integrity": "sha512-GCuUWKAb9YHB/krmzBeQbtHKKZopT3c3AzoPTq/4woV4Ti1zUZ83oFyTX1tBKQ+MMB1BW+HrPkFld0iY4gp/Ng==", + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, "license": "MIT", "dependencies": { - "@parcel/plugin": "2.14.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">= 0.4" } }, - "node_modules/@parcel/transformer-react-refresh-wrap": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.14.4.tgz", - "integrity": "sha512-nb70CAvjDizAIQ1naZ39P/PxYWtPllWvvxrkpldNnk8AF74OcHodrsuHKwhyPZHMmnMdexFonsenf+VeN4l/aQ==", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, "license": "MIT", "dependencies": { - "@parcel/error-overlay": "2.14.4", - "@parcel/plugin": "2.14.4", - "@parcel/utils": "2.14.4", - "react-refresh": ">=0.9 <=0.16" + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" } }, - "node_modules/@parcel/transformer-svg": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.14.4.tgz", - "integrity": "sha512-iqnyvgGmwu4wNh+khEBkMEu1hAGZWnc7/xQnhiuQBAcoy5qGNEjyVUv6PbMLWWAVK/0PjqV4FaB2deXBYKeW0A==", + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/plugin": "2.14.4", - "@parcel/rust": "2.14.4", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.12.1", - "posthtml-render": "^3.0.0", - "semver": "^7.5.2" + "possible-typed-array-names": "^1.0.0" }, "engines": { - "node": ">= 16.0.0", - "parcel": "^2.14.4" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@parcel/transformer-svg/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "node_modules/axe-core": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.1.tgz", + "integrity": "sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "license": "MPL-2.0", "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/@parcel/types": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.14.4.tgz", - "integrity": "sha512-NL4N9M6IPwBquAo1DKOPqy66nwJLXMX3KPalzAA7ktt3HYr5YNG5h3GeVXPOLNIVVMrSIiodYGPEeEBYy6kyYA==", + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@parcel/types-internal": "2.14.4", - "@parcel/workers": "2.14.4" + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" } }, - "node_modules/@parcel/types-internal": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/types-internal/-/types-internal-2.14.4.tgz", - "integrity": "sha512-Y2JnljFG7KcxLrCiYNCqBfjDo12alhRVpNugm0jwz1EQ3OQNO3HYiB0f3djq6pv2clZ5ndpgkNgYsn6L7KR9Nw==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/feature-flags": "2.14.4", - "@parcel/source-map": "^2.1.1", - "utility-types": "^3.10.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@parcel/utils": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.14.4.tgz", - "integrity": "sha512-icK6QgKjis+UZLyaHJcsKXYOSKYeYr41m8ZB9j20/yEcvrMqj/LMVsNjLz3iWVhLwfgussG2ODxycCdu3M5cvQ==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { - "@parcel/codeframe": "2.14.4", - "@parcel/diagnostic": "2.14.4", - "@parcel/logger": "2.14.4", - "@parcel/markdown-ansi": "2.14.4", - "@parcel/rust": "2.14.4", - "@parcel/source-map": "^2.1.1", - "chalk": "^4.1.2", - "nullthrows": "^1.1.1" + "fill-range": "^7.1.1" }, "engines": { - "node": ">= 16.0.0" + "node": ">=8" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=10.16.0" } }, - "node_modules/@parcel/watcher": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", - "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, - "hasInstallScript": true, "license": "MIT", "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" }, "engines": { - "node": ">= 10.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.1", - "@parcel/watcher-darwin-arm64": "2.5.1", - "@parcel/watcher-darwin-x64": "2.5.1", - "@parcel/watcher-freebsd-x64": "2.5.1", - "@parcel/watcher-linux-arm-glibc": "2.5.1", - "@parcel/watcher-linux-arm-musl": "2.5.1", - "@parcel/watcher-linux-arm64-glibc": "2.5.1", - "@parcel/watcher-linux-arm64-musl": "2.5.1", - "@parcel/watcher-linux-x64-glibc": "2.5.1", - "@parcel/watcher-linux-x64-musl": "2.5.1", - "@parcel/watcher-win32-arm64": "2.5.1", - "@parcel/watcher-win32-ia32": "2.5.1", - "@parcel/watcher-win32-x64": "2.5.1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", - "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", - "cpu": [ - "arm64" - ], + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10.0.0" + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">= 0.4" } }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", - "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", - "cpu": [ - "arm64" - ], + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001769", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", + "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/classnames": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==", + "license": "MIT" + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/compute-scroll-into-view": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz", + "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-to-clipboard": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "license": "MIT", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-cloud": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/d3-cloud/-/d3-cloud-1.2.8.tgz", + "integrity": "sha512-K0qBFkgystNlgFW/ufdwIES5kDiC8cGJxMw4ULzN9UU511v89A6HXs1X8vUPxqurehzqJZS5KzZI4c8McT+4UA==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-dispatch": "^1.0.3" + } + }, + "node_modules/d3-cloud/node_modules/d3-dispatch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", + "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dompurify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", + "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/downshift": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/downshift/-/downshift-5.2.1.tgz", + "integrity": "sha512-uHX2OLbWthLR8QbR8NCI8OmjvvJxq8+PrA95KblFd9JyB1zVZh1HnszzsWMMCnMuH6IvsUtVfF5HY7XfijJ2dw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.9.1", + "compute-scroll-into-view": "^1.0.13", + "prop-types": "^15.7.2", + "react-is": "^16.13.1" + }, + "peerDependencies": { + "react": ">=0.14.9" + } + }, + "node_modules/downshift/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-abstract": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", + "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.1", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.1.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.3.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.5", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz", + "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.6.0", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-next": { + "version": "13.4.9", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.4.9.tgz", + "integrity": "sha512-0fLtKRR268NArpqeXXwnLgMXPvF64YESQvptVg+RMLCaijKm3FICN9Y7Jc1p2o+yrWwE4DufJXDM/Vo53D1L7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@next/eslint-plugin-next": "13.4.9", + "@rushstack/eslint-patch": "^1.1.3", + "@typescript-eslint/parser": "^5.42.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.31.7", + "eslint-plugin-react-hooks": "5.0.0-canary-7118f5dd7-20230705" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-next/node_modules/eslint-import-resolver-typescript": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", + "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.13", + "unrs-resolver": "^1.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", - "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", - "cpu": [ - "x64" - ], + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", - "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", - "cpu": [ - "x64" - ], + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", - "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", - "cpu": [ - "arm" - ], + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", - "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", - "cpu": [ - "arm" - ], + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=4.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", - "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", - "cpu": [ - "arm64" - ], + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", - "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", - "cpu": [ - "arm64" - ], + "node_modules/eslint-plugin-react-hooks": { + "version": "5.0.0-canary-7118f5dd7-20230705", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0-canary-7118f5dd7-20230705.tgz", + "integrity": "sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">= 10.0.0" + "node": ">=10" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", - "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", - "cpu": [ - "x64" - ], + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, "engines": { - "node": ">= 10.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", - "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", - "cpu": [ - "x64" - ], + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", "engines": { - "node": ">= 10.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", - "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", - "cpu": [ - "arm64" - ], + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, "engines": { - "node": ">= 10.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", - "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", - "cpu": [ - "ia32" - ], + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", - "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", - "cpu": [ - "x64" - ], + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" + "dependencies": { + "flat-cache": "^3.0.4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/@parcel/workers": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.14.4.tgz", - "integrity": "sha512-OAjW2dJOaRKy4UD5YwnUi7mY+gt/QbjagjrKh2fQDnrvuK8dpr5GrjEOLOe6QsxEE0vpe3jshhGMJTYqLni3kQ==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.14.4", - "@parcel/logger": "2.14.4", - "@parcel/profiler": "2.14.4", - "@parcel/types-internal": "2.14.4", - "@parcel/utils": "2.14.4", - "nullthrows": "^1.1.1" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.14.4" + "node": ">=8" } }, - "node_modules/@swc/core": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.13.tgz", - "integrity": "sha512-9BXdYz12Wl0zWmZ80PvtjBWeg2ncwJ9L5WJzjhN6yUTZWEV/AwAdVdJnIEp4pro3WyKmAaMxcVOSbhuuOZco5g==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.19" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.11.13", - "@swc/core-darwin-x64": "1.11.13", - "@swc/core-linux-arm-gnueabihf": "1.11.13", - "@swc/core-linux-arm64-gnu": "1.11.13", - "@swc/core-linux-arm64-musl": "1.11.13", - "@swc/core-linux-x64-gnu": "1.11.13", - "@swc/core-linux-x64-musl": "1.11.13", - "@swc/core-win32-arm64-msvc": "1.11.13", - "@swc/core-win32-ia32-msvc": "1.11.13", - "@swc/core-win32-x64-msvc": "1.11.13" - }, - "peerDependencies": { - "@swc/helpers": "*" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.13.tgz", - "integrity": "sha512-loSERhLaQ9XDS+5Kdx8cLe2tM1G0HLit8MfehipAcsdctpo79zrRlkW34elOf3tQoVPKUItV0b/rTuhjj8NtHg==", - "cpu": [ - "arm64" - ], + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, "engines": { - "node": ">=10" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.13.tgz", - "integrity": "sha512-uSA4UwgsDCIysUPfPS8OrQTH2h9spO7IYFd+1NB6dJlVGUuR6jLKuMBOP1IeLeax4cGHayvkcwSJ3OvxHwgcZQ==", - "cpu": [ - "x64" - ], + "node_modules/flatpickr": { + "version": "4.6.9", + "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.9.tgz", + "integrity": "sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw==", + "license": "MIT" + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } + "license": "ISC" }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.13.tgz", - "integrity": "sha512-boVtyJzS8g30iQfe8Q46W5QE/cmhKRln/7NMz/5sBP/am2Lce9NL0d05NnFwEWJp1e2AMGHFOdRr3Xg1cDiPKw==", - "cpu": [ - "arm" - ], + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.13.tgz", - "integrity": "sha512-+IK0jZ84zHUaKtwpV+T+wT0qIUBnK9v2xXD03vARubKF+eUqCsIvcVHXmLpFuap62dClMrhCiwW10X3RbXNlHw==", - "cpu": [ - "arm64" - ], + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.13.tgz", - "integrity": "sha512-+ukuB8RHD5BHPCUjQwuLP98z+VRfu+NkKQVBcLJGgp0/+w7y0IkaxLY/aKmrAS5ofCNEGqKL+AOVyRpX1aw+XA==", - "cpu": [ - "arm64" - ], + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.13.tgz", - "integrity": "sha512-q9H3WI3U3dfJ34tdv60zc8oTuWvSd5fOxytyAO9Pc5M82Hic3jjWaf2xBekUg07ubnMZpyfnv+MlD+EbUI3Llw==", - "cpu": [ - "x64" - ], + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.13.tgz", - "integrity": "sha512-9aaZnnq2pLdTbAzTSzy/q8dr7Woy3aYIcQISmw1+Q2/xHJg5y80ZzbWSWKYca/hKonDMjIbGR6dp299I5J0aeA==", - "cpu": [ - "x64" - ], + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.13.tgz", - "integrity": "sha512-n3QZmDewkHANcoHvtwvA6yJbmS4XJf0MBMmwLZoKDZ2dOnC9D/jHiXw7JOohEuzYcpLoL5tgbqmjxa3XNo9Oow==", - "cpu": [ - "arm64" - ], + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.13.tgz", - "integrity": "sha512-wM+Nt4lc6YSJFthCx3W2dz0EwFNf++j0/2TQ0Js9QLJuIxUQAgukhNDVCDdq8TNcT0zuA399ALYbvj5lfIqG6g==", - "cpu": [ - "ia32" - ], + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.13.tgz", - "integrity": "sha512-+X5/uW3s1L5gK7wAo0E27YaAoidJDo51dnfKSfU7gF3mlEUuWH8H1bAy5OTt2mU4eXtfsdUMEVXSwhDlLtQkuA==", - "cpu": [ - "x64" - ], + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "node_modules/get-tsconfig": { + "version": "4.13.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", + "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", "dev": true, - "license": "Apache-2.0" + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } }, - "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, - "license": "Apache-2.0", + "license": "ISC", "dependencies": { - "tslib": "^2.8.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@swc/types": { - "version": "0.1.20", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.20.tgz", - "integrity": "sha512-/rlIpxwKrhz4BIplXf6nsEHtqlhzuNN34/k3kMAXH4/lvVoA3cdq+60aqVNnyvw2uITEaCi0WV3pxBe4dQqoXQ==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "Apache-2.0", + "license": "ISC", "dependencies": { - "@swc/counter": "^0.1.3" + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/@types/d3-array": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.9.tgz", - "integrity": "sha512-mZowFN3p64ajCJJ4riVYlOjNlBJv3hctgAY01pjw3qTnJePD8s9DZmYDzhHKvzfCYvdjwylkU38+Vdt7Cu2FDA==" - }, - "node_modules/@types/d3-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.2.tgz", - "integrity": "sha512-At+Ski7dL8Bs58E8g8vPcFJc8tGcaC12Z4m07+p41+DRqnZQcAlp3NfYjLrhNYv+zEyQitU1CUxXNjqUyf+c0g==" - }, - "node_modules/@types/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-VZofjpEt8HWv3nxUAosj5o/+4JflnJ7Bbv07k17VO3T2WRuzGdZeookfaF60iVh5RdhVG49LE5w6LIshVUC6rg==" + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause" }, - "node_modules/@types/d3-interpolate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.3.tgz", - "integrity": "sha512-6OZ2EIB4lLj+8cUY7I/Cgn9Q+hLdA4DjJHYOQDiHL0SzqS1K9DL5xIOVBSIHgF+tiuO9MU1D36qvdIvRDRPh+Q==", + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@types/d3-color": "*" + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/d3-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.1.tgz", - "integrity": "sha512-blRhp7ki7pVznM8k6lk5iUU9paDbVRVq+/xpf0RRgSJn5gr6SE7RcFtxooYGMBOc1RZiGyqRpVdu5AD0z0ooMA==" - }, - "node_modules/@types/d3-scale": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.6.tgz", - "integrity": "sha512-lo3oMLSiqsQUovv8j15X4BNEDOsnHuGjeVg7GRbAuB2PUa1prK5BNSOu6xixgNf3nqxPl4I1BqJWrPvFGlQoGQ==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@types/d3-time": "*" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/d3-shape": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.4.tgz", - "integrity": "sha512-M2/xsWPsjaZc5ifMKp1EBp0gqJG0eO/zlldJNOC85Y/5DGsBQ49gDkRJ2h5GY7ZVD6KUumvZWsylSbvTaJTqKg==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", "dependencies": { - "@types/d3-path": "*" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/d3-time": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.2.tgz", - "integrity": "sha512-kbdRXTmUgNfw5OTE3KZnFQn6XdIc4QGroN5UixgdrXATmYsdlPQS6pEut9tVlIojtzuFD4txs/L+Rq41AHtLpg==" - }, - "node_modules/@types/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-GGTvzKccVEhxmRfJEB6zhY9ieT4UhGVUIQaBzFpUO9OXy2ycAlnPCSJLzmGGgqt3KVjqN3QCQB4g1rsZnHsWhg==" + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" }, - "node_modules/@types/gensync": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/gensync/-/gensync-1.0.4.tgz", - "integrity": "sha512-C3YYeRQWp2fmq9OryX+FoDy8nXS6scQ7dPptD8LnFDAUNcKWJjXQKDNJD3HVm+kOUsXhTOkpi69vI4EuAr95bA==", + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, "license": "MIT" }, - "node_modules/@types/prop-types": { - "version": "15.7.9", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.9.tgz", - "integrity": "sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==" - }, - "node_modules/@types/react": { - "version": "17.0.69", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.69.tgz", - "integrity": "sha512-klEeru//GhiQvXUBayz0Q4l3rKHWsBR/EUOhOeow6hK2jV7MlO44+8yEk6+OtPeOlRfnpUnrLXzGK+iGph5aeg==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/react-transition-group": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.8.tgz", - "integrity": "sha512-QmQ22q+Pb+HQSn04NL3HtrqHwYMf4h3QKArOy5F8U5nEVMaihBs3SR10WiOM1iwPz5jIo8x/u11al+iEGZZrvg==", - "dependencies": { - "@types/react": "*" + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/@types/react/node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - }, - "node_modules/@types/scheduler": { - "version": "0.16.5", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.5.tgz", - "integrity": "sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==" - }, - "node_modules/@types/styled-jsx": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/@types/styled-jsx/-/styled-jsx-2.2.9.tgz", - "integrity": "sha512-W/iTlIkGEyTBGTEvZCey8EgQlQ5l0DwMqi3iOXlLs2kyBwYTXHKEiU6IZ5EwoRwngL8/dGYuzezSup89ttVHLw==", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", "dependencies": { - "@types/react": "*" + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "dunder-proto": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, - "license": "Python-2.0" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/axios": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", - "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", - "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.3", - "semver": "^6.3.1" + "has-symbols": "^1.0.3" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", - "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.3", - "core-js-compat": "^3.40.0" + "function-bind": "^1.1.2" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">= 0.4" } }, - "node_modules/babel-plugin-polyfill-regenerator": { + "node_modules/html-to-image": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/html-to-image/-/html-to-image-1.11.11.tgz", + "integrity": "sha512-9gux8QhvjRO/erSnDPv28noDZcPZmYE7e1vFsBLKLlRlKDSqNJYebj6Qz1TGd5lsRV+X+xYyjCKjuZdABinWjA==", + "license": "MIT" + }, + "node_modules/iconv-lite": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", - "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", - "dev": true, + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/base-x": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", - "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" + "engines": { + "node": ">= 4" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/immutable": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz", + "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==", + "license": "MIT" }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" - }, - "bin": { - "browserslist": "cli.js" - }, + "license": "MIT", "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=0.8.19" } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "license": "ISC", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001692", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", - "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "node_modules/is-arrayish": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", + "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, "engines": { - "node": ">=6.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, "engines": { - "node": ">=0.8" - } - }, - "node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", - "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" } }, - "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/core-js-compat": { - "version": "3.41.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", - "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.24.4" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, "license": "MIT", "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">=14" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/css-vendor": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", - "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", - "dependencies": { - "@babel/runtime": "^7.8.3", - "is-in-browser": "^1.0.2" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/csstype": { - "version": "2.6.21", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", - "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" - }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", "dependencies": { - "internmap": "1 - 2" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=12" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "devOptional": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-color": "1 - 3" + "call-bound": "^1.0.3" }, "engines": { - "node": ">=12" - } - }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "devOptional": true, + "license": "MIT", "dependencies": { - "d3-path": "^3.1.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "dependencies": { - "d3-array": "2 - 3" - }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "dependencies": { - "d3-time": "1 - 3" - }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=0.12.0" } }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.21.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=0.11" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=6.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/decimal.js-light": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", - "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, - "license": "Apache-2.0", - "bin": { - "detect-libc": "bin/detect-libc.js" + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" }, "engines": { - "node": ">=0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dom-helpers/node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0" + "which-typed-array": "^1.1.16" }, "engines": { - "node": ">= 4" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://dotenvx.com" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dotenv-expand": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", - "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "dotenv": "^16.4.5" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://dotenvx.com" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/electron-to-chromium": { - "version": "1.5.80", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.80.tgz", - "integrity": "sha512-LTrKpW0AqIuHwmlVNV+cjFYTnXtM9K37OGhpe0ZI10ScPSxqVSryZHIY3WnCS5NSYbBODRTZyhRMS2h5FAEqAw==", - "dev": true + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { - "is-arrayish": "^0.2.1" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, - "engines": { - "node": ">=6" - } + "license": "MIT" }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" }, - "node_modules/fast-equals": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.2.2.tgz", - "integrity": "sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw==", + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=6.0.0" + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" }, "engines": { - "node": ">=8" + "node": ">=4.0" } }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "language-subtag-registry": "^0.3.20" }, "engines": { - "node": ">= 6" + "node": ">=0.10" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, "engines": { - "node": ">=6.9.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-port": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", - "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", + "node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.findlast": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.findlast/-/lodash.findlast-4.6.0.tgz", + "integrity": "sha512-+OGwb1FVKjhc2aIEQ9vKqNDW1a0/HaCLr0iCIK10jfVif3dBE0nhQD0jOZNZLh7zOlmFUTrk+vt85eXoH4vKuA==", + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, - "engines": { - "node": ">=6" + "license": "MIT" + }, + "node_modules/lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==", + "deprecated": "This package is deprecated. Use destructuring assignment syntax instead.", + "license": "MIT" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.4" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8.6" } }, - "node_modules/history": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", - "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", "dependencies": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^3.0.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^1.0.1" + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, - "node_modules/html-to-react": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/html-to-react/-/html-to-react-1.7.0.tgz", - "integrity": "sha512-b5HTNaTGyOj5GGIMiWVr1k57egAZ/vGy0GGefnCQ1VW5hu9+eku8AXHtf2/DeD95cj/FKBKYa1J7SWBOX41yUQ==", - "dependencies": { - "domhandler": "^5.0", - "htmlparser2": "^9.0", - "lodash.camelcase": "^4.3.0" + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" }, - "peerDependencies": { - "react": "^0.13.0 || ^0.14.0 || >=15" + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/htmlnano": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.1.1.tgz", - "integrity": "sha512-kAERyg/LuNZYmdqgCdYvugyLWNFAm8MWXpQMz1pLpetmCbFwoMxvkSoaAMlFrOC4OKTWI4KlZGT/RsNxg4ghOw==", + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, + "license": "MIT" + }, + "node_modules/next": { + "version": "13.4.9", + "resolved": "https://registry.npmjs.org/next/-/next-13.4.9.tgz", + "integrity": "sha512-vtefFm/BWIi/eWOqf1GsmKG3cjKw1k3LjuefKRcL3iiLl3zWzFdPG3as6xtxrGO6gwTzzaO1ktL4oiHt/uvTjA==", + "deprecated": "This version has a security vulnerability. Please upgrade to a patched version. See https://nextjs.org/blog/security-update-2025-12-11 for more details.", "license": "MIT", "dependencies": { - "cosmiconfig": "^9.0.0", - "posthtml": "^0.16.5", - "timsort": "^0.3.0" + "@next/env": "13.4.9", + "@swc/helpers": "0.5.1", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001406", + "postcss": "8.4.14", + "styled-jsx": "5.1.1", + "watchpack": "2.4.0", + "zod": "3.21.4" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=16.8.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "13.4.9", + "@next/swc-darwin-x64": "13.4.9", + "@next/swc-linux-arm64-gnu": "13.4.9", + "@next/swc-linux-arm64-musl": "13.4.9", + "@next/swc-linux-x64-gnu": "13.4.9", + "@next/swc-linux-x64-musl": "13.4.9", + "@next/swc-win32-arm64-msvc": "13.4.9", + "@next/swc-win32-ia32-msvc": "13.4.9", + "@next/swc-win32-x64-msvc": "13.4.9" }, "peerDependencies": { - "cssnano": "^7.0.0", - "postcss": "^8.3.11", - "purgecss": "^6.0.0", - "relateurl": "^0.2.7", - "srcset": "5.0.1", - "svgo": "^3.0.2", - "terser": "^5.10.0", - "uncss": "^0.17.3" + "@opentelemetry/api": "^1.1.0", + "fibers": ">= 3.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" }, "peerDependenciesMeta": { - "cssnano": { + "@opentelemetry/api": { "optional": true }, - "postcss": { + "fibers": { "optional": true }, - "purgecss": { - "optional": true - }, - "relateurl": { - "optional": true - }, - "srcset": { - "optional": true - }, - "svgo": { - "optional": true - }, - "terser": { - "optional": true - }, - "uncss": { + "sass": { "optional": true } } }, - "node_modules/htmlparser2": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", - "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", + "node_modules/next/node_modules/@swc/helpers": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", + "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", + "license": "Apache-2.0", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.1.0", - "entities": "^4.5.0" + "tslib": "^2.4.0" } }, - "node_modules/hyphenate-style-name": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", - "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT", + "optional": true }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, + "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -3978,1169 +5138,1260 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-in-browser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", - "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" - }, - "node_modules/is-json": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", - "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, - "license": "ISC" + "license": "ISC", + "dependencies": { + "wrappy": "1" + } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, "engines": { - "node": ">=0.12.0" + "node": ">= 0.8.0" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", "dev": true, + "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-primitive": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.1.tgz", - "integrity": "sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/js-tokens": { + "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true, "license": "MIT" }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "bin": { - "json5": "lib/cli.js" - }, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jss": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz", - "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "csstype": "^3.0.2", - "is-in-browser": "^1.1.3", - "tiny-warning": "^1.0.2" + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/jss" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/jss-plugin-camel-case": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz", - "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "hyphenate-style-name": "^1.0.3", - "jss": "10.10.0" + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" } }, - "node_modules/jss-plugin-default-unit": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz", - "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==", + "node_modules/postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.3.1", - "jss": "10.10.0" + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "node_modules/jss-plugin-global": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz", - "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "jss": "10.10.0" + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/jss-plugin-nested": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz", - "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==", + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.3.1", - "jss": "10.10.0", - "tiny-warning": "^1.0.2" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" } }, - "node_modules/jss-plugin-props-sort": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz", - "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "jss": "10.10.0" + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" } }, - "node_modules/jss-plugin-rule-value-function": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz", - "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==", + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.3.1", - "jss": "10.10.0", - "tiny-warning": "^1.0.2" + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/jss-plugin-vendor-prefixer": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz", - "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==", + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.3.1", - "css-vendor": "^2.0.8", - "jss": "10.10.0" + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" } }, - "node_modules/jss/node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" }, - "node_modules/lightningcss": { - "version": "1.29.3", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.3.tgz", - "integrity": "sha512-GlOJwTIP6TMIlrTFsxTerwC0W6OpQpCGuX1ECRLBUVRh6fpJH3xTqjCjRgQHTb4ZXexH9rtHou1Lf03GKzmhhQ==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^2.0.3" - }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "license": "MIT", "engines": { - "node": ">= 12.0.0" + "node": ">= 14.18.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-darwin-arm64": "1.29.3", - "lightningcss-darwin-x64": "1.29.3", - "lightningcss-freebsd-x64": "1.29.3", - "lightningcss-linux-arm-gnueabihf": "1.29.3", - "lightningcss-linux-arm64-gnu": "1.29.3", - "lightningcss-linux-arm64-musl": "1.29.3", - "lightningcss-linux-x64-gnu": "1.29.3", - "lightningcss-linux-x64-musl": "1.29.3", - "lightningcss-win32-arm64-msvc": "1.29.3", - "lightningcss-win32-x64-msvc": "1.29.3" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.29.3", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.3.tgz", - "integrity": "sha512-fb7raKO3pXtlNbQbiMeEu8RbBVHnpyqAoxTyTRMEWFQWmscGC2wZxoHzZ+YKAepUuKT9uIW5vL2QbFivTgprZg==", - "cpu": [ - "arm64" - ], + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, "engines": { - "node": ">= 12.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.29.3", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.3.tgz", - "integrity": "sha512-KF2XZ4ZdmDGGtEYmx5wpzn6u8vg7AdBHaEOvDKu8GOs7xDL/vcU2vMKtTeNe1d4dogkDdi3B9zC77jkatWBwEQ==", - "cpu": [ - "x64" - ], + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, "engines": { - "node": ">= 12.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.29.3", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.3.tgz", - "integrity": "sha512-VUWeVf+V1UM54jv9M4wen9vMlIAyT69Krl9XjI8SsRxz4tdNV/7QEPlW6JASev/pYdiynUCW0pwaFquDRYdxMw==", - "cpu": [ - "x64" - ], + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, "engines": { - "node": ">= 12.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.29.3", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.3.tgz", - "integrity": "sha512-UhgZ/XVNfXQVEJrMIWeK1Laj8KbhjbIz7F4znUk7G4zeGw7TRoJxhb66uWrEsonn1+O45w//0i0Fu0wIovYdYg==", - "cpu": [ - "arm" - ], + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=4" } }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.29.3", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.3.tgz", - "integrity": "sha512-Pqau7jtgJNmQ/esugfmAT1aCFy/Gxc92FOxI+3n+LbMHBheBnk41xHDhc0HeYlx9G0xP5tK4t0Koy3QGGNqypw==", - "cpu": [ - "arm64" - ], + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, + "license": "MIT", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.29.3", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.3.tgz", - "integrity": "sha512-dxakOk66pf7KLS7VRYFO7B8WOJLecE5OPL2YOk52eriFd/yeyxt2Km5H0BjLfElokIaR+qWi33gB8MQLrdAY3A==", - "cpu": [ - "arm64" - ], + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.29.3", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.3.tgz", - "integrity": "sha512-ySZTNCpbfbK8rqpKJeJR2S0g/8UqqV3QnzcuWvpI60LWxnFN91nxpSSwCbzfOXkzKfar9j5eOuOplf+klKtINg==", - "cpu": [ - "x64" - ], + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.29.3", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.3.tgz", - "integrity": "sha512-3pVZhIzW09nzi10usAXfIGTTSTYQ141dk88vGFNCgawIzayiIzZQxEcxVtIkdvlEq2YuFsL9Wcj/h61JHHzuFQ==", - "cpu": [ - "x64" - ], + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" } }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.29.3", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.3.tgz", - "integrity": "sha512-VRnkAvtIkeWuoBJeGOTrZxsNp4HogXtcaaLm8agmbYtLDOhQdpgxW6NjZZjDXbvGF+eOehGulXZ3C1TiwHY4QQ==", - "cpu": [ - "arm64" - ], + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, "engines": { - "node": ">= 12.0.0" + "node": ">=0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.29.3", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.3.tgz", - "integrity": "sha512-IszwRPu2cPnDQsZpd7/EAr0x2W7jkaWqQ1SwCVIZ/tSbZVXPLt6k8s6FkcyBjViCzvB5CW0We0QbbP7zp2aBjQ==", - "cpu": [ - "x64" - ], + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, "engines": { - "node": ">= 12.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lightningcss/node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, - "node_modules/lmdb": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.8.5.tgz", - "integrity": "sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==", - "dev": true, - "hasInstallScript": true, + "node_modules/sass": { + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz", + "integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==", "license": "MIT", "dependencies": { - "msgpackr": "^1.9.5", - "node-addon-api": "^6.1.0", - "node-gyp-build-optional-packages": "5.1.1", - "ordered-binary": "^1.4.1", - "weak-lru-cache": "^1.2.2" + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { - "download-lmdb-prebuilds": "bin/download-prebuilds.js" + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" }, "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "2.8.5", - "@lmdb/lmdb-darwin-x64": "2.8.5", - "@lmdb/lmdb-linux-arm": "2.8.5", - "@lmdb/lmdb-linux-arm64": "2.8.5", - "@lmdb/lmdb-linux-x64": "2.8.5", - "@lmdb/lmdb-win32-x64": "2.8.5" + "@parcel/watcher": "^2.4.1" } }, - "node_modules/lmdb/node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" + "loose-envify": "^1.1.0" } }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, - "dependencies": { - "yallist": "^3.0.2" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/material-design-icons-iconfont": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/material-design-icons-iconfont/-/material-design-icons-iconfont-6.7.0.tgz", - "integrity": "sha512-lSj71DgVv20kO0kGbs42icDzbRot61gEDBLQACzkUuznRQBUYmbxzEkGU6dNBb5fRWHMaScYlAXX96HQ4/cJWA==" - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, "license": "MIT", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=8.6" + "node": ">= 0.4" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">= 0.4" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/msgpackr": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.2.tgz", - "integrity": "sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==", + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", - "optionalDependencies": { - "msgpackr-extract": "^3.0.2" + "engines": { + "node": ">=8" } }, - "node_modules/msgpackr-extract": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz", - "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "optional": true, "dependencies": { - "node-gyp-build-optional-packages": "5.2.2" + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" }, - "bin": { - "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + "engines": { + "node": ">= 0.4" }, - "optionalDependencies": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", - "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", - "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", - "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/msgpackr-extract/node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, - "license": "Apache-2.0", - "optional": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/msgpackr-extract/node_modules/node-gyp-build-optional-packages": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", - "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "detect-libc": "^2.0.1" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" }, - "bin": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-gyp-build-optional-packages": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz", - "integrity": "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==", + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, "license": "MIT", "dependencies": { - "detect-libc": "^2.0.1" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, - "bin": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/node-gyp-build-optional-packages/node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "node_modules/simple-swizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", + "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true - }, - "node_modules/nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "dev": true, - "license": "MIT" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "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==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/ordered-binary": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.3.tgz", - "integrity": "sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==", + "node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", "dev": true, "license": "MIT" }, - "node_modules/parcel": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.14.4.tgz", - "integrity": "sha512-XmnIurC4CPdQm9OFJMbjgvto5Jz2szZ5/p6EY4pAljU/SLPhtBzJ3+J6OyljGFdbVxEXx4dp+7Cvf7eaDZsEEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@parcel/config-default": "2.14.4", - "@parcel/core": "2.14.4", - "@parcel/diagnostic": "2.14.4", - "@parcel/events": "2.14.4", - "@parcel/feature-flags": "2.14.4", - "@parcel/fs": "2.14.4", - "@parcel/logger": "2.14.4", - "@parcel/package-manager": "2.14.4", - "@parcel/reporter-cli": "2.14.4", - "@parcel/reporter-dev-server": "2.14.4", - "@parcel/reporter-tracer": "2.14.4", - "@parcel/utils": "2.14.4", - "chalk": "^4.1.2", - "commander": "^12.1.0", - "get-port": "^4.2.0" - }, - "bin": { - "parcel": "lib/bin.js" + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" }, "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">= 0.4" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", "dev": true, "license": "MIT", "dependencies": { - "callsites": "^3.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" }, "engines": { - "node": ">=6" + "node": ">= 0.4" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", - "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", "dependencies": { - "isarray": "0.0.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" } }, - "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 - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, "engines": { - "node": ">=8.6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/popper.js": { - "version": "1.16.1-lts", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", - "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==" - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/posthtml": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", - "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, "license": "MIT", "dependencies": { - "posthtml-parser": "^0.11.0", - "posthtml-render": "^3.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=12.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/posthtml-parser": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.12.1.tgz", - "integrity": "sha512-rYFmsDLfYm+4Ts2Oh4DCDSZPtdC1BLnRXAobypVzX9alj28KGl65dIFtgDY9zB57D0TC4Qxqrawuq/2et1P0GA==", + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "license": "MIT", "dependencies": { - "htmlparser2": "^9.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=16" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/posthtml-render": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", - "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "is-json": "^2.0.1" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/posthtml/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "engines": { + "node": ">=4" } }, - "node_modules/posthtml/node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", + "engines": { + "node": ">=8" + }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/posthtml/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "license": "MIT", "dependencies": { - "domelementtype": "^2.2.0" + "client-only": "0.0.1" }, "engines": { - "node": ">= 4" + "node": ">= 12.0.0" }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/posthtml/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" + "has-flag": "^4.0.0" }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "engines": { + "node": ">=8" } }, - "node_modules/posthtml/node_modules/entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "engines": { - "node": ">=0.12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/posthtml/node_modules/htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } + "license": "MIT" }, - "node_modules/posthtml/node_modules/posthtml-parser": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", - "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", + "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": { - "htmlparser2": "^7.1.1" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { - "node": ">=12" + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "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": ">= 0.6.0" + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "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", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "is-number": "^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0" } }, - "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==", + "license": "MIT" + }, + "node_modules/topojson-client": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", + "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", + "license": "ISC", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "commander": "2" }, - "peerDependencies": { - "react": "17.0.2" + "bin": { + "topo2geo": "bin/topo2geo", + "topomerge": "bin/topomerge", + "topoquantize": "bin/topoquantize" } }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "node_modules/topojson-client/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" }, - "node_modules/react-refresh": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.16.0.tgz", - "integrity": "sha512-FPvF2XxTSikpJxcr+bHut2H4gJ17+18Uy20D5/F+SKzFap62R3cM5wH6b8WN3LyGSYeQilLEcJcR1fjBSI2S1A==", + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/react-router": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", - "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" }, "peerDependencies": { - "react": ">=15" + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "node_modules/react-router-dom": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", - "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.3.4", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" + "prelude-ls": "^1.2.1" }, - "peerDependencies": { - "react": ">=15" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/react-router/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/react-smooth": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.4.tgz", - "integrity": "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==", + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, "license": "MIT", "dependencies": { - "fast-equals": "^5.0.1", - "prop-types": "^15.8.1", - "react-transition-group": "^4.4.5" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + "engines": { + "node": ">= 0.4" } }, - "node_modules/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/recharts": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.3.tgz", - "integrity": "sha512-EdOPzTwcFSuqtvkDoaM5ws/Km1+WTAO2eizL7rqiG0V2UVhTnz0m7J2i0CjVPUCdEkZImaWvXLbZDS2H5t6GFQ==", + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, "license": "MIT", "dependencies": { - "clsx": "^2.0.0", - "eventemitter3": "^4.0.1", - "lodash": "^4.17.21", - "react-is": "^18.3.1", - "react-smooth": "^4.0.4", - "recharts-scale": "^0.4.4", - "tiny-invariant": "^1.3.1", - "victory-vendor": "^36.6.8" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" }, "engines": { - "node": ">=14" + "node": ">= 0.4" }, - "peerDependencies": { - "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/recharts-scale": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", - "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", "dependencies": { - "decimal.js-light": "^2.4.1" + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/recharts/node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, "engines": { - "node": ">=6" + "node": ">=14.17" } }, - "node_modules/recharts/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "license": "MIT" - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, + "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -5149,122 +6400,153 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", "dev": true, + "hasInstallScript": true, "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" } }, - "node_modules/resolve-pathname": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" - }, - "node_modules/rifm": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/rifm/-/rifm-0.7.0.tgz", - "integrity": "sha512-DSOJTWHD67860I5ojetXdEQRIBvF6YcpNe53j0vn1vp9EUb9N80EiZTxgP+FkDKorWC8PZw052kTF4C1GOivCQ==", + "node_modules/use-resize-observer": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-6.1.0.tgz", + "integrity": "sha512-SiPcWHiIQ1CnHmb6PxbYtygqiZXR0U9dNkkbpX9VYnlstUwF8+QqpUTrzh13pjPwcjMVGR+QIC+nvF5ujfFNng==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.3.1" + "resize-observer-polyfill": "^1.5.1" }, "peerDependencies": { - "react": ">=16.8" + "react": ">=16.8.0", + "react-dom": ">=16.8.0" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/set-value": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-4.1.0.tgz", - "integrity": "sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==", + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "funding": [ - "https://github.com/sponsors/jonschlinkert", - "https://paypal.me/jonathanschlinkert", - "https://jonschlinkert.dev/sponsor" - ], + "license": "ISC", "dependencies": { - "is-plain-object": "^2.0.4", - "is-primitive": "^3.0.1" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=11.0" + "node": ">= 8" } }, - "node_modules/srcset": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/srcset/-/srcset-5.0.1.tgz", - "integrity": "sha512-/P1UYbGfJVlxZag7aABNRrulEXAwCSDo7fklafOQrantuPTDmYgijJMks2zusPCVzgW9+4P69mq7w6pYuZpgxw==", + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, "engines": { "node": ">= 0.4" }, @@ -5272,62 +6554,63 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "dev": true, "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", - "dev": true, - "license": "MIT" - }, - "node_modules/tiny-invariant": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + "node_modules/wicg-inert": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/wicg-inert/-/wicg-inert-3.1.3.tgz", + "integrity": "sha512-5L0PKK7iP+0Q/jv2ccgmkz/pfXbumZtlEyWS/xnX+L+Og3f7WjL4+iEs18k4IuldOX3PgGpza3qGndL9xUBjCQ==", + "license": "W3C-20150513" }, - "node_modules/tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + "node_modules/window-or-global": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/window-or-global/-/window-or-global-1.0.1.tgz", + "integrity": "sha512-tE12J/NenOv4xdVobD+AD3fT06T4KNqnzRhkv5nBIu7K+pvOH2oLCEgYP+i+5mF2jtI6FEADheOdZkA8YWET9w==", + "license": "MIT" }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, "engines": { - "node": ">=8.0" + "node": ">=0.10.0" } }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, - "license": "0BSD" + "license": "ISC" }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { "node": ">=10" }, @@ -5335,84 +6618,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/update-browserslist-db": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", - "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/utility-types": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", - "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", - "dev": true, + "node_modules/zod": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", + "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", "license": "MIT", - "engines": { - "node": ">= 4" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } - }, - "node_modules/value-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" - }, - "node_modules/victory-vendor": { - "version": "36.6.11", - "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.6.11.tgz", - "integrity": "sha512-nT8kCiJp8dQh8g991J/R5w5eE2KnO8EAIP0xocWlh9l2okngMWglOPoMZzJvek8Q1KUc4XE/mJxTZnvOB1sTYg==", - "dependencies": { - "@types/d3-array": "^3.0.3", - "@types/d3-ease": "^3.0.0", - "@types/d3-interpolate": "^3.0.1", - "@types/d3-scale": "^4.0.2", - "@types/d3-shape": "^3.1.0", - "@types/d3-time": "^3.0.0", - "@types/d3-timer": "^3.0.0", - "d3-array": "^3.1.6", - "d3-ease": "^3.0.1", - "d3-interpolate": "^3.0.1", - "d3-scale": "^4.0.2", - "d3-shape": "^3.1.0", - "d3-time": "^3.0.0", - "d3-timer": "^3.0.1" - } - }, - "node_modules/weak-lru-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", - "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", - "dev": true, - "license": "MIT" - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true } } } diff --git a/package.json b/package.json index 2b2a58267..d74460f71 100644 --- a/package.json +++ b/package.json @@ -4,44 +4,28 @@ "version": "0.1.0", "license": "Apache-2.0", "scripts": { - "build": "npx parcel build src/index.html", - "serve": "npx parcel serve src/index.html --no-cache", - "clean": "rm -rf dist/*", - "test": "echo \"Error: no test specified\" && exit 1", - "preinstall": "npx npm-force-resolutions" + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint", + "clean": "rm -rf .next/*", + "test": "echo \"Error: no test specified\" && exit 1" }, "browserslist": [ "defaults" ], "dependencies": { - "@babel/runtime": "^7.27.0", - "@date-io/core": "^1.3.13", - "@date-io/date-fns": "^1.3.13", - "@material-ui/core": "^4.11.3", - "@material-ui/icons": "^4.11.2", - "@material-ui/pickers": "^3.3.10", - "@material-ui/styles": "^4.11.5", - "axios": "^1.8.4", - "date-fns": "^2.30.0", - "html-to-react": "^1.7.0", - "material-design-icons-iconfont": "^6.1.0", - "prop-types": "^15.7.2", - "react": "^17.0.1", - "react-dom": "^17.0.1", - "react-router-dom": "^5.2.0", - "recharts": "^2.15.3" + "@carbon/charts": "^1.13.0", + "@carbon/charts-react": "^1.13.0", + "@carbon/icons-react": "^11.14.0", + "@carbon/react": "1.36.0", + "next": "13.4.9", + "react": "18.2.0", + "react-dom": "18.2.0", + "sass": "^1.69.5" }, "devDependencies": { - "@babel/core": "^7.26.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-transform-runtime": "^7.26.10", - "@babel/preset-react": "^7.26.3", - "buffer": "^6.0.3", - "parcel": "^2.14.4", - "process": "^0.11.10", - "set-value": "4.1.0" - }, - "resolutions": { - "set-value": "4.1.0" + "eslint": "8.44.0", + "eslint-config-next": "13.4.9" } } diff --git a/public/ss.json b/public/ss.json new file mode 100644 index 000000000..9266370e5 --- /dev/null +++ b/public/ss.json @@ -0,0 +1,4606 @@ +{ + "code": 200, + "data": { + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qc6cgatjf6yinjuncxhx35662wbcxix3jx25nqkj6d2ajq/10.0.147.137": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.147.137", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qc6cgatjf6yinjuncxhx35662wbcxix3jx25nqkj6d2ajq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "internal_addr": "10.0.147.137", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.147.137", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "a49a6261db8", + "oci_oraclecloud_com_host_rack_id": "411a2ed1807", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qc6cgatjf6yinjuncxhx35662wbcxix3jx25nqkj6d2ajq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T11:39:00Z", + "end": "2026-01-10T04:09:00Z", + "minutes": 990, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 66, + "ramByteHours": 550226079744, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.782, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.768657, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387017 + }, + "totalCost": 2.550657 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qc6cgu3bqxeeoitjf5fnecj4j3qh7xasyqewohg7axerfq/10.0.153.45": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.153.45", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qc6cgu3bqxeeoitjf5fnecj4j3qh7xasyqewohg7axerfq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "internal_addr": "10.0.153.45", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.153.45", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "528df9c3397", + "oci_oraclecloud_com_host_rack_id": "005e71e3a9e", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qc6cgu3bqxeeoitjf5fnecj4j3qh7xasyqewohg7axerfq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-12T14:03:00Z", + "end": "2026-01-13T08:21:00Z", + "minutes": 1098, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 73.2, + "ramByteHours": 610250742988.8, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.9764, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.85251, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 2.82891 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qc6kawl45queagvpcxawa2miazvnnboxsgu2ujpixkorya/10.0.147.25": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.147.25", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qc6kawl45queagvpcxawa2miazvnnboxsgu2ujpixkorya" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "internal_addr": "10.0.147.25", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.147.25", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "27e0cf8ea2d", + "oci_oraclecloud_com_host_rack_id": "a0d9806b8eb", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qc6kawl45queagvpcxawa2miazvnnboxsgu2ujpixkorya", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:58:00Z", + "end": "2026-01-10T01:10:00Z", + "minutes": 1452, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 96.8, + "ramByteHours": 806998250291.2, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 2.6136, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 1.127364, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387017 + }, + "totalCost": 3.740964 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qc7uwzeyhnrhexymbw4afejd533rb2ju44nl5ffeqta5hq/10.0.144.110": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.144.110", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qc7uwzeyhnrhexymbw4afejd533rb2ju44nl5ffeqta5hq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "internal_addr": "10.0.144.110", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.144.110", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "87b0698c3d5", + "oci_oraclecloud_com_host_rack_id": "57d120274bd", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qc7uwzeyhnrhexymbw4afejd533rb2ju44nl5ffeqta5hq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-10T04:14:00Z", + "end": "2026-01-10T23:24:00Z", + "minutes": 1150, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 76.666667, + "ramByteHours": 639151506773.3334, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 2.07, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.892884, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.046250000000000124, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387025 + }, + "totalCost": 2.962884 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qcc4waf43ex4cvwtgzxk3utepcy3fpnpgwkwjcekuyb34q/10.0.158.188": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.158.188", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcc4waf43ex4cvwtgzxk3utepcy3fpnpgwkwjcekuyb34q" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "internal_addr": "10.0.158.188", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.158.188", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "2b7eadfdffb", + "oci_oraclecloud_com_host_network_block_id": "20ec63844cc", + "oci_oraclecloud_com_host_rack_id": "411a2ed1807", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcc4waf43ex4cvwtgzxk3utepcy3fpnpgwkwjcekuyb34q", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-15T12:52:00Z", + "end": "2026-01-15T16:28:11Z", + "minutes": 216.199881, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136.000004, + "cpuCoreHours": 14.413325, + "ramByteHours": 120160417070.73128, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 0.38916, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.167862, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 0.557022 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qce5n25ibmueui3qezbqe5w5ybraxf3t7444pckbbxg7aq/10.0.152.54": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.152.54", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qce5n25ibmueui3qezbqe5w5ybraxf3t7444pckbbxg7aq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "internal_addr": "10.0.152.54", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.152.54", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "ccff544a816", + "oci_oraclecloud_com_host_rack_id": "8c73670dff9", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qce5n25ibmueui3qezbqe5w5ybraxf3t7444pckbbxg7aq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-13T04:44:00Z", + "end": "2026-01-13T21:42:00Z", + "minutes": 1018, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 67.866667, + "ramByteHours": 565788029474.1333, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.8324, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.790397, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 2.622797 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qcerfmuqn6zs6msa5mo2rpd52wtchowtxpsa627gg6qija/10.0.156.234": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.156.234", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcerfmuqn6zs6msa5mo2rpd52wtchowtxpsa627gg6qija" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "internal_addr": "10.0.156.234", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.156.234", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "528df9c3397", + "oci_oraclecloud_com_host_rack_id": "005e71e3a9e", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcerfmuqn6zs6msa5mo2rpd52wtchowtxpsa627gg6qija", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-13T21:40:00Z", + "end": "2026-01-14T14:07:00Z", + "minutes": 987, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035135.999996, + "cpuCoreHours": 65.8, + "ramByteHours": 548558727987.19995, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.7766, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.766328, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 2.542928 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qcinga3bjzrksqswif3q5flmrdbcppvk6sjcd3xg2kj4pq/10.0.144.253": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.144.253", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcinga3bjzrksqswif3q5flmrdbcppvk6sjcd3xg2kj4pq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "internal_addr": "10.0.144.253", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.144.253", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "8a850c8ed4f", + "oci_oraclecloud_com_host_rack_id": "8c73670dff9", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcinga3bjzrksqswif3q5flmrdbcppvk6sjcd3xg2kj4pq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-11T16:33:00Z", + "end": "2026-01-12T14:00:00Z", + "minutes": 1287, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 85.8, + "ramByteHours": 715293903667.2, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 2.3166, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.999254, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 3.315854 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qcj6caa4cydpj7ryc3cwnvnstuk2luer7z4dpadplapluq/10.0.146.6": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.146.6", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcj6caa4cydpj7ryc3cwnvnstuk2luer7z4dpadplapluq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "internal_addr": "10.0.146.6", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.146.6", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "528df9c3397", + "oci_oraclecloud_com_host_rack_id": "005e71e3a9e", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcj6caa4cydpj7ryc3cwnvnstuk2luer7z4dpadplapluq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-12T09:26:00Z", + "end": "2026-01-13T04:41:00Z", + "minutes": 1155, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136.000004, + "cpuCoreHours": 77, + "ramByteHours": 641930426368, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 2.079, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.896766, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387017 + }, + "totalCost": 2.975766 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qcjw4e32y2kcy2oorxsjgpnwzp6wzmpzurijj2whiivnwq/10.0.147.80": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.147.80", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcjw4e32y2kcy2oorxsjgpnwzp6wzmpzurijj2whiivnwq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "internal_addr": "10.0.147.80", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.147.80", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "6a4742d230a", + "oci_oraclecloud_com_host_rack_id": "a0d9806b8eb", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcjw4e32y2kcy2oorxsjgpnwzp6wzmpzurijj2whiivnwq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-14T14:11:00Z", + "end": "2026-01-15T11:27:00Z", + "minutes": 1276, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136.000004, + "cpuCoreHours": 85.066667, + "ramByteHours": 709180280558.9333, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 2.2968, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.990713, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.046250000000000124, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387025 + }, + "totalCost": 3.287513 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qck4kpqmzjd7j6xigvzgvz5ty2jbq3oear2bff7xggesxa/10.0.153.103": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.153.103", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qck4kpqmzjd7j6xigvzgvz5ty2jbq3oear2bff7xggesxa" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "internal_addr": "10.0.153.103", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.153.103", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "2b7eadfdffb", + "oci_oraclecloud_com_host_network_block_id": "20ec63844cc", + "oci_oraclecloud_com_host_rack_id": "411a2ed1807", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qck4kpqmzjd7j6xigvzgvz5ty2jbq3oear2bff7xggesxa", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-14T13:20:00Z", + "end": "2026-01-15T12:48:00Z", + "minutes": 1408, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035135.999996, + "cpuCoreHours": 93.866667, + "ramByteHours": 782543757858.1333, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 2.5344, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 1.093201, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387017 + }, + "totalCost": 3.627601 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qckotwbvxwtyqewdloj5voszvjul4eatrfb24cu5rh5buq/10.0.150.199": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.150.199", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qckotwbvxwtyqewdloj5voszvjul4eatrfb24cu5rh5buq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "internal_addr": "10.0.150.199", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.150.199", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "a100808a705", + "oci_oraclecloud_com_host_rack_id": "0130cd9a2d1", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qckotwbvxwtyqewdloj5voszvjul4eatrfb24cu5rh5buq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-15T11:31:00Z", + "end": "2026-01-15T16:28:11Z", + "minutes": 297.19988, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035135.999992, + "cpuCoreHours": 19.813325, + "ramByteHours": 165178914206.8757, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 0.53496, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.230752, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387017 + }, + "totalCost": 0.765712 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qclg5q73q5xszvtokir4hvsht4c6gqwjnysm4tyremsc7a/10.0.145.158": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.145.158", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qclg5q73q5xszvtokir4hvsht4c6gqwjnysm4tyremsc7a" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "internal_addr": "10.0.145.158", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.145.158", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "a100808a705", + "oci_oraclecloud_com_host_rack_id": "0130cd9a2d1", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qclg5q73q5xszvtokir4hvsht4c6gqwjnysm4tyremsc7a", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-11T16:55:00Z", + "end": "2026-01-12T09:20:00Z", + "minutes": 985, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347026944.000004, + "cpuCoreHours": 65.666667, + "ramByteHours": 547447025664.00006, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.773, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.764775, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288595375418665, + "OverheadCostFraction": 0.06331760768133177 + }, + "totalCost": 2.537775 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qclo5miidtxjh6xzayftkmfv4plvt6f42jjchjplgr45pa/10.0.154.116": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.154.116", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qclo5miidtxjh6xzayftkmfv4plvt6f42jjchjplgr45pa" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "internal_addr": "10.0.154.116", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.154.116", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "2cfea49ddb6", + "oci_oraclecloud_com_host_rack_id": "52db4d8620a", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qclo5miidtxjh6xzayftkmfv4plvt6f42jjchjplgr45pa", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-10T01:14:00Z", + "end": "2026-01-10T21:04:00Z", + "minutes": 1190, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347026944, + "cpuCoreHours": 79.333333, + "ramByteHours": 661382701056, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 2.142, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.923941, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.046250000000000124, + "RamOverheadFraction": 0.10288595375418665, + "OverheadCostFraction": 0.06331760768133184 + }, + "totalCost": 3.065941 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qco4bixw7qlwphcdss2fxzldhxm7srcii2z6cm46y4oxmq/10.0.155.232": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.155.232", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qco4bixw7qlwphcdss2fxzldhxm7srcii2z6cm46y4oxmq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "internal_addr": "10.0.155.232", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.155.232", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "f710af494d5", + "oci_oraclecloud_com_host_rack_id": "6e18ef49736", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qco4bixw7qlwphcdss2fxzldhxm7srcii2z6cm46y4oxmq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-13T21:48:00Z", + "end": "2026-01-14T13:16:00Z", + "minutes": 928, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136.000004, + "cpuCoreHours": 61.866667, + "ramByteHours": 515767476770.13336, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.6704, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.720519, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 2.390919 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qcrikpqq56ahftejslenjva25agwycnfptecxio7y5hvmq/10.0.154.97": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.154.97", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcrikpqq56ahftejslenjva25agwycnfptecxio7y5hvmq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "internal_addr": "10.0.154.97", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.154.97", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "016fe6c1025", + "oci_oraclecloud_com_host_rack_id": "19f8eee0136", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcrikpqq56ahftejslenjva25agwycnfptecxio7y5hvmq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-09T11:33:00Z", + "minutes": 693, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347026944, + "cpuCoreHours": 46.2, + "ramByteHours": 385158161203.2, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.2474, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.53806, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288595375418665, + "OverheadCostFraction": 0.06331760768133177 + }, + "totalCost": 1.78546 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qct26p7nd4ohp6y7p4r7rnfqkwlzheodxmj3zaltdn7k2q/10.0.159.41": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.159.41", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qct26p7nd4ohp6y7p4r7rnfqkwlzheodxmj3zaltdn7k2q" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "internal_addr": "10.0.159.41", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.159.41", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "00815cfbf4a", + "oci_oraclecloud_com_host_rack_id": "8c73670dff9", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qct26p7nd4ohp6y7p4r7rnfqkwlzheodxmj3zaltdn7k2q", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-09T00:54:00Z", + "minutes": 54, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136.000004, + "cpuCoreHours": 3.6, + "ramByteHours": 30012331622.4, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 0.0972, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.041927, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387017 + }, + "totalCost": 0.139127 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qctuce5cgihzoleu4vkjx2lfe6lfnsxe4ht4raqbrxcnla/10.0.159.30": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.159.30", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qctuce5cgihzoleu4vkjx2lfe6lfnsxe4ht4raqbrxcnla" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "internal_addr": "10.0.159.30", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.159.30", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "528df9c3397", + "oci_oraclecloud_com_host_rack_id": "005e71e3a9e", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qctuce5cgihzoleu4vkjx2lfe6lfnsxe4ht4raqbrxcnla", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-13T08:24:00Z", + "end": "2026-01-13T21:31:00Z", + "minutes": 787, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 52.466667, + "ramByteHours": 437401944200.5333, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.4166, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.611043, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 2.027643 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qcvxvdnnm2ezuvdjq37zpvuu5h2duqgzn5lonso7fnosza/10.0.151.61": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.151.61", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcvxvdnnm2ezuvdjq37zpvuu5h2duqgzn5lonso7fnosza" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-1", + "internal_addr": "10.0.151.61", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.151.61", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "425f852926e", + "oci_oraclecloud_com_host_network_block_id": "643bbe2114c", + "oci_oraclecloud_com_host_rack_id": "85d8c1e6046", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcvxvdnnm2ezuvdjq37zpvuu5h2duqgzn5lonso7fnosza", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-10T23:29:00Z", + "end": "2026-01-11T16:30:00Z", + "minutes": 1021, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 68.066667, + "ramByteHours": 567455381230.9333, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.8378, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.792726, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 2.630526 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qcybzexqypmfol6ithl6gglvkirnbl7wsm35bezsid5rxq/10.0.151.228": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.151.228", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcybzexqypmfol6ithl6gglvkirnbl7wsm35bezsid5rxq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nhezmwgqodq-sfr367dugkq-4", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "feature_node_kubernetes_io_cpu_cpuid_ADX": "true", + "feature_node_kubernetes_io_cpu_cpuid_AESNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AMXFP8": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX2": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512BITALG": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512BW": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512CD": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512DQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512F": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512IFMA": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VBMI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VBMI2": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VL": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VNNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VPOPCNTDQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_CMPXCHG8": "true", + "feature_node_kubernetes_io_cpu_cpuid_FMA3": "true", + "feature_node_kubernetes_io_cpu_cpuid_FSRM": "true", + "feature_node_kubernetes_io_cpu_cpuid_FXSR": "true", + "feature_node_kubernetes_io_cpu_cpuid_FXSROPT": "true", + "feature_node_kubernetes_io_cpu_cpuid_GFNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_HYPERVISOR": "true", + "feature_node_kubernetes_io_cpu_cpuid_IA32_ARCH_CAP": "true", + "feature_node_kubernetes_io_cpu_cpuid_IBPB": "true", + "feature_node_kubernetes_io_cpu_cpuid_IBRS": "true", + "feature_node_kubernetes_io_cpu_cpuid_LAHF": "true", + "feature_node_kubernetes_io_cpu_cpuid_MD_CLEAR": "true", + "feature_node_kubernetes_io_cpu_cpuid_MOVBE": "true", + "feature_node_kubernetes_io_cpu_cpuid_OSXSAVE": "true", + "feature_node_kubernetes_io_cpu_cpuid_SHA": "true", + "feature_node_kubernetes_io_cpu_cpuid_SPEC_CTRL_SSBD": "true", + "feature_node_kubernetes_io_cpu_cpuid_STIBP": "true", + "feature_node_kubernetes_io_cpu_cpuid_SYSCALL": "true", + "feature_node_kubernetes_io_cpu_cpuid_SYSEE": "true", + "feature_node_kubernetes_io_cpu_cpuid_VAES": "true", + "feature_node_kubernetes_io_cpu_cpuid_VMX": "true", + "feature_node_kubernetes_io_cpu_cpuid_VPCLMULQDQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_WBNOINVD": "true", + "feature_node_kubernetes_io_cpu_cpuid_X87": "true", + "feature_node_kubernetes_io_cpu_cpuid_XGETBV1": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVE": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVEC": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVEOPT": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVES": "true", + "feature_node_kubernetes_io_cpu_hardware_multithreading": "true", + "feature_node_kubernetes_io_cpu_model_family": "6", + "feature_node_kubernetes_io_cpu_model_id": "106", + "feature_node_kubernetes_io_cpu_model_vendor_id": "Intel", + "feature_node_kubernetes_io_kernel_config_NO_HZ": "true", + "feature_node_kubernetes_io_kernel_config_NO_HZ_FULL": "true", + "feature_node_kubernetes_io_kernel_version_full": "5.15.0-306.177.4.el8uek.x86_64", + "feature_node_kubernetes_io_kernel_version_major": "5", + "feature_node_kubernetes_io_kernel_version_minor": "15", + "feature_node_kubernetes_io_kernel_version_revision": "0", + "feature_node_kubernetes_io_pci_1234_present": "true", + "feature_node_kubernetes_io_pci_1af4_present": "true", + "feature_node_kubernetes_io_system_os_release_ID": "ol", + "feature_node_kubernetes_io_system_os_release_VERSION_ID": "8.10", + "feature_node_kubernetes_io_system_os_release_VERSION_ID_major": "8", + "feature_node_kubernetes_io_system_os_release_VERSION_ID_minor": "10", + "hostname": "oke-cggb7sjbcpa-nhezmwgqodq-sfr367dugkq-4", + "internal_addr": "10.0.151.228", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.151.228", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-2", + "oci_oraclecloud_com_host_id": "170e62d96d0", + "oci_oraclecloud_com_host_network_block_id": "530ef88e15f", + "oci_oraclecloud_com_host_rack_id": "a6179395503", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np2", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcybzexqypmfol6ithl6gglvkirnbl7wsm35bezsid5rxq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-15T16:28:11Z", + "minutes": 9628.19988, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136.000008, + "cpuCoreHours": 641.879992, + "ramByteHours": 5351198661796.347, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 0, + "discount": 0, + "cpuCost": 17.33076, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 7.475538, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.0462499999999999, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.0633176029938701 + }, + "totalCost": 24.806298 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qcyg6nos4qajel5kcs4ilpmk2e6mvxjdh7b264rqvykeka/10.0.152.77": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.152.77", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcyg6nos4qajel5kcs4ilpmk2e6mvxjdh7b264rqvykeka" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-0", + "internal_addr": "10.0.152.77", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.152.77", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "528df9c3397", + "oci_oraclecloud_com_host_rack_id": "005e71e3a9e", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcyg6nos4qajel5kcs4ilpmk2e6mvxjdh7b264rqvykeka", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-10T21:07:00Z", + "end": "2026-01-11T16:50:00Z", + "minutes": 1183, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 78.866667, + "ramByteHours": 657492376098.1333, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 2.1294, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.918506, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.046250000000000124, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387025 + }, + "totalCost": 3.047906 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljru4az63qcymatgd6cc3btizmo4qumygc5dh27t2gkj62jkl4yvy5q/10.0.158.15": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.158.15", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcymatgd6cc3btizmo4qumygc5dh27t2gkj62jkl4yvy5q" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nhezmwgqodq-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-1", + "feature_node_kubernetes_io_cpu_cpuid_ADX": "true", + "feature_node_kubernetes_io_cpu_cpuid_AESNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AMXFP8": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX2": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512BITALG": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512BW": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512CD": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512DQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512F": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512IFMA": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VBMI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VBMI2": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VL": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VNNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VPOPCNTDQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_CMPXCHG8": "true", + "feature_node_kubernetes_io_cpu_cpuid_FMA3": "true", + "feature_node_kubernetes_io_cpu_cpuid_FSRM": "true", + "feature_node_kubernetes_io_cpu_cpuid_FXSR": "true", + "feature_node_kubernetes_io_cpu_cpuid_FXSROPT": "true", + "feature_node_kubernetes_io_cpu_cpuid_GFNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_HYPERVISOR": "true", + "feature_node_kubernetes_io_cpu_cpuid_IA32_ARCH_CAP": "true", + "feature_node_kubernetes_io_cpu_cpuid_IBPB": "true", + "feature_node_kubernetes_io_cpu_cpuid_IBRS": "true", + "feature_node_kubernetes_io_cpu_cpuid_LAHF": "true", + "feature_node_kubernetes_io_cpu_cpuid_MD_CLEAR": "true", + "feature_node_kubernetes_io_cpu_cpuid_MOVBE": "true", + "feature_node_kubernetes_io_cpu_cpuid_OSXSAVE": "true", + "feature_node_kubernetes_io_cpu_cpuid_SHA": "true", + "feature_node_kubernetes_io_cpu_cpuid_SPEC_CTRL_SSBD": "true", + "feature_node_kubernetes_io_cpu_cpuid_STIBP": "true", + "feature_node_kubernetes_io_cpu_cpuid_SYSCALL": "true", + "feature_node_kubernetes_io_cpu_cpuid_SYSEE": "true", + "feature_node_kubernetes_io_cpu_cpuid_VAES": "true", + "feature_node_kubernetes_io_cpu_cpuid_VMX": "true", + "feature_node_kubernetes_io_cpu_cpuid_VPCLMULQDQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_WBNOINVD": "true", + "feature_node_kubernetes_io_cpu_cpuid_X87": "true", + "feature_node_kubernetes_io_cpu_cpuid_XGETBV1": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVE": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVEC": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVEOPT": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVES": "true", + "feature_node_kubernetes_io_cpu_hardware_multithreading": "true", + "feature_node_kubernetes_io_cpu_model_family": "6", + "feature_node_kubernetes_io_cpu_model_id": "106", + "feature_node_kubernetes_io_cpu_model_vendor_id": "Intel", + "feature_node_kubernetes_io_kernel_config_NO_HZ": "true", + "feature_node_kubernetes_io_kernel_config_NO_HZ_FULL": "true", + "feature_node_kubernetes_io_kernel_version_full": "5.15.0-305.176.4.el8uek.x86_64", + "feature_node_kubernetes_io_kernel_version_major": "5", + "feature_node_kubernetes_io_kernel_version_minor": "15", + "feature_node_kubernetes_io_kernel_version_revision": "0", + "feature_node_kubernetes_io_pci_1234_present": "true", + "feature_node_kubernetes_io_pci_1af4_present": "true", + "feature_node_kubernetes_io_system_os_release_ID": "ol", + "feature_node_kubernetes_io_system_os_release_VERSION_ID": "8.10", + "feature_node_kubernetes_io_system_os_release_VERSION_ID_major": "8", + "feature_node_kubernetes_io_system_os_release_VERSION_ID_minor": "10", + "hostname": "oke-cggb7sjbcpa-nhezmwgqodq-sfr367dugkq-1", + "internal_addr": "10.0.158.15", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.158.15", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np2", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljru4az63qcymatgd6cc3btizmo4qumygc5dh27t2gkj62jkl4yvy5q", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-1" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-15T16:28:11Z", + "minutes": 9628.199881, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136.000004, + "cpuCoreHours": 641.879992, + "ramByteHours": 5351198662060.057, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 0, + "discount": 0, + "cpuCost": 17.33076, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 7.475538, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.0462499999999999, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.0633176029938701 + }, + "totalCost": 24.806298 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljsu4az63qcn2gxttv5bnu77dqqhzozf4ydlz7xnrjpbpsxk6t6p42q/10.0.152.127": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.152.127", + "providerID": "ocid1.instance.oc1.iad.anuwcljsu4az63qcn2gxttv5bnu77dqqhzozf4ydlz7xnrjpbpsxk6t6p42q" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nhezmwgqodq-sfr367dugkq-2", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-3", + "feature_node_kubernetes_io_cpu_cpuid_ADX": "true", + "feature_node_kubernetes_io_cpu_cpuid_AESNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AMXFP8": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX2": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512BITALG": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512BW": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512CD": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512DQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512F": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512IFMA": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VBMI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VBMI2": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VL": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VNNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VPOPCNTDQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_CMPXCHG8": "true", + "feature_node_kubernetes_io_cpu_cpuid_FMA3": "true", + "feature_node_kubernetes_io_cpu_cpuid_FSRM": "true", + "feature_node_kubernetes_io_cpu_cpuid_FXSR": "true", + "feature_node_kubernetes_io_cpu_cpuid_FXSROPT": "true", + "feature_node_kubernetes_io_cpu_cpuid_GFNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_HYPERVISOR": "true", + "feature_node_kubernetes_io_cpu_cpuid_IA32_ARCH_CAP": "true", + "feature_node_kubernetes_io_cpu_cpuid_IBPB": "true", + "feature_node_kubernetes_io_cpu_cpuid_LAHF": "true", + "feature_node_kubernetes_io_cpu_cpuid_MD_CLEAR": "true", + "feature_node_kubernetes_io_cpu_cpuid_MOVBE": "true", + "feature_node_kubernetes_io_cpu_cpuid_OSXSAVE": "true", + "feature_node_kubernetes_io_cpu_cpuid_SHA": "true", + "feature_node_kubernetes_io_cpu_cpuid_SPEC_CTRL_SSBD": "true", + "feature_node_kubernetes_io_cpu_cpuid_STIBP": "true", + "feature_node_kubernetes_io_cpu_cpuid_SYSCALL": "true", + "feature_node_kubernetes_io_cpu_cpuid_SYSEE": "true", + "feature_node_kubernetes_io_cpu_cpuid_VAES": "true", + "feature_node_kubernetes_io_cpu_cpuid_VMX": "true", + "feature_node_kubernetes_io_cpu_cpuid_VPCLMULQDQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_WBNOINVD": "true", + "feature_node_kubernetes_io_cpu_cpuid_X87": "true", + "feature_node_kubernetes_io_cpu_cpuid_XGETBV1": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVE": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVEC": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVEOPT": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVES": "true", + "feature_node_kubernetes_io_cpu_hardware_multithreading": "true", + "feature_node_kubernetes_io_cpu_model_family": "6", + "feature_node_kubernetes_io_cpu_model_id": "106", + "feature_node_kubernetes_io_cpu_model_vendor_id": "Intel", + "feature_node_kubernetes_io_kernel_config_NO_HZ": "true", + "feature_node_kubernetes_io_kernel_config_NO_HZ_FULL": "true", + "feature_node_kubernetes_io_kernel_version_full": "5.15.0-305.176.4.el8uek.x86_64", + "feature_node_kubernetes_io_kernel_version_major": "5", + "feature_node_kubernetes_io_kernel_version_minor": "15", + "feature_node_kubernetes_io_kernel_version_revision": "0", + "feature_node_kubernetes_io_pci_1234_present": "true", + "feature_node_kubernetes_io_pci_1af4_present": "true", + "feature_node_kubernetes_io_system_os_release_ID": "ol", + "feature_node_kubernetes_io_system_os_release_VERSION_ID": "8.10", + "feature_node_kubernetes_io_system_os_release_VERSION_ID_major": "8", + "feature_node_kubernetes_io_system_os_release_VERSION_ID_minor": "10", + "hostname": "oke-cggb7sjbcpa-nhezmwgqodq-sfr367dugkq-2", + "internal_addr": "10.0.152.127", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.152.127", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np2", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljsu4az63qcn2gxttv5bnu77dqqhzozf4ydlz7xnrjpbpsxk6t6p42q", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-3" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-15T16:28:11Z", + "minutes": 9628.19988, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 641.879992, + "ramByteHours": 5351198661828.109, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 0, + "discount": 0, + "cpuCost": 17.33076, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 7.475538, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.0462499999999999, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.0633176029938701 + }, + "totalCost": 24.806298 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qc3m6lfaeec7mvjbcmyo2zsdbl4bbazwn5a2app7ay7cia/10.0.155.46": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.155.46", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qc3m6lfaeec7mvjbcmyo2zsdbl4bbazwn5a2app7ay7cia" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "internal_addr": "10.0.155.46", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.155.46", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "6d833031874", + "oci_oraclecloud_com_host_rack_id": "d68f10f7554", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qc3m6lfaeec7mvjbcmyo2zsdbl4bbazwn5a2app7ay7cia", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-13T16:14:00Z", + "end": "2026-01-14T09:27:00Z", + "minutes": 1033, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 68.866667, + "ramByteHours": 574124788258.1333, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.8594, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.802043, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 2.661443 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qc3qrgzfckin4qszce4cxhah445cyzsqckn5dcl3j7m3ca/10.0.145.190": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.145.190", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qc3qrgzfckin4qszce4cxhah445cyzsqckn5dcl3j7m3ca" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "internal_addr": "10.0.145.190", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.145.190", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "f5198c75a4f", + "oci_oraclecloud_com_host_rack_id": "7251dcd0d33", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qc3qrgzfckin4qszce4cxhah445cyzsqckn5dcl3j7m3ca", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-10T10:33:00Z", + "end": "2026-01-11T01:28:00Z", + "minutes": 895, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035135.999996, + "cpuCoreHours": 59.666667, + "ramByteHours": 497426607445.3333, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.611, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.694897, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 2.305897 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qc4is4fwmk3r3mjo7whhef7x2p7ymaheejfs7oj3t7hsha/10.0.150.232": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.150.232", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qc4is4fwmk3r3mjo7whhef7x2p7ymaheejfs7oj3t7hsha" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.GPU.A10.1", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nr5arayzlxa-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "feature_node_kubernetes_io_cpu_cpuid_ADX": "true", + "feature_node_kubernetes_io_cpu_cpuid_AESNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AMXFP8": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX2": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512BITALG": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512BW": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512CD": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512DQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512F": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512IFMA": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VBMI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VBMI2": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VL": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VNNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VPOPCNTDQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_CMPXCHG8": "true", + "feature_node_kubernetes_io_cpu_cpuid_FMA3": "true", + "feature_node_kubernetes_io_cpu_cpuid_FSRM": "true", + "feature_node_kubernetes_io_cpu_cpuid_FXSR": "true", + "feature_node_kubernetes_io_cpu_cpuid_FXSROPT": "true", + "feature_node_kubernetes_io_cpu_cpuid_GFNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_HYPERVISOR": "true", + "feature_node_kubernetes_io_cpu_cpuid_IA32_ARCH_CAP": "true", + "feature_node_kubernetes_io_cpu_cpuid_IBPB": "true", + "feature_node_kubernetes_io_cpu_cpuid_IBRS": "true", + "feature_node_kubernetes_io_cpu_cpuid_LAHF": "true", + "feature_node_kubernetes_io_cpu_cpuid_MD_CLEAR": "true", + "feature_node_kubernetes_io_cpu_cpuid_MOVBE": "true", + "feature_node_kubernetes_io_cpu_cpuid_OSXSAVE": "true", + "feature_node_kubernetes_io_cpu_cpuid_SHA": "true", + "feature_node_kubernetes_io_cpu_cpuid_SPEC_CTRL_SSBD": "true", + "feature_node_kubernetes_io_cpu_cpuid_STIBP": "true", + "feature_node_kubernetes_io_cpu_cpuid_SYSCALL": "true", + "feature_node_kubernetes_io_cpu_cpuid_SYSEE": "true", + "feature_node_kubernetes_io_cpu_cpuid_VAES": "true", + "feature_node_kubernetes_io_cpu_cpuid_VMX": "true", + "feature_node_kubernetes_io_cpu_cpuid_VPCLMULQDQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_WBNOINVD": "true", + "feature_node_kubernetes_io_cpu_cpuid_X87": "true", + "feature_node_kubernetes_io_cpu_cpuid_XGETBV1": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVE": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVEC": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVEOPT": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVES": "true", + "feature_node_kubernetes_io_cpu_hardware_multithreading": "true", + "feature_node_kubernetes_io_cpu_model_family": "6", + "feature_node_kubernetes_io_cpu_model_id": "106", + "feature_node_kubernetes_io_cpu_model_vendor_id": "Intel", + "feature_node_kubernetes_io_kernel_config_NO_HZ": "true", + "feature_node_kubernetes_io_kernel_config_NO_HZ_FULL": "true", + "feature_node_kubernetes_io_kernel_version_full": "6.8.0-1022-oracle", + "feature_node_kubernetes_io_kernel_version_major": "6", + "feature_node_kubernetes_io_kernel_version_minor": "8", + "feature_node_kubernetes_io_kernel_version_revision": "0", + "feature_node_kubernetes_io_pci_10de_present": "true", + "feature_node_kubernetes_io_pci_1234_present": "true", + "feature_node_kubernetes_io_pci_1af4_present": "true", + "feature_node_kubernetes_io_system_os_release_ID": "ubuntu", + "feature_node_kubernetes_io_system_os_release_VERSION_ID": "22.04", + "feature_node_kubernetes_io_system_os_release_VERSION_ID_major": "22", + "feature_node_kubernetes_io_system_os_release_VERSION_ID_minor": "04", + "hostname": "oke-cggb7sjbcpa-nr5arayzlxa-sfr367dugkq-0", + "internal_addr": "10.0.150.232", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.150.232", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.GPU.A10.1", + "nvidia_com_cuda_driver_major": "550", + "nvidia_com_cuda_driver_minor": "144", + "nvidia_com_cuda_driver_rev": "03", + "nvidia_com_cuda_driver_version_full": "550.144.03", + "nvidia_com_cuda_driver_version_major": "550", + "nvidia_com_cuda_driver_version_minor": "144", + "nvidia_com_cuda_driver_version_revision": "03", + "nvidia_com_cuda_runtime_major": "12", + "nvidia_com_cuda_runtime_minor": "4", + "nvidia_com_cuda_runtime_version_full": "12.4", + "nvidia_com_cuda_runtime_version_major": "12", + "nvidia_com_cuda_runtime_version_minor": "4", + "nvidia_com_gfd_timestamp": "1761777210", + "nvidia_com_gpu": "true", + "nvidia_com_gpu_compute_major": "8", + "nvidia_com_gpu_compute_minor": "6", + "nvidia_com_gpu_count": "1", + "nvidia_com_gpu_deploy_container_toolkit": "true", + "nvidia_com_gpu_deploy_dcgm": "true", + "nvidia_com_gpu_deploy_dcgm_exporter": "true", + "nvidia_com_gpu_deploy_device_plugin": "true", + "nvidia_com_gpu_deploy_driver": "true", + "nvidia_com_gpu_deploy_gpu_feature_discovery": "true", + "nvidia_com_gpu_deploy_node_status_exporter": "true", + "nvidia_com_gpu_deploy_operator_validator": "true", + "nvidia_com_gpu_driver_upgrade_state": "upgrade-failed", + "nvidia_com_gpu_family": "ampere", + "nvidia_com_gpu_machine": "Standard-PC-i440FX-PIIX-1996", + "nvidia_com_gpu_memory": "23028", + "nvidia_com_gpu_mode": "compute", + "nvidia_com_gpu_present": "true", + "nvidia_com_gpu_product": "NVIDIA-A10", + "nvidia_com_gpu_replicas": "1", + "nvidia_com_gpu_sharing_strategy": "none", + "nvidia_com_mig_capable": "false", + "nvidia_com_mig_strategy": "single", + "nvidia_com_mps_capable": "false", + "nvidia_com_vgpu_present": "false", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "64f752311e2", + "oci_oraclecloud_com_host_rack_id": "2f3c826ecd4", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qc4is4fwmk3r3mjo7whhef7x2p7ymaheejfs7oj3t7hsha", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-15T16:28:11Z", + "minutes": 9628.19988, + "nodeType": "VM.GPU.A10.1", + "cpuCores": 30, + "ramBytes": 253340135424.00003, + "cpuCoreHours": 4814.09994, + "ramByteHours": 40653491026362.41, + "GPUHours": 160.469998, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 0, + "discount": 0, + "cpuCost": 96.281999, + "gpuCost": 320.939996, + "gpuCount": 1, + "ramCost": 56.792271, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.008399999999999845, + "RamOverheadFraction": 0.047449549373143704, + "OverheadCostFraction": 0.0073912046645434794 + }, + "totalCost": 474.014266 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qc4tac7q3g26i2lmy5qltvu4voyzplhpedshcgh722x5iq/10.0.149.58": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.149.58", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qc4tac7q3g26i2lmy5qltvu4voyzplhpedshcgh722x5iq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "internal_addr": "10.0.149.58", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.149.58", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "df8062a337a", + "oci_oraclecloud_com_host_rack_id": "97bbe4a2234", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qc4tac7q3g26i2lmy5qltvu4voyzplhpedshcgh722x5iq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-11T16:00:00Z", + "end": "2026-01-12T11:10:00Z", + "minutes": 1150, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 76.666667, + "ramByteHours": 639151506773.3334, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 2.07, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.892884, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 2.962884 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qc5iyd6smq74unkjnezvpvh7mdqc4alc7n4otib7eq35ba/10.0.153.93": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.153.93", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qc5iyd6smq74unkjnezvpvh7mdqc4alc7n4otib7eq35ba" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "internal_addr": "10.0.153.93", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.153.93", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "41ebd4a7fe2", + "oci_oraclecloud_com_host_rack_id": "97bbe4a2234", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qc5iyd6smq74unkjnezvpvh7mdqc4alc7n4otib7eq35ba", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-12T01:34:00Z", + "end": "2026-01-12T18:36:00Z", + "minutes": 1022, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 68.133333, + "ramByteHours": 568011165149.8667, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.8396, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.793502, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 2.633102 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qc5mcokp7wylrsy7sgnvcktlsy2wxj5pdqzluwznexi3vq/10.0.149.229": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.149.229", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qc5mcokp7wylrsy7sgnvcktlsy2wxj5pdqzluwznexi3vq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "internal_addr": "10.0.149.229", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.149.229", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "335f4a49909", + "oci_oraclecloud_com_host_rack_id": "f36a7cba9ff", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qc5mcokp7wylrsy7sgnvcktlsy2wxj5pdqzluwznexi3vq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T16:52:00Z", + "end": "2026-01-10T10:28:00Z", + "minutes": 1056, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136.000004, + "cpuCoreHours": 70.4, + "ramByteHours": 586907818393.6001, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.9008, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.819901, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 2.720701 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qcdj3ssc6fipl22gv36nayzqy2r3kbp4ysdzqy3xizsmyq/10.0.155.169": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.155.169", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcdj3ssc6fipl22gv36nayzqy2r3kbp4ysdzqy3xizsmyq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "internal_addr": "10.0.155.169", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.155.169", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "e735cff8d8f", + "oci_oraclecloud_com_host_rack_id": "d68f10f7554", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcdj3ssc6fipl22gv36nayzqy2r3kbp4ysdzqy3xizsmyq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-09T10:17:00Z", + "minutes": 617, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 41.133333, + "ramByteHours": 342918677981.86664, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.1106, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.479052, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 1.589652 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qcdotk355rmtuadwmirzivnwxeokawczx3qstceokmrczq/10.0.149.121": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.149.121", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcdotk355rmtuadwmirzivnwxeokawczx3qstceokmrczq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nhezmwgqodq-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "feature_node_kubernetes_io_cpu_cpuid_ADX": "true", + "feature_node_kubernetes_io_cpu_cpuid_AESNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AMXFP8": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX2": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512BITALG": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512BW": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512CD": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512DQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512F": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512IFMA": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VBMI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VBMI2": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VL": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VNNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VPOPCNTDQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_CMPXCHG8": "true", + "feature_node_kubernetes_io_cpu_cpuid_FMA3": "true", + "feature_node_kubernetes_io_cpu_cpuid_FSRM": "true", + "feature_node_kubernetes_io_cpu_cpuid_FXSR": "true", + "feature_node_kubernetes_io_cpu_cpuid_FXSROPT": "true", + "feature_node_kubernetes_io_cpu_cpuid_GFNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_HYPERVISOR": "true", + "feature_node_kubernetes_io_cpu_cpuid_IA32_ARCH_CAP": "true", + "feature_node_kubernetes_io_cpu_cpuid_IBPB": "true", + "feature_node_kubernetes_io_cpu_cpuid_LAHF": "true", + "feature_node_kubernetes_io_cpu_cpuid_MCAOVERFLOW": "true", + "feature_node_kubernetes_io_cpu_cpuid_MD_CLEAR": "true", + "feature_node_kubernetes_io_cpu_cpuid_MOVBE": "true", + "feature_node_kubernetes_io_cpu_cpuid_OSXSAVE": "true", + "feature_node_kubernetes_io_cpu_cpuid_SHA": "true", + "feature_node_kubernetes_io_cpu_cpuid_SPEC_CTRL_SSBD": "true", + "feature_node_kubernetes_io_cpu_cpuid_STIBP": "true", + "feature_node_kubernetes_io_cpu_cpuid_SUCCOR": "true", + "feature_node_kubernetes_io_cpu_cpuid_SYSCALL": "true", + "feature_node_kubernetes_io_cpu_cpuid_SYSEE": "true", + "feature_node_kubernetes_io_cpu_cpuid_VAES": "true", + "feature_node_kubernetes_io_cpu_cpuid_VMX": "true", + "feature_node_kubernetes_io_cpu_cpuid_VPCLMULQDQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_WBNOINVD": "true", + "feature_node_kubernetes_io_cpu_cpuid_X87": "true", + "feature_node_kubernetes_io_cpu_cpuid_XGETBV1": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVE": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVEC": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVEOPT": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVES": "true", + "feature_node_kubernetes_io_cpu_hardware_multithreading": "true", + "feature_node_kubernetes_io_cpu_model_family": "6", + "feature_node_kubernetes_io_cpu_model_id": "106", + "feature_node_kubernetes_io_cpu_model_vendor_id": "Intel", + "feature_node_kubernetes_io_kernel_config_NO_HZ": "true", + "feature_node_kubernetes_io_kernel_config_NO_HZ_FULL": "true", + "feature_node_kubernetes_io_kernel_version_full": "5.15.0-305.176.4.el8uek.x86_64", + "feature_node_kubernetes_io_kernel_version_major": "5", + "feature_node_kubernetes_io_kernel_version_minor": "15", + "feature_node_kubernetes_io_kernel_version_revision": "0", + "feature_node_kubernetes_io_pci_1234_present": "true", + "feature_node_kubernetes_io_pci_1af4_present": "true", + "feature_node_kubernetes_io_system_os_release_ID": "ol", + "feature_node_kubernetes_io_system_os_release_VERSION_ID": "8.10", + "feature_node_kubernetes_io_system_os_release_VERSION_ID_major": "8", + "feature_node_kubernetes_io_system_os_release_VERSION_ID_minor": "10", + "hostname": "oke-cggb7sjbcpa-nhezmwgqodq-sfr367dugkq-0", + "internal_addr": "10.0.149.121", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.149.121", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np2", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcdotk355rmtuadwmirzivnwxeokawczx3qstceokmrczq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-15T16:28:11Z", + "minutes": 9628.19988, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136.000004, + "cpuCoreHours": 641.879992, + "ramByteHours": 5351198661675.528, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 0, + "discount": 0, + "cpuCost": 17.33076, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 7.475538, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.0462499999999999, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387011 + }, + "totalCost": 24.806298 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qcgrcscgudktyc3cbzgea6fjedp7btzz7ufbiwiw5z4mhq/10.0.148.197": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.148.197", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcgrcscgudktyc3cbzgea6fjedp7btzz7ufbiwiw5z4mhq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "internal_addr": "10.0.148.197", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.148.197", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "f5198c75a4f", + "oci_oraclecloud_com_host_rack_id": "7251dcd0d33", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcgrcscgudktyc3cbzgea6fjedp7btzz7ufbiwiw5z4mhq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-09T00:49:00Z", + "minutes": 49, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347026944, + "cpuCoreHours": 3.266667, + "ramByteHours": 27233405337.6, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 0.0882, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.038045, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288595375418665, + "OverheadCostFraction": 0.06331760768133175 + }, + "totalCost": 0.126245 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qcifvqvwntwhtclezqspo6773r2qepyvdqqxxhsx5p3q4a/10.0.159.115": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.159.115", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcifvqvwntwhtclezqspo6773r2qepyvdqqxxhsx5p3q4a" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "internal_addr": "10.0.159.115", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.159.115", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "f5198c75a4f", + "oci_oraclecloud_com_host_rack_id": "7251dcd0d33", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcifvqvwntwhtclezqspo6773r2qepyvdqqxxhsx5p3q4a", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-13T18:10:00Z", + "end": "2026-01-14T17:30:00Z", + "minutes": 1400, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 93.333333, + "ramByteHours": 778097486506.6666, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 2.52, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 1.08699, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 3.60699 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qckem3ti7adn6jioiy27a5nz3ezf2i6zdz4mvy2odbgixq/10.0.153.28": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.153.28", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qckem3ti7adn6jioiy27a5nz3ezf2i6zdz4mvy2odbgixq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "internal_addr": "10.0.153.28", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.153.28", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "335f4a49909", + "oci_oraclecloud_com_host_rack_id": "f36a7cba9ff", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qckem3ti7adn6jioiy27a5nz3ezf2i6zdz4mvy2odbgixq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-12T18:40:00Z", + "end": "2026-01-13T16:11:00Z", + "minutes": 1291, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 86.066667, + "ramByteHours": 717517039342.9333, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 2.3238, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 1.00236, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387017 + }, + "totalCost": 3.32616 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qcltgwxni2zs2xa7mrjq4y473ftl6gqe4cm5taari7ylka/10.0.150.188": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.150.188", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcltgwxni2zs2xa7mrjq4y473ftl6gqe4cm5taari7ylka" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "internal_addr": "10.0.150.188", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.150.188", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "41ebd4a7fe2", + "oci_oraclecloud_com_host_rack_id": "97bbe4a2234", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcltgwxni2zs2xa7mrjq4y473ftl6gqe4cm5taari7ylka", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-11T02:38:00Z", + "end": "2026-01-12T01:31:00Z", + "minutes": 1373, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 91.533333, + "ramByteHours": 763091320695.4667, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 2.4714, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 1.066026, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 3.537426 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qcnuathwn772uvyujrtsghb34pj5a4n5azswa72dt643va/10.0.152.6": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.152.6", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcnuathwn772uvyujrtsghb34pj5a4n5azswa72dt643va" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "internal_addr": "10.0.152.6", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.152.6", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "41ebd4a7fe2", + "oci_oraclecloud_com_host_rack_id": "97bbe4a2234", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcnuathwn772uvyujrtsghb34pj5a4n5azswa72dt643va", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-13T03:54:00Z", + "end": "2026-01-13T18:04:00Z", + "minutes": 850, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 56.666667, + "ramByteHours": 472416331093.3333, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.53, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.659958, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 2.189958 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qcpmyykgnsjideasnmq3y7canvcqwk3hbj6oyepykn6z2q/10.0.149.133": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.149.133", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcpmyykgnsjideasnmq3y7canvcqwk3hbj6oyepykn6z2q" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "internal_addr": "10.0.149.133", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.149.133", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "f5198c75a4f", + "oci_oraclecloud_com_host_rack_id": "7251dcd0d33", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcpmyykgnsjideasnmq3y7canvcqwk3hbj6oyepykn6z2q", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-14T17:34:00Z", + "end": "2026-01-15T16:28:11Z", + "minutes": 1374.19988, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 91.613325, + "ramByteHours": 763758194810.7528, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 2.47356, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 1.066958, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 3.540518 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qcq2skkg5b5hc7d7tdyenco5e5djjjwnjf6pad4nmnm6ca/10.0.156.53": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.156.53", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcq2skkg5b5hc7d7tdyenco5e5djjjwnjf6pad4nmnm6ca" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "internal_addr": "10.0.156.53", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.156.53", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "df8062a337a", + "oci_oraclecloud_com_host_rack_id": "97bbe4a2234", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcq2skkg5b5hc7d7tdyenco5e5djjjwnjf6pad4nmnm6ca", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-10T02:47:00Z", + "end": "2026-01-11T02:34:00Z", + "minutes": 1427, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 95.133333, + "ramByteHours": 793103652317.8667, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 2.5686, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 1.107953, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 3.676553 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qcqi6jhyr5lgr7vske3w4ga3jzyzkfxmzk6puckbubqi2a/10.0.148.193": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.148.193", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcqi6jhyr5lgr7vske3w4ga3jzyzkfxmzk6puckbubqi2a" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "internal_addr": "10.0.148.193", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.148.193", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "2052e6e29e7", + "oci_oraclecloud_com_host_rack_id": "16ab3fe8288", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcqi6jhyr5lgr7vske3w4ga3jzyzkfxmzk6puckbubqi2a", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-14T09:32:00Z", + "end": "2026-01-14T22:57:00Z", + "minutes": 805, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 53.666667, + "ramByteHours": 447406054741.3333, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.449, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.625019, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 2.074019 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qcstfomnttkodoi3ecp6gms3oa7quvdmfvehflqfsgevka/10.0.158.229": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.158.229", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcstfomnttkodoi3ecp6gms3oa7quvdmfvehflqfsgevka" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nhezmwgqodq-sfr367dugkq-3", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "feature_node_kubernetes_io_cpu_cpuid_ADX": "true", + "feature_node_kubernetes_io_cpu_cpuid_AESNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AMXFP8": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX2": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512BITALG": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512BW": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512CD": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512DQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512F": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512IFMA": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VBMI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VBMI2": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VL": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VNNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_AVX512VPOPCNTDQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_CMPXCHG8": "true", + "feature_node_kubernetes_io_cpu_cpuid_FMA3": "true", + "feature_node_kubernetes_io_cpu_cpuid_FSRM": "true", + "feature_node_kubernetes_io_cpu_cpuid_FXSR": "true", + "feature_node_kubernetes_io_cpu_cpuid_FXSROPT": "true", + "feature_node_kubernetes_io_cpu_cpuid_GFNI": "true", + "feature_node_kubernetes_io_cpu_cpuid_HYPERVISOR": "true", + "feature_node_kubernetes_io_cpu_cpuid_IA32_ARCH_CAP": "true", + "feature_node_kubernetes_io_cpu_cpuid_IBPB": "true", + "feature_node_kubernetes_io_cpu_cpuid_IBRS": "true", + "feature_node_kubernetes_io_cpu_cpuid_LAHF": "true", + "feature_node_kubernetes_io_cpu_cpuid_MD_CLEAR": "true", + "feature_node_kubernetes_io_cpu_cpuid_MOVBE": "true", + "feature_node_kubernetes_io_cpu_cpuid_OSXSAVE": "true", + "feature_node_kubernetes_io_cpu_cpuid_SHA": "true", + "feature_node_kubernetes_io_cpu_cpuid_SPEC_CTRL_SSBD": "true", + "feature_node_kubernetes_io_cpu_cpuid_STIBP": "true", + "feature_node_kubernetes_io_cpu_cpuid_SYSCALL": "true", + "feature_node_kubernetes_io_cpu_cpuid_SYSEE": "true", + "feature_node_kubernetes_io_cpu_cpuid_VAES": "true", + "feature_node_kubernetes_io_cpu_cpuid_VMX": "true", + "feature_node_kubernetes_io_cpu_cpuid_VPCLMULQDQ": "true", + "feature_node_kubernetes_io_cpu_cpuid_WBNOINVD": "true", + "feature_node_kubernetes_io_cpu_cpuid_X87": "true", + "feature_node_kubernetes_io_cpu_cpuid_XGETBV1": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVE": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVEC": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVEOPT": "true", + "feature_node_kubernetes_io_cpu_cpuid_XSAVES": "true", + "feature_node_kubernetes_io_cpu_hardware_multithreading": "true", + "feature_node_kubernetes_io_cpu_model_family": "6", + "feature_node_kubernetes_io_cpu_model_id": "106", + "feature_node_kubernetes_io_cpu_model_vendor_id": "Intel", + "feature_node_kubernetes_io_kernel_config_NO_HZ": "true", + "feature_node_kubernetes_io_kernel_config_NO_HZ_FULL": "true", + "feature_node_kubernetes_io_kernel_version_full": "5.15.0-306.177.4.el8uek.x86_64", + "feature_node_kubernetes_io_kernel_version_major": "5", + "feature_node_kubernetes_io_kernel_version_minor": "15", + "feature_node_kubernetes_io_kernel_version_revision": "0", + "feature_node_kubernetes_io_pci_1234_present": "true", + "feature_node_kubernetes_io_pci_1af4_present": "true", + "feature_node_kubernetes_io_system_os_release_ID": "ol", + "feature_node_kubernetes_io_system_os_release_VERSION_ID": "8.10", + "feature_node_kubernetes_io_system_os_release_VERSION_ID_major": "8", + "feature_node_kubernetes_io_system_os_release_VERSION_ID_minor": "10", + "hostname": "oke-cggb7sjbcpa-nhezmwgqodq-sfr367dugkq-3", + "internal_addr": "10.0.158.229", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.158.229", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-2", + "oci_oraclecloud_com_host_id": "79e84a024bf", + "oci_oraclecloud_com_host_rack_id": "d1605ad8474", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np2", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcstfomnttkodoi3ecp6gms3oa7quvdmfvehflqfsgevka", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-15T16:28:11Z", + "minutes": 9628.199881, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136.000004, + "cpuCoreHours": 641.879992, + "ramByteHours": 5351198662092.932, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 0, + "discount": 0, + "cpuCost": 17.33076, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 7.475538, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.0462499999999999, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.0633176029938701 + }, + "totalCost": 24.806298 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qctnzksfx7fraqfo74wqrchcjzhyhqutq63hgsp4fzq4hq/10.0.149.232": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.149.232", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qctnzksfx7fraqfo74wqrchcjzhyhqutq63hgsp4fzq4hq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "internal_addr": "10.0.149.232", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.149.232", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "5ea15d1fdba", + "oci_oraclecloud_com_host_rack_id": "05c4b502883", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qctnzksfx7fraqfo74wqrchcjzhyhqutq63hgsp4fzq4hq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-14T23:01:00Z", + "end": "2026-01-15T15:43:00Z", + "minutes": 1002, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035135.999996, + "cpuCoreHours": 66.8, + "ramByteHours": 556895486771.2, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.8036, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.777974, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 2.581574 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qcv3avdlpyhuxokhoytshqiorfzplwyydvffdweyb3hy6a/10.0.149.109": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.149.109", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcv3avdlpyhuxokhoytshqiorfzplwyydvffdweyb3hy6a" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "internal_addr": "10.0.149.109", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.149.109", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "df8062a337a", + "oci_oraclecloud_com_host_rack_id": "97bbe4a2234", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcv3avdlpyhuxokhoytshqiorfzplwyydvffdweyb3hy6a", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-12T11:15:00Z", + "end": "2026-01-13T03:51:00Z", + "minutes": 996, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136.000004, + "cpuCoreHours": 66.4, + "ramByteHours": 553560783257.6001, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.7928, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.773315, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 2.566115 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qcvaexgst27vvfoiuey4ipz7utqx53ujqlicezocuovsmq/10.0.148.5": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.148.5", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcvaexgst27vvfoiuey4ipz7utqx53ujqlicezocuovsmq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "internal_addr": "10.0.148.5", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.148.5", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "6d833031874", + "oci_oraclecloud_com_host_rack_id": "d68f10f7554", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcvaexgst27vvfoiuey4ipz7utqx53ujqlicezocuovsmq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T10:22:00Z", + "end": "2026-01-10T02:42:00Z", + "minutes": 980, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035135.999996, + "cpuCoreHours": 65.333333, + "ramByteHours": 544668240554.6666, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.764, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.760893, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387018 + }, + "totalCost": 2.524893 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qcvd4ungslhdmrwwdxng6gdb6hnsoixbsjl53ls7ekd2rq/10.0.158.189": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.158.189", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcvd4ungslhdmrwwdxng6gdb6hnsoixbsjl53ls7ekd2rq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "internal_addr": "10.0.158.189", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.158.189", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "f5198c75a4f", + "oci_oraclecloud_com_host_rack_id": "7251dcd0d33", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcvd4ungslhdmrwwdxng6gdb6hnsoixbsjl53ls7ekd2rq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-11T01:31:00Z", + "end": "2026-01-11T15:55:00Z", + "minutes": 864, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136.000004, + "cpuCoreHours": 57.6, + "ramByteHours": 480197305958.4, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.5552, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.670828, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387017 + }, + "totalCost": 2.226028 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qcvwkerjade2d2emi66yh3xmohqudyxx4wv4smkb7rdueq/10.0.152.116": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.152.116", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcvwkerjade2d2emi66yh3xmohqudyxx4wv4smkb7rdueq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nwacqdcqrwa-sfr367dugkq-1", + "internal_addr": "10.0.152.116", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.152.116", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "6d833031874", + "oci_oraclecloud_com_host_rack_id": "d68f10f7554", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qcvwkerjade2d2emi66yh3xmohqudyxx4wv4smkb7rdueq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-15T15:46:00Z", + "end": "2026-01-15T16:28:11Z", + "minutes": 42.19988, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136.000004, + "cpuCoreHours": 2.813325, + "ramByteHours": 23454014920.9393, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 0.07596, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.032765, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.046250000000000124, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387025 + }, + "totalCost": 0.108725 + }, + "Oracle/__undefined__/__undefined__/Compute/default-cluster/Node/Kubernetes/ocid1.instance.oc1.iad.anuwcljtu4az63qczrcgxtrrd6zsxfwluv7y5zcr7wghntkhpihq3itv2ksq/10.0.156.146": { + "type": "Node", + "properties": { + "category": "Compute", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "10.0.156.146", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qczrcgxtrrd6zsxfwluv7y5zcr7wghntkhpihq3itv2ksq" + }, + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "beta_kubernetes_io_os": "linux", + "displayName": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "failure_domain_beta_kubernetes_io_region": "iad", + "failure_domain_beta_kubernetes_io_zone": "US-ASHBURN-AD-2", + "hostname": "oke-cggb7sjbcpa-nmnpcydddta-sfr367dugkq-0", + "internal_addr": "10.0.156.146", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "10.0.156.146", + "kubernetes_io_os": "linux", + "last_migration_failure": "get_kubesvc_failure", + "node_info_compartment_id": "aaaaaaaaazsr3zf5iw2c4wu4of4rglbva7vx3ybf4ifbsyaj2iq4dpdc4gpa", + "node_info_compartment_name": "opencost", + "node_info_ds_proxymux_client": "true", + "node_info_kubeletVersion": "v1.31", + "node_kubernetes_io_instance_type": "VM.Optimized3.Flex", + "oci_oraclecloud_com_fault_domain": "FAULT-DOMAIN-1", + "oci_oraclecloud_com_host_id": "f5198c75a4f", + "oci_oraclecloud_com_host_rack_id": "7251dcd0d33", + "oci_oraclecloud_com_ip_family_ipv4": "true", + "oci_oraclecloud_com_ip_family_preferred": "ipv4", + "oci_oraclecloud_com_node_info_managed": "true", + "oci_oraclecloud_com_oke_is_preemptible": "true", + "oci_oraclecloud_com_vcn_native_ip_cni": "false", + "oke_oraclecloud_com_cluster_autoscaler": "disabled", + "oke_oraclecloud_com_node_info_private_subnet": "true", + "oke_oraclecloud_com_node_info_private_worker": "true", + "oke_oraclecloud_com_pool_mode": "node-pool", + "oke_oraclecloud_com_pool_name": "np-spot", + "oke_oraclecloud_com_tf_module": "terraform-oci-oke", + "oke_oraclecloud_com_tf_state_id": "ksmyvm", + "providerID": "ocid1.instance.oc1.iad.anuwcljtu4az63qczrcgxtrrd6zsxfwluv7y5zcr7wghntkhpihq3itv2ksq", + "topology_kubernetes_io_region": "iad", + "topology_kubernetes_io_zone": "US-ASHBURN-AD-2" + }, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:53:00Z", + "end": "2026-01-09T16:49:00Z", + "minutes": 956, + "nodeType": "VM.Optimized3.Flex", + "cpuCores": 4, + "ramBytes": 33347035136, + "cpuCoreHours": 63.733333, + "ramByteHours": 531329426500.26666, + "GPUHours": 0, + "cpuBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "ramBreakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "preemptible": 1, + "discount": 0, + "cpuCost": 1.7208, + "gpuCost": 0, + "gpuCount": 0, + "ramCost": 0.742259, + "adjustment": 0, + "overhead": { + "CpuOverheadFraction": 0.04625000000000001, + "RamOverheadFraction": 0.10288592847932398, + "OverheadCostFraction": 0.06331760299387017 + }, + "totalCost": 2.463059 + }, + "Oracle/__undefined__/__undefined__/Management/default-cluster/ClusterManagement/Kubernetes/__undefined__/__undefined__": { + "type": "ClusterManagement", + "properties": { + "category": "Management", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster" + }, + "labels": {}, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z", + "minutes": 10080, + "totalCost": 16.047011 + }, + "Oracle/__undefined__/__undefined__/Network/default-cluster/LoadBalancer/Kubernetes/129.213.15.26/ingress-nginx/ingress-nginx-demo-controller": { + "type": "LoadBalancer", + "properties": { + "category": "Network", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "ingress-nginx/ingress-nginx-demo-controller", + "providerID": "129.213.15.26" + }, + "labels": {}, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-15T16:28:12Z", + "minutes": 9628.200127, + "adjustment": 0, + "totalCost": 1.813311, + "private": false, + "ip": "129.213.15.26" + }, + "Oracle/__undefined__/__undefined__/Storage/default-cluster/Disk/Kubernetes/ocid1.volume.oc1.iad.abuwcljriemqfhkjnrqj6in7yffin6g35zvuoxk4o7vo57ze7mzueov62nua/csi-bb8858a8-d03b-4b2e-ae29-ccd2486aac42": { + "type": "Disk", + "properties": { + "category": "Storage", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "csi-bb8858a8-d03b-4b2e-ae29-ccd2486aac42", + "providerID": "ocid1.volume.oc1.iad.abuwcljriemqfhkjnrqj6in7yffin6g35zvuoxk4o7vo57ze7mzueov62nua" + }, + "labels": {}, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-15T16:28:12Z", + "minutes": 9628.206179, + "byteHours": 17230346106616.705, + "bytes": 107374182400, + "byteHoursUsed": 5914224107.126921, + "byteUsageMax": 37195776, + "breakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "adjustment": 0, + "totalCost": 0.545598, + "storageClass": "oci-bv", + "volumeName": "csi-bb8858a8-d03b-4b2e-ae29-ccd2486aac42", + "claimName": "test-install-speedtest-tracker-cnpg-main-2", + "local": 0, + "claimNamespace": "network-load-gen" + }, + "Oracle/__undefined__/__undefined__/Storage/default-cluster/Disk/Kubernetes/ocid1.volume.oc1.iad.abuwcljrwqxpdxoqmn7bjmgayfsvfvnixntomcnilkujiw45vdg4bv2pucva/csi-3e493950-a8bb-48fc-8c6e-2a6c46be335e": { + "type": "Disk", + "properties": { + "category": "Storage", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "csi-3e493950-a8bb-48fc-8c6e-2a6c46be335e", + "providerID": "ocid1.volume.oc1.iad.abuwcljrwqxpdxoqmn7bjmgayfsvfvnixntomcnilkujiw45vdg4bv2pucva" + }, + "labels": {}, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-15T16:28:12Z", + "minutes": 9628.206178, + "byteHours": 17230346106517.621, + "bytes": 107374182400, + "byteHoursUsed": 116018783936.34218, + "byteUsageMax": 783450112, + "breakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "adjustment": 0, + "totalCost": 0.545598, + "storageClass": "oci-bv", + "volumeName": "csi-3e493950-a8bb-48fc-8c6e-2a6c46be335e", + "claimName": "test-install-speedtest-tracker-cnpg-main-2-wal", + "local": 0, + "claimNamespace": "network-load-gen" + }, + "Oracle/__undefined__/__undefined__/Storage/default-cluster/Disk/Kubernetes/ocid1.volume.oc1.iad.abuwcljrzp57sacypolzcgdftatho3mpiliyz5lblzvvhuztckfdazfx37ma/csi-398733a4-9c59-4d71-92e0-2ec69ab99a9c": { + "type": "Disk", + "properties": { + "category": "Storage", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "csi-398733a4-9c59-4d71-92e0-2ec69ab99a9c", + "providerID": "ocid1.volume.oc1.iad.abuwcljrzp57sacypolzcgdftatho3mpiliyz5lblzvvhuztckfdazfx37ma" + }, + "labels": {}, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-15T16:28:12Z", + "minutes": 9628.206178, + "byteHours": 17230346106485.082, + "bytes": 107374182400, + "byteHoursUsed": 2829202519.476285, + "byteUsageMax": 22491136, + "breakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "adjustment": 0, + "totalCost": 0.545598, + "storageClass": "oci-bv", + "volumeName": "csi-398733a4-9c59-4d71-92e0-2ec69ab99a9c", + "claimName": "test-install-speedtest-tracker-config", + "local": 0, + "claimNamespace": "network-load-gen" + }, + "Oracle/__undefined__/__undefined__/Storage/default-cluster/Disk/Kubernetes/ocid1.volume.oc1.iad.abuwcljsjrx7pkf524ytgjvmoed5q7yrat2tvmyqmf66z6xbgoe6yktkheqa/csi-7da248e4-1143-4c64-ab24-3ab1ba178f9b": { + "type": "Disk", + "properties": { + "category": "Storage", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "csi-7da248e4-1143-4c64-ab24-3ab1ba178f9b", + "providerID": "ocid1.volume.oc1.iad.abuwcljsjrx7pkf524ytgjvmoed5q7yrat2tvmyqmf66z6xbgoe6yktkheqa" + }, + "labels": {}, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-15T16:28:12Z", + "minutes": 9628.206178, + "byteHours": 17230346106549.625, + "bytes": 107374182400, + "byteHoursUsed": 115993185059.42667, + "byteUsageMax": 783437824, + "breakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "adjustment": 0, + "totalCost": 0.545598, + "storageClass": "oci-bv", + "volumeName": "csi-7da248e4-1143-4c64-ab24-3ab1ba178f9b", + "claimName": "test-install-speedtest-tracker-cnpg-main-1-wal", + "local": 0, + "claimNamespace": "network-load-gen" + }, + "Oracle/__undefined__/__undefined__/Storage/default-cluster/Disk/Kubernetes/ocid1.volume.oc1.iad.abuwcljstujg2hyn4wx2o46jh6l4y7ux5camwh2j4vwzlrypt2776zy6ixha/csi-c48e669f-d785-4727-9d7a-84fcb3a946f3": { + "type": "Disk", + "properties": { + "category": "Storage", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "csi-c48e669f-d785-4727-9d7a-84fcb3a946f3", + "providerID": "ocid1.volume.oc1.iad.abuwcljstujg2hyn4wx2o46jh6l4y7ux5camwh2j4vwzlrypt2776zy6ixha" + }, + "labels": {}, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-15T16:28:12Z", + "minutes": 9628.206179, + "byteHours": 17230346106649.842, + "bytes": 107374182400.00002, + "byteHoursUsed": 5882673818.239908, + "byteUsageMax": 37007360, + "breakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "adjustment": 0, + "totalCost": 0.545598, + "storageClass": "oci-bv", + "volumeName": "csi-c48e669f-d785-4727-9d7a-84fcb3a946f3", + "claimName": "test-install-speedtest-tracker-cnpg-main-1", + "local": 0, + "claimNamespace": "network-load-gen" + }, + "Oracle/__undefined__/__undefined__/Storage/default-cluster/Disk/Kubernetes/ocid1.volume.oc1.iad.abuwcljtniymha35au3yrc5b75rvfpn5g453ma74kn5mcnu5vq2zrflsqnna/csi-a3d01919-8004-420b-9ecc-5c94c29222e3": { + "type": "Disk", + "properties": { + "category": "Storage", + "provider": "Oracle", + "service": "Kubernetes", + "cluster": "default-cluster", + "name": "csi-a3d01919-8004-420b-9ecc-5c94c29222e3", + "providerID": "ocid1.volume.oc1.iad.abuwcljtniymha35au3yrc5b75rvfpn5g453ma74kn5mcnu5vq2zrflsqnna" + }, + "labels": {}, + "window": { + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-16T00:00:00Z" + }, + "start": "2026-01-09T00:00:00Z", + "end": "2026-01-15T16:28:12Z", + "minutes": 9628.206178, + "byteHours": 8615173053289.89, + "bytes": 53687091200, + "byteHoursUsed": 798439400552.4576, + "byteUsageMax": 5755285504, + "breakdown": { + "idle": 1, + "other": 0, + "system": 0, + "user": 0 + }, + "adjustment": 0, + "totalCost": 0.272799, + "storageClass": "oci-bv", + "volumeName": "csi-a3d01919-8004-420b-9ecc-5c94c29222e3", + "claimName": "prometheus-prometheus-kube-prometheus-prometheus-db-prometheus-prometheus-kube-prometheus-prometheus-0", + "local": 0, + "claimNamespace": "prometheus-system" + } + } +} \ No newline at end of file diff --git a/src/app.js b/src/app.js deleted file mode 100644 index 1d197879a..000000000 --- a/src/app.js +++ /dev/null @@ -1,5 +0,0 @@ -import * as React from "react"; -import ReactDOM from "react-dom"; -import Routes from "./route"; - -ReactDOM.render(, document.getElementById("app")); diff --git a/src/app/favicon.ico b/src/app/favicon.ico new file mode 100644 index 000000000..378918931 Binary files /dev/null and b/src/app/favicon.ico differ diff --git a/src/app/globals.scss b/src/app/globals.scss new file mode 100644 index 000000000..a514337d9 --- /dev/null +++ b/src/app/globals.scss @@ -0,0 +1,106 @@ +@use '@carbon/react'; + +/* Font Configuration */ +body { + font-family: var(--font-inter), -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; +} + +/* Custom styles for the application */ +.dashboard-grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 1rem; + width: 100%; +} + +.dashboard-grid-item-1 { + grid-column: span 1; +} + +.dashboard-grid-item-2 { + grid-column: span 2; +} + +.dashboard-grid-item-3 { + grid-column: span 3; +} + +.dashboard-grid-item-4 { + grid-column: span 4; +} + +/* Enhanced card styling */ +.card-enhanced { + background: white; + border: 1px solid #e0e0e0; + border-radius: 4px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.08); + transition: all 0.2s ease-in-out; +} + +.card-enhanced:hover { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15), 0 2px 4px rgba(0, 0, 0, 0.1); + border-color: #0f62fe; +} + +.section-title { + font-size: 1.125rem; + font-weight: 600; + color: #161616; + margin-bottom: 0.5rem; + letter-spacing: -0.01em; +} + +.section-description { + font-size: 0.875rem; + color: #525252; + margin-bottom: 1rem; + line-height: 1.5; +} + +.metric-card { + background: white; + border: 1px solid #e0e0e0; + border-radius: 4px; + padding: 1.25rem; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08); + transition: all 0.2s ease-in-out; +} + +.metric-card:hover { + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12); +} + +.metric-value { + font-size: 1.75rem; + font-weight: 700; + color: #161616; + line-height: 1.2; + letter-spacing: -0.02em; +} + +.metric-label { + font-size: 0.875rem; + color: #525252; + font-weight: 500; + margin-bottom: 0.75rem; + letter-spacing: -0.01em; +} + +.metric-change { + font-size: 0.75rem; + margin-top: 0.25rem; + line-height: 1.4; +} + +.section-card { + background: white; + border: 1px solid #e0e0e0; + border-radius: 4px; + padding: 1.5rem; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12); + margin-bottom: 1rem; +} \ No newline at end of file diff --git a/src/app/layout.js b/src/app/layout.js new file mode 100644 index 000000000..c24405a09 --- /dev/null +++ b/src/app/layout.js @@ -0,0 +1,21 @@ +import { Inter } from 'next/font/google'; +import './globals.scss'; + +const inter = Inter({ + subsets: ['latin'], + variable: '--font-inter', + display: 'swap', +}); + +export const metadata = { + title: 'OpenCost - Cost Intelligence Platform', + description: 'Carbon Design System powered cost monitoring dashboard', +}; + +export default function RootLayout({ children }) { + return ( + + {children} + + ); +} diff --git a/src/app/page.js b/src/app/page.js new file mode 100644 index 000000000..21bc9477d --- /dev/null +++ b/src/app/page.js @@ -0,0 +1,197 @@ +'use client'; + +import { useState } from 'react'; +import { Button, Header, HeaderName, Tile, Tag } from '@carbon/react'; +import { Add, Dashboard, ChartLineSmooth, Activity } from '@carbon/icons-react'; +import DashboardView from '@/components/dashboard-view'; +import CreateDashboardModal from '@/components/create-dashboard-modal'; +import { DashboardProvider, useDashboard } from '@/components/dashboard-context'; + +function DashboardContent() { + const [selectedDashboard, setSelectedDashboard] = useState(null); + const [showCreateModal, setShowCreateModal] = useState(false); + const { dashboards, updateDashboard } = useDashboard(); + + const currentDashboard = dashboards.find((d) => d.id === selectedDashboard); + + const handleUpdateWidgets = (dashboardId, newWidgets) => { + updateDashboard(dashboardId, { widgets: newWidgets }); + }; + + return ( + <> +
+ + OpenCost + +
+ +
+
+ + {/* Main Content */} +
+ {selectedDashboard ? ( + setSelectedDashboard(null)} + widgets={currentDashboard?.widgets || []} + onUpdateWidgets={(newWidgets) => handleUpdateWidgets(selectedDashboard, newWidgets)} + /> + ) : ( +
+
+

+ Dashboards +

+

Monitor and analyze your cloud infrastructure costs

+
+ + {/* Stats Grid */} +
+
+
+
+ +
+ Total Dashboards +
+

{dashboards.length}

+
+ +
+
+
+ +
+ Total Widgets +
+

+ {dashboards.reduce((acc, d) => acc + d.widgets.length, 0)} +

+
+ +
+
+
+ +
+ Active Monitoring +
+

Live

+
+
+ +
+ {dashboards.map((dashboard) => ( +
setSelectedDashboard(dashboard.id)} + style={{ + padding: '1.5rem', + cursor: 'pointer', + }} + > +
+
+ +
+
+ + {dashboard.widgets.length} widgets + +
+
+ +

+ {dashboard.name} +

+

+ {dashboard.description} +

+ +
+ Updated {dashboard.updatedAt} + by {dashboard.owner} +
+
+ ))} +
+
+ )} +
+ + {/* Create Dashboard Modal */} + {showCreateModal && ( + setShowCreateModal(false)} + onDashboardCreated={(id) => { + setSelectedDashboard(id); + setShowCreateModal(false); + }} + /> + )} + + ); +} + +export default function Home() { + return ( + + + + ); +} diff --git a/src/components/AllocationChart/RangeChart.js b/src/components/AllocationChart/RangeChart.js index e99b57299..0fdb10806 100644 --- a/src/components/AllocationChart/RangeChart.js +++ b/src/components/AllocationChart/RangeChart.js @@ -1,149 +1,149 @@ -import React from 'react' -import { reverse } from 'lodash' -import { makeStyles } from '@material-ui/styles' -import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts' -import { primary, greyscale, browns } from '../../constants/colors'; -import { toCurrency } from '../../util'; - -const useStyles = makeStyles({ - tooltip: { - borderRadius: 2, - background: 'rgba(255, 255, 255, 0.95)', - padding: 12, - }, - tooltipLineItem: { - fontSize: '1rem', - margin: 0, - marginBottom: 4, - padding: 0, - }, -}) - -function toBarLabels(allocationRange) { - let keyToFill = {} - let p = 0 - let g = 0 - let b = 0 - - for (const { idle } of allocationRange) { - for (const allocation of idle) { - const key = allocation.name - if (keyToFill[key] === undefined) { - // idle allocations are assigned grey - keyToFill[key] = greyscale[g] - g = (g+1) % greyscale.length - } - } - } - - for (const { top } of allocationRange) { - for (const allocation of top) { - const key = allocation.name - if (keyToFill[key] === undefined) { - if (key === "__unallocated__") { - // unallocated gets black (clean up) - keyToFill[key] = "#212121" - } else { - // non-idle allocations get the next available color - keyToFill[key] = primary[p] - p = (p+1) % primary.length - } - } - } - } - - for (const { other } of allocationRange) { - for (const allocation of other) { - const key = allocation.name - if (keyToFill[key] === undefined) { - // idle allocations are assigned grey - keyToFill[key] = browns[b] - b = (b+1) % browns.length - } - } - } - - let labels = [] - for (const key in keyToFill) { - labels.push({ - dataKey: key, - fill: keyToFill[key], - }) - } - - return reverse(labels) -} - -function toBar(datum) { - const { top, other, idle } = datum - const bar = {} - - for (const key in top) { - const allocation = top[key] - const start = new Date(allocation.start) - bar.start = `${start.getUTCFullYear()}-${start.getUTCMonth()+1}-${start.getUTCDate()}` - bar[allocation.name] = allocation.totalCost - } - - for (const key in other) { - const allocation = other[key] - const start = new Date(allocation.start) - bar.start = `${start.getUTCFullYear()}-${start.getUTCMonth()+1}-${start.getUTCDate()}` - bar[allocation.name] = allocation.totalCost - } - - for (const key in idle) { - const allocation = idle[key] - const start = new Date(allocation.start) - bar.start = `${start.getUTCFullYear()}-${start.getUTCMonth()+1}-${start.getUTCDate()}` - bar[allocation.name] = allocation.totalCost - } - - return bar -} - -const RangeChart = ({ data, currency, height }) => { - const classes = useStyles() - - const barData = data.map(toBar) - const barLabels = toBarLabels(data) - - const CustomTooltip = (params) => { - const { active, payload } = params - - if (!payload || payload.length == 0) { - return null - } - - const total = payload.reduce((sum, item) => sum + item.value, 0.0) - if (active) { - return ( -
-

{`Total: ${toCurrency(total, currency)}`}

- {reverse(payload).map((item, i) => ( -

{`${item.name}: ${toCurrency(item.value, currency)}`}

- ))} -
- ) - } - - return null - } - - return ( - - - - - - } /> - {barLabels.map((barLabel, i) => )} - - - ) -} - -export default RangeChart +// import React from 'react' +// import { reverse } from 'lodash' +// import { makeStyles } from '@material-ui/styles' +// import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts' +// import { primary, greyscale, browns } from '../../constants/colors'; +// import { toCurrency } from '../../util'; + +// const useStyles = makeStyles({ +// tooltip: { +// borderRadius: 2, +// background: 'rgba(255, 255, 255, 0.95)', +// padding: 12, +// }, +// tooltipLineItem: { +// fontSize: '1rem', +// margin: 0, +// marginBottom: 4, +// padding: 0, +// }, +// }) + +// function toBarLabels(allocationRange) { +// let keyToFill = {} +// let p = 0 +// let g = 0 +// let b = 0 + +// for (const { idle } of allocationRange) { +// for (const allocation of idle) { +// const key = allocation.name +// if (keyToFill[key] === undefined) { +// // idle allocations are assigned grey +// keyToFill[key] = greyscale[g] +// g = (g+1) % greyscale.length +// } +// } +// } + +// for (const { top } of allocationRange) { +// for (const allocation of top) { +// const key = allocation.name +// if (keyToFill[key] === undefined) { +// if (key === "__unallocated__") { +// // unallocated gets black (clean up) +// keyToFill[key] = "#212121" +// } else { +// // non-idle allocations get the next available color +// keyToFill[key] = primary[p] +// p = (p+1) % primary.length +// } +// } +// } +// } + +// for (const { other } of allocationRange) { +// for (const allocation of other) { +// const key = allocation.name +// if (keyToFill[key] === undefined) { +// // idle allocations are assigned grey +// keyToFill[key] = browns[b] +// b = (b+1) % browns.length +// } +// } +// } + +// let labels = [] +// for (const key in keyToFill) { +// labels.push({ +// dataKey: key, +// fill: keyToFill[key], +// }) +// } + +// return reverse(labels) +// } + +// function toBar(datum) { +// const { top, other, idle } = datum +// const bar = {} + +// for (const key in top) { +// const allocation = top[key] +// const start = new Date(allocation.start) +// bar.start = `${start.getUTCFullYear()}-${start.getUTCMonth()+1}-${start.getUTCDate()}` +// bar[allocation.name] = allocation.totalCost +// } + +// for (const key in other) { +// const allocation = other[key] +// const start = new Date(allocation.start) +// bar.start = `${start.getUTCFullYear()}-${start.getUTCMonth()+1}-${start.getUTCDate()}` +// bar[allocation.name] = allocation.totalCost +// } + +// for (const key in idle) { +// const allocation = idle[key] +// const start = new Date(allocation.start) +// bar.start = `${start.getUTCFullYear()}-${start.getUTCMonth()+1}-${start.getUTCDate()}` +// bar[allocation.name] = allocation.totalCost +// } + +// return bar +// } + +// const RangeChart = ({ data, currency, height }) => { +// const classes = useStyles() + +// const barData = data.map(toBar) +// const barLabels = toBarLabels(data) + +// const CustomTooltip = (params) => { +// const { active, payload } = params + +// if (!payload || payload.length == 0) { +// return null +// } + +// const total = payload.reduce((sum, item) => sum + item.value, 0.0) +// if (active) { +// return ( +//
+//

{`Total: ${toCurrency(total, currency)}`}

+// {reverse(payload).map((item, i) => ( +//

{`${item.name}: ${toCurrency(item.value, currency)}`}

+// ))} +//
+// ) +// } + +// return null +// } + +// return ( +// +// +// +// +// +// } /> +// {barLabels.map((barLabel, i) => )} +// +// +// ) +// } + +// export default RangeChart diff --git a/src/components/AllocationChart/SummaryChart.js b/src/components/AllocationChart/SummaryChart.js index 61625e151..1ba260a30 100644 --- a/src/components/AllocationChart/SummaryChart.js +++ b/src/components/AllocationChart/SummaryChart.js @@ -1,96 +1,96 @@ -import React from 'react' -import { ResponsiveContainer, PieChart, Pie, Cell } from 'recharts' -import { primary, greyscale, browns } from '../../constants/colors'; -import { toCurrency } from '../../util'; +// import React from 'react' +// import { ResponsiveContainer, PieChart, Pie, Cell } from 'recharts' +// import { primary, greyscale, browns } from '../../constants/colors'; +// import { toCurrency } from '../../util'; -function toPieData(top, other, idle) { - let slices = [] +// function toPieData(top, other, idle) { +// let slices = [] - for (const i in top) { - const allocation = top[i] - const fill = allocation.name === "__unallocated__" - ? "#212121" - : primary[i % primary.length] +// for (const i in top) { +// const allocation = top[i] +// const fill = allocation.name === "__unallocated__" +// ? "#212121" +// : primary[i % primary.length] - slices.push({ - name: allocation.name, - value: allocation.totalCost, - fill: fill, - }) - } +// slices.push({ +// name: allocation.name, +// value: allocation.totalCost, +// fill: fill, +// }) +// } - for (const i in other) { - const allocation = other[i] - const fill = browns[i % browns.length] - slices.push({ - name: allocation.name, - value: allocation.totalCost, - fill: fill, - }) - } +// for (const i in other) { +// const allocation = other[i] +// const fill = browns[i % browns.length] +// slices.push({ +// name: allocation.name, +// value: allocation.totalCost, +// fill: fill, +// }) +// } - for (const i in idle) { - const allocation = idle[i] - const fill = greyscale[i % greyscale.length] - slices.push({ - name: allocation.name, - value: allocation.totalCost, - fill: fill, - }) - } +// for (const i in idle) { +// const allocation = idle[i] +// const fill = greyscale[i % greyscale.length] +// slices.push({ +// name: allocation.name, +// value: allocation.totalCost, +// fill: fill, +// }) +// } - return slices -} +// return slices +// } -const SummaryChart = ({ top, other, idle, currency, height }) => { - const pieData = toPieData(top, other, idle) +// const SummaryChart = ({ top, other, idle, currency, height }) => { +// const pieData = toPieData(top, other, idle) - const renderLabel = (params) => { - const { - cx, cy, midAngle, outerRadius, percent, name, fill, value - } = params +// const renderLabel = (params) => { +// const { +// cx, cy, midAngle, outerRadius, percent, name, fill, value +// } = params - const RADIAN = Math.PI / 180 - const radius = outerRadius * 1.1 - let x = cx + radius * Math.cos(-midAngle * RADIAN) - x += x > cx ? 2 : -2 - let y = cy + radius * Math.sin(-midAngle * RADIAN) - // y -= Math.min(Math.abs(2 / Math.cos(-midAngle * RADIAN)), 8) +// const RADIAN = Math.PI / 180 +// const radius = outerRadius * 1.1 +// let x = cx + radius * Math.cos(-midAngle * RADIAN) +// x += x > cx ? 2 : -2 +// let y = cy + radius * Math.sin(-midAngle * RADIAN) +// // y -= Math.min(Math.abs(2 / Math.cos(-midAngle * RADIAN)), 8) - if (percent < 0.02) { - return - } +// if (percent < 0.02) { +// return +// } - return ( - cx ? 'start' : 'end'} dominantBaseline="central"> - {`${name}: ${toCurrency(value, currency)} (${(percent * 100).toFixed(1)}%)`} - - ) - } +// return ( +// cx ? 'start' : 'end'} dominantBaseline="central"> +// {`${name}: ${toCurrency(value, currency)} (${(percent * 100).toFixed(1)}%)`} +// +// ) +// } - return ( - - - - {pieData.map((datum, i) => )} - - - - ) -} +// return ( +// +// +// +// {pieData.map((datum, i) => )} +// +// +// +// ) +// } -export default SummaryChart +// export default SummaryChart diff --git a/src/components/AllocationChart/index.js b/src/components/AllocationChart/index.js index a54cea13e..bbc9aecb4 100644 --- a/src/components/AllocationChart/index.js +++ b/src/components/AllocationChart/index.js @@ -1,81 +1,81 @@ -import React from 'react' -import { isArray, filter, map, reduce, reverse, sortBy } from 'lodash' +// import React from 'react' +// import { isArray, filter, map, reduce, reverse, sortBy } from 'lodash' -import Typography from '@material-ui/core/Typography' +// import Typography from '@material-ui/core/Typography' -import RangeChart from './RangeChart' -import SummaryChart from './SummaryChart' +// import RangeChart from './RangeChart' +// import SummaryChart from './SummaryChart' -// TODO niko/etl -// sum allocationSet to single allocation -function agg(allocationSet, name) { - if (allocationSet.length === 0) { - return null - } +// // TODO niko/etl +// // sum allocationSet to single allocation +// function agg(allocationSet, name) { +// if (allocationSet.length === 0) { +// return null +// } - return reduce(allocationSet, (agg, cur) => ({ - name: agg.name, - aggregatedBy: cur.aggregatedBy, - properties: agg.properties, - start: cur.start, - end: cur.end, - cpuCost: agg.cpuCost + cur.cpuCost, - gpuCost: agg.gpuCost + cur.gpuCost, - ramCost: agg.ramCost + cur.ramCost, - pvCost: agg.pvCost + cur.pvCost, - totalCost: agg.totalCost + cur.totalCost, - count: agg.count + 1 - }), { - name: name, - properties: null, - cpuCost: 0.0, - gpuCost: 0.0, - ramCost: 0.0, - pvCost: 0.0, - totalCost: 0.0, - count: 0, - }) -} +// return reduce(allocationSet, (agg, cur) => ({ +// name: agg.name, +// aggregatedBy: cur.aggregatedBy, +// properties: agg.properties, +// start: cur.start, +// end: cur.end, +// cpuCost: agg.cpuCost + cur.cpuCost, +// gpuCost: agg.gpuCost + cur.gpuCost, +// ramCost: agg.ramCost + cur.ramCost, +// pvCost: agg.pvCost + cur.pvCost, +// totalCost: agg.totalCost + cur.totalCost, +// count: agg.count + 1 +// }), { +// name: name, +// properties: null, +// cpuCost: 0.0, +// gpuCost: 0.0, +// ramCost: 0.0, +// pvCost: 0.0, +// totalCost: 0.0, +// count: 0, +// }) +// } -function isIdle(allocation) { - return allocation.name.indexOf('__idle__') >= 0 -} +// function isIdle(allocation) { +// return allocation.name.indexOf('__idle__') >= 0 +// } -function top(n, by) { - return (allocations) => { - if (isArray(allocations[0])) { - return map(allocations, top(n, by)) - } +// function top(n, by) { +// return (allocations) => { +// if (isArray(allocations[0])) { +// return map(allocations, top(n, by)) +// } - const sorted = reverse(sortBy(allocations, by)) - const active = filter(sorted, a => !isIdle(a)) - const idle = filter(sorted, a => isIdle(a)) - const topn = active.slice(0, n) - const other = [] - if (active.length > n) { - other.push(agg(active.slice(n), 'other')) - } +// const sorted = reverse(sortBy(allocations, by)) +// const active = filter(sorted, a => !isIdle(a)) +// const idle = filter(sorted, a => isIdle(a)) +// const topn = active.slice(0, n) +// const other = [] +// if (active.length > n) { +// other.push(agg(active.slice(n), 'other')) +// } - return { - top: topn, - other: other, - idle: idle, - } - } -} +// return { +// top: topn, +// other: other, +// idle: idle, +// } +// } +// } -const AllocationChart = ({ allocationRange, currency, n, height }) => { - if (allocationRange.length === 0) { - return No data - } +// const AllocationChart = ({ allocationRange, currency, n, height }) => { +// if (allocationRange.length === 0) { +// return No data +// } - if (allocationRange.length === 1) { - const datum = top(n, alloc => alloc.totalCost)(allocationRange[0]) - return - } +// if (allocationRange.length === 1) { +// const datum = top(n, alloc => alloc.totalCost)(allocationRange[0]) +// return +// } - const data = top(n, alloc => alloc.totalCost)(allocationRange) - return -} +// const data = top(n, alloc => alloc.totalCost)(allocationRange) +// return +// } -export default React.memo(AllocationChart) +// export default React.memo(AllocationChart) diff --git a/src/components/Controls/Download.js b/src/components/Controls/Download.js index ae111376f..45aab8385 100644 --- a/src/components/Controls/Download.js +++ b/src/components/Controls/Download.js @@ -1,89 +1,89 @@ -import React from 'react' -import { get, forEach, reverse, round, sortBy } from 'lodash' -import ExportIcon from '@material-ui/icons/GetApp' -import IconButton from '@material-ui/core/IconButton' -import Tooltip from '@material-ui/core/Tooltip' +// import React from 'react' +// import { get, forEach, reverse, round, sortBy } from 'lodash' +// import ExportIcon from '@material-ui/icons/GetApp' +// import IconButton from '@material-ui/core/IconButton' +// import Tooltip from '@material-ui/core/Tooltip' -const columns = [ - { - head: "Name", - prop: "name", - currency: false, - }, { - head: "CPU", - prop: "cpuCost", - currency: true, - }, { - head: "GPU", - prop: "gpuCost", - currency: true, - }, { - head: "RAM", - prop: "ramCost", - currency: true, - }, { - head: "PV", - prop: "pvCost", - currency: true, - }, { - head: "Network", - prop: "networkCost", - currency: true, - }, { - head: "Shared", - prop: "sharedCost", - currency: true, - }, { - head: "Total", - prop: "totalCost", - currency: true, - } -] +// const columns = [ +// { +// head: "Name", +// prop: "name", +// currency: false, +// }, { +// head: "CPU", +// prop: "cpuCost", +// currency: true, +// }, { +// head: "GPU", +// prop: "gpuCost", +// currency: true, +// }, { +// head: "RAM", +// prop: "ramCost", +// currency: true, +// }, { +// head: "PV", +// prop: "pvCost", +// currency: true, +// }, { +// head: "Network", +// prop: "networkCost", +// currency: true, +// }, { +// head: "Shared", +// prop: "sharedCost", +// currency: true, +// }, { +// head: "Total", +// prop: "totalCost", +// currency: true, +// } +// ] -const toCSVLine = (datum) => { - let cols = [] +// const toCSVLine = (datum) => { +// let cols = [] - forEach(columns, c => { - if (c.currency) { - cols.push(round(get(datum, c.prop, 0.0), 2)) - } else { - cols.push(`"${get(datum, c.prop, "")}"`) - } - }) +// forEach(columns, c => { +// if (c.currency) { +// cols.push(round(get(datum, c.prop, 0.0), 2)) +// } else { +// cols.push(`"${get(datum, c.prop, "")}"`) +// } +// }) - return cols.join(',') -} +// return cols.join(',') +// } -const DownloadControl = ({ - cumulativeData, - title, -}) => { - // downloadReport downloads a CSV of the cumulative allocation data - function downloadReport() { - // Build CSV - const head = columns.map(c => c.head).join(',') - const body = reverse(sortBy(cumulativeData, 'totalCost')).map(toCSVLine).join('\r\n') - const csv = `${head}\r\n${body}` +// const DownloadControl = ({ +// cumulativeData, +// title, +// }) => { +// // downloadReport downloads a CSV of the cumulative allocation data +// function downloadReport() { +// // Build CSV +// const head = columns.map(c => c.head).join(',') +// const body = reverse(sortBy(cumulativeData, 'totalCost')).map(toCSVLine).join('\r\n') +// const csv = `${head}\r\n${body}` - // Create download link - const a = document.createElement("a") - a.href = URL.createObjectURL(new Blob([csv], { type: "text/csv" })) - const filename = title.toLowerCase().replace(/\s/gi, '-') - a.setAttribute("download", `${filename}-${Date.now()}.csv`) +// // Create download link +// const a = document.createElement("a") +// a.href = URL.createObjectURL(new Blob([csv], { type: "text/csv" })) +// const filename = title.toLowerCase().replace(/\s/gi, '-') +// a.setAttribute("download", `${filename}-${Date.now()}.csv`) - // Click the link - document.body.appendChild(a) - a.click() - document.body.removeChild(a) - } +// // Click the link +// document.body.appendChild(a) +// a.click() +// document.body.removeChild(a) +// } - return ( - - - - - - ) -} +// return ( +// +// +// +// +// +// ) +// } -export default React.memo(DownloadControl) +// export default React.memo(DownloadControl) diff --git a/src/components/Controls/Edit.js b/src/components/Controls/Edit.js index 205467251..f69b29356 100644 --- a/src/components/Controls/Edit.js +++ b/src/components/Controls/Edit.js @@ -1,74 +1,74 @@ -import { makeStyles } from '@material-ui/styles'; -import FormControl from '@material-ui/core/FormControl' -import InputLabel from '@material-ui/core/InputLabel' -import MenuItem from '@material-ui/core/MenuItem' -import Select from '@material-ui/core/Select' +// import { makeStyles } from '@material-ui/styles'; +// import FormControl from '@material-ui/core/FormControl' +// import InputLabel from '@material-ui/core/InputLabel' +// import MenuItem from '@material-ui/core/MenuItem' +// import Select from '@material-ui/core/Select' -import React from 'react'; +// import React from 'react'; -import SelectWindow from '../SelectWindow'; +// import SelectWindow from '../SelectWindow'; -const useStyles = makeStyles({ - wrapper: { - display: 'inline-flex', - }, - formControl: { - margin: 8, - minWidth: 120, - }, -}); +// const useStyles = makeStyles({ +// wrapper: { +// display: 'inline-flex', +// }, +// formControl: { +// margin: 8, +// minWidth: 120, +// }, +// }); -function EditControl({ - windowOptions, window, setWindow, - aggregationOptions, aggregateBy, setAggregateBy, - accumulateOptions, accumulate, setAccumulate, - currencyOptions, currency, setCurrency, -}) { - const classes = useStyles(); - return ( -
- - - Breakdown - - - - Resolution - - - - Currency - - -
- ); -} +// function EditControl({ +// windowOptions, window, setWindow, +// aggregationOptions, aggregateBy, setAggregateBy, +// accumulateOptions, accumulate, setAccumulate, +// currencyOptions, currency, setCurrency, +// }) { +// const classes = useStyles(); +// return ( +//
+// +// +// Breakdown +// +// +// +// Resolution +// +// +// +// Currency +// +// +//
+// ); +// } -export default React.memo(EditControl); +// export default React.memo(EditControl); diff --git a/src/components/Controls/index.js b/src/components/Controls/index.js index 4ca085fb7..bda9b4316 100644 --- a/src/components/Controls/index.js +++ b/src/components/Controls/index.js @@ -1,48 +1,48 @@ -import React from 'react' -import { makeStyles } from '@material-ui/styles' -import EditControl from './Edit' -import DownloadControl from './Download' +// import React from 'react' +// import { makeStyles } from '@material-ui/styles' +// import EditControl from './Edit' +// import DownloadControl from './Download' -const Controls = ({ - windowOptions, - window, - setWindow, - aggregationOptions, - aggregateBy, - setAggregateBy, - accumulateOptions, - accumulate, - setAccumulate, - title, - cumulativeData, - currency, - currencyOptions, - setCurrency, -}) => { +// const Controls = ({ +// windowOptions, +// window, +// setWindow, +// aggregationOptions, +// aggregateBy, +// setAggregateBy, +// accumulateOptions, +// accumulate, +// setAccumulate, +// title, +// cumulativeData, +// currency, +// currencyOptions, +// setCurrency, +// }) => { - return ( -
- +// return ( +//
+// - -
- ) -} +// +//
+// ) +// } -export default React.memo(Controls) +// export default React.memo(Controls) diff --git a/src/components/Details.js b/src/components/Details.js index 9cc45d091..b395557e0 100644 --- a/src/components/Details.js +++ b/src/components/Details.js @@ -1,227 +1,227 @@ -import React, { memo, useEffect, useState } from 'react'; -import { forEach, get, reverse, round, sortBy } from 'lodash'; -import CircularProgress from '@material-ui/core/CircularProgress'; -import ClusterIcon from '@material-ui/icons/GroupWork'; -import NodeIcon from '@material-ui/icons/Memory'; -import List from '@material-ui/core/List'; -import ListItem from '@material-ui/core/ListItem'; -import ListItemIcon from '@material-ui/core/ListItemIcon'; -import ListItemText from '@material-ui/core/ListItemText'; -import Table from '@material-ui/core/Table'; -import TableBody from '@material-ui/core/TableBody'; -import TableCell from '@material-ui/core/TableCell'; -import TableContainer from '@material-ui/core/TableContainer'; -import TableHead from '@material-ui/core/TableHead'; -import TableRow from '@material-ui/core/TableRow'; -import Warnings from './Warnings'; -import AllocationService from '../services/allocation'; -import { bytesToString, toCurrency } from '../util'; - -const Details = ({ - window, - namespace, - controllerKind, - controller, - pod, - currency, -}) => { - const [cluster, setCluster] = useState('') - const [node, setNode] = useState('') - - const [fetch, setFetch] = useState(true) - const [loading, setLoading] = useState(false) - const [errors, setErrors] = useState([]) - const [rows, setRows] = useState([]) - - useEffect(() => { - if (fetch) { - setCluster('') - setNode('') - fetchData() - } - }, [fetch]) - - async function fetchData() { - setLoading(true) - setErrors([]) - - try { - const filters = [] - - if (cluster) { - filters.push({ - property: "cluster", - value: cluster, - }) - } - - if (node) { - filters.push({ - property: "node", - value: node, - }) - } - - if (namespace) { - filters.push({ - property: "namespace", - value: namespace, - }) - } - - if (controllerKind) { - filters.push({ - property: "controllerKind", - value: controllerKind, - }) - } - - if (controller) { - filters.push({ - property: "controller", - value: controller, - }) - } - - if (pod) { - filters.push({ - property: "pod", - value: pod, - }) - } - - const resp = await AllocationService.fetchAllocation(window, '', { accumulate: true }) - - let data = [] - forEach(resp.data[0], (datum) => { - if (datum.name === "__idle__") { - return - } - - if (!cluster) { - setCluster(get(datum, 'properties.cluster', '')) - } - - if (!node) { - setNode(get(datum, 'properties.node', '')) - } - - // TODO can we get pod, container back in properties? - const names = datum.name.split("/") - datum.pod = names[names.length-2] - datum.container = names[names.length-1] - - datum.hours = round(get(datum, 'minutes', 0.0) / 60.0, 2) - - if (datum.hours > 0) { - datum.cpu = round(get(datum, 'cpuCoreHours', 0.0) / datum.hours, 2) - datum.cpuCostPerCoreHr = datum.cpuCost / (datum.cpu * datum.hours) - if (datum.cpu === 0) { - datum.cpuCostPerCoreHr = 0.0 - } - - datum.ram = round(get(datum, 'ramByteHours', 0.0) / datum.hours, 2) - const ramGiB = datum.ram / 1024 / 1024 / 1024 - datum.ramCostPerGiBHr = datum.ramCost / (ramGiB * datum.hours) - if (ramGiB === 0) { - datum.ramCostPerGiBHr = 0.0 - } - } else { - datum.cpu = 0.0 - datum.cpuCostPerCoreHr = 0.0 - datum.ram = 0.0 - datum.ramCostPerGiBHr = 0.0 - } - - data.push(datum) - }) - - data = reverse(sortBy(data, 'totalCost')) - - setRows(data) - } catch (e) { - console.warn(`Error fetching details for (${controllerKind}, ${controller}):`, e) - setErrors([{ - primary: "Error fetching details", - secondary: `Tried fetching details for: ${namespace}, ${controllerKind}, ${controller}, ${pod}`, - }]) - } - - setLoading(false) - setFetch(false) - } - - if (loading) { - return ( -
-
- -
-
- ) - } - - return ( -
- - {!loading && errors.length > 0 && ( -
- -
- )} - - - {cluster && ( - - - - - - - )} - {node && ( - - - - - - - )} - - - - - - Container - Hours - CPU - $/(CPU*Hr) - CPU cost - RAM - $/(GiB*Hr) - RAM cost - Total cost - - - - {rows.map((row, i) => ( - - {row.container} - {row.hours} - {row.cpu} - {toCurrency(row.cpuCostPerCoreHr, currency, 5)} - {toCurrency(row.cpuCost, currency, 3)} - {bytesToString(row.ram)} - {toCurrency(row.ramCostPerGiBHr, currency, 5)} - {toCurrency(row.ramCost, currency, 3)} - {toCurrency(row.totalCost, currency, 3)} - - ))} - -
-
-
- ) -} - -export default memo(Details) +// import React, { memo, useEffect, useState } from 'react'; +// import { forEach, get, reverse, round, sortBy } from 'lodash'; +// import CircularProgress from '@material-ui/core/CircularProgress'; +// import ClusterIcon from '@material-ui/icons/GroupWork'; +// import NodeIcon from '@material-ui/icons/Memory'; +// import List from '@material-ui/core/List'; +// import ListItem from '@material-ui/core/ListItem'; +// import ListItemIcon from '@material-ui/core/ListItemIcon'; +// import ListItemText from '@material-ui/core/ListItemText'; +// import Table from '@material-ui/core/Table'; +// import TableBody from '@material-ui/core/TableBody'; +// import TableCell from '@material-ui/core/TableCell'; +// import TableContainer from '@material-ui/core/TableContainer'; +// import TableHead from '@material-ui/core/TableHead'; +// import TableRow from '@material-ui/core/TableRow'; +// import Warnings from './Warnings'; +// import AllocationService from '../services/allocation'; +// import { bytesToString, toCurrency } from '../util'; + +// const Details = ({ +// window, +// namespace, +// controllerKind, +// controller, +// pod, +// currency, +// }) => { +// const [cluster, setCluster] = useState('') +// const [node, setNode] = useState('') + +// const [fetch, setFetch] = useState(true) +// const [loading, setLoading] = useState(false) +// const [errors, setErrors] = useState([]) +// const [rows, setRows] = useState([]) + +// useEffect(() => { +// if (fetch) { +// setCluster('') +// setNode('') +// fetchData() +// } +// }, [fetch]) + +// async function fetchData() { +// setLoading(true) +// setErrors([]) + +// try { +// const filters = [] + +// if (cluster) { +// filters.push({ +// property: "cluster", +// value: cluster, +// }) +// } + +// if (node) { +// filters.push({ +// property: "node", +// value: node, +// }) +// } + +// if (namespace) { +// filters.push({ +// property: "namespace", +// value: namespace, +// }) +// } + +// if (controllerKind) { +// filters.push({ +// property: "controllerKind", +// value: controllerKind, +// }) +// } + +// if (controller) { +// filters.push({ +// property: "controller", +// value: controller, +// }) +// } + +// if (pod) { +// filters.push({ +// property: "pod", +// value: pod, +// }) +// } + +// const resp = await AllocationService.fetchAllocation(window, '', { accumulate: true }) + +// let data = [] +// forEach(resp.data[0], (datum) => { +// if (datum.name === "__idle__") { +// return +// } + +// if (!cluster) { +// setCluster(get(datum, 'properties.cluster', '')) +// } + +// if (!node) { +// setNode(get(datum, 'properties.node', '')) +// } + +// // TODO can we get pod, container back in properties? +// const names = datum.name.split("/") +// datum.pod = names[names.length-2] +// datum.container = names[names.length-1] + +// datum.hours = round(get(datum, 'minutes', 0.0) / 60.0, 2) + +// if (datum.hours > 0) { +// datum.cpu = round(get(datum, 'cpuCoreHours', 0.0) / datum.hours, 2) +// datum.cpuCostPerCoreHr = datum.cpuCost / (datum.cpu * datum.hours) +// if (datum.cpu === 0) { +// datum.cpuCostPerCoreHr = 0.0 +// } + +// datum.ram = round(get(datum, 'ramByteHours', 0.0) / datum.hours, 2) +// const ramGiB = datum.ram / 1024 / 1024 / 1024 +// datum.ramCostPerGiBHr = datum.ramCost / (ramGiB * datum.hours) +// if (ramGiB === 0) { +// datum.ramCostPerGiBHr = 0.0 +// } +// } else { +// datum.cpu = 0.0 +// datum.cpuCostPerCoreHr = 0.0 +// datum.ram = 0.0 +// datum.ramCostPerGiBHr = 0.0 +// } + +// data.push(datum) +// }) + +// data = reverse(sortBy(data, 'totalCost')) + +// setRows(data) +// } catch (e) { +// console.warn(`Error fetching details for (${controllerKind}, ${controller}):`, e) +// setErrors([{ +// primary: "Error fetching details", +// secondary: `Tried fetching details for: ${namespace}, ${controllerKind}, ${controller}, ${pod}`, +// }]) +// } + +// setLoading(false) +// setFetch(false) +// } + +// if (loading) { +// return ( +//
+//
+// +//
+//
+// ) +// } + +// return ( +//
+ +// {!loading && errors.length > 0 && ( +//
+// +//
+// )} + +// +// {cluster && ( +// +// +// +// +// +// +// )} +// {node && ( +// +// +// +// +// +// +// )} +// +// +// +// +// +// Container +// Hours +// CPU +// $/(CPU*Hr) +// CPU cost +// RAM +// $/(GiB*Hr) +// RAM cost +// Total cost +// +// +// +// {rows.map((row, i) => ( +// +// {row.container} +// {row.hours} +// {row.cpu} +// {toCurrency(row.cpuCostPerCoreHr, currency, 5)} +// {toCurrency(row.cpuCost, currency, 3)} +// {bytesToString(row.ram)} +// {toCurrency(row.ramCostPerGiBHr, currency, 5)} +// {toCurrency(row.ramCost, currency, 3)} +// {toCurrency(row.totalCost, currency, 3)} +// +// ))} +// +//
+//
+//
+// ) +// } + +// export default memo(Details) diff --git a/src/components/Footer.js b/src/components/Footer.js index 72da7953a..51c658a96 100644 --- a/src/components/Footer.js +++ b/src/components/Footer.js @@ -1,13 +1,13 @@ -import {Parser as HtmlToReactParser} from 'html-to-react' +// import {Parser as HtmlToReactParser} from 'html-to-react' -// Footer could be HTML, so we need to parse it. -const Footer = () => { - const content = '

PLACEHOLDER_FOOTER_CONTENT
'; - const htmlToReactParser = new HtmlToReactParser(); - const parsedContent = htmlToReactParser.parse(content); - return ( - parsedContent - ) - } +// // Footer could be HTML, so we need to parse it. +// const Footer = () => { +// const content = '

PLACEHOLDER_FOOTER_CONTENT
'; +// const htmlToReactParser = new HtmlToReactParser(); +// const parsedContent = htmlToReactParser.parse(content); +// return ( +// parsedContent +// ) +// } -export default Footer; +// export default Footer; diff --git a/src/components/Header.js b/src/components/Header.js index 2d539641d..951dae98b 100644 --- a/src/components/Header.js +++ b/src/components/Header.js @@ -1,57 +1,57 @@ -import * as React from "react"; -import { makeStyles } from "@material-ui/styles"; -import Breadcrumbs from "@material-ui/core/Breadcrumbs"; -import Link from "@material-ui/core/Link"; -import Typography from "@material-ui/core/Typography"; -import { useLocation } from "react-router-dom"; +// import * as React from "react"; +// import { makeStyles } from "@material-ui/styles"; +// import Breadcrumbs from "@material-ui/core/Breadcrumbs"; +// import Link from "@material-ui/core/Link"; +// import Typography from "@material-ui/core/Typography"; +// import { useLocation } from "react-router-dom"; -const useStyles = makeStyles({ - root: { - alignItems: "center", - display: "flex", - flexFlow: "row", - width: "100%", - marginTop: "10px", - }, - context: { - flex: "1 0 auto", - }, - actions: { - flex: "0 0 auto", - }, -}); +// const useStyles = makeStyles({ +// root: { +// alignItems: "center", +// display: "flex", +// flexFlow: "row", +// width: "100%", +// marginTop: "10px", +// }, +// context: { +// flex: "1 0 auto", +// }, +// actions: { +// flex: "0 0 auto", +// }, +// }); -const Header = (props) => { - const classes = useStyles(); - const { title, breadcrumbs, headerTitle } = props; +// const Header = (props) => { +// const classes = useStyles(); +// const { title, breadcrumbs, headerTitle } = props; - return ( -
- - {headerTitle} - -
- {title && ( - - {title} - - )} - {breadcrumbs && breadcrumbs.length > 0 && ( - - {breadcrumbs.slice(0, breadcrumbs.length - 1).map((b) => ( - - {b.name} - - ))} - - {breadcrumbs[breadcrumbs.length - 1].name} - - - )} -
-
{props.children}
-
- ); -}; +// return ( +//
+// +// {headerTitle} +// +//
+// {title && ( +// +// {title} +// +// )} +// {breadcrumbs && breadcrumbs.length > 0 && ( +// +// {breadcrumbs.slice(0, breadcrumbs.length - 1).map((b) => ( +// +// {b.name} +// +// ))} +// +// {breadcrumbs[breadcrumbs.length - 1].name} +// +// +// )} +//
+//
{props.children}
+//
+// ); +// }; -export default Header; +// export default Header; diff --git a/src/components/Nav/NavItem.js b/src/components/Nav/NavItem.js index 7498ae86c..19d27e004 100644 --- a/src/components/Nav/NavItem.js +++ b/src/components/Nav/NavItem.js @@ -1,78 +1,78 @@ -import * as React from "react"; -import { ListItem, ListItemIcon, ListItemText } from "@material-ui/core"; -import { Link } from "react-router-dom"; -import { makeStyles } from "@material-ui/styles"; +// import * as React from "react"; +// import { ListItem, ListItemIcon, ListItemText } from "@material-ui/core"; +// import { Link } from "react-router-dom"; +// import { makeStyles } from "@material-ui/styles"; -const NavItem = ({ active, href, name, onClick, secondary, title, icon }) => { - const useStyles = makeStyles({ - root: { - cursor: "pointer", - "&:hover": { - backgroundColor: "#ebebeb", - }, - "&:selected": { - backgroundColor: "#e1e1e1", - }, - }, - text: { - maxWidth: 200, - overflow: "hidden", - textOverflow: "ellipsis", - whiteSpace: "nowrap", - }, - activeIcon: { - color: "#346ef2", - minWidth: 36, - }, - activeText: { - color: "#346ef2", - }, - icon: { - color: "#4e4e4e", - minWidth: 36, - }, - }); - const classes = useStyles(); +// const NavItem = ({ active, href, name, onClick, secondary, title, icon }) => { +// const useStyles = makeStyles({ +// root: { +// cursor: "pointer", +// "&:hover": { +// backgroundColor: "#ebebeb", +// }, +// "&:selected": { +// backgroundColor: "#e1e1e1", +// }, +// }, +// text: { +// maxWidth: 200, +// overflow: "hidden", +// textOverflow: "ellipsis", +// whiteSpace: "nowrap", +// }, +// activeIcon: { +// color: "#346ef2", +// minWidth: 36, +// }, +// activeText: { +// color: "#346ef2", +// }, +// icon: { +// color: "#4e4e4e", +// minWidth: 36, +// }, +// }); +// const classes = useStyles(); - const listItemIconClasses = { root: classes.icon }; - const listItemTextClasses = { - secondary: classes.text, - }; +// const listItemIconClasses = { root: classes.icon }; +// const listItemTextClasses = { +// secondary: classes.text, +// }; - if (active) { - listItemIconClasses.root = classes.activeIcon; - listItemTextClasses.primary = classes.activeText; - } +// if (active) { +// listItemIconClasses.root = classes.activeIcon; +// listItemTextClasses.primary = classes.activeText; +// } - const renderListItemCore = () => ( - { - if (onClick) { - onClick(); - e.stopPropagation(); - } - }} - selected={active} - title={title} - > - {icon} - - - ); +// const renderListItemCore = () => ( +// { +// if (onClick) { +// onClick(); +// e.stopPropagation(); +// } +// }} +// selected={active} +// title={title} +// > +// {icon} +// +// +// ); - return href && !active ? ( - - {renderListItemCore()} - - ) : ( - renderListItemCore() - ); -}; +// return href && !active ? ( +// +// {renderListItemCore()} +// +// ) : ( +// renderListItemCore() +// ); +// }; -export { NavItem }; +// export { NavItem }; diff --git a/src/components/Nav/SidebarNav.js b/src/components/Nav/SidebarNav.js index 7652d43c2..e63a74927 100644 --- a/src/components/Nav/SidebarNav.js +++ b/src/components/Nav/SidebarNav.js @@ -1,71 +1,71 @@ -import * as React from "react"; -import { Drawer, List } from "@material-ui/core"; +// import * as React from "react"; +// import { Drawer, List } from "@material-ui/core"; -import { NavItem } from "./NavItem"; -import { BarChart } from "@material-ui/icons"; -import { Cloud } from "@material-ui/icons"; -import { makeStyles } from "@material-ui/styles"; +// import { NavItem } from "./NavItem"; +// import { BarChart } from "@material-ui/icons"; +// import { Cloud } from "@material-ui/icons"; +// import { makeStyles } from "@material-ui/styles"; -const DRAWER_WIDTH = 200; +// const DRAWER_WIDTH = 200; -const SidebarNav = ({ active }) => { - const useStyles = makeStyles({ - drawer: { - width: DRAWER_WIDTH, - flexShrink: 0, - }, - drawerPaper: { - backgroundColor: "inherit", - border: 0, - width: DRAWER_WIDTH, - paddingTop: "2.5rem", - }, - text: { - overflow: "hidden", - textOverflow: "ellipsis", - whiteSpace: "nowrap", - }, - }); +// const SidebarNav = ({ active }) => { +// const useStyles = makeStyles({ +// drawer: { +// width: DRAWER_WIDTH, +// flexShrink: 0, +// }, +// drawerPaper: { +// backgroundColor: "inherit", +// border: 0, +// width: DRAWER_WIDTH, +// paddingTop: "2.5rem", +// }, +// text: { +// overflow: "hidden", +// textOverflow: "ellipsis", +// whiteSpace: "nowrap", +// }, +// }); - const classes = useStyles(); +// const classes = useStyles(); - const [init, setInit] = React.useState(false); +// const [init, setInit] = React.useState(false); - React.useEffect(() => { - if (!init) { - setInit(true); - } - }, [init]); +// React.useEffect(() => { +// if (!init) { +// setInit(true); +// } +// }, [init]); - const top = [ - { - name: "Cost Allocation", - href: "allocation", - icon: , - }, - { name: "Cloud Costs", href: "cloud", icon: }, - { name: "External Costs", href: "external-costs", icon: }, - ]; +// const top = [ +// { +// name: "Cost Allocation", +// href: "allocation", +// icon: , +// }, +// { name: "Cloud Costs", href: "cloud", icon: }, +// { name: "External Costs", href: "external-costs", icon: }, +// ]; - return ( - - OpenCost - - {top.map((l) => ( - - ))} - - - ); -}; +// return ( +// +// OpenCost +// +// {top.map((l) => ( +// +// ))} +// +// +// ); +// }; -export { SidebarNav }; +// export { SidebarNav }; diff --git a/src/components/Page.js b/src/components/Page.js index 091492034..3db201114 100644 --- a/src/components/Page.js +++ b/src/components/Page.js @@ -1,46 +1,46 @@ -import { makeStyles } from "@material-ui/styles"; -import * as React from "react"; -import { useLocation } from "react-router-dom"; -import { SidebarNav } from "./Nav/SidebarNav"; +// import { makeStyles } from "@material-ui/styles"; +// import * as React from "react"; +// import { useLocation } from "react-router-dom"; +// import { SidebarNav } from "./Nav/SidebarNav"; -const useStyles = makeStyles({ - wrapper: { - position: "relative", - height: "100vh", - flexGrow: 1, - overflowX: "auto", - paddingLeft: "2rem", - paddingRight: "rem", - paddingTop: "2.5rem", - }, - flexGrow: { - display: "flex", - flexFlow: "column", - flexGrow: 1, - }, - body: { - display: "flex", - overflowY: "scroll", - margin: "0px", - backgroundColor: "f3f3f3", - }, -}); +// const useStyles = makeStyles({ +// wrapper: { +// position: "relative", +// height: "100vh", +// flexGrow: 1, +// overflowX: "auto", +// paddingLeft: "2rem", +// paddingRight: "rem", +// paddingTop: "2.5rem", +// }, +// flexGrow: { +// display: "flex", +// flexFlow: "column", +// flexGrow: 1, +// }, +// body: { +// display: "flex", +// overflowY: "scroll", +// margin: "0px", +// backgroundColor: "f3f3f3", +// }, +// }); -const Page = (props) => { - const classes = useStyles(); +// const Page = (props) => { +// const classes = useStyles(); - const { pathname } = useLocation(); +// const { pathname } = useLocation(); - return ( -
- -
-
-
{props.children}
-
-
-
- ); -}; +// return ( +//
+// +//
+//
+//
{props.children}
+//
+//
+//
+// ); +// }; -export default Page; +// export default Page; diff --git a/src/components/SelectWindow.js b/src/components/SelectWindow.js index 32957838c..f54e3e0dd 100644 --- a/src/components/SelectWindow.js +++ b/src/components/SelectWindow.js @@ -1,190 +1,190 @@ -import React, { useEffect, useState } from 'react' -import { makeStyles } from '@material-ui/styles' -import { endOfDay, startOfDay } from 'date-fns' -import { MuiPickersUtilsProvider, KeyboardDatePicker } from '@material-ui/pickers' -import Button from '@material-ui/core/Button' -import DateFnsUtils from '@date-io/date-fns' -import FormControl from '@material-ui/core/FormControl' -import Link from '@material-ui/core/Link' -import Popover from '@material-ui/core/Popover' -import TextField from '@material-ui/core/TextField' -import Typography from '@material-ui/core/Typography' -import { isValid } from 'date-fns' -import { find, get } from 'lodash' +// import React, { useEffect, useState } from 'react' +// import { makeStyles } from '@material-ui/styles' +// import { endOfDay, startOfDay } from 'date-fns' +// import { MuiPickersUtilsProvider, KeyboardDatePicker } from '@material-ui/pickers' +// import Button from '@material-ui/core/Button' +// import DateFnsUtils from '@date-io/date-fns' +// import FormControl from '@material-ui/core/FormControl' +// import Link from '@material-ui/core/Link' +// import Popover from '@material-ui/core/Popover' +// import TextField from '@material-ui/core/TextField' +// import Typography from '@material-ui/core/Typography' +// import { isValid } from 'date-fns' +// import { find, get } from 'lodash' -const useStyles = makeStyles({ - dateContainer: { - paddingLeft: 18, - paddingRight: 18, - paddingTop: 6, - paddingBottom: 18, - display: 'flex', - flexFlow: 'row', - }, - dateContainerColumn: { - display: 'flex', - flexFlow: 'column', - }, - formControl: { - margin: 8, - width: 120, - }, -}) +// const useStyles = makeStyles({ +// dateContainer: { +// paddingLeft: 18, +// paddingRight: 18, +// paddingTop: 6, +// paddingBottom: 18, +// display: 'flex', +// flexFlow: 'row', +// }, +// dateContainerColumn: { +// display: 'flex', +// flexFlow: 'column', +// }, +// formControl: { +// margin: 8, +// width: 120, +// }, +// }) -const SelectWindow = ({ windowOptions, window, setWindow }) => { - const classes = useStyles() - const [anchorEl, setAnchorEl] = useState(null) +// const SelectWindow = ({ windowOptions, window, setWindow }) => { +// const classes = useStyles() +// const [anchorEl, setAnchorEl] = useState(null) - const [startDate, setStartDate] = useState(null) - const [endDate, setEndDate] = useState(null) - const [intervalString, setIntervalString] = useState(null) +// const [startDate, setStartDate] = useState(null) +// const [endDate, setEndDate] = useState(null) +// const [intervalString, setIntervalString] = useState(null) - const handleClick = (event) => { - setAnchorEl(event.currentTarget) - } +// const handleClick = (event) => { +// setAnchorEl(event.currentTarget) +// } - const handleClose = () => { - setAnchorEl(null) - } +// const handleClose = () => { +// setAnchorEl(null) +// } - const handleStartDateChange = (date) => { - if (isValid(date)) { - setStartDate(startOfDay(date)) - } - } +// const handleStartDateChange = (date) => { +// if (isValid(date)) { +// setStartDate(startOfDay(date)) +// } +// } - const handleEndDateChange = (date) => { - if (isValid(date)) { - setEndDate(endOfDay(date)) - } - } +// const handleEndDateChange = (date) => { +// if (isValid(date)) { +// setEndDate(endOfDay(date)) +// } +// } - const handleSubmitPresetDates = (dateString) => { - setWindow(dateString) - setStartDate(null) - setEndDate(null) - handleClose() - } +// const handleSubmitPresetDates = (dateString) => { +// setWindow(dateString) +// setStartDate(null) +// setEndDate(null) +// handleClose() +// } - const handleSubmitCustomDates = () => { - if (intervalString !== null) { - setWindow(intervalString) - handleClose() - } - } +// const handleSubmitCustomDates = () => { +// if (intervalString !== null) { +// setWindow(intervalString) +// handleClose() +// } +// } - useEffect(() => { - if (startDate !== null && endDate !== null) { - // Note: getTimezoneOffset() is calculated based on current system locale, NOT date object - let adjustedStartDate = new Date(startDate - startDate.getTimezoneOffset() * 60000) - let adjustedEndDate = new Date(endDate - endDate.getTimezoneOffset() * 60000) - setIntervalString( - adjustedStartDate.toISOString().split('.')[0] + "Z" - + "," - + adjustedEndDate.toISOString().split('.')[0] + "Z" - ) - } - }, [startDate, endDate]) +// useEffect(() => { +// if (startDate !== null && endDate !== null) { +// // Note: getTimezoneOffset() is calculated based on current system locale, NOT date object +// let adjustedStartDate = new Date(startDate - startDate.getTimezoneOffset() * 60000) +// let adjustedEndDate = new Date(endDate - endDate.getTimezoneOffset() * 60000) +// setIntervalString( +// adjustedStartDate.toISOString().split('.')[0] + "Z" +// + "," +// + adjustedEndDate.toISOString().split('.')[0] + "Z" +// ) +// } +// }, [startDate, endDate]) - const open = Boolean(anchorEl) - const id = open ? 'date-range-popover' : undefined +// const open = Boolean(anchorEl) +// const id = open ? 'date-range-popover' : undefined - return ( - <> - - handleClick(e)} - inputProps={{ - readOnly: true, - style: { cursor: 'pointer' }, - }} - /> - - -
-
- - - - -
- -
-
-
- {windowOptions.map(opt => - - handleSubmitPresetDates(opt.value)} - > - {opt.name} - - - )} -
-
-
- - ) - } +// return ( +// <> +// +// handleClick(e)} +// inputProps={{ +// readOnly: true, +// style: { cursor: 'pointer' }, +// }} +// /> +// +// +//
+//
+// +// +// +// +//
+// +//
+//
+//
+// {windowOptions.map(opt => +// +// handleSubmitPresetDates(opt.value)} +// > +// {opt.name} +// +// +// )} +//
+//
+//
+// +// ) +// } - export default React.memo(SelectWindow) \ No newline at end of file +// export default React.memo(SelectWindow) \ No newline at end of file diff --git a/src/components/Subtitle.js b/src/components/Subtitle.js index f49945720..ab0babc30 100644 --- a/src/components/Subtitle.js +++ b/src/components/Subtitle.js @@ -1,44 +1,44 @@ -import * as React from "react"; -import { makeStyles } from "@material-ui/styles"; -import { upperFirst } from "lodash"; -import Breadcrumbs from "@material-ui/core/Breadcrumbs"; -import NavigateNextIcon from "@material-ui/icons/NavigateNext"; -import Typography from "@material-ui/core/Typography"; -import { toVerboseTimeRange } from "../util"; +// import * as React from "react"; +// import { makeStyles } from "@material-ui/styles"; +// import { upperFirst } from "lodash"; +// import Breadcrumbs from "@material-ui/core/Breadcrumbs"; +// import NavigateNextIcon from "@material-ui/icons/NavigateNext"; +// import Typography from "@material-ui/core/Typography"; +// import { toVerboseTimeRange } from "../util"; -const useStyles = makeStyles({ - root: { - "& > * + *": { - marginTop: 2, - }, - }, - link: { - cursor: "pointer", - }, -}); +// const useStyles = makeStyles({ +// root: { +// "& > * + *": { +// marginTop: 2, +// }, +// }, +// link: { +// cursor: "pointer", +// }, +// }); -const Subtitle = ({ report, onClick }) => { - const classes = useStyles(); +// const Subtitle = ({ report, onClick }) => { +// const classes = useStyles(); - const { aggregateBy, window } = report; +// const { aggregateBy, window } = report; - return ( -
- } - aria-label="breadcrumb" - onClick={onClick} - > - {aggregateBy && aggregateBy.length > 0 ? ( - - {toVerboseTimeRange(window)} by {upperFirst(aggregateBy)} - - ) : ( - {toVerboseTimeRange(window)} - )} - -
- ); -}; +// return ( +//
+// } +// aria-label="breadcrumb" +// onClick={onClick} +// > +// {aggregateBy && aggregateBy.length > 0 ? ( +// +// {toVerboseTimeRange(window)} by {upperFirst(aggregateBy)} +// +// ) : ( +// {toVerboseTimeRange(window)} +// )} +// +//
+// ); +// }; -export default React.memo(Subtitle); +// export default React.memo(Subtitle); diff --git a/src/components/Warnings.js b/src/components/Warnings.js index 4b6a43b6f..4eabb63b5 100644 --- a/src/components/Warnings.js +++ b/src/components/Warnings.js @@ -1,37 +1,37 @@ -import React from "react"; -import { makeStyles } from "@material-ui/styles"; -import List from "@material-ui/core/List"; -import ListItem from "@material-ui/core/ListItem"; -import ListItemIcon from "@material-ui/core/ListItemIcon"; -import ListItemText from "@material-ui/core/ListItemText"; -import Paper from "@material-ui/core/Paper"; -import WarningIcon from "@material-ui/icons/Warning"; +// import React from "react"; +// import { makeStyles } from "@material-ui/styles"; +// import List from "@material-ui/core/List"; +// import ListItem from "@material-ui/core/ListItem"; +// import ListItemIcon from "@material-ui/core/ListItemIcon"; +// import ListItemText from "@material-ui/core/ListItemText"; +// import Paper from "@material-ui/core/Paper"; +// import WarningIcon from "@material-ui/icons/Warning"; -const useStyles = makeStyles({ - root: {}, -}); +// const useStyles = makeStyles({ +// root: {}, +// }); -const Warnings = ({ warnings }) => { - const classes = useStyles(); +// const Warnings = ({ warnings }) => { +// const classes = useStyles(); - if (!warnings || warnings.length === 0) { - return null; - } +// if (!warnings || warnings.length === 0) { +// return null; +// } - return ( - - - {warnings.map((warn, i) => ( - - - - - - - ))} - - - ); -}; +// return ( +// +// +// {warnings.map((warn, i) => ( +// +// +// +// +// +// +// ))} +// +// +// ); +// }; -export default Warnings; +// export default Warnings; diff --git a/src/components/allocationReport.js b/src/components/allocationReport.js index e6ce73edd..83c1eb2a9 100644 --- a/src/components/allocationReport.js +++ b/src/components/allocationReport.js @@ -1,248 +1,248 @@ -import React, { useEffect, useState } from "react"; -import { get, round } from "lodash"; -import { makeStyles } from "@material-ui/styles"; -import Table from "@material-ui/core/Table"; -import TableBody from "@material-ui/core/TableBody"; -import TableCell from "@material-ui/core/TableCell"; -import TableContainer from "@material-ui/core/TableContainer"; -import TableHead from "@material-ui/core/TableHead"; -import TablePagination from "@material-ui/core/TablePagination"; -import TableRow from "@material-ui/core/TableRow"; -import TableSortLabel from "@material-ui/core/TableSortLabel"; -import Typography from "@material-ui/core/Typography"; -import AllocationChart from "./AllocationChart"; -import { toCurrency } from "../util"; - -const useStyles = makeStyles({ - noResults: { - padding: 24, - }, -}); - -function descendingComparator(a, b, orderBy) { - if (get(b, orderBy) < get(a, orderBy)) { - return -1; - } - if (get(b, orderBy) > get(a, orderBy)) { - return 1; - } - return 0; -} - -function getComparator(order, orderBy) { - return order === "desc" - ? (a, b) => descendingComparator(a, b, orderBy) - : (a, b) => -descendingComparator(a, b, orderBy); -} - -function stableSort(array, comparator) { - const stabilizedThis = array.map((el, index) => [el, index]); - stabilizedThis.sort((a, b) => { - const order = comparator(a[0], b[0]); - if (order !== 0) return order; - return a[1] - b[1]; - }); - return stabilizedThis.map((el) => el[0]); -} - -const headCells = [ - { id: "name", numeric: false, label: "Name", width: "auto" }, - { id: "cpuCost", numeric: true, label: "CPU", width: 90 }, - { id: "gpuCost", numeric: true, label: "GPU", width: 90 }, - { id: "ramCost", numeric: true, label: "RAM", width: 90 }, - { id: "pvCost", numeric: true, label: "PV", width: 90 }, - { id: "totalEfficiency", numeric: true, label: "Efficiency", width: 90 }, - { id: "totalCost", numeric: true, label: "Total cost", width: 90 }, -]; - -const AllocationReport = ({ - allocationData, - cumulativeData, - totalData, - currency, -}) => { - const classes = useStyles(); - - if (allocationData.length === 0) { - return ( - - No results - - ); - } - - const [order, setOrder] = React.useState("desc"); - const [orderBy, setOrderBy] = React.useState("totalCost"); - const [page, setPage] = useState(0); - const [rowsPerPage, setRowsPerPage] = useState(25); - const numData = cumulativeData.length; - - useEffect(() => { - setPage(0); - }, [numData]); - - const lastPage = Math.floor(numData / rowsPerPage); - - const handleChangePage = (event, newPage) => setPage(newPage); - - const handleChangeRowsPerPage = (event) => { - setRowsPerPage(parseInt(event.target.value, 10)); - setPage(0); - }; - - const createSortHandler = (property) => (event) => - handleRequestSort(event, property); - - const handleRequestSort = (event, property) => { - const isDesc = orderBy === property && order === "desc"; - setOrder(isDesc ? "asc" : "desc"); - setOrderBy(property); - }; - - const orderedRows = stableSort(cumulativeData, getComparator(order, orderBy)); - const pageRows = orderedRows.slice( - page * rowsPerPage, - page * rowsPerPage + rowsPerPage - ); - - return ( -
- - - - - - {headCells.map((cell) => ( - - - {cell.label} - - - ))} - - - - - {headCells.map((cell) => { - return ( - - {cell.numeric - ? cell.label === "Efficiency" - ? totalData.totalEfficiency == 1.0 && - totalData.cpuReqCoreHrs == 0 && - totalData.ramReqByteHrs == 0 - ? "Inf%" - : `${round(totalData.totalEfficiency * 100, 1)}%` - : toCurrency(totalData[cell.id], currency) - : totalData[cell.id]} - - ); - })} - - {pageRows.map((row, key) => { - if (row.name === "__unmounted__") { - row.name = "Unmounted PVs"; - } - - let isIdle = row.name.indexOf("__idle__") >= 0; - let isUnallocated = row.name.indexOf("__unallocated__") >= 0; - let isUnmounted = row.name.indexOf("Unmounted PVs") >= 0; - - // Replace "efficiency" with Inf if there is usage w/o request - let efficiency = round(row.totalEfficiency * 100, 1); - if ( - row.totalEfficiency == 1.0 && - row.cpuReqCoreHrs == 0 && - row.ramReqByteHrs == 0 - ) { - efficiency = "Inf"; - } - - // Do not allow drill-down for idle and unallocated rows - if (isIdle || isUnallocated || isUnmounted) { - return ( - - {row.name} - - {toCurrency(row.cpuCost, currency)} - - - {toCurrency(row.gpuCost, currency)} - - - {toCurrency(row.ramCost, currency)} - - - {toCurrency(row.pvCost, currency)} - - {isIdle ? ( - - ) : ( - {efficiency}% - )} - - {toCurrency(row.totalCost, currency)} - - - ); - } - - return ( - - {row.name} - - {toCurrency(row.cpuCost, currency)} - - - {toCurrency(row.gpuCost, currency)} - - - {toCurrency(row.ramCost, currency)} - - - {toCurrency(row.pvCost, currency)} - - {efficiency}% - - {toCurrency(row.totalCost, currency)} - - - ); - })} - -
-
- -
- ); -}; - -export default React.memo(AllocationReport); +// import React, { useEffect, useState } from "react"; +// import { get, round } from "lodash"; +// import { makeStyles } from "@material-ui/styles"; +// import Table from "@material-ui/core/Table"; +// import TableBody from "@material-ui/core/TableBody"; +// import TableCell from "@material-ui/core/TableCell"; +// import TableContainer from "@material-ui/core/TableContainer"; +// import TableHead from "@material-ui/core/TableHead"; +// import TablePagination from "@material-ui/core/TablePagination"; +// import TableRow from "@material-ui/core/TableRow"; +// import TableSortLabel from "@material-ui/core/TableSortLabel"; +// import Typography from "@material-ui/core/Typography"; +// import AllocationChart from "./AllocationChart"; +// import { toCurrency } from "../util"; + +// const useStyles = makeStyles({ +// noResults: { +// padding: 24, +// }, +// }); + +// function descendingComparator(a, b, orderBy) { +// if (get(b, orderBy) < get(a, orderBy)) { +// return -1; +// } +// if (get(b, orderBy) > get(a, orderBy)) { +// return 1; +// } +// return 0; +// } + +// function getComparator(order, orderBy) { +// return order === "desc" +// ? (a, b) => descendingComparator(a, b, orderBy) +// : (a, b) => -descendingComparator(a, b, orderBy); +// } + +// function stableSort(array, comparator) { +// const stabilizedThis = array.map((el, index) => [el, index]); +// stabilizedThis.sort((a, b) => { +// const order = comparator(a[0], b[0]); +// if (order !== 0) return order; +// return a[1] - b[1]; +// }); +// return stabilizedThis.map((el) => el[0]); +// } + +// const headCells = [ +// { id: "name", numeric: false, label: "Name", width: "auto" }, +// { id: "cpuCost", numeric: true, label: "CPU", width: 90 }, +// { id: "gpuCost", numeric: true, label: "GPU", width: 90 }, +// { id: "ramCost", numeric: true, label: "RAM", width: 90 }, +// { id: "pvCost", numeric: true, label: "PV", width: 90 }, +// { id: "totalEfficiency", numeric: true, label: "Efficiency", width: 90 }, +// { id: "totalCost", numeric: true, label: "Total cost", width: 90 }, +// ]; + +// const AllocationReport = ({ +// allocationData, +// cumulativeData, +// totalData, +// currency, +// }) => { +// const classes = useStyles(); + +// if (allocationData.length === 0) { +// return ( +// +// No results +// +// ); +// } + +// const [order, setOrder] = React.useState("desc"); +// const [orderBy, setOrderBy] = React.useState("totalCost"); +// const [page, setPage] = useState(0); +// const [rowsPerPage, setRowsPerPage] = useState(25); +// const numData = cumulativeData.length; + +// useEffect(() => { +// setPage(0); +// }, [numData]); + +// const lastPage = Math.floor(numData / rowsPerPage); + +// const handleChangePage = (event, newPage) => setPage(newPage); + +// const handleChangeRowsPerPage = (event) => { +// setRowsPerPage(parseInt(event.target.value, 10)); +// setPage(0); +// }; + +// const createSortHandler = (property) => (event) => +// handleRequestSort(event, property); + +// const handleRequestSort = (event, property) => { +// const isDesc = orderBy === property && order === "desc"; +// setOrder(isDesc ? "asc" : "desc"); +// setOrderBy(property); +// }; + +// const orderedRows = stableSort(cumulativeData, getComparator(order, orderBy)); +// const pageRows = orderedRows.slice( +// page * rowsPerPage, +// page * rowsPerPage + rowsPerPage +// ); + +// return ( +//
+// +// +// +// +// +// {headCells.map((cell) => ( +// +// +// {cell.label} +// +// +// ))} +// +// +// +// +// {headCells.map((cell) => { +// return ( +// +// {cell.numeric +// ? cell.label === "Efficiency" +// ? totalData.totalEfficiency == 1.0 && +// totalData.cpuReqCoreHrs == 0 && +// totalData.ramReqByteHrs == 0 +// ? "Inf%" +// : `${round(totalData.totalEfficiency * 100, 1)}%` +// : toCurrency(totalData[cell.id], currency) +// : totalData[cell.id]} +// +// ); +// })} +// +// {pageRows.map((row, key) => { +// if (row.name === "__unmounted__") { +// row.name = "Unmounted PVs"; +// } + +// let isIdle = row.name.indexOf("__idle__") >= 0; +// let isUnallocated = row.name.indexOf("__unallocated__") >= 0; +// let isUnmounted = row.name.indexOf("Unmounted PVs") >= 0; + +// // Replace "efficiency" with Inf if there is usage w/o request +// let efficiency = round(row.totalEfficiency * 100, 1); +// if ( +// row.totalEfficiency == 1.0 && +// row.cpuReqCoreHrs == 0 && +// row.ramReqByteHrs == 0 +// ) { +// efficiency = "Inf"; +// } + +// // Do not allow drill-down for idle and unallocated rows +// if (isIdle || isUnallocated || isUnmounted) { +// return ( +// +// {row.name} +// +// {toCurrency(row.cpuCost, currency)} +// +// +// {toCurrency(row.gpuCost, currency)} +// +// +// {toCurrency(row.ramCost, currency)} +// +// +// {toCurrency(row.pvCost, currency)} +// +// {isIdle ? ( +// +// ) : ( +// {efficiency}% +// )} +// +// {toCurrency(row.totalCost, currency)} +// +// +// ); +// } + +// return ( +// +// {row.name} +// +// {toCurrency(row.cpuCost, currency)} +// +// +// {toCurrency(row.gpuCost, currency)} +// +// +// {toCurrency(row.ramCost, currency)} +// +// +// {toCurrency(row.pvCost, currency)} +// +// {efficiency}% +// +// {toCurrency(row.totalCost, currency)} +// +// +// ); +// })} +// +//
+//
+// +//
+// ); +// }; + +// export default React.memo(AllocationReport); diff --git a/src/components/assets-visualization.js b/src/components/assets-visualization.js new file mode 100644 index 000000000..c5a142dbd --- /dev/null +++ b/src/components/assets-visualization.js @@ -0,0 +1,407 @@ +'use client'; + +import { useState, useEffect } from 'react'; +import { Tabs, TabList, Tab, TabPanels, TabPanel, Tag, Button, Loading } from '@carbon/react'; +import { PieChart, SimpleBarChart } from '@carbon/charts-react'; +import { Filter, Download } from '@carbon/icons-react'; +import '@carbon/charts-react/styles.css'; +import { parseAssetsResponse, fetchAssets } from '@/lib/assets-api'; + +const assetTypeColors = { + Node: '#3b82f6', + Pod: '#10b981', + PersistentVolume: '#f59e0b', + Storage: '#8b5cf6', + Container: '#ec4899', + Disk: '#06b6d4', +}; + +// Demo data for development/fallback +function getDemoAssets() { + return [ + { + id: 'node-oracle-1', + name: '10.0.147.137', + type: 'Node', + provider: 'Oracle', + cluster: 'default-cluster', + region: 'iad', + category: 'Compute', + cpuCores: 4, + ramBytes: 33347035136, + cpuCoreHours: 66, + cpuCost: 1.782, + ramCost: 0.768657, + totalCost: 2.550657, + cpuUtilization: 0, + ramUtilization: 0, + carbonEmissions: 1.275, + preemptible: true, + lastModified: '2026-01-10', + }, + { + id: 'node-oracle-2', + name: '10.0.153.45', + type: 'Node', + provider: 'Oracle', + cluster: 'default-cluster', + region: 'iad', + category: 'Compute', + cpuCores: 4, + ramBytes: 33347035136, + cpuCoreHours: 73.2, + cpuCost: 1.9764, + ramCost: 0.85251, + totalCost: 2.82891, + cpuUtilization: 0, + ramUtilization: 0, + carbonEmissions: 1.414, + preemptible: true, + lastModified: '2026-01-13', + }, + { + id: 'pod-1', + name: 'web-pod-1', + type: 'Pod', + provider: 'Oracle', + cluster: 'default-cluster', + region: 'iad', + category: 'Compute', + cpuCores: 2, + ramBytes: 8589934592, + cpuCoreHours: 48, + cpuCost: 1.296, + ramCost: 0.384, + totalCost: 1.68, + cpuUtilization: 45, + ramUtilization: 62, + carbonEmissions: 0.84, + preemptible: false, + lastModified: '2026-01-15', + }, + ]; +} + +export default function AssetsVisualization() { + const [selectedAssetType, setSelectedAssetType] = useState(null); + const [sortBy, setSortBy] = useState('cost'); + const [assets, setAssets] = useState([]); + const [isLoading, setIsLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + const loadAssets = async () => { + setIsLoading(true); + try { + // First, try to fetch from local JSON file + const localResponse = await fetch('/ss.json'); + if (localResponse.ok) { + const data = await localResponse.json(); + const parsedAssets = parseAssetsResponse(data); + if (parsedAssets.length > 0) { + setAssets(parsedAssets); + setError(null); + setIsLoading(false); + return; + } + } + + // If local file fails, try OpenCost API endpoint + const endpoint = 'http://localhost:9003/allocation/assets'; + const fetchedAssets = await fetchAssets(endpoint); + + if (fetchedAssets.length > 0) { + setAssets(fetchedAssets); + setError(null); + } else { + // Fallback to demo data if both fail + setAssets(getDemoAssets()); + setError('Using demo data - connect to OpenCost API for real data'); + } + } catch (err) { + console.error('Failed to load assets:', err); + setAssets(getDemoAssets()); + setError('Using demo data - place ss.json in public folder or connect to OpenCost API'); + } finally { + setIsLoading(false); + } + }; + + loadAssets(); + }, []); + + const filteredAssets = selectedAssetType ? assets.filter((asset) => asset.type === selectedAssetType) : assets; + + const assetsByType = assets.reduce((acc, asset) => { + const type = asset.type; + if (!acc[type]) { + acc[type] = { type, count: 0, totalCost: 0, totalCarbon: 0 }; + } + acc[type].count += 1; + acc[type].totalCost += asset.totalCost; + acc[type].totalCarbon += asset.carbonEmissions; + return acc; + }, {}); + + const typeData = Object.values(assetsByType); + const totalCost = filteredAssets.reduce((sum, asset) => sum + asset.totalCost, 0); + const totalCarbon = filteredAssets.reduce((sum, asset) => sum + asset.carbonEmissions, 0); + const avgUtilization = + filteredAssets.length > 0 + ? Math.round( + (filteredAssets.reduce((sum, asset) => sum + asset.cpuUtilization + asset.ramUtilization, 0) / + (filteredAssets.length * 2)) * + 100, + ) / 100 + : 0; + + const sortedAssets = [...filteredAssets].sort((a, b) => { + if (sortBy === 'cost') return b.totalCost - a.totalCost; + return b.cpuUtilization + b.ramUtilization - (a.cpuUtilization + a.ramUtilization); + }); + + // Prepare chart data + const pieChartData = typeData.map((item) => ({ + group: item.type, + value: item.totalCost, + })); + + const barChartData = sortedAssets.slice(0, 5).map((asset) => ({ + group: asset.name, + value: asset.totalCost, + })); + + const pieOptions = { + title: 'Cost by Asset Type', + resizable: true, + height: '300px', + pie: { + alignment: 'center', + }, + legend: { + alignment: 'center', + }, + }; + + const barOptions = { + title: 'Top 5 Assets by Cost', + axes: { + left: { + mapsTo: 'value', + scaleType: 'linear', + }, + bottom: { + mapsTo: 'group', + scaleType: 'labels', + }, + }, + height: '300px', + }; + + if (isLoading) { + return ( +
+ +
+ ); + } + + return ( +
+ {/* Header */} +
+

Infrastructure Assets

+

Infrastructure assets with cost and carbon tracking

+
+ + {error && ( +
+ ⚠️ {error} +
+ )} + + {/* Summary Cards */} +
+
+
Total Assets
+
{assets.length}
+

{typeData.length} types

+
+ +
+
Total Cost
+
${totalCost.toFixed(2)}
+

This period

+
+ +
+
Carbon Emissions
+
{totalCarbon.toFixed(2)} kg CO₂e
+

Environmental impact

+
+ +
+
Avg Utilization
+
{avgUtilization}%
+

CPU + Memory

+
+
+ + {/* Charts */} +
+
+ +
+ +
+ +
+
+ + {/* Assets List Section */} +
+
+
+

All Assets

+

View and manage infrastructure resources

+
+
+ + +
+
+ + + + setSelectedAssetType(null)}>All ({assets.length}) + {typeData.map((type) => ( + setSelectedAssetType(type.type)}> + {type.type} ({type.count}) + + ))} + + + +
+ {sortedAssets.map((asset) => ( +
(e.currentTarget.style.backgroundColor = '#f4f4f4')} + onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = 'transparent')} + > +
+
+
+

{asset.name}

+ + {asset.type} + + {asset.preemptible && ( + + Preemptible + + )} +
+
+ {asset.cluster} + {asset.region} + CPU: {asset.cpuUtilization}% + RAM: {asset.ramUtilization}% +
+
+
+
${asset.totalCost.toFixed(2)}
+
+ {asset.carbonEmissions.toFixed(2)} kg CO₂e +
+
+
+
+ ))} +
+
+ {typeData.map((type) => ( + +
+ {sortedAssets + .filter((asset) => asset.type === type.type) + .map((asset) => ( +
(e.currentTarget.style.backgroundColor = '#f4f4f4')} + onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = 'transparent')} + > +
+
+
+

{asset.name}

+ + {asset.type} + + {asset.preemptible && ( + + Preemptible + + )} +
+
+ {asset.cluster} + {asset.region} + CPU: {asset.cpuUtilization}% + RAM: {asset.ramUtilization}% +
+
+
+
${asset.totalCost.toFixed(2)}
+
+ {asset.carbonEmissions.toFixed(2)} kg CO₂e +
+
+
+
+ ))} +
+
+ ))} +
+
+
+
+ ); +} \ No newline at end of file diff --git a/src/components/cloudCost/cloudCost.js b/src/components/cloudCost/cloudCost.js index 595d235b9..b947c9f9b 100644 --- a/src/components/cloudCost/cloudCost.js +++ b/src/components/cloudCost/cloudCost.js @@ -1,215 +1,215 @@ -import * as React from "react"; -import { get } from "lodash"; -import { makeStyles } from "@material-ui/styles"; -import { - Typography, - TableContainer, - TableCell, - TableHead, - TablePagination, - TableRow, - TableSortLabel, - Table, - TableBody, -} from "@material-ui/core"; - -import { toCurrency } from "../../util"; -import CloudCostChart from "./cloudCostChart"; -import { CloudCostRow } from "./cloudCostRow"; - -const CloudCost = ({ - cumulativeData = [], - totalData: totalsRow = {}, - graphData = [], - currency = "USD", - drilldown, - sampleData = false, -}) => { - const useStyles = makeStyles({ - noResults: { - padding: 24, - }, - }); - - const classes = useStyles(); - - function descendingComparator(a, b, orderBy) { - if (get(b, orderBy) < get(a, orderBy)) { - return -1; - } - if (get(b, orderBy) > get(a, orderBy)) { - return 1; - } - return 0; - } - - function getComparator(order, orderBy) { - return order === "desc" - ? (a, b) => descendingComparator(a, b, orderBy) - : (a, b) => -descendingComparator(a, b, orderBy); - } - - function stableSort(array, comparator) { - const stabilizedThis = array.map((el, index) => [el, index]); - stabilizedThis.sort((a, b) => { - const order = comparator(a[0], b[0]); - if (order !== 0) return order; - return a[1] - b[1]; - }); - return stabilizedThis.map((el) => el[0]); - } - - const headCells = [ - { - id: "name", - numeric: false, - label: "Name", - width: "auto", - }, - { - id: "kubernetesPercent", - numeric: true, - label: "K8s Utilization", - width: 160, - }, - sampleData - ? { - id: "cost", - numeric: true, - label: "Sum of Sample Data", - width: 200, - } - : { - id: "cost", - numeric: true, - label: "Total cost", - width: 155, - }, - ]; - - const [order, setOrder] = React.useState("desc"); - const [orderBy, setOrderBy] = React.useState("totalCost"); - const [page, setPage] = React.useState(0); - const [rowsPerPage, setRowsPerPage] = React.useState(25); - const numData = cumulativeData?.length; - - const lastPage = Math.floor(numData / rowsPerPage); - - const handleChangePage = (event, newPage) => setPage(newPage); - - const handleChangeRowsPerPage = (event) => { - setRowsPerPage(parseInt(event.target.value, 10)); - setPage(0); - }; - - const orderedRows = stableSort(cumulativeData, getComparator(order, orderBy)); - const pageRows = orderedRows.slice( - page * rowsPerPage, - page * rowsPerPage + rowsPerPage - ); - - React.useEffect(() => { - setPage(0); - }, [numData]); - - if (cumulativeData.length === 0) { - return ( - - No results - - ); - } - - function dataToCloudCostRow(row) { - const suffix = - { hourly: "/hr", monthly: "/mo", daily: "/day" }["cumulative"] || ""; - return ( - - ); - } - - return ( -
-
- -
-
- - - - - {headCells.map((cell) => ( - - { - const isDesc = orderBy === cell.id && order === "desc"; - setOrder(isDesc ? "asc" : "desc"); - setOrderBy(cell.id); - }} - > - {cell.label} - - - ))} - - - - - - {totalsRow?.name || "Totals"} - - - - {Math.round(totalsRow?.kubernetesPercent * 100)}% - - - - {toCurrency(totalsRow?.cost || 0, currency)} - - - {pageRows.map(dataToCloudCostRow)} - -
-
- -
-
- ); -}; - -export default React.memo(CloudCost); +// import * as React from "react"; +// import { get } from "lodash"; +// import { makeStyles } from "@material-ui/styles"; +// import { +// Typography, +// TableContainer, +// TableCell, +// TableHead, +// TablePagination, +// TableRow, +// TableSortLabel, +// Table, +// TableBody, +// } from "@material-ui/core"; + +// import { toCurrency } from "../../util"; +// import CloudCostChart from "./cloudCostChart"; +// import { CloudCostRow } from "./cloudCostRow"; + +// const CloudCost = ({ +// cumulativeData = [], +// totalData: totalsRow = {}, +// graphData = [], +// currency = "USD", +// drilldown, +// sampleData = false, +// }) => { +// const useStyles = makeStyles({ +// noResults: { +// padding: 24, +// }, +// }); + +// const classes = useStyles(); + +// function descendingComparator(a, b, orderBy) { +// if (get(b, orderBy) < get(a, orderBy)) { +// return -1; +// } +// if (get(b, orderBy) > get(a, orderBy)) { +// return 1; +// } +// return 0; +// } + +// function getComparator(order, orderBy) { +// return order === "desc" +// ? (a, b) => descendingComparator(a, b, orderBy) +// : (a, b) => -descendingComparator(a, b, orderBy); +// } + +// function stableSort(array, comparator) { +// const stabilizedThis = array.map((el, index) => [el, index]); +// stabilizedThis.sort((a, b) => { +// const order = comparator(a[0], b[0]); +// if (order !== 0) return order; +// return a[1] - b[1]; +// }); +// return stabilizedThis.map((el) => el[0]); +// } + +// const headCells = [ +// { +// id: "name", +// numeric: false, +// label: "Name", +// width: "auto", +// }, +// { +// id: "kubernetesPercent", +// numeric: true, +// label: "K8s Utilization", +// width: 160, +// }, +// sampleData +// ? { +// id: "cost", +// numeric: true, +// label: "Sum of Sample Data", +// width: 200, +// } +// : { +// id: "cost", +// numeric: true, +// label: "Total cost", +// width: 155, +// }, +// ]; + +// const [order, setOrder] = React.useState("desc"); +// const [orderBy, setOrderBy] = React.useState("totalCost"); +// const [page, setPage] = React.useState(0); +// const [rowsPerPage, setRowsPerPage] = React.useState(25); +// const numData = cumulativeData?.length; + +// const lastPage = Math.floor(numData / rowsPerPage); + +// const handleChangePage = (event, newPage) => setPage(newPage); + +// const handleChangeRowsPerPage = (event) => { +// setRowsPerPage(parseInt(event.target.value, 10)); +// setPage(0); +// }; + +// const orderedRows = stableSort(cumulativeData, getComparator(order, orderBy)); +// const pageRows = orderedRows.slice( +// page * rowsPerPage, +// page * rowsPerPage + rowsPerPage +// ); + +// React.useEffect(() => { +// setPage(0); +// }, [numData]); + +// if (cumulativeData.length === 0) { +// return ( +// +// No results +// +// ); +// } + +// function dataToCloudCostRow(row) { +// const suffix = +// { hourly: "/hr", monthly: "/mo", daily: "/day" }["cumulative"] || ""; +// return ( +// +// ); +// } + +// return ( +//
+//
+// +//
+//
+// +// +// +// +// {headCells.map((cell) => ( +// +// { +// const isDesc = orderBy === cell.id && order === "desc"; +// setOrder(isDesc ? "asc" : "desc"); +// setOrderBy(cell.id); +// }} +// > +// {cell.label} +// +// +// ))} +// +// +// +// +// +// {totalsRow?.name || "Totals"} +// + +// +// {Math.round(totalsRow?.kubernetesPercent * 100)}% +// + +// +// {toCurrency(totalsRow?.cost || 0, currency)} +// +// +// {pageRows.map(dataToCloudCostRow)} +// +//
+//
+// +//
+//
+// ); +// }; + +// export default React.memo(CloudCost); diff --git a/src/components/cloudCost/cloudCostChart/index.js b/src/components/cloudCost/cloudCostChart/index.js index e6bd13b8b..7aa5b1a0b 100644 --- a/src/components/cloudCost/cloudCostChart/index.js +++ b/src/components/cloudCost/cloudCostChart/index.js @@ -1,14 +1,14 @@ -import * as React from "react"; +// import * as React from "react"; -import Typography from "@material-ui/core/Typography"; +// import Typography from "@material-ui/core/Typography"; -import RangeChart from "./rangeChart"; +// import RangeChart from "./rangeChart"; -const CloudCostChart = ({ graphData, currency, n, height }) => { - if (graphData.length === 0) { - return No data; - } - return ; -}; +// const CloudCostChart = ({ graphData, currency, n, height }) => { +// if (graphData.length === 0) { +// return No data; +// } +// return ; +// }; -export default React.memo(CloudCostChart); +// export default React.memo(CloudCostChart); diff --git a/src/components/cloudCost/cloudCostChart/rangeChart.js b/src/components/cloudCost/cloudCostChart/rangeChart.js index b78ca4304..be3399664 100644 --- a/src/components/cloudCost/cloudCostChart/rangeChart.js +++ b/src/components/cloudCost/cloudCostChart/rangeChart.js @@ -1,275 +1,275 @@ -import * as React from "react"; -import { makeStyles } from "@material-ui/styles"; -import { - BarChart, - Bar, - XAxis, - YAxis, - CartesianGrid, - Tooltip, - ResponsiveContainer, - Cell, -} from "recharts"; -import { primary, greyscale, browns } from "../../../constants/colors"; -import { toCurrency } from "../../../util"; - -const RangeChart = ({ data, currency, height }) => { - const useStyles = makeStyles({ - tooltip: { - borderRadius: 2, - background: "rgba(255, 255, 255, 0.95)", - padding: 12, - }, - tooltipLineItem: { - fontSize: "1rem", - margin: 0, - marginBottom: 4, - padding: 0, - }, - }); - - const accents = [...primary, ...greyscale, ...browns]; - - const _IDLE_ = "__idle__"; - const _OTHER_ = "others"; - - const getItemCost = (item) => { - return item.value; - }; - - function toBar({ end, graph, start }) { - const points = graph.map((item) => ({ - ...item, - window: { end, start }, - })); - - const dateFormatter = Intl.DateTimeFormat(navigator.language, { - year: "numeric", - month: "numeric", - day: "numeric", - timeZone: "UTC", - }); - - const timeFormatter = Intl.DateTimeFormat(navigator.language, { - hour: "numeric", - minute: "numeric", - timeZone: "UTC", - }); - - const s = new Date(start); - const e = new Date(end); - const interval = (e.valueOf() - s.valueOf()) / 1000 / 60 / 60; - - const bar = { - end: new Date(end), - key: interval >= 24 ? dateFormatter.format(s) : timeFormatter.format(s), - items: {}, - start: new Date(start), - }; - - points.forEach((item) => { - const windowStart = new Date(item.window.start); - const windowEnd = new Date(item.window.end); - const windowHours = - (windowEnd.valueOf() - windowStart.valueOf()) / 1000 / 60 / 60; - - if (windowHours >= 24) { - bar.key = dateFormatter.format(bar.start); - } else { - bar.key = timeFormatter.format(bar.start); - } - - bar.items[item.name] = getItemCost(item); - }); - - return bar; - } - - const getDataForCloudDay = (dayData) => { - const { end, start } = dayData; - const copy = [...dayData.items]; - - // find items for idle and other - const idleIndex = copy.findIndex((item) => item.name === _IDLE_); - let idle = undefined; - if (idleIndex > -1) { - idle = copy[idleIndex]; - copy.splice(idleIndex, 1); - } - const otherIndex = copy.findIndex( - (i) => i.name === _OTHER_ || i.name === "other" - ); - let other = undefined; - if (otherIndex > -1) { - other = { ...copy[otherIndex], name: "other" }; - copy.splice(otherIndex, 1); - } - - // sort and remove any items < top 8 - const sortedItems = copy.slice().sort((a, b) => { - return a.value > b.value ? -1 : 1; - }); - - const top8 = sortedItems.slice(0, 8); - // get items that didn't make the cut and shove into other - const lefovers = sortedItems.slice(8); - if (lefovers.length > 0) { - const othersTotal = lefovers.reduce((a, b) => a.value + b.value); - if (other) { - other.value += othersTotal; - } else if (othersTotal) { - other = { - name: "other", - value: othersTotal, - }; - } - } - // add in idle and other - if (idle) { - top8.unshift(idle); - } - if (other) { - top8.unshift(other); - } - - return { end, start, graph: top8 }; - }; - - const getDataForGraph = (dataPoints) => { - // for each day, we want top 8 + Idle and Other - const orderedDataPoints = dataPoints.map(getDataForCloudDay); - const bars = orderedDataPoints.map(toBar); - - const keyToFill = {}; - // we want to keep track of the order of fill assignment - const assignmentOrder = []; - let p = 0; - - orderedDataPoints.forEach(({ graph, start, end }) => { - graph.forEach(({ name }) => { - const key = name; - if (keyToFill[key] === undefined) { - assignmentOrder.push(key); - if (key === _IDLE_) { - keyToFill[key] = browns; - } else if (key === _OTHER_ || key === "other") { - keyToFill[key] = greyscale; - } else { - // non-idle/other allocations get the next available color - keyToFill[key] = accents[p]; - p = (p + 1) % accents.length; - } - } - }); - }); - // list of dataKeys and fillColors in order of importance (price w/ 'others' last) - const labels = assignmentOrder.map((dataKey) => ({ - dataKey, - fill: keyToFill[dataKey], - })); - - return { bars, labels, keyToFill }; - }; - - const { bars: barData, labels: barLabels, keyToFill } = getDataForGraph(data); - - const classes = useStyles(); - - const CustomTooltip = (params) => { - const { active, payload } = params; - - if (!payload || payload.length == 0) { - return null; - } - - const total = payload.reduce((sum, item) => sum + item.value, 0.0); - if (active) { - return ( -
-

{`Total: ${toCurrency(total, currency)}`}

- - {payload - .slice() - .map((item, i) => ( -
-
-
-
-
-

{`${ - item.payload.items[i][0] - }: ${toCurrency(item.value, currency)}`}

-
-
- )) - .reverse()} -
- ); - } - - return null; - }; - - const orderedBars = barData.map((bar) => { - return { - ...bar, - items: Object.entries(bar.items).sort((a, b) => { - if (a[0] === "other") { - return -1; - } - if (b[0] === "other") { - return 1; - } - return a[1] > b[1] ? -1 : 1; - }), - }; - }); - - return ( - - - - - toCurrency(val, currency, 2, true)} /> - } wrapperStyle={{ zIndex: 1000 }} /> - - {new Array(10).fill(0).map((item, idx) => ( - (entry.items[idx] ? entry.items[idx][1] : null)} - stackId="x" - > - {orderedBars.map((bar) => - bar.items[idx] ? ( - - ) : ( - - ) - )} - - ))} - - - ); -}; - -export default RangeChart; +// import * as React from "react"; +// import { makeStyles } from "@material-ui/styles"; +// import { +// BarChart, +// Bar, +// XAxis, +// YAxis, +// CartesianGrid, +// Tooltip, +// ResponsiveContainer, +// Cell, +// } from "recharts"; +// import { primary, greyscale, browns } from "../../../constants/colors"; +// import { toCurrency } from "../../../util"; + +// const RangeChart = ({ data, currency, height }) => { +// const useStyles = makeStyles({ +// tooltip: { +// borderRadius: 2, +// background: "rgba(255, 255, 255, 0.95)", +// padding: 12, +// }, +// tooltipLineItem: { +// fontSize: "1rem", +// margin: 0, +// marginBottom: 4, +// padding: 0, +// }, +// }); + +// const accents = [...primary, ...greyscale, ...browns]; + +// const _IDLE_ = "__idle__"; +// const _OTHER_ = "others"; + +// const getItemCost = (item) => { +// return item.value; +// }; + +// function toBar({ end, graph, start }) { +// const points = graph.map((item) => ({ +// ...item, +// window: { end, start }, +// })); + +// const dateFormatter = Intl.DateTimeFormat(navigator.language, { +// year: "numeric", +// month: "numeric", +// day: "numeric", +// timeZone: "UTC", +// }); + +// const timeFormatter = Intl.DateTimeFormat(navigator.language, { +// hour: "numeric", +// minute: "numeric", +// timeZone: "UTC", +// }); + +// const s = new Date(start); +// const e = new Date(end); +// const interval = (e.valueOf() - s.valueOf()) / 1000 / 60 / 60; + +// const bar = { +// end: new Date(end), +// key: interval >= 24 ? dateFormatter.format(s) : timeFormatter.format(s), +// items: {}, +// start: new Date(start), +// }; + +// points.forEach((item) => { +// const windowStart = new Date(item.window.start); +// const windowEnd = new Date(item.window.end); +// const windowHours = +// (windowEnd.valueOf() - windowStart.valueOf()) / 1000 / 60 / 60; + +// if (windowHours >= 24) { +// bar.key = dateFormatter.format(bar.start); +// } else { +// bar.key = timeFormatter.format(bar.start); +// } + +// bar.items[item.name] = getItemCost(item); +// }); + +// return bar; +// } + +// const getDataForCloudDay = (dayData) => { +// const { end, start } = dayData; +// const copy = [...dayData.items]; + +// // find items for idle and other +// const idleIndex = copy.findIndex((item) => item.name === _IDLE_); +// let idle = undefined; +// if (idleIndex > -1) { +// idle = copy[idleIndex]; +// copy.splice(idleIndex, 1); +// } +// const otherIndex = copy.findIndex( +// (i) => i.name === _OTHER_ || i.name === "other" +// ); +// let other = undefined; +// if (otherIndex > -1) { +// other = { ...copy[otherIndex], name: "other" }; +// copy.splice(otherIndex, 1); +// } + +// // sort and remove any items < top 8 +// const sortedItems = copy.slice().sort((a, b) => { +// return a.value > b.value ? -1 : 1; +// }); + +// const top8 = sortedItems.slice(0, 8); +// // get items that didn't make the cut and shove into other +// const lefovers = sortedItems.slice(8); +// if (lefovers.length > 0) { +// const othersTotal = lefovers.reduce((a, b) => a.value + b.value); +// if (other) { +// other.value += othersTotal; +// } else if (othersTotal) { +// other = { +// name: "other", +// value: othersTotal, +// }; +// } +// } +// // add in idle and other +// if (idle) { +// top8.unshift(idle); +// } +// if (other) { +// top8.unshift(other); +// } + +// return { end, start, graph: top8 }; +// }; + +// const getDataForGraph = (dataPoints) => { +// // for each day, we want top 8 + Idle and Other +// const orderedDataPoints = dataPoints.map(getDataForCloudDay); +// const bars = orderedDataPoints.map(toBar); + +// const keyToFill = {}; +// // we want to keep track of the order of fill assignment +// const assignmentOrder = []; +// let p = 0; + +// orderedDataPoints.forEach(({ graph, start, end }) => { +// graph.forEach(({ name }) => { +// const key = name; +// if (keyToFill[key] === undefined) { +// assignmentOrder.push(key); +// if (key === _IDLE_) { +// keyToFill[key] = browns; +// } else if (key === _OTHER_ || key === "other") { +// keyToFill[key] = greyscale; +// } else { +// // non-idle/other allocations get the next available color +// keyToFill[key] = accents[p]; +// p = (p + 1) % accents.length; +// } +// } +// }); +// }); +// // list of dataKeys and fillColors in order of importance (price w/ 'others' last) +// const labels = assignmentOrder.map((dataKey) => ({ +// dataKey, +// fill: keyToFill[dataKey], +// })); + +// return { bars, labels, keyToFill }; +// }; + +// const { bars: barData, labels: barLabels, keyToFill } = getDataForGraph(data); + +// const classes = useStyles(); + +// const CustomTooltip = (params) => { +// const { active, payload } = params; + +// if (!payload || payload.length == 0) { +// return null; +// } + +// const total = payload.reduce((sum, item) => sum + item.value, 0.0); +// if (active) { +// return ( +//
+//

{`Total: ${toCurrency(total, currency)}`}

+ +// {payload +// .slice() +// .map((item, i) => ( +//
+//
+//
+//
+//
+//

{`${ +// item.payload.items[i][0] +// }: ${toCurrency(item.value, currency)}`}

+//
+//
+// )) +// .reverse()} +//
+// ); +// } + +// return null; +// }; + +// const orderedBars = barData.map((bar) => { +// return { +// ...bar, +// items: Object.entries(bar.items).sort((a, b) => { +// if (a[0] === "other") { +// return -1; +// } +// if (b[0] === "other") { +// return 1; +// } +// return a[1] > b[1] ? -1 : 1; +// }), +// }; +// }); + +// return ( +// +// +// +// +// toCurrency(val, currency, 2, true)} /> +// } wrapperStyle={{ zIndex: 1000 }} /> + +// {new Array(10).fill(0).map((item, idx) => ( +// (entry.items[idx] ? entry.items[idx][1] : null)} +// stackId="x" +// > +// {orderedBars.map((bar) => +// bar.items[idx] ? ( +// +// ) : ( +// +// ) +// )} +// +// ))} +// +// +// ); +// }; + +// export default RangeChart; diff --git a/src/components/cloudCost/cloudCostDetails.js b/src/components/cloudCost/cloudCostDetails.js index e4316adad..cde73191d 100644 --- a/src/components/cloudCost/cloudCostDetails.js +++ b/src/components/cloudCost/cloudCostDetails.js @@ -1,178 +1,178 @@ -import * as React from "react"; -import { Modal, Paper, Typography } from "@material-ui/core"; -import Warnings from "../../components/Warnings"; -import CircularProgress from "@material-ui/core/CircularProgress"; +// import * as React from "react"; +// import { Modal, Paper, Typography } from "@material-ui/core"; +// import Warnings from "../../components/Warnings"; +// import CircularProgress from "@material-ui/core/CircularProgress"; -import { - ResponsiveContainer, - CartesianGrid, - Legend, - XAxis, - YAxis, - Tooltip, - BarChart, - Bar, -} from "recharts"; -import { toCurrency } from "../../util"; -import cloudCostDayTotals from "../../services/cloudCostDayTotals"; +// import { +// ResponsiveContainer, +// CartesianGrid, +// Legend, +// XAxis, +// YAxis, +// Tooltip, +// BarChart, +// Bar, +// } from "recharts"; +// import { toCurrency } from "../../util"; +// import cloudCostDayTotals from "../../services/cloudCostDayTotals"; -const CloudCostDetails = ({ - onClose, - selectedProviderId, - selectedItem, - agg, - filters, - costMetric, - window, - currency, -}) => { - const [data, setData] = React.useState([]); - const [loading, setLoading] = React.useState(false); - const [errors, setErrors] = React.useState([]); - const [fetch, setFetch] = React.useState(true); +// const CloudCostDetails = ({ +// onClose, +// selectedProviderId, +// selectedItem, +// agg, +// filters, +// costMetric, +// window, +// currency, +// }) => { +// const [data, setData] = React.useState([]); +// const [loading, setLoading] = React.useState(false); +// const [errors, setErrors] = React.useState([]); +// const [fetch, setFetch] = React.useState(true); - const nextFilters = [ - ...(filters ?? []), - { property: "providerID", value: selectedProviderId }, - ]; +// const nextFilters = [ +// ...(filters ?? []), +// { property: "providerID", value: selectedProviderId }, +// ]; - async function fetchData() { - setLoading(true); - setErrors([]); +// async function fetchData() { +// setLoading(true); +// setErrors([]); - try { - const resp = await cloudCostDayTotals.fetchCloudCostData( - window, - agg, - costMetric, - nextFilters - ); +// try { +// const resp = await cloudCostDayTotals.fetchCloudCostData( +// window, +// agg, +// costMetric, +// nextFilters +// ); - if (resp.data) { - setData(resp.data); - } else { - if (resp.message && resp.message.indexOf("boundary error") >= 0) { - let match = resp.message.match(/(ETL is \d+\.\d+% complete)/); - let secondary = "Try again after ETL build is complete"; - if (match.length > 0) { - secondary = `${match[1]}. ${secondary}`; - } - setErrors([ - { - primary: "Data unavailable while ETL is building", - secondary: secondary, - }, - ]); - } - setData([]); - } - } catch (err) { - console.log(err); - if (err.message.indexOf("404") === 0) { - setErrors([ - { - primary: "Failed to load report data", - secondary: - "Please update OpenCost to the latest version, then open an Issue on GitHub if problems persist.", - }, - ]); - } else { - let secondary = - "Please open an Issue on GitHub if problems persist."; - if (err.message.length > 0) { - secondary = err.message; - } - setErrors([ - { - primary: "Failed to load report data", - secondary: secondary, - }, - ]); - } - setData([]); - } - setLoading(false); - setFetch(false); - } +// if (resp.data) { +// setData(resp.data); +// } else { +// if (resp.message && resp.message.indexOf("boundary error") >= 0) { +// let match = resp.message.match(/(ETL is \d+\.\d+% complete)/); +// let secondary = "Try again after ETL build is complete"; +// if (match.length > 0) { +// secondary = `${match[1]}. ${secondary}`; +// } +// setErrors([ +// { +// primary: "Data unavailable while ETL is building", +// secondary: secondary, +// }, +// ]); +// } +// setData([]); +// } +// } catch (err) { +// console.log(err); +// if (err.message.indexOf("404") === 0) { +// setErrors([ +// { +// primary: "Failed to load report data", +// secondary: +// "Please update OpenCost to the latest version, then open an Issue on GitHub if problems persist.", +// }, +// ]); +// } else { +// let secondary = +// "Please open an Issue on GitHub if problems persist."; +// if (err.message.length > 0) { +// secondary = err.message; +// } +// setErrors([ +// { +// primary: "Failed to load report data", +// secondary: secondary, +// }, +// ]); +// } +// setData([]); +// } +// setLoading(false); +// setFetch(false); +// } - React.useEffect(() => { - if (fetch) { - fetchData(); - } - }, [fetch]); +// React.useEffect(() => { +// if (fetch) { +// fetchData(); +// } +// }, [fetch]); - const drilldownData = data.sort( - (a, b) => - new Date(a.date ?? "").getTime() - new Date(b.date ?? "").getTime() - ); +// const drilldownData = data.sort( +// (a, b) => +// new Date(a.date ?? "").getTime() - new Date(b.date ?? "").getTime() +// ); - const itemData = drilldownData.map((items) => { - const dataPoint = { - time: new Date(items.date), - cost: items.cost, - }; - return dataPoint; - }); +// const itemData = drilldownData.map((items) => { +// const dataPoint = { +// time: new Date(items.date), +// cost: items.cost, +// }; +// return dataPoint; +// }); - return ( -
- - - - {selectedItem} - +// return ( +//
+// +// +// +// {selectedItem} +// - {loading && ( -
-
- -
-
- )} - {!loading && errors.length > 0 && ( -
- -
- )} - {data && ( -
- - - - - - `${toCurrency(tick)}`} /> - - - `${toCurrency(value ?? 0, currency, 4, true)}` - } - /> - - -
- )} -
-
-
- ); -}; +// {loading && ( +//
+//
+// +//
+//
+// )} +// {!loading && errors.length > 0 && ( +//
+// +//
+// )} +// {data && ( +//
+// +// +// +// +// +// `${toCurrency(tick)}`} /> +// +// +// `${toCurrency(value ?? 0, currency, 4, true)}` +// } +// /> +// +// +//
+// )} +//
+//
+//
+// ); +// }; -export { CloudCostDetails }; +// export { CloudCostDetails }; diff --git a/src/components/cloudCost/cloudCostRow.js b/src/components/cloudCost/cloudCostRow.js index 810e255f1..c009d6b61 100644 --- a/src/components/cloudCost/cloudCostRow.js +++ b/src/components/cloudCost/cloudCostRow.js @@ -1,48 +1,48 @@ -import * as React from "react"; +// import * as React from "react"; -import { TableCell, TableRow } from "@material-ui/core"; +// import { TableCell, TableRow } from "@material-ui/core"; -import { toCurrency } from "../../util"; -import { primary } from "../../constants/colors"; +// import { toCurrency } from "../../util"; +// import { primary } from "../../constants/colors"; -const displayCurrencyAsLessThanPenny = (amount, currency) => - amount > 0 && amount < 0.01 - ? `<${toCurrency(0.01, currency)}` - : toCurrency(amount, currency); +// const displayCurrencyAsLessThanPenny = (amount, currency) => +// amount > 0 && amount < 0.01 +// ? `<${toCurrency(0.01, currency)}` +// : toCurrency(amount, currency); -const CloudCostRow = ({ - cost, - costSuffix, - currency, - drilldown, - kubernetesPercent, - name, - row, - sampleData, -}) => { - function calculatePercent() { - const totalPercent = (kubernetesPercent * 100).toFixed(); - return `${totalPercent}%`; - } +// const CloudCostRow = ({ +// cost, +// costSuffix, +// currency, +// drilldown, +// kubernetesPercent, +// name, +// row, +// sampleData, +// }) => { +// function calculatePercent() { +// const totalPercent = (kubernetesPercent * 100).toFixed(); +// return `${totalPercent}%`; +// } - const whichPercent = sampleData - ? `${(kubernetesPercent * 100).toFixed(1)}%` - : calculatePercent(); - return ( - drilldown(row)}> - - {name} - - {whichPercent} - {/* total cost */} - - {`${displayCurrencyAsLessThanPenny(cost, currency)}${costSuffix}`} - - - ); -}; +// const whichPercent = sampleData +// ? `${(kubernetesPercent * 100).toFixed(1)}%` +// : calculatePercent(); +// return ( +// drilldown(row)}> +// +// {name} +// +// {whichPercent} +// {/* total cost */} +// +// {`${displayCurrencyAsLessThanPenny(cost, currency)}${costSuffix}`} +// +// +// ); +// }; -export { CloudCostRow }; +// export { CloudCostRow }; diff --git a/src/components/cloudCost/controls/cloudCostEditControls.js b/src/components/cloudCost/controls/cloudCostEditControls.js index 36370b2a4..6551b6c31 100644 --- a/src/components/cloudCost/controls/cloudCostEditControls.js +++ b/src/components/cloudCost/controls/cloudCostEditControls.js @@ -1,91 +1,91 @@ -import { makeStyles } from "@material-ui/styles"; -import FormControl from "@material-ui/core/FormControl"; -import InputLabel from "@material-ui/core/InputLabel"; -import MenuItem from "@material-ui/core/MenuItem"; -import Select from "@material-ui/core/Select"; +// import { makeStyles } from "@material-ui/styles"; +// import FormControl from "@material-ui/core/FormControl"; +// import InputLabel from "@material-ui/core/InputLabel"; +// import MenuItem from "@material-ui/core/MenuItem"; +// import Select from "@material-ui/core/Select"; -import * as React from "react"; +// import * as React from "react"; -import SelectWindow from "../../SelectWindow"; +// import SelectWindow from "../../SelectWindow"; -const useStyles = makeStyles({ - wrapper: { - display: "inline-flex", - }, - formControl: { - margin: 8, - minWidth: 120, - }, -}); +// const useStyles = makeStyles({ +// wrapper: { +// display: "inline-flex", +// }, +// formControl: { +// margin: 8, +// minWidth: 120, +// }, +// }); -function EditCloudCostControls({ - windowOptions, - window, - setWindow, - aggregationOptions, - aggregateBy, - setAggregateBy, - costMetricOptions, - costMetric, - setCostMetric, - currencyOptions, - currency, - setCurrency, -}) { - const classes = useStyles(); - return ( -
- - - Breakdown - - - - Cost Metric - - - - Currency - - -
- ); -} +// function EditCloudCostControls({ +// windowOptions, +// window, +// setWindow, +// aggregationOptions, +// aggregateBy, +// setAggregateBy, +// costMetricOptions, +// costMetric, +// setCostMetric, +// currencyOptions, +// currency, +// setCurrency, +// }) { +// const classes = useStyles(); +// return ( +//
+// +// +// Breakdown +// +// +// +// Cost Metric +// +// +// +// Currency +// +// +//
+// ); +// } -export default React.memo(EditCloudCostControls); +// export default React.memo(EditCloudCostControls); diff --git a/src/components/cloudCost/tokens.js b/src/components/cloudCost/tokens.js index 91afbfa85..a3289b364 100644 --- a/src/components/cloudCost/tokens.js +++ b/src/components/cloudCost/tokens.js @@ -1,49 +1,49 @@ -const windowOptions = [ - { name: "Today", value: "today" }, - { name: "Yesterday", value: "yesterday" }, - { name: "Last 24h", value: "24h" }, - { name: "Last 48h", value: "48h" }, - { name: "Week-to-date", value: "week" }, - { name: "Last week", value: "lastweek" }, - { name: "Last 7 days", value: "7d" }, - { name: "Last 14 days", value: "14d" }, -]; +// const windowOptions = [ +// { name: "Today", value: "today" }, +// { name: "Yesterday", value: "yesterday" }, +// { name: "Last 24h", value: "24h" }, +// { name: "Last 48h", value: "48h" }, +// { name: "Week-to-date", value: "week" }, +// { name: "Last week", value: "lastweek" }, +// { name: "Last 7 days", value: "7d" }, +// { name: "Last 14 days", value: "14d" }, +// ]; -const aggregationOptions = [ - { name: "Account", value: "accountID" }, - { name: "Invoice Entity", value: "invoiceEntityID" }, - { name: "Provider", value: "provider" }, - { name: "Service ", value: "service" }, - { name: "Category", value: "category" }, - { name: "Item", value: "item" }, -]; +// const aggregationOptions = [ +// { name: "Account", value: "accountID" }, +// { name: "Invoice Entity", value: "invoiceEntityID" }, +// { name: "Provider", value: "provider" }, +// { name: "Service ", value: "service" }, +// { name: "Category", value: "category" }, +// { name: "Item", value: "item" }, +// ]; -const costMetricOptions = [ - { name: "Amortized Net Cost", value: "AmortizedNetCost" }, - { name: "List Cost", value: "ListCost" }, - { name: "Invoiced Cost", value: "InvoicedCost" }, - { name: "Amortized Cost", value: "AmortizedCost" }, -]; +// const costMetricOptions = [ +// { name: "Amortized Net Cost", value: "AmortizedNetCost" }, +// { name: "List Cost", value: "ListCost" }, +// { name: "Invoiced Cost", value: "InvoicedCost" }, +// { name: "Amortized Cost", value: "AmortizedCost" }, +// ]; -const aggMap = { - invoiceEntityID: "Invoice Entity", - provider: "Provider", - service: "Service", - accountID: "Account", -}; +// const aggMap = { +// invoiceEntityID: "Invoice Entity", +// provider: "Provider", +// service: "Service", +// accountID: "Account", +// }; -const costMetricToPropName = { - AmortizedNetCost: "amortizedNetCost", - AmortizedCost: "amortizedCost", - ListCost: "listCost", - NetCost: "netCost", - InvoicedCost: "invoicedCost", -}; +// const costMetricToPropName = { +// AmortizedNetCost: "amortizedNetCost", +// AmortizedCost: "amortizedCost", +// ListCost: "listCost", +// NetCost: "netCost", +// InvoicedCost: "invoicedCost", +// }; -export { - windowOptions, - aggregationOptions, - costMetricOptions, - aggMap, - costMetricToPropName, -}; +// export { +// windowOptions, +// aggregationOptions, +// costMetricOptions, +// aggMap, +// costMetricToPropName, +// }; diff --git a/src/components/cost-allocation-chart.js b/src/components/cost-allocation-chart.js new file mode 100644 index 000000000..fbcfedb48 --- /dev/null +++ b/src/components/cost-allocation-chart.js @@ -0,0 +1,53 @@ +'use client'; + +import { StackedBarChart } from '@carbon/charts-react'; + +const chartData = [ + { group: '2023-10-27', key: 'kube-system', value: 0.65 }, + { group: '2023-10-27', key: 'prometheus', value: 0.05 }, + { group: '2023-10-27', key: 'calico-system', value: 0.03 }, + { group: '2023-10-27', key: 'opencost', value: 0.02 }, + { group: '2023-10-28', key: 'kube-system', value: 0.64 }, + { group: '2023-10-28', key: 'prometheus', value: 0.05 }, + { group: '2023-10-28', key: 'calico-system', value: 0.03 }, + { group: '2023-10-28', key: 'opencost', value: 0.02 }, + { group: '2023-10-29', key: 'kube-system', value: 0.66 }, + { group: '2023-10-29', key: 'prometheus', value: 0.05 }, + { group: '2023-10-29', key: 'calico-system', value: 0.03 }, + { group: '2023-10-29', key: 'opencost', value: 0.02 }, + { group: '2023-10-30', key: 'kube-system', value: 0.65 }, + { group: '2023-10-30', key: 'prometheus', value: 0.05 }, + { group: '2023-10-30', key: 'calico-system', value: 0.03 }, + { group: '2023-10-30', key: 'opencost', value: 0.02 }, + { group: '2023-10-31', key: 'kube-system', value: 0.64 }, + { group: '2023-10-31', key: 'prometheus', value: 0.05 }, + { group: '2023-10-31', key: 'calico-system', value: 0.03 }, + { group: '2023-10-31', key: 'opencost', value: 0.02 }, + { group: '2023-11-01', key: 'kube-system', value: 0.27 }, + { group: '2023-11-01', key: 'prometheus', value: 0.02 }, + { group: '2023-11-01', key: 'calico-system', value: 0.01 }, + { group: '2023-11-01', key: 'opencost', value: 0.01 }, +]; + +const chartOptions = { + title: 'Cost Allocation by Namespace', + axes: { + left: { + mapsTo: 'value', + scaleType: 'linear', + }, + bottom: { + mapsTo: 'group', + scaleType: 'labels', + }, + }, + height: '400px', +}; + +export default function CostAllocationChart() { + return ( +
+ +
+ ); +} diff --git a/src/components/cost-by-service-chart.js b/src/components/cost-by-service-chart.js new file mode 100644 index 000000000..b66684c9b --- /dev/null +++ b/src/components/cost-by-service-chart.js @@ -0,0 +1,65 @@ +'use client'; + +import { AreaChart } from '@carbon/charts-react'; + +const chartData = [ + { group: '10/22/2023', key: 'AmazonEC2', value: 650 }, + { group: '10/22/2023', key: 'ComputeEngine', value: 350 }, + { group: '10/22/2023', key: 'AmazonS3', value: 200 }, + { group: '10/22/2023', key: 'CloudStorage', value: 150 }, + { group: '10/22/2023', key: 'Other', value: 100 }, + { group: '10/23/2023', key: 'AmazonEC2', value: 700 }, + { group: '10/23/2023', key: 'ComputeEngine', value: 400 }, + { group: '10/23/2023', key: 'AmazonS3', value: 250 }, + { group: '10/23/2023', key: 'CloudStorage', value: 180 }, + { group: '10/23/2023', key: 'Other', value: 120 }, + { group: '10/24/2023', key: 'AmazonEC2', value: 750 }, + { group: '10/24/2023', key: 'ComputeEngine', value: 450 }, + { group: '10/24/2023', key: 'AmazonS3', value: 300 }, + { group: '10/24/2023', key: 'CloudStorage', value: 200 }, + { group: '10/24/2023', key: 'Other', value: 150 }, + { group: '10/25/2023', key: 'AmazonEC2', value: 800 }, + { group: '10/25/2023', key: 'ComputeEngine', value: 500 }, + { group: '10/25/2023', key: 'AmazonS3', value: 350 }, + { group: '10/25/2023', key: 'CloudStorage', value: 220 }, + { group: '10/25/2023', key: 'Other', value: 180 }, + { group: '10/26/2023', key: 'AmazonEC2', value: 780 }, + { group: '10/26/2023', key: 'ComputeEngine', value: 480 }, + { group: '10/26/2023', key: 'AmazonS3', value: 330 }, + { group: '10/26/2023', key: 'CloudStorage', value: 210 }, + { group: '10/26/2023', key: 'Other', value: 170 }, + { group: '10/27/2023', key: 'AmazonEC2', value: 770 }, + { group: '10/27/2023', key: 'ComputeEngine', value: 470 }, + { group: '10/27/2023', key: 'AmazonS3', value: 320 }, + { group: '10/27/2023', key: 'CloudStorage', value: 200 }, + { group: '10/27/2023', key: 'Other', value: 160 }, + { group: '10/28/2023', key: 'AmazonEC2', value: 760 }, + { group: '10/28/2023', key: 'ComputeEngine', value: 460 }, + { group: '10/28/2023', key: 'AmazonS3', value: 310 }, + { group: '10/28/2023', key: 'CloudStorage', value: 190 }, + { group: '10/28/2023', key: 'Other', value: 150 }, +]; + +const chartOptions = { + title: 'Cloud Service Costs', + axes: { + left: { + mapsTo: 'value', + scaleType: 'linear', + }, + bottom: { + mapsTo: 'group', + scaleType: 'labels', + }, + }, + curve: 'curveMonotoneX', + height: '400px', +}; + +export default function CostByServiceChart() { + return ( +
+ +
+ ); +} diff --git a/src/components/cost-summary-cards.js b/src/components/cost-summary-cards.js new file mode 100644 index 000000000..d4b2e4ce9 --- /dev/null +++ b/src/components/cost-summary-cards.js @@ -0,0 +1,58 @@ +'use client'; + +import { Tile } from '@carbon/react'; +import { ArrowDown, ArrowUp, Currency, ChartLine, ChartLineSmooth } from '@carbon/icons-react'; + +export default function CostSummaryCards() { + return ( +
+
+
+
Total Cost
+ +
+
$3,566.34
+

+ + 12% from last period +

+
+ +
+
+
Cloud Costs
+ +
+
$3,552.48
+

+ + 8% from last period +

+
+ +
+
+
External Costs
+ +
+
$13.86
+

+ + 15% from last period +

+
+ +
+
+
Efficiency Score
+ +
+
24.2%
+

+ + 3.2% improvement +

+
+
+ ); +} diff --git a/src/components/create-dashboard-modal.js b/src/components/create-dashboard-modal.js new file mode 100644 index 000000000..4a405957b --- /dev/null +++ b/src/components/create-dashboard-modal.js @@ -0,0 +1,134 @@ +'use client'; + +import { useState } from 'react'; +import { + Modal, + TextInput, + TextArea, + Button, + Tag, +} from '@carbon/react'; +import { Close } from '@carbon/icons-react'; +import { useDashboard } from './dashboard-context'; + +export default function CreateDashboardModal({ open, onClose, onDashboardCreated }) { + const [name, setName] = useState(''); + const [description, setDescription] = useState(''); + const [tags, setTags] = useState([]); + const [tagInput, setTagInput] = useState(''); + const { createDashboard } = useDashboard(); + + const handleAddTag = () => { + if (tagInput.trim() && !tags.includes(tagInput.trim())) { + setTags([...tags, tagInput.trim()]); + setTagInput(''); + } + }; + + const handleRemoveTag = (tag) => { + setTags(tags.filter((t) => t !== tag)); + }; + + const handleCreate = () => { + if (name.trim()) { + const newId = `dashboard-${Date.now()}`; + const newDashboard = { + id: newId, + name: name.trim(), + description: description.trim(), + widgets: [], + tags: tags, + starred: false, + updatedAt: 'just now', + owner: 'You', + }; + createDashboard(newDashboard); + onDashboardCreated(newId); + setName(''); + setDescription(''); + setTags([]); + setTagInput(''); + onClose(); + } + }; + + const handleKeyPress = (e) => { + if (e.key === 'Enter') { + e.preventDefault(); + handleAddTag(); + } + }; + + return ( + +
+

+ Create a new custom dashboard to monitor your cloud costs +

+ +
+ setName(e.target.value)} + /> +
+ +
+